Zum Inhalt springen

Von 1.1.x auf 1.2.x umsteigen

Du nutzt den LxLogger in Version 1.1.x und möchtest auf 1.2.x umsteigen? Diese Anleitung führt dich Schritt für Schritt durch den Umstieg. Deine Datenbank mit allen bisherigen Werten nutzt du dabei weiter.

Es gibt zwei Wege, je nachdem, wie du den LxLogger bisher betreibst:

  • Weg A: Docker-All-in-one-Image 6fdigital/docker-lxlogger (z. B. auf einer Synology)
  • Weg B: deb- oder rpm-Paket unter Linux
  • Ein Container wird zu drei. Das alte Image enthielt LxLogger, InfluxDB und Grafana in einem Container. Das neue Image ghcr.io/6fdigital/lxlogger enthält nur den LxLogger. InfluxDB und Grafana laufen als eigene Container.
  • Die Datenbank bleibt. Der LxLogger schreibt weiter in dieselbe Datenbank lxlogger_<Seriennummer>, unter denselben Measurements, in das Feld value.
  • Andere Tags. Statt month und year schreibt der LxLogger jetzt room und category. Grafana-Abfragen mit month oder year musst du anpassen (siehe Datenbank und Grafana).
  • Neue Konfiguration. Der bisherige [db]-Block funktioniert weiter. Der LxLogger übersetzt ihn beim Start und gibt dazu einen Hinweis im Log aus.
  • Lizenz. Der LxLogger braucht jetzt einen Lizenzschlüssel.

Diese Schritte gelten für beide Wege.

Als Bestandskunde bekommst du einen kostenlosen, lebenslang gültigen Lizenzschlüssel für die Edition, die du gekauft hast. Du findest ihn in deinem Konto auf lxlogger.de. Er ist eine einzelne Zeile und beginnt mit LXL1-.

Nach dem Umstieg prüfst du den Schlüssel mit:

Terminal-Fenster
lxlogger license verify

Mehr dazu unter Lizenzierung.

Sichere vor dem Umstieg deine Daten.

  • Docker-All-in-one: Kopiere die drei Host-Ordner für lxlogger, influxdb und grafana. Auf einer Synology geht das mit Hyper Backup oder per Kopie in der File Station. Stoppe den Container vorher, damit die InfluxDB-Dateien vollständig sind (docker stop lxlogger).
  • deb/rpm: Sichere die Konfiguration /usr/lib/lxlogger/.lxlogger.toml und das Datenverzeichnis deiner InfluxDB (meist /var/lib/influxdb).

Das neue Docker-Image gibt es für amd64 und arm64. Das alte Image lief auch auf 32-Bit-Systemen (armhf, armel). Für diese Geräte gibt es keinen direkten Umstieg per Docker.

  • Läuft auf dem Gerät ein 32-Bit-Linux wie Raspberry Pi OS (armhf), nutze das deb-Paket (Weg B).
  • Ältere 32-Bit-NAS werden nicht mehr unterstützt.

Deine Architektur zeigt dir uname -m: x86_64 und aarch64 werden vom Docker-Image unterstützt.

Die Messdaten liegen bereits in Ordnern auf deinem Host. Du musst also nichts aus dem Container kopieren. Die neuen Container nutzen dieselben Ordner.

Die Beispiele gehen von dieser Ordnerstruktur aus, wie sie die Anleitung des alten Images vorschlägt:

~/docker/lxlogger/
├── lxlogger/ # Binary und .lxlogger.toml (alter LxLogger)
├── influxdb/ # meta/, data/, wal/ (deine Messdaten)
└── grafana/ # grafana.db, Plugins

Auf einer Synology liegen die Ordner meist unter /volume1/docker/lxlogger/.

  1. Alten Container stoppen. Stoppe den Container, lösche ihn aber nicht. Du brauchst ihn für einen möglichen Rollback.

    Terminal-Fenster
    docker stop lxlogger
  2. Konfiguration kopieren. Kopiere den LxLogger-Ordner und ändere nur die Kopie. Das Original bleibt für den Rollback unverändert.

    Terminal-Fenster
    cd ~/docker/lxlogger
    sudo cp -a lxlogger lxlogger-1.2
  3. Datenbank-Host anpassen. Öffne lxlogger-1.2/.lxlogger.toml. Im alten Image liefen LxLogger und InfluxDB im selben Container, deshalb steht dort host = "localhost". Im neuen Container zeigt localhost auf den LxLogger selbst. Trage stattdessen den Namen des InfluxDB-Containers ein:

    [db]
    host = "influxdb"
    port = 8086

    Alternativ stellst du gleich auf das neue Format um (siehe Konfiguration).

  4. Backup-Ziel anpassen (nur Enterprise, wenn du lxlogger backup nutzt). Die Vorlage enthält [backup] dest = "/tmp". Im neuen Container ist /tmp nicht dauerhaft. Lege einen eigenen Ordner an und trage ihn ein:

    Terminal-Fenster
    mkdir backup
    [backup]
    dest = "/backup"
  5. Lizenzschlüssel ablegen. Speichere deinen Lizenzschlüssel als Datei:

    Terminal-Fenster
    mkdir secrets
    printf '%s\n' 'LXL1-DEIN-SCHLUESSEL' > secrets/lxl_license
  6. Rechte für Grafana setzen. Das offizielle Grafana-Image läuft als Benutzer mit der ID 472. Die Dateien im alten Grafana-Ordner gehören aber root. Ohne Anpassung bricht Grafana beim Start mit einem Fehler ab. Übergib den Ordner an Grafana:

    Terminal-Fenster
    sudo chown -R 472:0 grafana

    Alternativ startest du Grafana als root: mit user: "0" in Docker Compose bzw. --user 0 bei docker run. Bei InfluxDB entfällt dieser Schritt, das Image läuft als root.

  7. Container einrichten. Das neue Setup besteht aus drei Containern:

    • ghcr.io/6fdigital/lxlogger – unser neues LxLogger-Image
    • influxdb:1.8.10 – das offizielle InfluxDB-Image, mit deinem bisherigen Ordner influxdb
    • grafana/grafana:9.3.2 – das offizielle Grafana-Image, mit deinem bisherigen Ordner grafana

    Die drei Container laufen in einem gemeinsamen Netzwerk. Darüber erreicht der LxLogger die Datenbank unter dem Namen influxdb. Am einfachsten richtest du alles mit Docker Compose ein. Alternativ geht es mit einzelnen docker run-Befehlen.

    Lege im Ordner ~/docker/lxlogger die Datei compose.yaml an:

    services:
    influxdb:
    image: influxdb:1.8.10
    restart: unless-stopped
    volumes:
    - ./influxdb:/var/lib/influxdb
    grafana:
    image: grafana/grafana:9.3.2
    restart: unless-stopped
    # user: "0" # statt chown -R 472:0 ./grafana
    volumes:
    - ./grafana:/var/lib/grafana
    ports:
    - "3003:3000"
    depends_on:
    - influxdb
    lxlogger:
    image: ghcr.io/6fdigital/lxlogger:latest
    restart: unless-stopped
    command: ["up"]
    environment:
    LXL_LICENSE_FILE: /run/secrets/lxl_license
    LXL_MINISERVER_TIMEZONE: Europe/Berlin
    secrets:
    - lxl_license
    volumes:
    - ./lxlogger-1.2/.lxlogger.toml:/etc/lxlogger/lxlogger.toml:ro
    - ./backup:/backup # nur mit [backup] dest = "/backup"
    - lxlogger-data:/var/lib/lxlogger
    depends_on:
    - influxdb
    secrets:
    lxl_license:
    file: ./secrets/lxl_license
    volumes:
    lxlogger-data:

    Ein paar Hinweise dazu:

    • Versionen fest. InfluxDB 1.8.10 und Grafana 9.3.2 sind genau die Versionen aus dem alten Image. Ein neueres Grafana aktualisiert die grafana.db und lässt sich danach nicht mehr zurückstellen. Mache ein Grafana-Update deshalb später als eigenen Schritt, nach einer Sicherung. Für den LxLogger nutzt du latest, so bekommst du über die Updates immer die aktuelle Version.
    • Port 3003. Grafana bleibt unter dem bisherigen Port erreichbar. So funktionieren deine Lesezeichen weiter.
    • Zeitzone. LXL_MINISERVER_TIMEZONE ist die Zeitzone deines Miniservers. Sie ist für den Datenimport wichtig.
    • Datenpuffer. Im Volume lxlogger-data liegt der lokale Puffer. Er hält Werte fest, solange die Datenbank nicht erreichbar ist.
    • Port 8086. InfluxDB ist nur innerhalb des Netzwerks erreichbar. Brauchst du von außen Zugriff, z. B. für influx auf dem Host, gib den Port zusätzlich frei (-p 8086:8086 bzw. ports in Compose).
  8. Konfiguration prüfen.

    Terminal-Fenster
    docker compose run --rm lxlogger check

    Die Ausgabe endet mit:

    ✓ configuration valid (192.168.1.77:80)
    ✓ Miniserver reachable (192.168.1.77:80)

    Davor stehen einige Warnungen. Sie sind erwartet: Der [db]-Block ist veraltet, und Passwörter stehen im Klartext in der Konfiguration. Beides kannst du später ändern (siehe Konfiguration).

  9. Starten.

    Terminal-Fenster
    docker compose up -d
    docker compose logs -f lxlogger

    Im Log siehst du eine Zeile Licensed to <Kunde> (<Edition>) und kurz danach die ersten geschriebenen Werte.

  10. Grafana-Datenquelle umstellen. Öffne Grafana wie gewohnt unter http://<ip>:3003 und melde dich mit deinen bisherigen Zugangsdaten an (im alten Image standardmäßig root/root). Gehe zu Configuration → Data sources und öffne deine InfluxDB-Datenquelle. Sie zeigt noch auf http://localhost:8086. Ändere sie so:

    Feld Wert
    HTTP → URL http://influxdb:8086
    HTTP → Access Server (default)
    InfluxDB Details → Database lxlogger_<Seriennummer> (wie bisher)

    Unter Access stand bisher Browser. Diese Einstellung unterstützt Grafana nicht mehr. Klicke auf Save & test. Öffne danach ein Dashboard und prüfe, ob neue Werte ankommen.

Auf einer Synology richtest du die Container im Container Manager als Projekt ein:

  1. Führe die Schritte 1–6 oben per SSH aus. Die Ordner liegen unter /volume1/docker/lxlogger/.
  2. Öffne den Container Manager und wechsle zu Projekt → Erstellen.
  3. Wähle als Pfad /volume1/docker/lxlogger und als Quelle compose.yaml erstellen. Füge den Inhalt aus Schritt 7 ein.
  4. Schließe den Assistenten ab. Der Container Manager startet die drei Container.
  5. Weiter mit Schritt 10 (Grafana-Datenquelle).

Den Befehl check aus Schritt 8 führst du per SSH im Ordner /volume1/docker/lxlogger aus: sudo docker compose run --rm lxlogger check.

Das neue Paket ersetzt die bisherige Installation. InfluxDB und Grafana laufen wie bisher als eigene Dienste weiter.

  1. Konfiguration sichern.

    Terminal-Fenster
    sudo cp /usr/lib/lxlogger/.lxlogger.toml ~/lxlogger-1.1.toml
  2. Paket-Repository einrichten und installieren. Folge Schritt 1 unter Installation → Linux. Das neue Paket ersetzt das alte.

    Beim Update kopiert das Paket deine bisherige Konfiguration nach /etc/lxlogger/lxlogger.toml. Eine dort schon vorhandene Datei wird nicht überschrieben.

  3. Lizenzschlüssel ablegen. Wie unter Installation → Linux beschrieben, nach /etc/lxlogger/license.

  4. Prüfen und starten.

    Terminal-Fenster
    sudo -u lxlogger lxlogger check --config /etc/lxlogger/lxlogger.toml
    sudo systemctl restart lxlogger
    systemctl status lxlogger
    journalctl -u lxlogger -f

Steht deine InfluxDB auf demselben Gerät, passt host = "localhost" weiterhin. Die Grafana-Datenquelle musst du nicht ändern.

Der LxLogger liest deine bisherige .lxlogger.toml weiter. Der [db]-Block funktioniert ab 1.2.1 und wird beim Start in das neue Format übersetzt. Im Log erscheint dazu eine Warnung mit einem fertigen Block zum Einfügen. Stelle bei Gelegenheit auf das neue Format um:

[db]
host = "influxdb"
port = 8086
username = "root"
password = "root"

Die übrigen Abschnitte übernimmst du unverändert:

  • [grafana] msmntNameTmpl: Ändere das Template nicht. Sonst schreibt der LxLogger unter neuen Measurement-Namen, und deine Panels zeigen keine neuen Werte mehr.
  • [miniserver]: Host, Benutzer und Passwort bleiben gleich. Das Passwort übergibst du besser als Datei, z. B. per LXL_MINISERVER_PASSWORD_FILE (siehe Konfigurationsdatei → Geheimnisse).

Alle Optionen findest du unter Konfigurationsdatei.

Deine Datenbank lxlogger_<Seriennummer> nutzt du weiter. Measurements und das Feld value bleiben gleich. Deine Dashboards zeigen also alte und neue Werte in einem Panel. Nur die Tags ändern sich.

Text-Werte, etwa ein Betriebsmodus als Text, schreibt der LxLogger in das eigene Feld text, value enthält immer eine Zahl. Panels für Text-Werte legst du deshalb auf dem Feld text an. Mehr dazu unter Text-Werte.

Bisher hat der LxLogger jeden Wert mit den Tags uuid, month und year gespeichert. Jetzt schreibt er uuid, room und category. Abfragen, die nach month oder year filtern, finden ab dem Umstieg keine neuen Werte mehr.

Nutze stattdessen den Zeitfilter von Grafana. Ein Beispiel:

-- bisher
SELECT mean("value") FROM "Temperatur"
WHERE "year" = '2025' AND $timeFilter
GROUP BY time($__interval) fill(null)
-- neu
SELECT mean("value") FROM "Temperatur"
WHERE $timeFilter
GROUP BY time($__interval) fill(null)

Das Jahr wählst du jetzt über den Zeitraum oben rechts im Dashboard, z. B. This year oder einen eigenen Zeitraum vom 01.01. bis 31.12.

Hast du Dashboard-Variablen mit SHOW TAG VALUES WITH KEY = "year" angelegt, entferne sie und nutze ebenfalls den Zeitraum. Die neuen Tags room und category gibt es nur für Werte ab dem Umstieg.

Importiere keine Monate erneut, die schon in der Datenbank sind. Das gilt für Monate, die du mit 1.1.x importiert hast, und für Monate, die 1.1.x live aufgezeichnet hat. Wegen der neuen Tags speichert die Datenbank die Werte sonst doppelt.

Durch den Umstieg fehlen nur die Werte aus der Zeit, in der kein LxLogger lief. Diese Lücke kannst du schließen, indem du nur den betroffenen Zeitraum importierst. Mehr dazu unter Datenimport.

Läuft etwas nicht wie erwartet, kehrst du zur alten Installation zurück.

Stoppe die neuen Container und starte den alten:

Terminal-Fenster
cd ~/docker/lxlogger
# mit Docker Compose
docker compose down
# oder mit docker run
docker stop lxlogger-1.2 grafana influxdb
docker start lxlogger

Der alte Container nutzt den unveränderten Ordner lxlogger. Die geänderten Rechte im Ordner grafana stören ihn nicht.

Stelle danach in Grafana die Datenquelle zurück: HTTP → URL http://localhost:8086. Mit http://influxdb:8086 zeigen die Panels im alten Container keine Daten.