Skip to content

Docker

Docker ist die empfohlene Art, den camera.ui-Server auf Linux zu betreiben. Das Image basiert auf Ubuntu 24.04 und bleibt klein: Beim ersten Start lädt und installiert es den Server selbst, sodass Updates kein neues Image brauchen. Es gibt ein Image pro Hardware-Ziel, veröffentlicht als ghcr.io/cameraui/camera.ui.

Bevor du startest

Du brauchst einen Linux-Host mit Docker Engine und dem Compose-Plugin.

Docker Desktop funktioniert nicht

Docker Desktop auf macOS und Windows kann kein Host-Networking nutzen, auf das camera.ui für mDNS und WebRTC angewiesen ist. Nutze auf diesen Plattformen stattdessen die Desktop-App.

Schnellstart

Speichere dies als docker-compose.yml:

yaml
name: cameraui

services:
  cameraui:
    image: ghcr.io/cameraui/camera.ui:latest
    container_name: cameraui
    restart: unless-stopped
    network_mode: host
    environment:
      - TZ=Europe/Berlin
      - CAMERAUI_DOCKER_AVAHI=true
    volumes:
      - cameraui-data:/data

volumes:
  cameraui-data:

Starte es:

bash
docker compose up -d

Öffne dann https://<host>:3443. Der erste Boot lädt und installiert den Server, was ein paar Minuten dauert. Verfolge das mit docker compose logs -f.

Dein Browser zeigt beim ersten Besuch eine Warnung wegen des selbstsignierten Zertifikats, und die App führt dich anschließend durch die Ersteinrichtung. Was danach kommt, steht unter Erste Schritte.

Erster Boot braucht Internet

Beim ersten Start lädt der Container den Server aus der npm-Registry. Falls dein Host sie nicht auflösen kann, füge dem Service öffentliche DNS-Resolver hinzu (1.1.1.1, 8.8.8.8).

Hardware-Beschleunigung

Das Standard-Image (latest) führt Erkennung und Video-Verarbeitung in Software aus. Für mehr Leistung wählst du den Flavor, der zu deiner Hardware passt, und legst sein Override über die Basisdatei.

FlavorTagHardware-BeschleunigungArch
CPUlatestSoftwareamd64 + arm64
IntelintelQuick Sync / VA-API + OpenCLamd64
NVIDIAnvidiaNVENC / NVDEC + CUDAamd64
AMDamdMesa VA-API + OpenCLamd64

Speichere das passende Override neben deiner docker-compose.yml:

yaml
name: cameraui
services:
  cameraui:
    image: ghcr.io/cameraui/camera.ui:intel
    devices:
      - /dev/dri:/dev/dri
yaml
name: cameraui
services:
  cameraui:
    image: ghcr.io/cameraui/camera.ui:nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=all
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu, compute, video, utility]
yaml
name: cameraui
services:
  cameraui:
    image: ghcr.io/cameraui/camera.ui:amd
    devices:
      - /dev/dri:/dev/dri

Starte dann beide Dateien zusammen (hier Intel):

bash
docker compose -f docker-compose.yml -f docker-compose.intel.yml up -d

Der NVIDIA-Flavor benötigt zusätzlich das NVIDIA Container Toolkit auf dem Host. Fertige compose-Dateien für jeden Flavor liegen im Repository cameraui/docker.

Netzwerk

Host-Networking (der compose-Standard) wird empfohlen. camera.ui nutzt es für mDNS / Bonjour (HomeKit-Pairing, ONVIF-Suche) und für die WebRTC-Live-Ansicht. Falls du kein Host-Networking nutzen kannst, veröffentliche stattdessen die Ports unten explizit.

Speicher für Aufnahmen

Standardmäßig liegen Aufnahmen im /data-Volume neben allem anderen. Um sie auf einer separaten, dedizierten Disk zu halten, binde diese ein und richte den NVR darauf aus:

yaml
    volumes:
      - cameraui-data:/data
      - /mnt/recordings:/recordings
    environment:
      - CAMERAUI_PLUGIN_NVR_STORAGE_PATH=/recordings

Nutze für /recordings eine dedizierte lokale Disk, keine Netzwerkfreigabe. Siehe Systemanforderungen.

Ports

camera.ui nutzt diese Ports (durch Host-Networking bereits abgedeckt):

PortProtoZweck
3443tcpHTTPS UI / API
2000tcpgo2rtc
2001tcpRTSP
2002tcpSRTP
2003tcpRTMP
2004tcp / udpWebRTC

Daten & Backups

Der gesamte Zustand liegt im cameraui-data-Volume: Konfiguration, Datenbank, Aufnahmen und TLS-Zertifikate. Sichere dieses Volume, um eine Kopie zu behalten. Siehe Backup & Wiederherstellung.

Aktualisieren

Der Server aktualisiert sich innerhalb der App selbst, und die gewählte Version bleibt über Image-Pulls hinweg erhalten. Um das Image selbst zu aktualisieren (OS, GPU-Bibliotheken und Launcher), ziehe es neu und erstelle den Container neu:

bash
docker compose pull
docker compose up -d

Details unter Aktualisieren.