用 Docker 安装 Berth
更新于 2026 年 10 月 27 日
Berth 只有一个容器 ghcr.io/joveptesg/berth,支持 amd64 和 arm64。它可以运行在 Linux 服务器或 VPS、NAS 或树莓派上,所有数据都保存在一个数据文件夹中。几分钟即可完成设置。
准备工作
- 带 Compose 的 Docker,或能运行容器镜像的 NAS(Synology、Unraid、CasaOS)。
- 一台 amd64 或 arm64 机器——树莓派或 ARM NAS 都可以。
- 本地磁盘上用于
./data的文件夹。不要放在网络共享(NFS、SMB)上:在那里 SQLite 可能损坏数据库。
用 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 另外保存一份,与备份分开存放:没有它,就无法读取数据库中的存储密钥。
在浏览器中完成首次设置
- 在浏览器中打开服务器地址:
http://<server>:8080,或托管服务商分配的域名。 - 在日志中找到设置代码,位于
server is not set up: … enter the setup code K7P2-9QXM这一行。在设置完成之前,每次重启都会更换代码。 - 输入代码并创建管理员。你打开的地址会成为手机二维码中的家庭网络地址或互联网地址;之后可以在“设置 → 服务器”中修改。
- 上传第一本书:把文件夹或文件拖进后台。Berth 会读取标签、章节和封面;核对无误后把书加入书库。
纯 Docker、NAS 和树莓派
使用纯 Docker,或 NAS 界面要求填写镜像名称时:
- 在 NAS 界面(Synology Container Manager、Unraid、CasaOS)中:镜像
ghcr.io/joveptesg/berth:1,端口8080,将一个文件夹挂载到/data。 - 在树莓派上同样的命令也能用:会自动拉取 arm64 镜像。
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 中固定上一个版本,并恢复这份副本:
docker compose stop berthdocker compose run --rm berth admin restore /data/backups/auto-<time>.sqlitedocker 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,这样手机二维码中就会包含它。应用会在家庭网络地址和互联网地址之间自动切换。
备份
- 后台的“设置 → 备份”可以下载数据库副本,也可以从自动备份或上传的文件恢复。恢复前会先保存当前数据库,因此恢复操作可以撤销。
- 使用 S3 存储时,服务器还可以每天把一份数据库副本放进存储桶——远离数据库所在的磁盘。
- 在命令行中(服务器已停止时):
berth admin restore <file>。