Zum Inhalt springen
Berth

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

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 Log

Bewahre 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

  1. Öffne die Serveradresse im Browser: http://<server>:8080 oder die Domain, die dein Hoster vergeben hat.
  2. 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.
  3. 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.
  4. 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:

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 Log

Aktualisieren 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:

  1. docker compose stop berth
  2. docker compose run --rm berth admin restore /data/backups/auto-<time>.sqlite
  3. docker compose up -d
docker compose pull && docker compose up -d

Zugriff 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

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.