Instalar Berth con Docker
Actualizado el 27 de octubre de 2026
Berth es un solo contenedor, ghcr.io/joveptesg/berth, compilado para amd64 y arm64. Funciona en un servidor Linux o un VPS, un NAS o una Raspberry Pi y lo guarda todo en una carpeta de datos. La instalación lleva unos minutos.
Qué necesitas
- Docker con Compose, o un NAS que pueda ejecutar una imagen de contenedor (Synology, Unraid, CasaOS).
- Una máquina amd64 o arm64: sirven una Raspberry Pi o un NAS ARM.
- Una carpeta en un disco local para
./data. No la pongas en una unidad de red (NFS, SMB): ahí SQLite puede dañar la base de datos.
Ejecutar con Docker Compose
./data contiene la base de datos, sus copias de seguridad, el almacenamiento local y 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, datos en ./data
docker compose logs berth # el código de configuración está en el registroGuarda una copia de secret.key aparte de las copias de seguridad: sin ella no se pueden leer las claves de almacenamiento de la base de datos.
Primera configuración en el navegador
- Abre la dirección del servidor en un navegador:
http://<server>:8080, o el dominio que te asignó tu hosting. - Busca el código de configuración en el registro, en la línea
server is not set up: … enter the setup code K7P2-9QXM. Cambia en cada reinicio hasta que termines la configuración. - Introduce el código y crea el administrador. La dirección que has abierto pasa a ser la dirección de casa o de internet en los códigos QR para los teléfonos; puedes cambiarla después en Ajustes → Servidor.
- Sube el primer libro: arrastra una carpeta o un archivo al panel web. Berth lee las etiquetas, los capítulos y la portada; revísalos y añade el libro a la biblioteca.
Docker sin Compose, NAS y Raspberry Pi
Para Docker sin Compose o una interfaz de NAS que pide el nombre de una imagen:
- En la interfaz de un NAS (Synology Container Manager, Unraid, CasaOS): imagen
ghcr.io/joveptesg/berth:1, puerto8080y una carpeta montada en/data. - En una Raspberry Pi funcionan los mismos comandos: la imagen arm64 se descarga automáticamente.
docker run -d --name berth --restart unless-stopped \
-p 8080:8080 -v "$PWD/data:/data" ghcr.io/joveptesg/berth:1
docker logs berth # el código de configuración está en el registroActualizar y volver atrás
La etiqueta 1 sigue todas las versiones 1.x; 1.0 sigue las correcciones de la 1.0, y una etiqueta exacta como 1.0.1 no cambia nunca. Evita latest con actualizadores automáticos como Watchtower: también salta a nuevas versiones mayores.
Antes de que una nueva versión cambie el esquema de la base de datos, guarda una copia en ./data/backups (se conservan las 3 últimas). Para volver atrás, fija la versión anterior en docker-compose.yml y restaura esa 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 -dAcceso desde internet
Berth sirve HTTP simple, suficiente en casa. Para acceder desde fuera, pon delante un proxy inverso con HTTPS, por ejemplo Caddy:
books.example.com {
reverse_proxy localhost:8080
}Después introduce https://books.example.com en el panel web, en Ajustes → Dirección en internet, para que los códigos QR de los teléfonos la incluyan. La app cambia por sí sola entre la dirección de casa y la de internet.
Copias de seguridad
- En el panel web, Ajustes → Copia de seguridad descarga una copia de la base de datos y restaura una, desde una copia automática o un archivo subido. Antes se guarda la base de datos actual, así que una restauración se puede deshacer.
- Con almacenamiento S3, el servidor también puede guardar cada día una copia de la base de datos en el bucket, lejos del disco donde está la base de datos.
- Desde la consola, con el servidor detenido:
berth admin restore <file>.
Preguntas
¿Qué puerto usa Berth?
El 8080 dentro del contenedor. Publícalo en el puerto del host que quieras, p. ej., -p 9000:8080.
¿Dónde se guardan mis libros?
Por defecto, en el almacenamiento local dentro de ./data. Más adelante puedes añadir un almacenamiento compatible con S3 en el panel web y hacerlo predeterminado para los libros nuevos. Consulta Almacenamiento S3.
¿Puedo compilar Berth desde el código fuente?
Sí: en un clon del repositorio, descomenta build: . en docker-compose.yml y ejecuta docker compose up -d --build.