Repository navigation
Nodvard Deck 0.12.0 – Docker-Stacks aus Git, Fail2ban in Nodvard Shield und engere Grenzen für Module und Anmeldungen
English version: below.
Deutsch
Das Wichtigste
- Docker-Stacks aus Git: Stacks aus einem Git-Repository einspielen, mit Vorschau jeder Änderung und Weg zurück zum Stand davor.
- Fail2ban in Nodvard Shield: gesperrte Adressen je Server sehen, entsperren oder selbst sperren.
- Mehr Sicherheit: Updates per Knopf nur für signiert freigegebene Versionen, eine Bremse gegen Passwort-Raten und engere Grenzen für Module.
- Keine Umstellung der Datenbank.
- Bei manchen Installationen ist danach etwas zu tun, siehe „Was du tun musst“.
Was du tun musst
-
Server, die root-Rechte nur über die Hilfsskripte bekommen: Einrichtungsbefehl noch einmal ausführen. Nodvard Shield bringt ein neues Hilfsskript mit und lehnt dort bis dahin Aktionen mit root-Rechten ab. Server mit voller sudo-Regel oder Anmeldung als root brauchen keinen Eingriff.
-
LATTICE_*aufNODVARD_DECK_*umstellen. Die alten Namen gelten in 0.12 noch, eine der nächsten Versionen, spätestens 1.0, liest sie nicht mehr. Welche der Container noch sieht, zeigt die Startseite dem Inhaber. In der.envneben der Compose-Datei von Hand umbenennen:LATTICE_PORT→NODVARD_DECK_PORT,LATTICE_DNS_1→NODVARD_DECK_DNS_1undLATTICE_DNS_2→NODVARD_DECK_DNS_2(die Startseite zeigt diese nicht, weil nur Compose die Datei liest). -
Alte volle sudo-Regel entfernen (empfohlen). Server, die vor 0.11.1 mit „Root-Rechte ohne Passwort“ eingerichtet wurden, haben oft noch
<benutzer> ALL=(root) NOPASSWD: ALL. Sobald kein Modul die Regel mehr braucht, weist die Übersicht unter „Braucht Aufmerksamkeit“ darauf hin und führt zum fertigen Einrichtungsbefehl mit „Volle sudo-Regel entfernen“.Von Hand entfernen, erst wenn „Verbindung prüfen“ bei jedem Hilfsskript „Eigene sudo-Regel vorhanden“ zeigt (
<benutzer>ist der SSH-Benutzer von Deck):sudo rm -f /etc/sudoers.d/nodvard-<benutzer> /etc/sudoers.d/lattice-<benutzer>
Danach noch einmal „Verbindung prüfen“. Anleitung: docs/11, Abschnitt 6.
-
Erweiterungen anderer Anbieter und eigene Skripte prüfen. Die alten Namen
latticeundlattice_sdk(Python-Pakete),LatticeExtensionundLatticeError(Klassen) und die Entry-Point-Gruppelattice.extensionsgibt es nicht mehr. Erweiterungen, die sie noch nutzen, lädt Deck nicht. Die Liste der Erweiterungen zeigt, welche betroffen sind, woran es liegt und was hilft. Eigene Skripte mitimport latticeoderpython -m lattice.…aufnodvard_deckumstellen. Die Oberfläche einer Erweiterung brauchtwindow.__nodvardDeckstattwindow.__lattice.
Neu
Docker: Stacks aus Git
- Ein Stack, den Deck verwaltet (in Deck angelegt oder mit „Übernehmen“ übernommen), kann ein Git-Repository als Quelle bekommen, nur über
https://. - Vor jedem Einspielen siehst du, welche Dateien neu oder anders wären, samt Unterschied der Compose-Datei und Hinweisen auf alles, was nicht aus dem Repository kommt.
- Eingespielt wird nach Rückfrage und Freigabe, mit den Rechten des Besitzers des Stack-Ordners.
- Lehnt Compose den neuen Stand ab, steht sofort wieder der alte auf dem Server.
- „Zurück zum Stand davor“ stellt den Stand vor dem letzten Einspielen wieder her und entfernt dabei nur Dateien, die Deck selbst geschrieben hat und die seitdem niemand geändert hat.
- Deck ersetzt vorhandene Umgebungsdateien wie
.envnie und löscht eine selbst angelegte nur bei „Zurück zum Stand davor“ wieder. - Neu gestartet werden nur die Dienste aus der Freigabe, und für weitere gibt es „Jetzt neu starten“ mit eigener Freigabe.
- Nach dem Neustart wird geprüft, ob die Dienste stabil laufen, auch solche, die vorher gestoppt waren.
- Vorher lassen sich die Volumes des Stacks sichern, wobei die Dienste, die sie nutzen, stillstehen.
- Zurückspielen geht im Reiter Stacks unter „Sicherungen“.
- Git-Zugänge für private Repositorys stehen in den Einstellungen des Moduls Docker, und ihr Token liegt im Tresor und geht nur an den eingetragenen Server.
Nodvard Shield
- Einbruchschutz: Je Server siehst du die von Fail2ban gesperrten Adressen, kannst sie entsperren und selbst Adressen sperren.
- Die IP-Adresse deines Browsers und die Adresse, über die Deck den Server erreicht, lassen sich nicht sperren, damit sich niemand selbst aussperrt.
- Update-Zentrale: Bei Ubuntu-Servern steht, wie viele Updates noch schrittweise verteilt werden („Phasing“), mit kurzer Erklärung.
- Update-Zentrale: „Alle einspielen“ spielt schrittweise verteilte Updates erst ein, wenn der Server an der Reihe ist, und weist in der Rückfrage vorher darauf hin.
Server und sudo
- „Volle sudo-Regel entfernen“ unter „Erweitert“ im Einrichtungsbefehl prüft jedes Hilfsskript vorher und nachher und stellt die Regel bei einem Fehler sofort wieder her.
- Das neue Häkchen „Volle sudo-Regel gewollt“ beim Server ist für alle, die über Deck eigene Befehle mit sudo starten.
Einstellungen
- Meldet sich der Inhaber über einen Proxy im Heimnetz an, der nicht als vertrauenswürdig eingetragen ist, gibt es einen Hinweis, denn ohne Eintrag sieht Deck die echten Adressen nicht.
Sicherheit
Updates
- „Jetzt aktualisieren“ bietet Deck nur noch für Versionen an, die am Release mit dem Schlüssel des Projekts freigegeben sind.
- Ein aktueller Update-Helfer prüft die Signatur dieser Freigabe selbst und lehnt eine falsche ab. Pflicht für jedes Update wird die Signatur erst mit 1.0, siehe „Gut zu wissen“.
- Mit einem aktuellen Update-Helfer spielt „Jetzt aktualisieren“ genau die Fassung ein, die die Update-Suche geprüft hat.
- Hat sich das Update seitdem geändert, lädt der Knopf nichts und bittet um eine neue Update-Suche.
Anmeldung
- Anmelde-Tokens (Access-Tokens) werden beim Abmelden, beim Passwortwechsel (für die anderen Anmeldungen) und beim Deaktivieren und Wiederaktivieren eines Kontos sofort ungültig, statt noch bis zu 15 Minuten zu gelten.
- Nach 10 falschen Anmeldungen für einen Namen in 24 Stunden wartet jeder weitere Versuch aus demselben Netz doppelt so lange wie der vorige, höchstens 5 Minuten, und du bekommst eine Meldung.
- Die Bremse gilt je Netz: Aus deinem Heimnetz, per VPN und aus anderen Netzen kommst du weiter sofort hinein.
- Gegen Angreifer mit sehr vielen Adressen helfen weiter ein langes Passwort und Zwei-Faktor.
Browser
- Kamera, Mikrofon, Standort und andere Geräte, die Deck nie braucht, sind im Browser gesperrt.
- Fremde Seiten können Deck nicht mehr einbinden, außer Logo, Symbolen und der Erreichbarkeits-Prüfung.
- Bilder, Daten und Verbindungen lädt die Oberfläche nur noch vom eigenen Server, und der Browser sperrt fremde Adressen jetzt, statt sie nur zu melden.
Module
- Über ihren Datenbank-Zugang erreichen Module nur ihre eigenen Tabellen, nicht mehr Konten, Tresor oder Protokoll.
- Ein Geheimnis aus dem Tresor bekommt ein Modul nur mit dem Recht für genau dieses Geheimnis, auch nicht über Umwege, und die Zwei-Faktor-Schlüssel der Konten nie.
- Von den Einstellungen des Dashboards lesen Module nur noch Zeitzone und Wartungsfenster, nicht mehr etwa die Freigabe-Regeln oder die Liste der vertrauenswürdigen Proxys.
- Darf ein Modul nur bestimmte Adressbereiche erreichen, kommt es auch über einen Rechnernamen nicht daran vorbei.
- Welcher Befehl nach einer Aktion lief, sehen nur das vorschlagende Modul und Module, die selbst Befehle ausführen dürfen.
- Als Handelnde im Protokoll kann ein Modul nur noch die Person nennen, die wirklich beteiligt ist.
- Will eine nachinstallierte Erweiterung die Daten eines entfernten Moduls übernehmen, muss ein Admin das unter Einstellungen → Erweiterungen erlauben.
Server und Hilfsskripte
- Hilfsskripte landen nur noch in Ordnern, in die außer root niemand schreiben darf, auch keine Gruppe.
- Ist der Ordner zu offen, nennt die Einrichtung Grund und Abhilfe, und „Verbindung prüfen“ warnt bei schon eingerichteten Servern.
- Docker: Steht ein Server inzwischen auf „Nur bedienen“, wird eine vorgeschlagene Aktion nicht mehr ausgeführt, außer Starten, Stoppen und Neustarten von Containern.
- Docker: Ist ein Server nicht mehr als Docker-Server markiert, wird dort keine vorgeschlagene Docker-Aktion mehr ausgeführt.
- Docker: „Nur bedienen“ nutzt nach dem erneuten Einrichten immer Docker auf dem Server selbst, auch wenn root dort per
DOCKER_HOSToder Docker-Kontext auf einen anderen Docker-Dienst zeigt.
Nodvard Shield
- Ohne Hilfsskript kommt eine Datei nur noch in die Quarantäne, wenn ClamAV sie dabei erneut als Fund meldet.
- Aus der Quarantäne geht eine Datei nur an ihren alten Ort und mit ihren alten Rechten zurück, auch ohne Hilfsskript.
- Rückfrage und Freigabe sagen beim Wiederherstellen „an den hinterlegten Ort“, und das Ergebnis nennt den Ort, an den die Datei wirklich ging.
- Dateien, die mit Deck 0.8 oder älter in die Quarantäne kamen, legst du von Hand statt per Knopf zurück oder löschst sie, weil ihr alter Ort fehlt.
- Vorfälle bearbeiten darf nur, wer Shield verwalten darf (Recht
soc.manage), und mit nursoc.readbleiben sie lesbar.
Weiteres
- Scheitert eine Sicherung am Schreibrecht, stehen Benutzernummer und Befehl nur noch unter Einstellungen → System, nicht in Protokoll und Benachrichtigung.
- Die Texterkennung der Dokumente (Tesseract) bekommt mit jeder neuen Version die aktuellen Sicherheitsupdates.
- Die eingebaute Git-Bibliothek ist aktualisiert und bricht bei absichtlich kaputten Git-Daten nicht mehr ab.
Verbessert
- Erst-Einrichtung: Zwei-Faktor lässt sich auch nach „Jetzt einrichten“ mit „Später einrichten“ überspringen.
- Module: Stürzt ein Modul beim Start ab, steht der Grund verständlich da, mit den Knöpfen „Neu starten“ und „Ausschalten“.
- Updates: Die Karte „Updates“ zeigt, ob eine neue Version freigegeben ist und ob dein Update-Helfer die Freigabe selbst prüft.
- Update-Helfer: Die Compose-Datei für den Helfer hängt an jeder Version auf GitHub und nennt die Prüfsumme des geprüften Helfers.
- sudo: „Verbindung prüfen“ und die Übersicht zeigen eine unnötige volle sudo-Regel und führen direkt zum passenden Einrichtungsbefehl.
- Sicherungen: Fehlt das Schreibrecht für den Sicherungsordner, zeigt Einstellungen → System Benutzer, Besitzer und den Befehl zum Beheben.
- Sicherungen: Fehlt das Schreibrecht, sagen auch Push-Nachricht und Job-Protokoll, wo die Hilfe steht.
- Pi-hole und Nginx Proxy Manager: Ist der Dienst nicht erreichbar, steht ein deutscher Satz mit Grund und nächstem Schritt da statt einer englischen Fehlermeldung.
- Startseite: Widgets zeigen nur noch Knöpfe, für die du das Recht hast.
- Startseite: Der Inhaber sieht, welche
LATTICE_*-Einstellungen noch gesetzt sind und wie sie neu heißen. - Anmeldungen: Längst abgelaufene oder beendete Anmeldungen samt Adresse und Browser werden jede Nacht gelöscht.
- Protokoll: Schlägt ein Modul eine Aktion im Namen der KI, eines Zeitplans oder einer Person vor, steht das Modul mit im Eintrag.
- Oberfläche: Deck erkennt eine neue Fassung seiner Startseite am Inhalt statt an Größe und Uhrzeit der Datei und lässt sofort genau deren eingebettete Skripte zu.
- Lizenzen: Die Lizenzliste nennt bei zwei Lizenzen die gewählte und führt die Programme des Betriebssystems im Image auf.
- Anleitung: Eine Tabelle zeigt, was die Hilfsskripte als root dürfen, und beim Datei-Wächter steht, was root von überwachten Dateien liest.
Behoben
- Übersicht mit vielen Widgets: Sie lädt jetzt zuverlässig, statt nach einer halben Minute mit einem Datenbankfehler abzubrechen. Danke für die Meldung!
- Tresor: Ein neues Passwort, Token oder neuer Schlüssel gilt jetzt sofort bei qBittorrent, Synology DSM, Pi-hole, Nginx Proxy Manager, Home Assistant, Jellyfin, Plex, Nextcloud und Uptime Kuma, und eine Pause nach einer abgelehnten Anmeldung endet damit gleich. Bisher lief je nach Modul der alte Stand weiter, teils bis zu 30 Minuten, teils bis jemand die Einstellungen speicherte oder „Verbindung testen“ drückte.
- Pi-hole und Nginx Proxy Manager: „Verbindung testen“ meldet sich jedes Mal neu an und erkennt so ein falsches neues Passwort.
- Freigaben: Abgelaufene Freigaben heißen „Abgelaufen“ und lassen sich nur noch verwerfen.
- Docker: Ein Server mit den Markierungen „docker“ und „docker-bedienen“ gilt als voller Docker-Server.
- Docker: Einrichtung, „Verbindung prüfen“ und Übersicht melden ein fehlendes Hilfsskript für Docker jetzt als Problem.
- Docker: „Verbindung prüfen“ und Übersicht zeigen ein älteres Hilfsskript, das bis zum erneuten Einrichten weiterläuft, jetzt richtig an.
- Docker: Fehlt einem Server die Markierung „docker“, nennen Image-Update, Stack-Aktionen, Umzug von Portainer und Registry-Anmeldung den Grund statt nur „Kein Docker-Host.“
- Docker: Bricht das Zurückspielen einer Volume-Sicherung vor dem Tausch der Daten ab, läuft der Stack wieder und der halb entpackte Ordner ist weg.
- Docker: Bleibt ein Stack nach so einem Abbruch gestoppt, sagt eine Meldung Grund und nächsten Schritt.
- Docker: Eine unerwartete Antwort einer Registry macht nur dieses Image unprüfbar, nicht mehr den ganzen Server.
- Hilfsskripte: Bei einer ACL am Ordner der Hilfsskripte nennt die Einrichtung jetzt
setfacl -bund danachchmod g-wals Abhilfe (setfacl -ballein reichte nicht). - Nodvard Shield: Dateien mit Rechten wie 044 oder 000 lassen sich wieder aus der Quarantäne zurücklegen, auf Servern nur mit Hilfsskript nach dem erneuten Einrichten.
- Synology DSM: Die Integritätsprüfung von Hyper Backup gilt nicht mehr als Fehler.
- Einrichtung: Hast du den Schlüssel von Deck auf einem Server mit
#abgeschaltet, trägt das erneute Einrichten ihn wieder funktionierend ein. - Jobs: Das tägliche Aufräumen alter Job-Läufe bricht bei einem unbrauchbaren Dateinamen aus einer eingespielten Sicherung nicht mehr ab.
- Anzeige: Docker-Stacks mit vielen Knöpfen brechen um, Datum und Uhrzeit stehen immer auf Deutsch da, Inventar und Proxy-Hinweis sind richtig formuliert.
Gut zu wissen
- Aktualisieren: Einstellungen → „Updates“ → „Jetzt aktualisieren“ oder
docker compose pull && docker compose up -d. Von Hand geht ein Update weiter ohne Freigabe. - Schlüssel für Freigaben: Der öffentliche Schlüssel hat die Kennung
916fff4eb943eb5d. Den Update-Helfer richtest du mit der Compose-Datei ein, die an dieser Version hängt. - Signatur im Übergang: Bis 1.0 nimmt der Update-Helfer auch eine Anforderung ohne Freigabe an, etwa von einer älteren Deck-Version. Kommt eine Freigabe mit, prüft er ihre Signatur. Ab 1.0 spielt er nur noch Updates mit gültiger Signatur ein.
- Offene Browser-Tabs: Ein Tab, der vor dem Update offen war, muss beim ersten Öffnen einer Modulseite einmal neu geladen werden, die Seite bietet dafür einen Knopf.
- Erweiterungen mit alter Oberfläche: Nutzt nur die Oberfläche einer Erweiterung die alten Namen, fehlt ihre Seite, bis ihr Anbieter eine neue Fassung bringt.
- Nodvard Dock 0.12.0 (Beta) bringt die Stacks aus Git ebenfalls mit und hat eigene Release-Notes.
English
The web interface is in German only for now. Names of buttons, pages and settings are given in German as they appear, with a translation in brackets.
The essentials
- Docker stacks from Git: deploy a stack from a Git repository, with a preview of every change and a way back to the previous state.
- Fail2ban in Nodvard Shield: see banned addresses per server, unban them or ban an address yourself.
- Security: one-click updates only for versions with a signed release approval, throttling of password guessing and tighter limits for modules.
- No database migration.
- Some installations need attention afterwards, see “What you need to do”.
What you need to do
-
Servers that get root rights only through helper scripts: run the setup command again. Nodvard Shield ships a new helper script and blocks actions that need root on those servers until then. Servers with a full sudo rule or root login need no action.
-
Rename
LATTICE_*variables toNODVARD_DECK_*. The old names still work in 0.12 and will stop working in one of the next versions, 1.0 at the latest. The home page shows the owner which ones the container still sees. In the.envfile next to the Compose file, rename by hand:LATTICE_PORT→NODVARD_DECK_PORT,LATTICE_DNS_1→NODVARD_DECK_DNS_1andLATTICE_DNS_2→NODVARD_DECK_DNS_2(the home page cannot show these, because only Compose reads that file). -
Remove the old full sudo rule (recommended). Servers set up before 0.11.1 with “Root-Rechte ohne Passwort” (root without password) often still have
<user> ALL=(root) NOPASSWD: ALL. Once no module needs the rule any more, the overview points it out under “Braucht Aufmerksamkeit” (needs attention) and links to the ready-made setup command with “Volle sudo-Regel entfernen” (remove full sudo rule).Remove it by hand only once “Verbindung prüfen” (check connection) shows “Eigene sudo-Regel vorhanden” (own sudo rule present) for every helper script (
<user>is the SSH user Deck logs in with):sudo rm -f /etc/sudoers.d/nodvard-<user> /etc/sudoers.d/lattice-<user>
Then run “Verbindung prüfen” again. Details: FIRST-SETUP.md, section 6.
-
Check third-party extensions and your own scripts. The old names
latticeandlattice_sdk(Python packages),LatticeExtensionandLatticeError(classes) and the entry point grouplattice.extensionsare gone. Deck no longer loads extensions that still use them. The extension list shows which ones are affected, why and what helps. Change your own scripts fromimport latticeorpython -m lattice.…tonodvard_deck. An extension's interface needswindow.__nodvardDeckinstead ofwindow.__lattice.
Added
- Docker: a stack that Deck manages (created in Deck or adopted with “Übernehmen”) can use a Git repository as its source (
https://only). - Docker: before applying, you see which files would be new or changed, including the Compose diff and hints about anything that does not come from the repository.
- Docker: changes from Git are applied after a confirmation and an approval (“Freigabe”), with the permissions of the stack folder's owner.
- Docker: if Compose rejects the new files, the previous state is restored immediately.
- Docker: “Zurück zum Stand davor” (back to previous state) restores the files from before the last apply and only removes files Deck wrote itself that nobody has changed since.
- Docker: Deck never replaces existing environment files such as
.env, and only removes one it created itself when you use “Zurück zum Stand davor” (back to previous state). - Docker: only the services named in the approval are restarted, and “Jetzt neu starten” (restart now) handles any others with its own approval.
- Docker: after a restart, Deck checks that the services keep running, including ones that were stopped before.
- Docker: stack volumes can be backed up before applying, which stops the services using them during the backup.
- Docker: those backups are restored in the Stacks tab under “Sicherungen” (backups).
- Docker: Git credentials for private repositories, with the token kept in the vault (“Tresor”) and only sent to the server it is for.
- Nodvard Shield: the intrusion protection shows the addresses Fail2ban has banned on each server, and you can unban them or ban addresses yourself.
- Nodvard Shield: your browser's IP address and the address Deck uses to reach the server cannot be banned, so nobody locks themselves out.
- Nodvard Shield: the update centre shows how many Ubuntu updates are held back by phased rollout, with a short explanation.
- Nodvard Shield: “Alle einspielen” (install all) only installs those updates once the server's turn comes, and the confirmation points this out beforehand.
- Server setup: “Volle sudo-Regel entfernen” (remove full sudo rule) under “Erweitert” (advanced) checks every helper script before and after, and restores the rule if anything breaks.
- Servers: the new option “Volle sudo-Regel gewollt” (full sudo rule wanted) is for people who run their own sudo commands through Deck.
- Settings: a hint when the owner logs in through a home network proxy that is not listed as trusted, because without that entry Deck cannot see the real addresses.
Changed
- First setup: two-factor login can be skipped with “Später einrichten” (set up later), even after starting it.
- Modules: a module that crashes on start shows the reason and offers “Neu starten” (restart) and “Ausschalten” (turn off).
- Updates: the “Updates” card shows whether a new version is approved and whether your update helper checks approvals itself.
- Update helper: its Compose file is attached to every release and names the checksum of the verified helper.
- sudo: “Verbindung prüfen” (check connection) and the overview flag a full sudo rule that is no longer needed and link to the right setup command.
- Backups: if Deck cannot write to the backup folder, “Einstellungen → System” (Settings → System) shows the user, the folder's owner and the command to fix it.
- Backups: in that case, push notifications and job logs also say where to find help.
- Pi-hole and Nginx Proxy Manager: when unreachable, they explain in plain German why and what to do next, instead of showing an English error message.
- Home page: widgets only show buttons you are allowed to use.
- Home page: the owner sees which
LATTICE_*settings are still in use and what they are called now. - Logins: logins that expired or ended long ago are deleted every night, including their address and browser.
- Audit log: when a module proposes an action on behalf of the AI, a schedule or a person, the entry also names the module.
- Interface: Deck recognises a new version of its start page by its content instead of its file size and modification time, and allows exactly its inline scripts right away.
- Interface: only the Nodvard Deck names are used, so a browser tab opened before the update needs one reload when it first opens a module page (the page offers a button).
- Licences: the third-party licence list names the chosen licence for dual-licensed packages and includes the image's operating system packages.
- Docs: the setup guide has a table of what the helper scripts may do as root, and the file watcher section says what root reads from watched files.
Deprecated
LATTICE_*environment variables still work in 0.12 and will be removed in one of the next versions, 1.0 at the latest.
Removed
- The Python packages
latticeandlattice_sdk, the classesLatticeExtensionandLatticeErrorand the entry point grouplattice.extensions: extensions that use them are no longer loaded, and the extension list shows which ones, why and what helps. - Extensions whose interface uses the old names no longer show their page until their author ships a new version.
- Your own scripts with
import latticeorpython -m lattice.…must be changed to usenodvard_deck.
Fixed
- Overview: with many widgets it now loads reliably instead of failing with a database error after half a minute. Thanks for the report!
- Vault: a new password, token or key now takes effect immediately for qBittorrent, Synology DSM, Pi-hole, Nginx Proxy Manager, Home Assistant, Jellyfin, Plex, Nextcloud and Uptime Kuma, and a pause after a rejected login ends right away. Before, depending on the module, the old values stayed in use for up to 30 minutes or until someone saved the settings or pressed “Verbindung testen” (test connection).
- Pi-hole and Nginx Proxy Manager: “Verbindung testen” (test connection) logs in again every time, so a wrong new password shows up.
- Approvals: expired approvals are labelled “Abgelaufen” (expired) and can only be dismissed.
- Docker: a server tagged both “docker” and “docker-bedienen” counts as a full Docker server.
- Docker: setup, “Verbindung prüfen” (check connection) and the overview now report a missing Docker helper script as a problem.
- Docker: “Verbindung prüfen” and the overview now show correctly that an older Docker helper script keeps working until the setup command runs again.
- Docker: on a server that lost its “docker” tag, image updates, stack actions, Portainer migration and registry login now say why instead of just “Kein Docker-Host.” (no Docker host).
- Docker: if a volume restore aborts before the data swap, Deck starts the stack again and removes the half-extracted folder.
- Docker: if a stack stays stopped after such an abort, a message gives the reason and the next step.
- Docker: an unexpected registry response only makes that image uncheckable, not the whole server.
- Helper scripts: for an ACL on the helper script folder, setup now suggests
setfacl -bfollowed bychmod g-w(setfacl -balone was not enough). - Nodvard Shield: files with permissions such as 044 or 000 can be restored from quarantine again (on servers with helper scripts only, after running the setup command again).
- Synology DSM: Hyper Backup integrity checks no longer show up as errors.
- Server setup: if you disabled Deck's key on a server with a leading
#, running the setup command again puts back a working key. - Jobs: the nightly cleanup of old job runs no longer stops on an unusable file name from a restored backup.
- Display: Docker stacks with many buttons wrap, dates and times are always in German, and the wording of inventory and proxy hints is fixed.
Security
- Updates: Deck only offers “Jetzt aktualisieren” (update now) for versions approved at their release with the project's signing key.
- Updates: a current update helper verifies the signature of that approval itself and rejects a wrong one. The signature becomes mandatory for every update only with 1.0, see “Good to know”.
- Updates: with a current update helper, “Jetzt aktualisieren” (update now) installs exactly the version the update check verified.
- Updates: if the update has changed since, the button downloads nothing and asks you to check for updates again.
- Logins: access tokens stop working immediately on logout, on password change (for the other logins) and when an account is deactivated and activated again, instead of up to 15 minutes later.
- Logins: after 10 failed logins for one user name within 24 hours, each further attempt from the same network waits twice as long as the previous one, up to 5 minutes, and you get an alert.
- Logins: the throttling applies per network, so you can still log in right away from your home network, a VPN or any other network.
- Logins: against attackers with very many addresses, a long password and two-factor login still help.
- Browser: camera, microphone, location and other devices Deck never needs are blocked.
- Browser: other sites can no longer embed Deck, except for the logo, icons and the reachability check.
- Browser: the interface only loads images, data and connections from its own server, and the browser now blocks other addresses instead of only reporting them.
- Modules: database access only reaches each module's own tables, not accounts, the vault or the audit log.
- Modules: a module only gets a vault secret with the right for that exact secret, not even indirectly, and never the accounts' two-factor keys.
- Modules: from the dashboard settings, modules only read the time zone and maintenance window, not for example the approval rules or the list of trusted proxies.
- Modules: a module limited to certain address ranges can no longer get around that through host names.
- Modules: only the proposing module and modules allowed to run commands learn which command an action ran.
- Modules: the audit log only names a person as the actor if they were actually involved.
- Modules: an extension that wants to take over the data of a removed module needs an admin's permission under “Einstellungen → Erweiterungen” (Settings → Extensions).
- Helper scripts: they are only installed in folders that nobody but root can write to, not even a group.
- Helper scripts: if the folder is too open, setup names the reason and the fix, and “Verbindung prüfen” (check connection) warns about servers already set up.
- Docker: a proposed action no longer runs once the server has been switched to “Nur bedienen” (operate only), except starting, stopping and restarting containers.
- Docker: a proposed Docker action no longer runs on a server that is no longer tagged as a Docker server.
- Docker: after running the setup command again, “Nur bedienen” (operate only) always uses Docker on the server itself, even if root points to a different Docker daemon there through
DOCKER_HOSTor a Docker context. - Nodvard Shield: without the helper script, a file is only quarantined if ClamAV reports it again at that moment.
- Nodvard Shield: restore only puts a file back where it was, with its old permissions, also without the helper script.
- Nodvard Shield: the confirmation and approval for a restore say “an den hinterlegten Ort” (to the stored location), and the result names where the file actually went.
- Nodvard Shield: files quarantined with Deck 0.8 or older have to be put back or deleted by hand, because their original location is unknown.
- Nodvard Shield: managing incidents requires the
soc.manageright, and with onlysoc.readthey stay readable. - Backups: the user ID and fix command for a failed backup only appear under “Einstellungen → System” (Settings → System), not in logs and notifications.
- Dependencies: document text recognition (Tesseract) gets the latest security updates with every release.
- Dependencies: the bundled Git library is up to date and no longer crashes on deliberately broken Git data.
Good to know
- Updating: “Einstellungen → Updates → Jetzt aktualisieren” (Settings → Updates → update now), or
docker compose pull && docker compose up -d. Updating by hand works without an approval, as before. - Approval key: the public key approvals are signed with has the ID
916fff4eb943eb5d. Set up the update helper with the Compose file attached to this release. - Signature transition: until 1.0 the update helper also accepts a request without an approval, for example from an older Deck version. If an approval comes with it, the helper checks its signature. From 1.0 it only installs updates with a valid signature.
- Nodvard Dock 0.12.0 (beta) also gets the stacks from Git and has its own release notes.
Update-Helfer / Update helper
ghcr.io/nodvard/deck-updater@sha256:7d2702c5b568f83787d652b49d506f464f409db275ae646c5b7b427d42bb6b98 (Version 0.12.0)
Die Datei compose.standalone-mit-helfer.yml an diesem Release nennt genau diesen Helfer. Vergleichen kannst du den Digest mit docker buildx imagetools inspect ghcr.io/nodvard/deck-updater:0.12.0 (Zeile „Digest“).
The file compose.standalone-mit-helfer.yml attached to this release pins exactly this helper. Compare the digest with docker buildx imagetools inspect ghcr.io/nodvard/deck-updater:0.12.0 (line “Digest”).