Docker Compose Production Deployment
Using Docker Compose is the recommended method for deploying RUSEON Core in single-node production, homelab, and edge gateway environments.
Production docker-compose.yml
Create a docker-compose.yml file on your server:
yaml
version: "3.8"
services:
ruseon:
image: ghcr.io/rusegal/ruseon-core:latest
container_name: ruseon
restart: unless-stopped
network_mode: "host" # Recommended for high-throughput RTSP and WebRTC ICE
volumes:
- ./config.yaml:/app/config.yaml:ro
- ./data:/app/data
- /mnt/storage/recordings:/app/recordings
- /mnt/storage/backups:/app/backups
environment:
- RUSEON_ENV=production
- RUSEON_LOG_LEVEL=info
- GOMEMLIMIT=4GiB
- GOMAXPROCS=4
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:8080/livez || exit 1"]
interval: 15s
timeout: 3s
retries: 3
start_period: 5s
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
deploy:
resources:
limits:
memory: 4096M
cpus: "4.0"
reservations:
memory: 512MBridge Network Variant (Isolated Ports)
If you prefer standard Docker bridge networking instead of network_mode: host:
yaml
version: "3.8"
services:
ruseon:
image: ghcr.io/rusegal/ruseon-core:latest
container_name: ruseon
restart: unless-stopped
ports:
- "8080:8080" # Web UI, REST API, WHEP, HLS
- "8554:8554" # RTSP Server
- "50000-50100:50000-50100/udp" # WebRTC ICE Media Range
volumes:
- ./config.yaml:/app/config.yaml:ro
- ./data:/app/data
- ./recordings:/app/recordings
environment:
- RUSEON_ENV=productionOperational Commands
bash
# Start RUSEON Core in background
docker compose up -d
# View live container logs
docker compose logs -f ruseon
# Restart the service
docker compose restart ruseon
# Update to latest release image
docker compose pull && docker compose up -d