Ein Container, und dann sieh dich um
Keine Datenbank daneben, kein Zwischenspeicher, kein Bauschritt. Der erste Start legt den Betreiber an und bietet ein Brett mit erfundenen, sich bewegenden Daten an. Du kannst also alles ansehen, bevor du einen einzigen Schlüssel eintippst.
Drei Zeilen
mkdir nexdeck && cd nexdeck
curl -fsSL https://raw.githubusercontent.com/DerKezorm/nexdeck/main/docker-compose.yml -o docker-compose.yml
docker compose up -d
Danach steht nexdeck auf http://dein-host:5175. Das Abbild kommt von ghcr.io/derkezorm/nexdeck.
Umgebungsvariablen
Alle stehen mit ihrer Voreinstellung in .env.example im Repository. Die hier braucht man wirklich.
| Variable | Voreinstellung | Wofür |
|---|---|---|
NEXDECK_SECRET_KEY | wird erzeugt | Verschlüsselt die abgelegten Schlüssel und unterschreibt die Sitzungen. Einmal setzen und behalten. |
NEXDECK_PUBLIC_URL | leer | Wie Browser nexdeck erreichen. Nötig für OpenID Connect und Web Push. |
NEXDECK_URL_BASE | leer | Unterpfad, wenn nexdeck darunter läuft, etwa /deck. |
NEXDECK_DEMO | 0 | Jede Karte startet mit erfundenen Daten. |
NEXDECK_LOG_LEVEL | INFO | DEBUG schreibt jede Anfrage eines Adapters mit. |
PUID, PGID | 1000 | Wem die Dateien im Datenverzeichnis gehören. |
DOCKER_GID | wird erkannt | Gruppe des eingehängten Docker-Sockets, wenn die Erkennung danebengeht. |
Der Docker-Socket ist in der Compose-Datei schon eingehängt. Damit siehst du die Container dieser Maschine, kannst sie neu starten und ihr Protokoll mitlesen. Auf einer Synology bedient derselbe Socket den Container Manager. Wer das nicht will, nimmt die Zeile heraus; alles andere läuft weiter.
Eine Zeile, an die alle denken müssen
nexdeck spricht innen einfaches HTTP auf Port 8000 und glaubt X-Forwarded-Proto, wenn es um seine Plätzchen geht.
Die Daten kommen über Server-Sent Events, und die verträgt kein Proxy, der zwischenpuffert. Traefik und Caddy brauchen dafür nichts. nginx braucht eine Zeile:
location / { proxy_pass http://nexdeck:8000; # Ohne diese Zeile stehen die Karten still. proxy_buffering off; }
Woran man es merkt
Die Seite lädt, die Karten füllen sich einmal, und danach bewegt sich nichts mehr. Das sieht aus, als wäre nexdeck kaputt, und ist der Proxy.
Zwei weitere Fußangeln
- Broadcast bleibt im Netz des Containers. Das Wecken über Wake-on-LAN erreicht nur, was im selben Netz hängt.
- Der Hauptschlüssel gehört gesetzt, bevor die erste Anbindung angelegt wird. Wird er später ausgetauscht, sind die abgelegten Zugänge nicht mehr lesbar.
Und wenn etwas klemmt
Die Anleitungen
Anbindungen und Karten, Docker-Beschriftungen, Bretter als Dateien, Kiosk und die Schnittstelle liegen im Repository unter docs/.
Fehler melden
Am hilfreichsten mit der Version des Dienstes, um den es geht. Bei einer Anbindung mit Beta-Zeichen ist genau das der fehlende Beweis.
Selbst bauen
Backend Python mit FastAPI, Oberfläche React und Vite. Ein Adapter ist eine Datei, und für seine Karten braucht es keinen Frontend-Code.