Quick start
Setup paths for users, admins, and builders.
Choose the tab that matches what you need right now: install the client, run a production-ready server, or compile from source.
For most users: download the desktop client
If your team already has a server, this is all you need. Install the app and join instantly.
- Open the latest GitHub release.
- Download the desktop build for your platform (Windows, macOS, or Linux).
- Install and launch the client.
- Connect to your server URL or paste an invite code from an admin.
Windows
NSIS installer + portable executable
macOS
DMG for Apple Silicon and Intel
Linux
AppImage and deb packages
For admins: run a Raddir server with Docker
This is the fastest production-style setup. Start with Docker Compose, then adjust variables for your environment.
services:
raddir:
image: zahli/raddir-server:latest
container_name: raddir
restart: unless-stopped
ports:
- "4000:4000"
- "40000-40100:40000-40100/udp"
environment:
- RADDIR_HOST=0.0.0.0
- RADDIR_PORT=4000
- RADDIR_DB_PATH=/data/raddir.db
- RADDIR_MEDIA_WORKERS=<optional-worker-count>
- RADDIR_CONFIG_PATH=/data/raddir.config.json
- RADDIR_RTC_MIN_PORT=40000
- RADDIR_RTC_MAX_PORT=40100
- RADDIR_ANNOUNCED_IP=<your-public-ip-or-dns>
- RADDIR_ADMIN_TOKEN=<strong-admin-token>
- RADDIR_OPEN_ADMIN=false
- RADDIR_PASSWORD=<optional-server-password>
- RADDIR_TRUST_PROXY=false
- RADDIR_TLS_MODE=selfsigned
- RADDIR_TLS_DOMAIN=<your-domain-for-letsencrypt>
- RADDIR_TLS_EMAIL=<your-email-for-letsencrypt>
- RADDIR_TLS_CERT=/data/tls/fullchain.pem
- RADDIR_TLS_KEY=/data/tls/privkey.pem
- RADDIR_LOG_LEVEL=info
volumes:
- raddir-data:/data
volumes:
raddir-data:
driver: local| Variable | Required | Purpose |
|---|---|---|
RADDIR_HOST | Yes | Server bind address. Use 0.0.0.0 in containers. |
RADDIR_PORT | Yes | HTTPS + WSS port for API and signaling. |
RADDIR_DB_PATH | Yes | SQLite database location inside container. |
RADDIR_MEDIA_WORKERS | Optional | Number of mediasoup workers (defaults to CPU count). |
RADDIR_CONFIG_PATH | Optional | Path to JSON config file for file-based server settings. |
RADDIR_RTC_MIN_PORT / RADDIR_RTC_MAX_PORT | Yes | UDP range for WebRTC media traffic. |
RADDIR_ANNOUNCED_IP | For remote users | Public IP or DNS name clients should connect to. |
RADDIR_ADMIN_TOKEN | Recommended | Protects admin API actions. |
RADDIR_OPEN_ADMIN | Optional | Allow admin API without token (not recommended on public servers). |
RADDIR_PASSWORD | Optional | Server-wide access password for private deployments. |
RADDIR_TLS_MODE | Yes | selfsigned, letsencrypt, or custom. |
RADDIR_TLS_DOMAIN | For letsencrypt | Public website/domain name used for ACME certificate issuance. |
RADDIR_TLS_EMAIL | For letsencrypt | Contact email for Let's Encrypt account and expiry notices. |
RADDIR_TLS_CERT | For custom TLS | Path to PEM certificate file. |
RADDIR_TLS_KEY | For custom TLS | Path to PEM private key file. |
RADDIR_TRUST_PROXY | Optional | Set true only behind a trusted reverse proxy. |
RADDIR_LOG_LEVEL | Optional | Logging verbosity (debug, info, warn, error). |
Network notes: expose TCP 4000 plus your configured UDP media range (for example 40000-40100).
If you use RADDIR_TLS_MODE=letsencrypt, also expose TCP 80 so ACME HTTP-01 validation can complete.
From source: compile and run the project yourself
Use this if you want local development, custom changes, or your own build pipeline.
Development workflow
pnpm install
pnpm build:shared
pnpm dev:server
pnpm dev:clientCompile desktop binaries
# Build desktop binaries (run on target OS)
pnpm electron:build:win
pnpm electron:build:mac
pnpm electron:build:linuxBuild outputs are written to packages/client/release/. Build on each target OS for native installers.
Next: review Technology and Features before production rollout.
Full command reference: README