跳到正文
Berth

用 Docker 安装 Berth

更新于 2026 年 10 月 27 日

Berth 只有一个容器 ghcr.io/joveptesg/berth,支持 amd64 和 arm64。它可以运行在 Linux 服务器或 VPS、NAS 或树莓派上,所有数据都保存在一个数据文件夹中。几分钟即可完成设置。

准备工作

用 Docker Compose 运行

./data 中保存数据库及其备份、本地存储和 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, data in ./data
docker compose logs berth         # the setup code is in the log

请把 secret.key 另外保存一份,与备份分开存放:没有它,就无法读取数据库中的存储密钥。

在浏览器中完成首次设置

  1. 在浏览器中打开服务器地址:http://<server>:8080,或托管服务商分配的域名。
  2. 在日志中找到设置代码,位于 server is not set up: … enter the setup code K7P2-9QXM 这一行。在设置完成之前,每次重启都会更换代码。
  3. 输入代码并创建管理员。你打开的地址会成为手机二维码中的家庭网络地址或互联网地址;之后可以在“设置 → 服务器”中修改。
  4. 上传第一本书:把文件夹或文件拖进后台。Berth 会读取标签、章节和封面;核对无误后把书加入书库。

纯 Docker、NAS 和树莓派

使用纯 Docker,或 NAS 界面要求填写镜像名称时:

docker run -d --name berth --restart unless-stopped \
  -p 8080:8080 -v "$PWD/data:/data" ghcr.io/joveptesg/berth:1
docker logs berth                 # the setup code is in the log

更新与回滚

1 标签跟随所有 1.x 版本;1.0 跟随 1.0 的修复版本,而像 1.0.1 这样的精确标签永远不会变化。在 Watchtower 等自动更新工具中避免使用 latest:它还会跟随新的主版本。

新版本在修改数据库结构之前,会把一份副本保存到 ./data/backups(保留最近 3 份)。要回滚,请在 docker-compose.yml 中固定上一个版本,并恢复这份副本:

  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

从互联网访问

Berth 提供的是普通 HTTP,在家里使用已经足够。如需从外部访问,请在前面加一个支持 HTTPS 的反向代理,例如 Caddy:

books.example.com {
	reverse_proxy localhost:8080
}

然后在后台的“设置 → 互联网地址”中填写 https://books.example.com,这样手机二维码中就会包含它。应用会在家庭网络地址和互联网地址之间自动切换。

备份

常见问题

Berth 使用哪个端口?

容器内为 8080。你可以把它映射到任意主机端口,例如 -p 9000:8080。

我的书存放在哪里?

默认存放在 ./data 内的本地存储中。之后可以在后台添加兼容 S3 的存储,并将其设为新书的默认存储。参见 S3 存储。

可以从源码构建 Berth 吗?

可以:在 仓库 的克隆中,取消 docker-compose.yml 里 build: . 的注释,然后运行 docker compose up -d --build。