Saltar al contenido
Berth

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

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 registro

Guarda 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

  1. Abre la dirección del servidor en un navegador: http://<server>:8080, o el dominio que te asignó tu hosting.
  2. 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.
  3. 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.
  4. 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:

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 registro

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

  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

Acceso 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

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.