Skip to content

Repository files navigation

DigiDarts

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.

Installation

Die Installation ist auf den produktiven Linux-Flow ausgelegt:

wget -qO- https://raw.githubusercontent.com/lpwithpaul/digidart/main/install.sh | bash

Das Install-Skript erledigt automatisch:

  • Docker installieren, falls noch nicht vorhanden
  • das Docker Compose Plugin pruefen
  • die produktive Compose-Konfiguration unter /opt/digidart schreiben
  • 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 | bash

Betrieb

Nach der Installation ist die Weboberflaeche standardmaessig unter http://<geraet>:3000 erreichbar.

Das System besteht aus:

  • backend: FastAPI-Backend mit Kamera-, Spiel- und Update-Logik
  • web: Next.js-Weboberflaeche
  • watchtower: 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.

Kameras

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

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 Einstellungen angestossen werden
  • Watchtower zieht neue Images aus GHCR
  • die betroffenen Container werden sauber neu gestartet

Dadurch bleibt das Deployment konsistent und containerbasiert.

Release Flow

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 --tags

Danach passiert automatisch:

  • der Workflow Docker Images baut die Release-Images und pusht sie nach GHCR
  • der Workflow Release erstellt einen GitHub Release
  • das Geraet kann die neue Version ueber die Weboberflaeche oder erneut per install.sh beziehen

Repository

Wichtige Dateien fuer den Produktbetrieb:

  • install.sh: One-Liner-Installation und Update-Einstieg
  • docker-compose.yml: produktiver Stack
  • .github/workflows/docker-images.yml: Docker-Release-Builds auf Tags
  • .github/workflows/release.yml: GitHub Releases auf Tags
  • apps/client-backend/Dockerfile: Backend-Image
  • apps/web-local/Dockerfile: Web-Image

Ergaenzende Architekturinfos liegen unter docs/.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages