This guide provides step-by-step instructions for deploying Croom in your organization, from initial planning through to production deployment.
- Planning
- Prerequisites
- Dashboard Deployment
- Device Preparation
- Room Setup
- Testing
- Rollout
- Post-Deployment
For each conference room, document:
| Item | Details | Example |
|---|---|---|
| Room name | Official room identifier | "Conference Room A" |
| Location | Building, floor, room number | "Building 1, Floor 2, Room 201" |
| Capacity | Number of seats | 8 people |
| TV location | Where TV is mounted/placed | Wall-mounted, north wall |
| Power outlets | Available power sources | 2 outlets near TV |
| Network | WiFi or Ethernet available | WiFi (CorpWiFi) |
| Existing equipment | Current AV equipment | Projector, whiteboard |
Network Requirements Checklist:
[ ] WiFi coverage in all rooms
[ ] SSID and credentials for Croom devices
[ ] Firewall rules approved (see below)
[ ] DHCP reservations or static IPs (optional)
[ ] Network monitoring configured
Required Firewall Rules (Outbound):
Protocol Port Destination Purpose
TCP 443 *.google.com Google Meet
TCP 443 *.microsoft.com Microsoft Teams
TCP 443 *.zoom.us Zoom
TCP 443 dashboard.company.com Management
UDP 3478 * STUN/TURN
UDP 10000-20000 * Media (WebRTC)
Meeting Accounts: Create dedicated accounts for each room:
room-a@company.com→ Conference Room Aroom-b@company.com→ Conference Room B
Account Requirements:
| Platform | Account Type | Requirements |
|---|---|---|
| Google Meet | Google Workspace | Calendar access, Meet access |
| Microsoft Teams | Microsoft 365 | Teams license, Calendar |
| Zoom | Zoom account | Basic or higher license |
Per Room (Standard Setup):
| Item | Quantity | Est. Cost |
|---|---|---|
| Raspberry Pi 4B 4GB | 1 | $55 |
| 32GB microSD (Class 10) | 1 | $10 |
| USB-C Power Supply (Official) | 1 | $8 |
| ArgonOne V2 Case | 1 | $25 |
| Logitech C920 Webcam | 1 | $70 |
| HDMI Cable (2m) | 1 | $10 |
| Total per room | ~$178 |
Optional Enhancements:
| Item | Purpose | Est. Cost |
|---|---|---|
| Jabra Speak 510 | Better audio | $100 |
| PTZ Camera | Larger rooms | $200-500 |
| IR Receiver | Remote control | $10 |
| Phase | Duration | Activities |
|---|---|---|
| Planning | 1 week | Site assessment, network planning |
| Procurement | 2 weeks | Order hardware, create accounts |
| Dashboard Setup | 1 day | Deploy management dashboard |
| Pilot | 1 week | Deploy 2-3 rooms, test, refine |
| Rollout | 2 weeks | Deploy remaining rooms |
| Training | 1 week | User training, documentation |
Checklist per device:
[ ] Raspberry Pi 4B (4GB recommended)
[ ] MicroSD card (32GB Class 10)
[ ] USB-C power supply (5V 3A)
[ ] Case with cooling (ArgonOne recommended)
[ ] Webcam (Logitech C920/C922)
[ ] HDMI cable
For each room:
[ ] Meeting account created (room-X@company.com)
[ ] Calendar shared with appropriate users
[ ] Meeting platform license assigned
[ ] Password documented securely
[ ] WiFi credentials documented
[ ] Firewall rules implemented
[ ] Test device can reach required endpoints
[ ] Dashboard server network access confirmed
For image preparation, you need:
- Ubuntu 20.04+ workstation/VM
- SD card reader
- Required tools installed:
# Install prerequisites
sudo apt update
sudo apt install -y git wget xz-utils tree| Requirement | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 4 cores |
| RAM | 4 GB | 8 GB |
| Storage | 50 GB | 100 GB |
| OS | Ubuntu 20.04+, Docker | Ubuntu 22.04 LTS |
# Clone repository
git clone https://github.com/amirhmoradi/croom.to-dashboard.git
cd croom-dashboard
# Configure environment
cp .env.example .env
nano .envEdit .env:
# Database
POSTGRES_PASSWORD=your-secure-password
DATABASE_URL=postgresql://croom:your-secure-password@db:5432/croom
# Security
SECRET_KEY=your-very-long-random-secret-key
ALLOWED_HOSTS=croom.yourcompany.com
# Email (for alerts)
EMAIL_HOST=smtp.yourcompany.com
EMAIL_PORT=587
EMAIL_USER=croom@yourcompany.com
EMAIL_PASSWORD=email-password
# Admin
ADMIN_EMAIL=admin@yourcompany.comStart services:
# Start containers
docker-compose up -d
# Create admin user
docker exec -it croom-dashboard ./manage.py createsuperuser
# Verify running
docker-compose ps
curl https://localhost/healthUsing Let's Encrypt:
# Install certbot
sudo apt install certbot
# Get certificate
sudo certbot certonly --standalone -d croom.yourcompany.com
# Update nginx config
# Certificates are at /etc/letsencrypt/live/croom.yourcompany.com/Using Internal CA:
# Place certificates in
/etc/croom/certs/server.crt
/etc/croom/certs/server.key
# Update docker-compose.yml to mount certificates-
Login to Dashboard
URL: https://croom.yourcompany.com User: admin@yourcompany.com Password: [created during setup] -
Configure Organization
- Settings → Organization → Update name and details
- Settings → Locations → Add your buildings/floors
-
Create Device Groups
- Devices → Groups → Create groups by location
-
Configure Alerts
- Settings → Alerts → Enable email/Slack notifications
-
Generate Enrollment Token
- Settings → Enrollment → Generate Token
- Copy token for device provisioning
Option A: Download Pre-built Image
# Download latest release
wget https://github.com/amirhmoradi/croom.to/releases/latest/download/croom-latest.img.gz
gunzip croom-latest.img.gzOption B: Build Custom Image
# Clone repository
git clone https://github.com/amirhmoradi/croom.to.git
cd croom/build
# Download base OS
./download-img.sh
# Prepare image (interactive)
./prep-img.shDuring prep-img.sh, you'll be prompted for:
- Device password (for SSH access)
- WiFi networks (SSID and password)
- Dashboard URL
- Enrollment token
Single Card:
# Insert SD card and identify device
lsblk
# Flash image (CAREFUL: this erases the device!)
sudo dd if=croom-latest.img of=/dev/sdX bs=4M status=progress
syncMultiple Cards (Batch):
# Using Balena Etcher (GUI)
# Or parallel dd:
for dev in /dev/sd{b,c,d,e}; do
sudo dd if=croom-latest.img of=$dev bs=4M status=progress &
done
wait
syncCreate labels for each device:
┌────────────────────────┐
│ Croom Device │
│ Room: Conference A │
│ MAC: aa:bb:cc:dd:ee:ff │
│ Serial: PI-2025-001 │
└────────────────────────┘
Attach label to device and keep record in inventory.
Step 1: Assemble Device
1. Install Pi in case (ArgonOne)
2. Insert prepared SD card
3. Connect webcam via USB
4. DO NOT power on yet
Step 2: Position Equipment
1. Mount/place webcam (ideally eye-level, centered on TV)
2. Route cables neatly
3. Ensure clear camera view of meeting area
4. Position for good audio pickup
Step 3: Connect to TV
1. Connect HDMI cable to TV
2. Connect power supply to Pi
3. Turn on TV and select correct HDMI input
If using Captive Portal:
1. Device boots and creates WiFi network "Croom-Setup-XXXX"
2. TV displays setup instructions and QR code
3. Connect phone/laptop to Croom-Setup network
4. Browser auto-opens or navigate to 192.168.4.1
5. Complete setup wizard:
- Select WiFi network
- Enter WiFi password
- Enter meeting credentials
- Name the room
6. Device reboots and connects to network
7. Device appears in dashboard
If using Pre-configured Image:
1. Device boots and auto-connects to WiFi
2. Device registers with dashboard
3. Device appears in dashboard as "Pending Setup"
4. Complete configuration in dashboard:
- Assign to room
- Configure credentials
- Apply configuration template
-
Find Device in Dashboard
- Devices → New Devices (or search by MAC)
-
Assign to Room
- Click device → Edit → Set name and location
-
Configure Credentials
- Configuration → Meeting Credentials
- Select platform and enter credentials
- Test connection
-
Apply Template (Optional)
- Configuration → Apply Template
- Select "Standard Conference Room"
-
Verify Status
- Device shows "Online" status
- Calendar syncing shows events
- Test meeting join
Per Room Verification:
[ ] Device powered on and online in dashboard
[ ] WiFi connected with good signal
[ ] Video: Webcam shows in meeting
[ ] Audio: Can hear and be heard in meeting
[ ] Calendar: Shows upcoming meetings
[ ] Join: Successfully joins test meeting
[ ] Leave: Meeting ends cleanly
[ ] TV Control: TV turns on/off with device (if HDMI-CEC)
Test Script:
1. Create test meeting 5 minutes in future
- Invite room calendar
- Use each platform (Meet, Teams, Zoom)
2. Verify auto-join
- Device should join within 1 minute of meeting start
- Video should be enabled
- Audio should be enabled
3. Test basic controls
- Mute/unmute audio
- Enable/disable camera
- Leave meeting
4. Test end-of-meeting
- End meeting from another device
- Room should return to idle state
5. Document results
Concurrent Meeting Test:
1. Schedule meetings in all rooms at same time
2. Verify all devices join successfully
3. Check dashboard shows all devices in meeting
4. End meetings and verify all return to idle
| Scenario | Test | Expected Result |
|---|---|---|
| Network loss | Disconnect WiFi briefly | Reconnects automatically |
| Power loss | Unplug and replug | Reboots and rejoins |
| Double-book | Two meetings at same time | Joins first meeting |
| No meeting | No calendar events | Shows idle screen |
| Long meeting | 2+ hour meeting | Stays connected |
1. Select pilot users from each department
2. Have them use rooms for real meetings
3. Collect feedback:
- Ease of use
- Audio/video quality
- Any issues encountered
4. Address feedback before full rollout
Option A: Phased Rollout (Recommended)
Week 1: Building 1 (5 rooms)
Week 2: Building 2 (5 rooms)
Week 3: Building 3 (5 rooms)
Week 4: Remaining rooms
Option B: Big Bang
All rooms in single weekend
- Higher risk
- Faster completion
- Requires more resources
Announcement (1 week before):
Subject: New Video Conferencing System Coming to Meeting Rooms
Dear team,
We're excited to announce that [Conference Room Names] will be
upgraded with Croom, a new video conferencing system.
What's changing:
- Rooms will automatically join scheduled meetings
- No more laptop dongles needed
- Works with Google Meet, Teams, and Zoom
What you need to do:
- Invite the room to your meetings (room-name@company.com)
- The system handles the rest!
Training sessions:
- [Date/Time] - Introduction to Croom
- [Date/Time] - Q&A Session
Quick reference guides will be posted in each room.
Questions? Contact IT at [email/phone]
User Training (15 minutes):
- How Croom works (2 min)
- Scheduling meetings with room (3 min)
- What to expect when entering room (3 min)
- Basic controls (5 min)
- Troubleshooting basics (2 min)
IT Staff Training (1 hour):
- System architecture (10 min)
- Dashboard walkthrough (15 min)
- Common troubleshooting (15 min)
- Escalation procedures (10 min)
- Hands-on practice (10 min)
Pre-Go-Live:
[ ] All rooms tested and verified
[ ] Dashboard fully configured
[ ] Alerts configured and tested
[ ] Documentation complete
[ ] Help desk trained
[ ] User communication sent
[ ] Quick reference cards printed and posted
Go-Live Day:
[ ] IT support available (in-person or on-call)
[ ] Monitor dashboard for issues
[ ] Respond to user feedback quickly
[ ] Document any issues for post-mortem
Post-Go-Live:
[ ] Review meeting success rates
[ ] Address any reported issues
[ ] Collect user feedback
[ ] Plan improvements
Dashboard Checks (Daily):
- All devices online
- No critical alerts
- Meeting success rate >99%
Weekly Report:
- Device uptime statistics
- Meeting counts by room
- Any recurring issues
Tier 1 (Help Desk):
Common requests and solutions:
- "Meeting didn't start" → Check calendar invite
- "No audio" → Check volume, verify unmuted
- "No video" → Verify camera connected
- "Device offline" → Check TV power, network
Tier 2 (IT Admin):
Escalation triggers:
- Device offline >30 minutes
- Repeated meeting failures
- Hardware issues
- Configuration problems
Escalation Path:
User → Help Desk → IT Admin → Vendor (if hardware)
Weekly:
- Review alerts and resolve
- Check for available updates
Monthly:
- Apply software updates
- Review performance metrics
- Check hardware health
Quarterly:
- Security review
- Credential rotation
- Capacity planning
Track these metrics to measure success:
| Metric | Target | Measurement |
|---|---|---|
| Device Uptime | >99.5% | Dashboard metrics |
| Meeting Join Success | >99% | Dashboard metrics |
| User Satisfaction | >4/5 | Survey |
| Support Tickets | <1 per room/month | Help desk data |
| Setup Time | <10 min per room | Deployment log |
Device ID,MAC Address,Room Name,Location,Install Date,Status
PI-001,aa:bb:cc:dd:ee:01,Conference A,Bldg 1 Fl 2,2025-01-15,Active
PI-002,aa:bb:cc:dd:ee:02,Conference B,Bldg 1 Fl 2,2025-01-15,Active
PI-003,aa:bb:cc:dd:ee:03,Board Room,Bldg 1 Fl 3,2025-01-16,Active╔════════════════════════════════════════════════╗
║ Croom Quick Guide ║
╠════════════════════════════════════════════════╣
║ ║
║ STARTING A MEETING ║
║ 1. Turn on TV ║
║ 2. Meeting joins automatically! ║
║ ║
║ CONTROLS ║
║ 🎤 Tap microphone icon to mute ║
║ 📷 Tap camera icon to turn off video ║
║ 📞 Tap red button to leave meeting ║
║ ║
║ SCHEDULE MEETINGS ║
║ Invite: room-name@company.com ║
║ ║
║ PROBLEMS? ║
║ Call IT: x1234 or it-help@company.com ║
║ ║
╚════════════════════════════════════════════════╝
Meeting not joining?
├── Is TV on?
│ └── No → Turn on TV
│ └── Yes → Continue
├── Is correct HDMI input selected?
│ └── No → Select correct input
│ └── Yes → Continue
├── Does screen show Croom?
│ └── No → Check device power
│ └── Yes → Continue
├── Does screen show "Offline"?
│ └── Yes → Check network/call IT
│ └── No → Continue
├── Is meeting on calendar?
│ └── No → Invite room to meeting
│ └── Yes → Continue
└── Still not working?
└── Contact IT support
| Document | Version |
|---|---|
| Deployment Guide | 1.0 |
| Last Updated | 2025-12-15 |