Zum Inhalt springen

Installationsanleitung für Raspberry Pi

Diese Anleitung führt Schritt für Schritt durch die Installation von AutoLogbuch auf einem eigenen Raspberry Pi als Satellit — angebunden an die eine bereits bestehende Zentrale-Installation. Anders als bei einer Synology-NAS gibt es dabei kein grafisches Installationsprogramm — ein paar Befehle werden über ein Terminal-Fenster eingegeben, jeder Befehl steht vollständig zum Abtippen bzw. Kopieren bereit. Vier Stationen bringen dich von der leeren Speicherkarte bis zur fertig lizenzierten App:

  1. Grundinstallation — Speicherkarte vorbereiten, Raspberry Pi starten, App-Dateien laden, Container bauen lassen und den Einrichtungs-Assistenten durchlaufen (Teil A–H). Der Pi ist beim Bauen spürbar ausgelastet — das ist normal.
  2. Externer Zugriff (optional) — Nur nötig für Zugriff von unterwegs: eigene Adresse (DDNS), Sicherheitszertifikat und Portweiterleitung im Router einrichten (Teil J). Wer stattdessen auf schnelleren SSD-Speicher umsteigen möchte, findet das separat in Teil I.
  3. Anmeldung an der Zentrale (automatisch) — Passiert von selbst direkt nach dem Einrichtungs-Assistenten — keine Eingabe nötig. Feedback, KI-Felderkennung und E-Mail-Versand sind danach sofort aktiv.
  4. Lizenzierung (später, unter „Mein Konto”) — 30 Kalendertage kostenlos und uneingeschränkt nutzbar. Danach direkt in der App einen Lizenzschlüssel bei der Zentrale anfordern — kein Nachfragen bei einer Person nötig.
  • Modell: Raspberry Pi 5 — 4 GB RAM reichen für AutoLogbuch komfortabel aus (8 GB, falls Reserve für später gewünscht ist).
  • Speicher: Speicherkarte reicht zum Start — für Dauerbetrieb empfohlen: NVMe-SSD statt Speicherkarte (siehe optionaler Teil I). Karten nutzen sich durch die Datenbank schneller ab.
  • Zubehör: Netzteil (27 W USB-C), Gehäuse mit Lüfter, Netzwerkkabel oder WLAN. Ein aktiv gekühltes Gehäuse verhindert Leistungsdrosselung im Dauerbetrieb.
  • Auch möglich: Raspberry Pi 4 (4 GB) — funktioniert ebenfalls, wenn schon vorhanden — spürbar langsamer beim einmaligen Bauen der App, SSD dann nur per USB statt eingebautem Steckplatz.
  1. Raspberry Pi Imager herunterladen und installieren

    Abschnitt betitelt „Raspberry Pi Imager herunterladen und installieren“

    Auf dem zweiten Computer raspberrypi.com/software öffnen, Raspberry Pi Imager herunterladen und installieren. Speicherkarte (bzw. die SSD, siehe Teil I) per Kartenleser/USB-Adapter an diesen Computer anschließen.

  2. Imager öffnen → Gerät wählen: Raspberry Pi 5 (bzw. 4). Betriebssystem wählen → Raspberry Pi OS (other) → Raspberry Pi OS Lite (64-bit) — ohne grafische Oberfläche, für den Dauerbetrieb genau richtig. Speicher wählen: die angeschlossene Karte/SSD.

  3. Vor dem Schreiben auf ⚙ Einstellungen bearbeiten klicken. Dort: Hostname vergeben (z. B. autologbuch), Benutzername und Passwort festlegen ausfüllen, unter Dienste den Haken bei SSH aktivieren setzen (Passwort-Authentifizierung), optional WLAN-Zugangsdaten eintragen (bei Netzwerkkabel nicht nötig). Danach Speichern und Schreiben klicken.

    Diese Einstellungen ermöglichen die spätere Verbindung per Terminal, ganz ohne Bildschirm/Tastatur am Raspberry Pi selbst anzuschließen.

  1. Speicherkarte bzw. SSD in den Raspberry Pi einsetzen, Netzwerkkabel anschließen (empfohlen) oder auf WLAN verlassen, Netzteil einstecken. Der erste Start dauert 2–3 Minuten (die vorbereiteten Einstellungen werden dabei übernommen).

  1. Windows: Startmenü → „PowerShell” eingeben und öffnen. Mac: „Terminal” über die Spotlight-Suche öffnen. Beide bringen die nötige SSH-Funktion bereits mit, es muss nichts zusätzlich installiert werden.

  2. Den Befehl unten eintippen (Hostname bzw. Benutzername aus Teil A, Schritt 3 einsetzen) und mit Eingabe bestätigen. Bei der Frage nach dem „Fingerprint” mit yes bestätigen (nur beim allerersten Mal), danach das vorher festgelegte Passwort eingeben — beim Tippen erscheint bewusst kein Sternchen, das ist normal.

    Meldet sich autologbuch.local nicht? Dann stattdessen die IP-Adresse verwenden — zu finden in der Geräteliste des Routers (meist unter „Heimnetz” oder „Netzwerkübersicht”).

    Terminal-Fenster
    ssh pi@autologbuch.local
    # The authenticity of host 'autologbuch.local' can't be established.
    # Are you sure you want to continue connecting (yes/no)? yes
    # pi@autologbuch.local's password: (Passwort eintippen, unsichtbar)

Teil D: System aktualisieren und Docker installieren

Abschnitt betitelt „Teil D: System aktualisieren und Docker installieren“
  1. Im bereits geöffneten Terminal (jetzt mit dem Raspberry Pi verbunden) die erste Zeile unten eintippen und mit Eingabe bestätigen. Dauert 2–5 Minuten.

  2. Danach die zweite und dritte Zeile eintippen — das offizielle Installationsskript von Docker richtet Docker und Docker Compose in einem Schritt ein. Dauert 3–5 Minuten.

  3. Die letzte Zeile startet den Raspberry Pi neu, damit die Docker-Berechtigung wirksam wird. Die Verbindung im Terminal bricht dabei ab — das ist normal. Nach ca. 1 Minute mit demselben Befehl aus Teil C, Schritt 2 erneut verbinden.

    Terminal-Fenster
    sudo apt update && sudo apt upgrade -y
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    sudo usermod -aG docker $USER
    sudo reboot
  1. Installiert im (neu verbundenen) Terminal zunächst Git (wird zum Herunterladen der App-Dateien von GitHub gebraucht) und legt danach den Ordner autologbuch im Home-Verzeichnis automatisch mit allen App-Dateien an — der letzte Befehl wechselt gleich hinein: ab jetzt bleiben alle weiteren Befehle in diesem Ordner.

    sudo apt install -y git

    git clone https://<TOKEN>@github.com/Michael7779/AutoLogbuch.git autologbuch
    cd autologbuch
  1. Im Ordner autologbuch (siehe Teil E) den Befehl unten eintippen — ganz ohne Eingabe.

    Erzeugt automatisch eine vollständige .env — inklusive zufälligem Datenbank-Passwort. Die Verbindung zur Zentrale wird NICHT hier festgelegt, sondern erst nach dem ersten Start direkt in der App (siehe Teil H).

    Terminal-Fenster
    ./scripts/init-satellite-env.sh
  1. Im Ordner autologbuch (siehe Teil E) den Befehl unten eintippen. Baut Datenbank, Backend und Oberfläche und startet alles automatisch. Dauert beim allerersten Mal 15–30 Minuten — der Raspberry Pi ist dabei spürbar ausgelastet, das ist normal. Das Terminal bleibt währenddessen mit Textausgaben beschäftigt, bis am Ende wieder die normale Eingabezeile erscheint.

  2. Mit dem zweiten Befehl den Status aller drei Bausteine prüfen — bei allen drei sollte running bzw. healthy stehen.

    Terminal-Fenster
    docker compose up -d --build
    # … mehrere Minuten Textausgabe …
    docker compose ps
    # postgres running (healthy)
    # backend running
    # frontend running
  1. Mit dem Befehl unten anzeigen lassen, oder direkt in der Geräteliste des Routers nachsehen. Alternativ funktioniert vom selben Computer aus auch der Hostname aus Teil A, z. B. http://autologbuch.local:8085.

    Terminal-Fenster
    hostname -I
    # 192.168.1.60
  2. Auf jedem Gerät im selben WLAN: http://raspberrypi-IP:8085 öffnen. Der Einrichtungs-Assistent legt beim allerersten Aufruf den ersten Benutzer an.

  3. Direkt danach zeigt die App automatisch die Seite „Verbindung zur Zentrale herstellen”. Eine Bezeichnung eingeben und Anfrage senden — die Adresse der Zentrale ist fest hinterlegt, keine Eingabe nötig. Der Admin der Zentrale bekommt automatisch eine E-Mail und legt eine Installation samt Zugangs-Token für diesen Satelliten an. Sobald er die Anfrage annimmt, holt sich dieser Satellit den Token automatisch ab und trägt ihn selbst ein — fertig, ganz ohne weiteres Zutun! Eine Bestätigungsmail zeigt an, dass die Verbindung erfolgreich hergestellt wurde. Klappt das automatische Abholen ausnahmsweise nicht, bleibt die manuelle Eingabe auf derselben Seite jederzeit als Alternative möglich.

  4. Für Fehlerbehebungen und neue Funktionen im Ordner autologbuch per Terminal: git pull && docker compose up -d --build — am besten diesen Befehl merken, dann lässt er sich jederzeit bei Bedarf erneut ausführen. Deine Daten (Fahrzeuge, Einträge) bleiben davon unberührt.

Empfohlen für den Dauerbetrieb: Speicherkarten nutzen sich durch die vielen kleinen Schreibzugriffe der Datenbank spürbar schneller ab als bei normaler Nutzung und können nach 1–2 Jahren Fehler verursachen. Eine NVMe-SSD ist zusätzlich 5–10× schneller.

  1. Nur beim Raspberry Pi 5 direkt möglich: ein M.2-HAT+ (offizielles Zubehör oder kompatibles Fremdprodukt) plus eine NVMe-SSD (128–256 GB reichen sehr großzügig, ca. 20–25 €). Der HAT wird laut beiliegender Anleitung auf die Unterseite des Raspberry Pi geschraubt, die SSD wird dort eingesteckt.

  2. Direkt auf die SSD schreiben statt auf eine Speicherkarte

    Abschnitt betitelt „Direkt auf die SSD schreiben statt auf eine Speicherkarte“

    Genau wie in Teil A: die SSD stattdessen über einen USB-zu-M.2-Adapter an den Vorbereitungs-Computer anschließen, im Raspberry Pi Imager als Ziel-Speicher auswählen, dieselben Einstellungen (Schritt 3) vergeben. Danach die SSD in den HAT einsetzen statt eine Speicherkarte einzulegen — der Rest der Anleitung (Teil B–H) bleibt unverändert.

Teil J: Optional: Zugriff von unterwegs einrichten

Abschnitt betitelt „Teil J: Optional: Zugriff von unterwegs einrichten“

Nur nötig, wenn die App auch außerhalb des eigenen WLANs erreichbar sein soll. Ein Raspberry Pi bringt anders als eine Synology-NAS keinen eingebauten Reverse-Proxy mit — dafür kommt hier Caddy zum Einsatz, ein zusätzlicher, sehr einfach einzurichtender Baustein, der sich automatisch um ein kostenloses Sicherheitszertifikat kümmert.

  1. duckdns.org öffnen, mit einem bestehenden Konto (z. B. Google) anmelden, einen frei wählbaren Namen anlegen (z. B. meinefamilie → meinefamilie.duckdns.org) — diese Adresse zeigt ab sofort immer auf den eigenen Internetanschluss, auch wenn sich dessen Adresse ändert. Den angezeigten Token notieren.

  2. Im Ordner autologbuch eine neue Datei Caddyfile anlegen (nano Caddyfile) mit dem Inhalt unten, dabei meinefamilie.duckdns.org durch die eigene Adresse aus Schritt 1 ersetzen. Der Port 9443 hinter der Adresse ist bewusst NICHT der Standard-Port 443 — der ist an manchen Internetanschlüssen (z. B. durch den Router selbst oder eine andere Anwendung) bereits belegt; 9443 bleibt in aller Regel frei. Speichern mit Strg+O, schließen mit Strg+X.

    meinefamilie.duckdns.org:9443 {
    reverse_proxy frontend:80
    }
  3. nano docker-compose.yml öffnen, ganz unten bei services: den Block unten einfügen (gleiche Einrückung wie frontend: darüber) und unter volumes: ganz unten die Zeile caddy-data: ergänzen. Speichern, schließen. Neben Port 9443 (die eigentliche App) ist zusätzlich Port 80 eingetragen — Caddy braucht ihn kurzzeitig alle paar Wochen, um das Sicherheitszertifikat automatisch zu erneuern (unabhängig vom App-Zugriff selbst, der ausschließlich über 9443 läuft).

    caddy:
    image: caddy:2-alpine
    restart: unless-stopped
    ports:
    - '9443:9443'
    - '80:80'
    volumes:
    - ./Caddyfile:/etc/caddy/Caddyfile
    - caddy-data:/data
  4. Der Router muss Anfragen von außen an die interne IP-Adresse des Raspberry Pi weiterreichen — HIER ZWEI Freigaben nötig (Port 9443 für die App, Port 80 für die automatische Zertifikatserneuerung). Beispiel für eine FritzBox: fritz.box öffnen → Internet → Freigaben → Portfreigaben → Gerät für Freigaben hinzufügen → Raspberry Pi auswählen → je eine neue Freigabe: Bezeichnung „AutoLogbuch”, Protokoll TCP, Port außen und innen 9443 → OK; und ein zweites Mal mit Port außen und innen 80 → OK.

  5. Die App-Adresse wird für einen Satelliten NICHT lokal in der .env eingetragen, sondern kommt automatisch von der Zentrale: dort als Admin unter Einstellungen → Installationen bei dieser Installation die „Öffentliche URL” auf https://meinefamilie.duckdns.org:9443 setzen/ändern. Danach:

    Terminal-Fenster
    docker compose up -d --build

„ssh: Could not resolve hostname” beim Verbinden.

Abschnitt betitelt „„ssh: Could not resolve hostname” beim Verbinden.“

Raspberry Pi eingeschaltet und im selben Netzwerk? Alternativ die IP-Adresse aus der Geräteliste des Routers statt des Hostnamens verwenden.

Ein Baustein steht nicht auf „running”/„healthy”.

Abschnitt betitelt „Ein Baustein steht nicht auf „running”/„healthy”.“

Mit docker compose logs backend (bzw. postgres/frontend) die Fehlermeldung ansehen — meist ein falsch eingetragener Wert in der .env, danach docker compose up -d --build erneut.

Läuft bereits eine .env im Ordner autologbuch (z. B. von einem vorherigen Versuch)? Das Skript überschreibt sie absichtlich NICHT — vorher löschen und erneut ausführen.

Prüfen, ob auf der Zentrale unter Einstellungen → Installationen eine „Öffentliche URL” für diese Installation hinterlegt ist — ohne sie werden E-Mails mit Link (z. B. Passwort-Reset) abgelehnt.

Der über token.php angezeigte Zugriffstoken wurde widerrufen/ist abgelaufen — bei der Person nachfragen, die dir diese Anleitung empfohlen hat, sie kann den Token zentral aktualisieren (kein neuer Anleitungs-Download nötig). Sonst: Ordner autologbuch existiert bereits (z. B. vorheriger Versuch) — git clone bricht dann ab, ohne zu löschen; alten Ordner umbenennen/löschen und erneut ausführen.

Bauen schlägt mit „address already in use” fehl?

Abschnitt betitelt „Bauen schlägt mit „address already in use” fehl?“

Port 8085/5433 belegt — in der .env (nano .env) APP_PORT=8086 bzw. POSTGRES_HOST_PORT=5434 ergänzen, danach erneut docker compose up -d --build.

Testphase abgelaufen — unter Mein Konto direkt eine Lizenz bei der Zentrale anfordern, kein Nachfragen bei einer Person nötig.