A French Initiative for Digital Resiliency — Breaking vendor lock-in. Protecting data privacy. Empowering organizations.

Croom Administrator Guide

Overview

This guide is for IT administrators responsible for deploying, configuring, and maintaining Croom devices across an organization.


Table of Contents

  1. System Requirements
  2. Architecture Overview
  3. Initial Setup
  4. Device Management
  5. Configuration
  6. Monitoring & Alerting
  7. Security
  8. Troubleshooting
  9. Maintenance
  10. Best Practices

1. System Requirements

1.1 Hardware Requirements

Croom Device

| Component | Minimum | Recommended | |———–|———|————-| | Device | Raspberry Pi 4B 2GB | Raspberry Pi 4B 4GB | | Storage | 16GB microSD | 32GB microSD (Class 10) | | Power | Official 5V 3A USB-C | Official 5V 3A USB-C | | Cooling | Passive heatsink | ArgonOne case (active) |

Peripherals

| Component | Minimum | Recommended | |———–|———|————-| | Camera | Any USB webcam | Logitech C920/C922 | | Audio | Webcam mic + TV speakers | Jabra Speak 510 | | TV | Any HDMI TV | HDMI-CEC compatible |

1.2 Network Requirements

Requirement Details
Connectivity WiFi (WPA2/WPA3) or Ethernet
Bandwidth 2 Mbps per device (minimum)
Latency <100ms to meeting servers
Ports HTTPS (443), WebRTC media ports

Firewall Rules (Outbound)

# Required
TCP 443  → *.google.com, *.microsoft.com, *.zoom.us
UDP 3478 → STUN/TURN servers
UDP 10000-20000 → Media (varies by platform)

# Management Dashboard
TCP 443  → dashboard.yourcompany.com

1.3 Software Requirements

Management Dashboard Server

| Component | Requirement | |———–|————-| | OS | Ubuntu 20.04+, RHEL 8+, or Docker | | CPU | 2+ cores | | RAM | 4GB minimum, 8GB recommended | | Storage | 50GB+ (depends on retention) | | Database | PostgreSQL 13+ |


2. Architecture Overview

2.1 System Components

┌─────────────────────────────────────────────────────────────────┐
│                    Cloud/On-Premise                              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │ Management  │  │   Database  │  │   Message   │              │
│  │  Dashboard  │  │ (PostgreSQL)│  │    Queue    │              │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘              │
│         │                │                │                     │
│         └────────────────┴────────────────┘                     │
│                          │                                      │
└──────────────────────────┼──────────────────────────────────────┘
                           │ HTTPS/WSS
              ┌────────────┼────────────┐
              │            │            │
              ▼            ▼            ▼
         ┌─────────┐  ┌─────────┐  ┌─────────┐
         │ Croom  │  │ Croom  │  │ Croom  │
         │ Device 1│  │ Device 2│  │ Device N│
         └─────────┘  └─────────┘  └─────────┘

2.2 Device Software Stack

┌─────────────────────────────────────────┐
│           Meeting Platform              │
│  (Google Meet/Teams/Zoom/Webex)        │
├─────────────────────────────────────────┤
│         Chromium Browser                │
│  (Hardware accelerated, extensions)    │
├─────────────────────────────────────────┤
│         Croom Agent                    │
│  (Device management, metrics, config)  │
├─────────────────────────────────────────┤
│         System Services                 │
│  (systemd, NetworkManager, PulseAudio) │
├─────────────────────────────────────────┤
│      Raspberry Pi OS (64-bit)          │
├─────────────────────────────────────────┤
│         Raspberry Pi 4B                 │
└─────────────────────────────────────────┘

3. Initial Setup

3.1 Image Preparation

Option A: Pre-built Image

Download the latest Croom image from releases:

wget https://github.com/amirhmoradi/croom.to/releases/latest/croom.img.gz
gunzip croom.img.gz

Option B: Build from Source

git clone https://github.com/amirhmoradi/croom.to.git
cd croom/build
./download-img.sh
./prep-img.sh

3.2 Flashing SD Cards

Single Device

# Identify SD card device
lsblk

# Flash image (replace /dev/sdX with your device)
sudo dd if=croom.img of=/dev/sdX bs=4M status=progress
sync

Bulk Flashing

Use tools like Balena Etcher for multiple cards, or:

# Flash multiple cards in parallel
for dev in /dev/sd{b,c,d}; do
  sudo dd if=croom.img of=$dev bs=4M &
done
wait

3.3 First Boot Configuration

  1. Insert SD card and power on device
  2. Connect to Croom-Setup-XXXX WiFi
  3. Browser opens setup wizard automatically
  4. Configure WiFi, credentials, and room name
  5. Device reboots and registers with dashboard

Method 2: USB Configuration

Create croom-config.yaml on USB drive:

version: 1
device:
  name: "Conference Room A"
  location: "Building 1, Floor 2"
  timezone: "America/Los_Angeles"

network:
  wifi:
    ssid: "CorpWiFi"
    password: "your-wifi-password"

meeting:
  platform: "google_meet"
  credentials:
    email: "[email protected]"
    password: "meeting-account-password"

dashboard:
  url: "https://croom.yourcompany.com"
  enrollment_token: "your-enrollment-token"

Insert USB before booting, device auto-configures.

Method 3: Dashboard Pre-registration

  1. Add device to dashboard with MAC address
  2. Generate enrollment token
  3. Boot device on network
  4. Device contacts dashboard and receives config

3.4 Dashboard Installation

# Pull and run
docker-compose -f docker-compose.prod.yml up -d

# Initial setup
docker exec -it croom-dashboard ./manage.py createsuperuser

Manual Installation

# Clone repository
git clone https://github.com/amirhmoradi/croom.to-dashboard.git
cd croom-dashboard

# Install dependencies
npm install
pip install -r requirements.txt

# Configure
cp .env.example .env
# Edit .env with your settings

# Initialize database
./manage.py migrate
./manage.py createsuperuser

# Start services
./manage.py runserver

4. Device Management

4.1 Dashboard Overview

Device List View

Device Detail View

4.2 Device Operations

Remote Restart

# Via dashboard
Dashboard → Devices → [Device] → Actions → Restart

# Via API
curl -X POST https://dashboard/api/v1/devices/{id}/actions \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"action": "restart"}'

Configuration Update

# Via dashboard
Dashboard → Devices → [Device] → Configuration → Edit

# Via API
curl -X PUT https://dashboard/api/v1/devices/{id}/config \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"meeting": {"platform": "teams"}}'

Software Update

# Via dashboard (bulk)
Dashboard → Devices → Select All → Actions → Update Software

# Automatic updates
Configure auto-update policy in Dashboard → Settings → Updates

4.3 Grouping & Organization

Device Groups

Organize devices by:

Bulk Operations


5. Configuration

5.1 Device Configuration

Core Settings

| Setting | Description | Default | |———|————-|———| | device.name | Display name | Hostname | | device.location | Physical location | - | | device.timezone | Time zone | UTC | | device.auto_update | Enable auto-updates | true |

Meeting Settings

| Setting | Description | Default | |———|————-|———| | meeting.platform | Primary platform | google_meet | | meeting.join_early | Minutes before meeting | 1 | | meeting.auto_leave | Leave when empty | true | | meeting.camera_default | Camera on by default | true | | meeting.mic_default | Mic on by default | true |

Network Settings

| Setting | Description | Default | |———|————-|———| | network.wifi.ssid | WiFi network name | - | | network.proxy | HTTP proxy URL | - | | network.ntp_server | NTP server | pool.ntp.org |

5.2 Configuration Templates

Create reusable templates for consistent deployment:

# template-standard-room.yaml
name: "Standard Conference Room"
settings:
  meeting:
    platform: auto
    join_early: 2
    auto_leave: true
  audio:
    device: auto
    echo_cancellation: true
  video:
    device: auto
    resolution: 1080p

Apply templates:

# Dashboard
Dashboard → Configuration → Templates → Apply to Devices

# API
curl -X POST https://dashboard/api/v1/devices/bulk/config \
  -d '{"device_ids": ["id1", "id2"], "template": "standard-room"}'

5.3 Calendar Configuration

Google Calendar

  1. Create service account in Google Cloud Console
  2. Enable Calendar API
  3. Share room calendars with service account
  4. Configure in dashboard with service account credentials

Microsoft 365

  1. Register application in Azure AD
  2. Configure Calendar.Read permissions
  3. Grant admin consent
  4. Configure in dashboard with app credentials

6. Monitoring & Alerting

6.1 Metrics Collected

System Metrics

| Metric | Description | Alert Threshold | |——–|————-|—————–| | CPU Usage | CPU utilization % | >90% for 5 min | | Memory Usage | RAM utilization % | >90% for 5 min | | Temperature | CPU temperature °C | >70°C | | Disk Usage | Storage utilization % | >90% | | Network Latency | Ping to dashboard ms | >500ms |

Meeting Metrics

| Metric | Description | Alert Threshold | |——–|————-|—————–| | Join Success | Meeting join success rate | <95% | | Join Time | Seconds to join meeting | >60s | | Audio Quality | Audio bitrate/quality | Below threshold | | Video Quality | Video resolution/fps | Below threshold |

6.2 Alert Configuration

Alert Rules

# alerts.yaml
rules:
  - name: device_offline
    condition: "status == 'offline' for 5m"
    severity: critical
    channels: [email, slack]

  - name: high_temperature
    condition: "temperature > 70"
    severity: warning
    channels: [email]

  - name: meeting_join_failed
    condition: "join_failures > 3 in 1h"
    severity: critical
    channels: [email, slack, pagerduty]

Alert Channels

| Channel | Configuration | |———|—————| | Email | SMTP server, recipients | | Slack | Webhook URL, channel | | PagerDuty | Integration key | | Webhook | Custom URL endpoint |

6.3 Dashboards & Reports

Built-in Dashboards

Custom Reports

# Generate usage report
Dashboard → Reports → New Report → Usage Report

# Schedule weekly reports
Dashboard → Reports → Schedule → Weekly → Email to admins

7. Security

7.1 Access Control

User Roles

| Role | Permissions | |——|————-| | Super Admin | Full access, user management | | IT Admin | Device management, configuration | | Site Admin | Manage assigned locations only | | Viewer | Read-only access |

Creating Users

# Dashboard
Dashboard → Settings → Users → Add User

# CLI
./manage.py createuser --email [email protected] --role it_admin

7.2 Authentication

Local Authentication

SSO Configuration (SAML)

# saml.yaml
idp:
  entity_id: "https://idp.company.com"
  sso_url: "https://idp.company.com/sso"
  certificate: |
    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
sp:
  entity_id: "https://croom.company.com"
  acs_url: "https://croom.company.com/auth/saml/acs"

7.3 Credential Security

Encryption

Secret Manager Integration

# config.yaml
secrets:
  provider: hashicorp_vault
  vault_addr: "https://vault.company.com"
  vault_path: "secret/croom"
  auth_method: kubernetes  # or approle, token

7.4 Audit Logging

Logged Events

Log Export

# Export to SIEM
Dashboard → Settings → Integrations → SIEM → Configure

# Manual export
curl https://dashboard/api/v1/audit-logs \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"start": "2025-01-01", "end": "2025-01-31"}' \
  > audit-logs.json

8. Troubleshooting

8.1 Common Issues

Device Not Coming Online

Symptom Check Solution
No network WiFi credentials Re-run setup wizard
Can’t reach dashboard Firewall rules Open TCP 443 outbound
Certificate error System time Sync NTP
Agent not running Service status Restart croom-agent
# SSH to device and check
ssh pi@device-ip

# Check network
ping -c 3 8.8.8.8
ping -c 3 dashboard.company.com

# Check agent status
sudo systemctl status croom-agent

# Check logs
sudo journalctl -u croom-agent -f

Meeting Join Failures

Symptom Check Solution
Authentication error Credentials Update credentials
Platform blocked Browser Clear cache, update
No calendar events Calendar sync Check calendar permissions
Timeout Network Check bandwidth
# Check Chromium logs
cat ~/.config/chromium/chrome_debug.log

# Test meeting manually
chromium-browser --temp-profile "https://meet.google.com/test-meeting"

Audio/Video Issues

Symptom Check Solution
No audio Device selection Check pulseaudio settings
No video Webcam connected Check lsusb, permissions
Poor quality Bandwidth Check network speed
Echo Settings Enable echo cancellation
# List audio devices
pactl list short sinks
pactl list short sources

# List video devices
v4l2-ctl --list-devices

# Test webcam
ffplay /dev/video0

8.2 Remote Diagnostics

Via Dashboard

Via SSH

Enable emergency SSH access:

# Dashboard
Dashboard → Devices → [Device] → Emergency Access → Enable SSH

# SSH in (uses certificate authentication)
ssh -i emergency.key admin@device-ip

8.3 Recovery Procedures

Factory Reset

# Via physical access
# Hold button for 10 seconds during boot

# Via dashboard
Dashboard → Devices → [Device] → Actions → Factory Reset

Reflashing Device

  1. Remove SD card from device
  2. Flash new image
  3. Device re-provisions on boot

9. Maintenance

9.1 Regular Tasks

Daily

Weekly

Monthly

Quarterly

9.2 Updates

Device Updates

# Automatic (recommended)
Dashboard → Settings → Updates → Enable Auto-Update

# Manual (scheduled)
Dashboard → Devices → Select → Actions → Schedule Update

# Emergency (immediate)
Dashboard → Devices → Select → Actions → Update Now

Dashboard Updates

# Docker
docker-compose pull
docker-compose up -d

# Manual
git pull
npm install
pip install -r requirements.txt
./manage.py migrate
systemctl restart croom-dashboard

9.3 Backup & Recovery

Dashboard Backup

# Database backup
pg_dump croom > backup-$(date +%Y%m%d).sql

# Full backup (database + config)
./scripts/backup.sh /backup/location

Device Backup

# Export device configurations
Dashboard → Devices → Export → All Configurations

Recovery

# Restore database
psql croom < backup-20250115.sql

# Restore device config
Dashboard → Devices → Import → Upload backup file

10. Best Practices

10.1 Deployment

10.2 Security

10.3 Monitoring

10.4 Documentation


Appendix

A. CLI Reference

# Agent CLI
croom-cli status          # Show device status
croom-cli config show     # Show current config
croom-cli config set      # Update config
croom-cli logs            # View logs
croom-cli restart         # Restart agent
croom-cli update          # Check for updates

B. API Reference

See API Documentation for complete API reference.

C. Glossary

Term Definition
Agent Software running on Croom device
Dashboard Web-based management interface
Platform Meeting service (Meet, Teams, Zoom)
Provisioning Initial device setup process
Template Reusable configuration preset

Version Information

Document Version
Administrator Guide 1.0
Last Updated 2025-12-15