Kontoverlust nach Update

Hallo,

Ist es normal, dass ich nach dem Update auf eine Seite « Ihr Gladys-Konto erstellen » stoße…
Ich habe keinen Zugriff mehr auf mein Konto.

Hallo @Olivier.L57,

Ich habe dein Thema in die richtige Kategorie verschoben :slight_smile:

Keine Panik: Ein Update von Gladys löscht keine Daten. Wenn du wieder auf dem Bildschirm „Konto erstellen“ landest, liegt das meistens daran, dass Gladys seine Datenbank nicht mehr findet.

Was wahrscheinlich passiert ist

Mit Docker ist ein Container wegwerfbar: Bei jedem Update wird der alte gelöscht und ein neuer erstellt. Damit deine Daten überleben, müssen sie außerhalb des Containers auf deiner Festplatte gespeichert werden. Dafür ist diese Option in dem Installationsbefehl zuständig:

-v /var/lib/gladysassistant:/var/lib/gladysassistant

Wenn Gladys ohne diese Option gestartet wurde, befand sich die Datenbank innerhalb des Containers und wurde mit ihm beim Update gelöscht.

Kannst du das überprüfen?

  1. Hast du Gladys mit dem offiziellen Befehl aus der Dokumentation installiert? Installation avec Docker | Gladys Assistant
  2. Kannst du mir das Ergebnis dieser Befehle schicken?
    • docker ps -a (um zu sehen, ob der alte Container noch existiert)
    • docker inspect --format '{{json .Mounts}}' gladys (um zu sehen, wo Gladys seine Daten speichert)
  3. Wie hast du das Update durchgeführt: automatisch (Watchtower) oder manuell?

Möglichkeiten, deine Daten wiederherzustellen

  • Wenn der alte Container noch in docker ps -a erscheint, sind deine Daten vielleicht noch darin, und wir können sie wiederherstellen. Vor allem, lösche ihn nicht!
  • Wenn du Gladys Plus hast, kannst du dein letztes Backup direkt bei der Kontoerstellung wiederherstellen.

Falls keine der beiden Optionen zutrifft, tut es mir leid, aber es gibt leider keine Möglichkeit, die Daten wiederherzustellen. In diesem Fall installiere Gladys mit dem Befehl aus der Dokumentation neu, und das wird sich bei zukünftigen Updates nicht wiederholen.

Danke für deine Antwort. Ich habe auf „Aktualisieren“ geklickt und die Installation erfolgreich mit Docker durchgeführt, indem ich dem Online-Tutorial gefolgt bin.

olivier@serveurgladys:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c5ad05e4636a eclipse-mosquitto:2.0.15 « /docker-entrypoint.… » 25 Minuten ago Up 25 Minuten eclipse-mosquitto
2cb88417b8b2 gladysassistant/gladys:v5 « docker-entrypoint.s… » 25 Minuten ago Up 4 Minuten gladys
30566e574c77 koenkk/zigbee2mqtt:2.14.2 « docker-entrypoint.s… » 26 Stunden ago Up 26 Stunden gladys-z2m-zigbee2mqtt
9c7976f669c2 eclipse-mosquitto:2.0.15 « /docker-entrypoint.… » 26 Stunden ago Up 26 Stunden gladys-z2m-mqtt
56452c1aceff nickfedor/watchtower:latest « /watchtower --clean… » 28 Stunden ago Up 28 Stunden (healthy) 8080/tcp watchtower
75a86d7c6f69 nodered/node-red:5.0 « ./entrypoint.sh » 3 Tage ago Up 2 Tage (healthy) 0.0.0.0:1881->1880/tcp, [::]:1881->1880/tcp gladys-node-red

sudo docker inspect --format ‹ {{json .Mounts}} › gladys
[{« Type »:« bind »,« Source »:« /var/lib/gladysassistant »,« Destination »:« /var/lib/gladysassistant »,« Mode »:«  »,« RW »:true,« Propagation »:« rprivate »},{« Type »:« bind »,« Source »:« /var/run/docker.sock »,« Destination »:« /var/run/docker.sock »,« Mode »:«  »,« RW »:true,« Propagation »:« rprivate »}]

ls -la /var/lib/gladysassistant
total 1148
drwxr-xr-x 7 root root 4096 Oct 18 09:22 .
drwxr-xr-x 55 root root 4096 Oct 17 22:49 ..
drwxr-xr-x 8 root root 4096 Oct 22 16:06 external-integrations
-rw-r–r-- 1 root root 872448 Oct 17 20:42 gladys-production.db
-rw-r–r-- 1 root root 274432 Oct 17 20:29 gladys-production.duckdb
drwxr-xr-x 2 root root 4096 Oct 25 15:03 homekit
drwxr-xr-x 2 1883 1883 4096 Oct 18 06:09 mosquitto
drwxr-xr-x 4 olivier olivier 4096 Oct 21 16:23 node-red
drwxr-xr-x 4 root root 4096 Oct 18 09:22 zigbee2mqtt

Danke für das Feedback, das ist sehr hilfreich!

Gute Nachricht: Deine Datenbank ist immer noch auf deiner Festplatte :slightly_smiling_face: Die Datei /var/lib/gladysassistant/gladys-production.db ist vorhanden.

Allerdings gibt es zwei Dinge, die mich stutzig machen:

  • Diese Datei wurde zuletzt am 17. Oktober um 20:42 Uhr geändert, obwohl Gladys normalerweise ständig darin schreibt, wenn sie läuft;
  • Es gibt keine Datei gladys-production.db-wal daneben, obwohl diese existieren sollte, wenn Gladys läuft.

Mein Fazit: Dein Gladys-Container verwendet diese Datei nicht. Ihm fehlt sehr wahrscheinlich die Variable SQLITE_FILE_PATH. Ohne sie speichert Gladys die Datenbank innerhalb des Containers, der bei jedem Update gelöscht wird. Übrigens hat dein Container nur 2 Volumes, während der aktuelle Befehl in der Dokumentation 5 hat: Er wurde wahrscheinlich mit einem anderen Befehl erstellt, vielleicht um den 17. Oktober herum?

Zur Bestätigung, kannst du mir bitte das Ergebnis von folgendem Befehl schicken:

sudo docker inspect --format '{{json .Config.Env}}' gladys

Wenn SQLITE_FILE_PATH nicht in der Liste erscheint, ist das der Fall.

Um deine Datenbank wiederherzustellen (falls bestätigt):

  1. Erstelle zunächst eine Sicherungskopie:

    sudo cp -a /var/lib/gladysassistant/gladys-production.db /var/lib/gladysassistant/gladys-production.db.bak
    sudo cp -a /var/lib/gladysassistant/gladys-production.duckdb /var/lib/gladysassistant/gladys-production.duckdb.bak
    
  2. Lösche den aktuellen Container. Deine Daten auf der Festplatte bleiben unberührt:

    sudo docker stop gladys && sudo docker rm gladys
    
  3. Erstelle ihn neu mit dem Befehl aus der Dokumentation (Gladys Assistant mit Docker installieren | Gladys Assistant), ohne etwas zu entfernen. Vor allem nicht die Zeile -e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db.

Gladys sollte dann mit deinem Konto, deinen Geräten und deinen Szenen starten, wie sie am 17. Oktober abends waren.

Ich möchte ehrlich sein: Was du zwischen dem 17. Oktober und heute gemacht hast, war im alten Container gespeichert, der durch das Update gelöscht wurde. Diese Änderungen sind leider verloren, es sei denn, du hast ein aktuelleres Gladys Plus-Backup. In diesem Fall kannst du es vom Kontoerstellungsbildschirm wiederherstellen.

Sobald der Container korrekt neu erstellt wurde, werden deine Daten bei zukünftigen Updates erhalten bleiben.

~$ sudo docker inspect --format ‹ {{json .Config.Env}} › gladys
[« PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin »,« NODE_VERSION=24.22.1 »,« YARN_VERSION=1.22.22 »,« LD_LIBRARY_PATH=/lib »,« NODE_ENV=production »,« SERVER_PORT=80 »,« GLADYS_OFFICIAL_RELEASE_IMAGE=true »]

Danke, bestätigt: SQLITE_FILE_PATH ist nicht in der Liste. Dein Container wurde ohne eine Option -e erstellt (es fehlt auch TZ), also nicht mit dem Befehl aus der Dokumentation. Gladys hat seine Datenbank innerhalb des Containers gespeichert, und das Update hat sie beim Neuerstellen des Containers gelöscht.

Jetzt können wir ihn ordnungsgemäß neu erstellen, damit er deine Datenbank vom 17. Oktober verwendet:

1. Sicherheitskopie (man weiß ja nie):

sudo cp -a /var/lib/gladysassistant/gladys-production.db /var/lib/gladysassistant/gladys-production.db.bak
sudo cp -a /var/lib/gladysassistant/gladys-production.duckdb /var/lib/gladysassistant/gladys-production.duckdb.bak

2. Löschen des aktuellen Containers (deine Dateien in /var/lib/gladysassistant bleiben unberührt):

sudo docker stop gladys && sudo docker rm gladys

3. Erstellen des Containers mit dem offiziellen Befehl:

sudo docker run -d \
  --log-driver json-file \
  --log-opt max-size=10m \
  --cgroupns=host \
  --restart=always \
  --privileged \
  --network=host \
  --name gladys \
  -e NODE_ENV=production \
  -e SERVER_PORT=80 \
  -e TZ=Europe/Paris \
  -e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/gladysassistant:/var/lib/gladysassistant \
  -v /dev:/dev \
  -v /run/udev:/run/udev:ro \
  -v /run/dbus:/run/dbus:ro \
  gladysassistant/gladys:v5

4. Überprüfung: Nach einer Minute sollte ls -la /var/lib/gladysassistant eine Datei gladys-production.db-wal anzeigen und ein aktuelles Änderungsdatum auf gladys-production.db. Du solltest dich mit deinem üblichen Konto anmelden können.

:warning: Falls du trotzdem auf dem Bildschirm „Konto erstellen“ landest, erstelle nichts und komm wieder zu mir.

Was du wissen solltest: Du wirst Gladys so wiederfinden, wie es am Abend des 17. Oktobers war. Laut den Daten deiner Ordner hast du nach diesem Datum mehrere Dinge eingerichtet (Zigbee2MQTT, MQTT, externe Integrationen…). Diese werden daher in Gladys nicht konfiguriert sein und müssen neu eingerichtet werden. Gute Nachricht: Der Ordner zigbee2mqtt ist auf deiner Festplatte, daher sollten deine bereits gepaarten Zigbee-Geräte auf Seiten von Zigbee2MQTT erhalten bleiben. Normalerweise reicht es aus, die Integration zu reaktivieren und die Geräte in Gladys erneut hinzuzufügen, ohne sie neu zu paaren.

Entschuldigung für die Umstände! Sobald der Container mit diesem Befehl neu erstellt wurde, werden Updates deine Daten nicht mehr beeinflussen.

Kein Problem, das kann anderen helfen. Ich hatte vor allem Probleme mit einem externen Container. Hauptsache, zigbee läuft.
Immer noch unter « /signup »

olivier@serveurgladys:~$ sudo cp -a /var/lib/gladysassistant/gladys-production.db /var/lib/gladysassistant/gladys-production.db.bak
olivier@serveurgladys:~$ sudo cp -a /var/lib/gladysassistant/gladys-production.duckdb /var/lib/gladysassistant/gladys-production.duckdb.bak
olivier@serveurgladys:~$ sudo docker stop gladys && sudo docker rm gladys
gladys
gladys
olivier@serveurgladys:~$ sudo docker run -d
–log-driver json-file
–log-opt max-size=10m
–cgroupns=host
–restart=always
–privileged
–network=host
–name gladys
-e NODE_ENV=production
-e SERVER_PORT=80
-e TZ=Europe/Paris
-e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db
-v /var/run/docker.sock:/var/run/docker.sock
-v /var/lib/gladysassistant:/var/lib/gladysassistant
-v /dev:/dev
-v /run/udev:/run/udev:ro
-v /run/dbus:/run/dbus:ro
gladysassistant/gladys:v5
8be09ef7542c877344fecfd3fdf6166d831c47ef0d463a02d4c83d9d07e87703
olivier@serveurgladys:~$ ls -la /var/lib/gladysassistant
total 2736
drwxr-xr-x 7 root root 4096 Oct 25 16:04 .
drwxr-xr-x 55 root root 4096 Oct 17 22:49 ..
drwxr-xr-x 8 root root 4096 Oct 22 16:06 external-integrations
-rw-r–r-- 1 root root 872448 Oct 17 20:42 gladys-production.db
-rw-r–r-- 1 root root 32768 Oct 25 16:04 gladys-production.db-shm
-rw-r–r-- 1 root root 440872 Oct 25 16:04 gladys-production.db-wal
-rw-r–r-- 1 root root 872448 Oct 17 20:42 gladys-production.db.bak
-rw-r–r-- 1 root root 274432 Oct 17 20:29 gladys-production.duckdb
-rw-r–r-- 1 root root 274432 Oct 17 20:29 gladys-production.duckdb.bak
drwxr-xr-x 2 root root 4096 Oct 25 15:03 homekit
drwxr-xr-x 2 1883 1883 4096 Oct 18 06:09 mosquitto
drwxr-xr-x 4 olivier olivier 4096 Oct 21 16:23 node-red
drwxr-xr-x 4 root root 4096 Oct 18 09:22 zigbee2mqtt
olivier@serveurgladys:~$

Danke für das Feedback! Gladys nutzt jetzt die Datenbank auf deiner Festplatte: Das grundlegende Problem ist behoben, und die zukünftigen Updates werden deine Daten beibehalten.

Gladys hat vielleicht ein paar Sekunden zum Starten benötigt. Kannst du einen Moment warten und dann http://<IP-deines-Servers>/login öffnen?

  • Wenn du auf der Anmeldeseite landest, melde dich mit deinen üblichen Anmeldedaten an: Du wirst Gladys so vorfinden, wie es am 17. Oktober war.
  • Wenn du immer noch zur Option „Konto erstellen“ weitergeleitet wirst, bedeutet das, dass die Datenbank vom 17. Oktober keine Konten enthält. Sie wurde wahrscheinlich bei einem ersten Start von Gladys erstellt, ohne dass du weitergegangen bist. Der Container wurde anschließend ohne die richtigen Optionen neu erstellt, möglicherweise während deiner Manipulationen mit dem anderen Container? Dein Konto und deine Konfiguration wurden dann innerhalb des Containers gespeichert und sind mit ihm bei dem Update verschwunden. Es tut mir leid, aber es gibt noch zwei Möglichkeiten:
    • Wenn du Gladys Plus hast, kannst du dein letztes Backup vom Kontoerstellungsbildschirm aus wiederherstellen;
    • Andernfalls musst du dein Konto neu erstellen. Alles, was neben Gladys läuft, ist intakt (Zigbee2MQTT mit deinen gepaarten Geräten, Node-RED…). Sobald die Zigbee2MQTT-Integration in Gladys wieder aktiviert ist, sollten deine Geräte wieder online gehen, ohne dass du sie neu paaren musst.

Danke, dass du das alles dokumentiert hast, das wird anderen helfen!

Ich musste ein Konto neu erstellen.
Welche Option wähle ich für die Z2M-Konfiguration?
-Installation von Gladys
-An existing installation verbinden

Du solltest die Option wählen, die du vorher gewählt hast.