Pular para o conteúdo
Berth

Instalar o Berth com Docker

Atualizado em 27 de outubro de 2026

O Berth é um único contêiner, ghcr.io/joveptesg/berth, compilado para amd64 e arm64. Ele roda em um servidor Linux ou VPS, em um NAS ou em um Raspberry Pi e guarda tudo em uma única pasta de dados. A instalação leva poucos minutos.

Do que você precisa

Rodar com Docker Compose

./data guarda o banco de dados, os backups dele, o armazenamento local e o 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, dados em ./data
docker compose logs berth         # o código de configuração está no log

Guarde uma cópia do secret.key separada dos backups: sem ele, as chaves de armazenamento no banco de dados não podem ser lidas.

Primeira configuração no navegador

  1. Abra o endereço do servidor em um navegador: http://<server>:8080, ou o domínio que sua hospedagem atribuiu.
  2. Encontre o código de configuração no log, na linha server is not set up: … enter the setup code K7P2-9QXM. Ele muda a cada reinício até a configuração ser concluída.
  3. Informe o código e crie o administrador. O endereço que você abriu vira o endereço doméstico ou na internet nos QR codes dos celulares; você pode mudá-lo depois em Configurações → Servidor.
  4. Envie o primeiro livro: arraste uma pasta ou um arquivo para o painel web. O Berth lê as tags, os capítulos e a capa; confira e adicione o livro à biblioteca.

Docker puro, NAS e Raspberry Pi

Para Docker puro ou uma interface de NAS que pede o nome de uma imagem:

docker run -d --name berth --restart unless-stopped \
  -p 8080:8080 -v "$PWD/data:/data" ghcr.io/joveptesg/berth:1
docker logs berth                 # o código de configuração está no log

Atualizar e reverter

A tag 1 acompanha todas as versões 1.x; 1.0 acompanha as correções da 1.0, e uma tag exata como 1.0.1 nunca muda. Evite latest com atualizadores automáticos como o Watchtower: ela também acompanha novas versões principais.

Antes de uma nova versão mudar o esquema do banco de dados, ela salva uma cópia em ./data/backups (as 3 últimas são mantidas). Para reverter, fixe a versão anterior no docker-compose.yml e restaure essa cópia:

  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

Acesso pela internet

O Berth serve HTTP simples, o que basta em casa. Para acesso de fora, coloque na frente um proxy reverso com HTTPS, por exemplo o Caddy:

books.example.com {
	reverse_proxy localhost:8080
}

Depois informe https://books.example.com no painel web em Configurações → Endereço na internet, para que os QR codes dos celulares o incluam. O app alterna sozinho entre o endereço doméstico e o endereço na internet.

Backups

Perguntas

Qual porta o Berth usa?

A 8080 dentro do contêiner. Publique-a em qualquer porta do host que quiser, por exemplo -p 9000:8080.

Onde meus livros ficam guardados?

Por padrão, no armazenamento local dentro de ./data. Depois você pode adicionar um armazenamento compatível com S3 no painel web e torná-lo o padrão para livros novos. Veja Armazenamento S3.

Posso compilar o Berth a partir do código-fonte?

Sim: em um clone do repositório, descomente build: . no docker-compose.yml e rode docker compose up -d --build.