DigiDarts ist eine lokale Dartboard-Edge-Software fuer Linux-Systeme mit drei USB-Kameras. Die Anwendung laeuft als Docker-Stack, wird per One-Liner installiert und spaeter direkt ueber die Weboberflaeche aktualisiert.
Die Installation ist auf den produktiven Linux-Flow ausgelegt:
wget -qO- https://raw.githubusercontent.com/lpwithpaul/digidart/main/install.sh | bashDas Install-Skript erledigt automatisch:
- Docker installieren, falls noch nicht vorhanden
- das Docker Compose Plugin pruefen
- die produktive Compose-Konfiguration unter
/opt/digidartschreiben - die aktuellen Images aus GHCR herunterladen
- DigiDarts starten
Optional kannst du beim Installieren Variablen mitgeben, zum Beispiel fuer einen festen Release-Tag oder einen anderen HTTP-Port:
DIGIDART_IMAGE_TAG=v0.1.1 DIGIDART_HTTP_PORT=80 wget -qO- https://raw.githubusercontent.com/lpwithpaul/digidart/main/install.sh | bashNach der Installation ist die Weboberflaeche standardmaessig unter http://<geraet>:3000 erreichbar.
Das System besteht aus:
backend: FastAPI-Backend mit Kamera-, Spiel- und Update-Logikweb: Next.js-Weboberflaechewatchtower: Update-Container fuer kontrollierte Image-Updates
Die Container laufen mit restart: always und starten dadurch nach einem Host-Neustart automatisch wieder, sobald Docker verfuegbar ist.
DigiDarts ist auf genau drei Kamera-Slots ausgelegt.
Im Bereich Setup kannst du:
- die drei Kamera-Slots live sehen
- erkannte
/dev/video*-Geraete neu einlesen - pro Slot das Kamera-Geraet auswaehlen
- Aufloesung und FPS einstellen
Fuer echte USB-Kameras auf Linux bindet der Produktions-Stack /dev in den Backend-Container ein und erlaubt Video-Devices ueber die CGroup-Regel c 81:* rmw. Dadurch kann OpenCV im Container auf /dev/video* zugreifen.
Updates laufen über Watchtower, der die Images aus GHCR zieht und die Container sauber neu startet.
Der Ablauf ist:
- die Weboberflaeche prueft, ob ein neuer GitHub Release verfuegbar ist
- wenn ein Update vorhanden ist, kann es direkt ueber
Einstellungenangestossen werden - Watchtower zieht neue Images aus GHCR
- die betroffenen Container werden sauber neu gestartet
Dadurch bleibt das Deployment konsistent und containerbasiert.
Neue ausrollbare Versionen werden ueber Git-Tags veroeffentlicht.
Beispiel:
bash scripts/release.sh 0.1.1
git add .
git commit -m "Release 0.1.1"
git tag v0.1.1
git push origin main --tagsDanach passiert automatisch:
- der Workflow
Docker Imagesbaut die Release-Images und pusht sie nach GHCR - der Workflow
Releaseerstellt einen GitHub Release - das Geraet kann die neue Version ueber die Weboberflaeche oder erneut per
install.shbeziehen
Wichtige Dateien fuer den Produktbetrieb:
install.sh: One-Liner-Installation und Update-Einstiegdocker-compose.yml: produktiver Stack.github/workflows/docker-images.yml: Docker-Release-Builds auf Tags.github/workflows/release.yml: GitHub Releases auf Tagsapps/client-backend/Dockerfile: Backend-Imageapps/web-local/Dockerfile: Web-Image
Ergaenzende Architekturinfos liegen unter docs/.