Docker images for camera.ui, one per hardware target, on Ubuntu 24.04.
docker compose up -d
# then open https://<host>:3443 (self-signed cert on first start)First boot installs the server and comes up after a few minutes — follow it with docker compose logs -f.
| Flavor | Tag | Hardware acceleration | Arch |
|---|---|---|---|
| CPU | latest |
software | amd64 + arm64 |
| Intel | intel |
Quick Sync / VA-API + OpenCL | amd64 |
| NVIDIA | nvidia |
NVENC / NVDEC + CUDA | amd64 |
| AMD | amd |
Mesa VA-API + OpenCL | amd64 |
Pick the flavor for your machine via its compose override (docker-compose.{intel,nvidia,amd}.yml).
AI accelerators (Coral, Hailo, Intel NPU) work with any flavor — they only need their device node passed through (see the commented devices: section in docker-compose.yml) plus a host driver.
To check what your host is missing (NVIDIA Container Toolkit, Hailo kernel driver, device nodes):
sudo ./scripts/host/cameraui-host.sh check # read-only diagnosis
sudo ./scripts/host/cameraui-host.sh nvidia # install the NVIDIA Container Toolkit
sudo ./scripts/host/cameraui-host.sh hailo # build + install the Hailo PCIe driver
sudo ./scripts/host/cameraui-host.sh coral # install the gasket driver (PCIe/M.2 Coral)On boot the container logs which devices actually arrived: [setup] accelerator devices: ... — if a device shows ✗ there but exists on the host, it is missing from your compose devices: list.
Host networking (the compose default) is recommended — camera.ui uses it for mDNS/Bonjour (HomeKit pairing, ONVIF discovery) and WebRTC live view.
All state lives in the /data volume (config, database, recordings, TLS certs). Back up the cameraui-data volume.
A second machine can join your camera.ui as a worker: it runs no UI of its own and takes over camera workloads (decoding, detection, recording) the master offloads to it. Generate a pairing code on the master (Workers view), fill it into docker-compose.worker.yml together with the master's address, then:
docker compose -f docker-compose.worker.yml up -dThe code is only needed once, the worker stores its credentials and reconnects on its own. Hardware acceleration works the same as on the main deployment.
See proxmox/ to run camera.ui in a Proxmox LXC.
| Port | Proto | Purpose |
|---|---|---|
| 3443 | tcp | HTTPS UI / API |
| 2000 | tcp | go2rtc |
| 2001 | tcp | RTSP |
| 2002 | tcp | SRTP |
| 2003 | tcp | RTMP |
| 2004 | tcp/udp | WebRTC |