Installare Berth con Docker
Aggiornato il 27 ottobre 2026
Berth è un unico container, ghcr.io/joveptesg/berth, compilato per amd64 e arm64. Gira su un server Linux o un VPS, un NAS o un Raspberry Pi e tiene tutto in un'unica cartella di dati. La configurazione richiede pochi minuti.
Cosa serve
- Docker con Compose, o un NAS in grado di eseguire un'immagine container (Synology, Unraid, CasaOS).
- Una macchina amd64 o arm64 — va bene un Raspberry Pi o un NAS ARM.
- Una cartella su un disco locale per
./data. Non metterla su una condivisione di rete (NFS, SMB): lì SQLite può corrompere il database.
Avvio con Docker Compose
./data contiene il database, i suoi backup, l'archivio locale e 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, dati in ./data
docker compose logs berth # il codice di configurazione è nel logConserva una copia di secret.key separata dai backup: senza di essa le chiavi degli archivi nel database non possono essere lette.
Prima configurazione nel browser
- Apri l'indirizzo del server in un browser:
http://<server>:8080, o il dominio assegnato dal tuo hosting. - Trova il codice di configurazione nel log, nella riga
server is not set up: … enter the setup code K7P2-9QXM. Cambia a ogni riavvio finché la configurazione non è completata. - Inserisci il codice e crea l'amministratore. L'indirizzo che hai aperto diventa l'indirizzo di casa o Internet nei codici QR per i telefoni; puoi cambiarlo in seguito in Impostazioni → Server.
- Carica il primo libro: trascina una cartella o un file nel pannello web. Berth legge tag, capitoli e copertina; controllali e aggiungi il libro alla libreria.
Docker semplice, NAS e Raspberry Pi
Per Docker semplice o per l'interfaccia di un NAS che chiede il nome di un'immagine:
- Nell'interfaccia di un NAS (Synology Container Manager, Unraid, CasaOS): immagine
ghcr.io/joveptesg/berth:1, porta8080, una cartella montata su/data. - Su un Raspberry Pi funzionano gli stessi comandi: l'immagine arm64 viene scaricata automaticamente.
docker run -d --name berth --restart unless-stopped \
-p 8080:8080 -v "$PWD/data:/data" ghcr.io/joveptesg/berth:1
docker logs berth # il codice di configurazione è nel logAggiornamenti e rollback
Il tag 1 segue tutte le release 1.x; 1.0 segue le correzioni della 1.0, e un tag esatto come 1.0.1 non cambia mai. Evita latest con gli aggiornamenti automatici come Watchtower: segue anche le nuove versioni major.
Prima che una nuova versione modifichi lo schema del database, ne salva una copia in ./data/backups (vengono conservate le ultime 3). Per tornare indietro, fissa la versione precedente in docker-compose.yml e ripristina quella copia:
docker compose stop berthdocker compose run --rm berth admin restore /data/backups/auto-<time>.sqlitedocker compose up -d
docker compose pull && docker compose up -dAccesso da Internet
Berth serve HTTP semplice, che a casa basta. Per l'accesso dall'esterno, mettici davanti un reverse proxy con HTTPS, per esempio Caddy:
books.example.com {
reverse_proxy localhost:8080
}Poi inserisci https://books.example.com nel pannello web in Impostazioni → Indirizzo Internet, così i codici QR per i telefoni lo includono. L'app passa da sola tra l'indirizzo di casa e quello Internet.
Backup
- Nel pannello web, Impostazioni → Backup scarica una copia del database e ne ripristina una, da un backup automatico o da un file caricato. Il database attuale viene salvato prima, quindi un ripristino si può annullare.
- Con un archivio S3, il server può anche mettere ogni giorno una copia del database nel bucket — lontano dal disco su cui si trova il database.
- Dalla console, a server fermo:
berth admin restore <file>.
Domande
Quale porta usa Berth?
La 8080 dentro il container. Pubblicala su qualsiasi porta dell'host, ad esempio -p 9000:8080.
Dove sono conservati i miei libri?
Di default nell'archivio locale dentro ./data. In seguito puoi aggiungere un archivio compatibile con S3 nel pannello web e renderlo predefinito per i nuovi libri. Vedi Archivio S3.
Posso compilare Berth dai sorgenti?
Sì: in un clone del repository, togli il commento a build: . in docker-compose.yml ed esegui docker compose up -d --build.