Berth mit Docker installieren
Aktualisiert am 27. Oktober 2026
Berth ist ein einzelner Container, ghcr.io/joveptesg/berth, gebaut für amd64 und arm64. Er läuft auf einem Linux-Server oder VPS, einem NAS oder einem Raspberry Pi und hält alles in einem Datenordner. Die Einrichtung dauert ein paar Minuten.
Was du brauchst
- Docker mit Compose oder ein NAS, das Container-Images ausführen kann (Synology, Unraid, CasaOS).
- Einen Rechner mit amd64 oder arm64 — ein Raspberry Pi oder ein ARM-NAS funktioniert.
- Einen Ordner auf einer lokalen Festplatte für
./data. Leg ihn nicht auf eine Netzwerkfreigabe (NFS, SMB): SQLite kann dort die Datenbank beschädigen.
Mit Docker Compose starten
./data enthält die Datenbank, ihre Backups, den lokalen Speicher und secret.key.
mkdir berth && cd berth
curl -fsSLO https://raw.githubusercontent.com/joveptesg/berth/main/docker-compose.yml
docker compose up -d # http://localhost:8080, Daten in ./data
docker compose logs berth # der Einrichtungscode steht im LogBewahre eine Kopie von secret.key getrennt von den Backups auf: Ohne sie lassen sich die Speicherschlüssel in der Datenbank nicht lesen.
Erste Einrichtung im Browser
- Öffne die Serveradresse im Browser:
http://<server>:8080oder die Domain, die dein Hoster vergeben hat. - Such den Einrichtungscode im Log, in der Zeile
server is not set up: … enter the setup code K7P2-9QXM. Er ändert sich bei jedem Neustart, bis die Einrichtung abgeschlossen ist. - Gib den Code ein und lege den Administrator an. Die Adresse, die du geöffnet hast, wird zur Heim- oder Internetadresse in den QR-Codes für Handys; du kannst sie später unter Einstellungen → Server ändern.
- Lade das erste Buch hoch: Zieh einen Ordner oder eine Datei in den Admin. Berth liest Tags, Kapitel und Cover; prüf sie und füge das Buch der Bibliothek hinzu.
Docker ohne Compose, NAS und Raspberry Pi
Für Docker ohne Compose oder eine NAS-Oberfläche, die nach einem Image-Namen fragt:
- In einer NAS-Oberfläche (Synology Container Manager, Unraid, CasaOS): Image
ghcr.io/joveptesg/berth:1, Port8080, ein Ordner, eingebunden unter/data. - Auf einem Raspberry Pi funktionieren dieselben Befehle: Das arm64-Image wird automatisch geladen.
docker run -d --name berth --restart unless-stopped \
-p 8080:8080 -v "$PWD/data:/data" ghcr.io/joveptesg/berth:1
docker logs berth # der Einrichtungscode steht im LogAktualisieren und zurückrollen
Der Tag 1 folgt allen 1.x-Releases; 1.0 folgt den Fehlerbehebungen von 1.0, und ein exakter Tag wie 1.0.1 ändert sich nie. Vermeide latest mit Auto-Updatern wie Watchtower: Er folgt auch neuen Hauptversionen.
Bevor eine neue Version das Datenbankschema ändert, speichert sie eine Kopie in ./data/backups (die letzten 3 werden behalten). Zum Zurückrollen fixierst du die vorherige Version in docker-compose.yml und stellst diese Kopie wieder her:
docker compose stop berthdocker compose run --rm berth admin restore /data/backups/auto-<time>.sqlitedocker compose up -d
docker compose pull && docker compose up -dZugriff aus dem Internet
Berth liefert einfaches HTTP aus, was zu Hause genügt. Für den Zugriff von außen setzt du einen Reverse Proxy mit HTTPS davor, zum Beispiel Caddy:
books.example.com {
reverse_proxy localhost:8080
}Trag dann https://books.example.com im Admin unter Einstellungen → Adresse im Internet ein, damit die QR-Codes für Handys sie enthalten. Die App wechselt selbst zwischen Heim- und Internetadresse.
Backups
- Einstellungen → Backup im Admin lädt eine Kopie der Datenbank herunter und stellt eine wieder her — aus einem automatischen Backup oder einer hochgeladenen Datei. Die aktuelle Datenbank wird vorher gesichert, sodass sich eine Wiederherstellung rückgängig machen lässt.
- Mit S3-Speicher kann der Server außerdem täglich eine Kopie der Datenbank in den Bucket legen — weg von der Festplatte, auf der die Datenbank liegt.
- Über die Konsole, bei gestopptem Server:
berth admin restore <file>.
Fragen
Welchen Port nutzt Berth?
8080 im Container. Veröffentliche ihn auf einem beliebigen Host-Port, z. B. -p 9000:8080.
Wo werden meine Bücher gespeichert?
Standardmäßig im lokalen Speicher in ./data. Du kannst später im Admin S3-kompatiblen Speicher hinzufügen und ihn zum Standard für neue Bücher machen. Siehe S3-Speicher.
Kann ich Berth aus dem Quellcode bauen?
Ja: Entferne in einem Klon des Repositorys das Kommentarzeichen vor build: . in docker-compose.yml und führe docker compose up -d --build aus.