Installationsanleitung für Raspberry Pi
So läuft deine Installation ab
Abschnitt betitelt „So läuft deine Installation ab“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:
- 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.
- 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.
- 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.
- 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.
Welcher Raspberry Pi? — Empfehlung
Abschnitt betitelt „Welcher Raspberry Pi? — Empfehlung“- 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.
Teil A: Betriebssystem vorbereiten
Abschnitt betitelt „Teil A: Betriebssystem vorbereiten“-
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. -
Gerät, Betriebssystem und Speicher auswählen
Abschnitt betitelt „Gerät, Betriebssystem und Speicher auswählen“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.
-
Zugangsdaten schon jetzt festlegen (wichtig!)
Abschnitt betitelt „Zugangsdaten schon jetzt festlegen (wichtig!)“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.
Teil B: Ersten Start durchführen
Abschnitt betitelt „Teil B: Ersten Start durchführen“-
Karte/SSD einsetzen und einschalten
Abschnitt betitelt „Karte/SSD einsetzen und einschalten“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).
Teil C: Per Terminal verbinden (SSH)
Abschnitt betitelt „Teil C: Per Terminal verbinden (SSH)“-
Terminal öffnen
Abschnitt betitelt „Terminal öffnen“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.
-
Verbinden
Abschnitt betitelt „Verbinden“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
yesbestätigen (nur beim allerersten Mal), danach das vorher festgelegte Passwort eingeben — beim Tippen erscheint bewusst kein Sternchen, das ist normal.Meldet sich
autologbuch.localnicht? 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“-
System auf den neuesten Stand bringen
Abschnitt betitelt „System auf den neuesten Stand bringen“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.
-
Docker installieren
Abschnitt betitelt „Docker installieren“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.
-
Einmal neu starten
Abschnitt betitelt „Einmal neu starten“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 -ycurl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.shsudo usermod -aG docker $USERsudo reboot
Teil E: App-Dateien laden
Abschnitt betitelt „Teil E: App-Dateien laden“-
Git installieren und App-Dateien herunterladen
Abschnitt betitelt „Git installieren und App-Dateien herunterladen“Installiert im (neu verbundenen) Terminal zunächst Git (wird zum Herunterladen der App-Dateien von GitHub gebraucht) und legt danach den Ordner
autologbuchim 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
Teil F: App-Konfiguration erzeugen (.env-Datei)
Abschnitt betitelt „Teil F: App-Konfiguration erzeugen (.env-Datei)“-
Skript ausführen
Abschnitt betitelt „Skript ausführen“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
Teil G: App bauen und starten
Abschnitt betitelt „Teil G: App bauen und starten“-
Ersten Bauvorgang anstoßen
Abschnitt betitelt „Ersten Bauvorgang anstoßen“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. -
Status prüfen
Abschnitt betitelt „Status prüfen“Mit dem zweiten Befehl den Status aller drei Bausteine prüfen — bei allen drei sollte
runningbzw.healthystehen.Terminal-Fenster docker compose up -d --build# … mehrere Minuten Textausgabe …docker compose ps# postgres running (healthy)# backend running# frontend running
Teil H: App öffnen und einrichten
Abschnitt betitelt „Teil H: App öffnen und einrichten“-
IP-Adresse des Raspberry Pi notieren
Abschnitt betitelt „IP-Adresse des Raspberry Pi notieren“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 -
Adresse im Browser öffnen
Abschnitt betitelt „Adresse im Browser öffnen“Auf jedem Gerät im selben WLAN:
http://raspberrypi-IP:8085öffnen. Der Einrichtungs-Assistent legt beim allerersten Aufruf den ersten Benutzer an. -
Verbindung zur Zentrale herstellen
Abschnitt betitelt „Verbindung zur Zentrale herstellen“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.
-
Updates einrichten
Abschnitt betitelt „Updates einrichten“Für Fehlerbehebungen und neue Funktionen im Ordner
autologbuchper 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.
Teil I: Optional: NVMe-SSD statt Speicherkarte
Abschnitt betitelt „Teil I: Optional: NVMe-SSD statt Speicherkarte“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.
-
Passendes Zubehör besorgen
Abschnitt betitelt „Passendes Zubehör besorgen“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.
-
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.
-
Kostenlose Adresse (DDNS) einrichten
Abschnitt betitelt „Kostenlose Adresse (DDNS) einrichten“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. -
Caddy als weiteren Baustein ergänzen
Abschnitt betitelt „Caddy als weiteren Baustein ergänzen“Im Ordner
autologbucheine neue DateiCaddyfileanlegen (nano Caddyfile) mit dem Inhalt unten, dabeimeinefamilie.duckdns.orgdurch die eigene Adresse aus Schritt 1 ersetzen. Der Port9443hinter 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 mitStrg+O, schließen mitStrg+X.meinefamilie.duckdns.org:9443 {reverse_proxy frontend:80} -
Caddy in die docker-compose.yml eintragen
Abschnitt betitelt „Caddy in die docker-compose.yml eintragen“nano docker-compose.ymlöffnen, ganz unten beiservices:den Block unten einfügen (gleiche Einrückung wiefrontend:darüber) und untervolumes:ganz unten die Zeilecaddy-data:ergänzen. Speichern, schließen. Neben Port9443(die eigentliche App) ist zusätzlich Port80eingetragen — 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-alpinerestart: unless-stoppedports:- '9443:9443'- '80:80'volumes:- ./Caddyfile:/etc/caddy/Caddyfile- caddy-data:/data -
Portweiterleitung im Router einrichten
Abschnitt betitelt „Portweiterleitung im Router einrichten“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 innen9443→ OK; und ein zweites Mal mit Port außen und innen80→ OK. -
Caddy starten
Abschnitt betitelt „Caddy starten“Die App-Adresse wird für einen Satelliten NICHT lokal in der
.enveingetragen, sondern kommt automatisch von der Zentrale: dort als Admin unter Einstellungen → Installationen bei dieser Installation die „Öffentliche URL” aufhttps://meinefamilie.duckdns.org:9443setzen/ändern. Danach:Terminal-Fenster docker compose up -d --build
Häufige Fragen
Abschnitt betitelt „Häufige Fragen“„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.
Das Skript in Teil F meldet einen Fehler.
Abschnitt betitelt „Das Skript in Teil F meldet einen Fehler.“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.
Die Passwort-vergessen-E-Mail kommt nicht an.
Abschnitt betitelt „Die Passwort-vergessen-E-Mail kommt nicht an.“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.
Teil E lädt nichts herunter (Fehler „128”)?
Abschnitt betitelt „Teil E lädt nichts herunter (Fehler „128”)?“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.
Nach 30 Tagen nur noch Lesezugriff?
Abschnitt betitelt „Nach 30 Tagen nur noch Lesezugriff?“Testphase abgelaufen — unter Mein Konto direkt eine Lizenz bei der Zentrale anfordern, kein Nachfragen bei einer Person nötig.