DockerでBerthをインストール
2026年10月27日更新
Berthは1つのコンテナghcr.io/joveptesg/berthで、amd64とarm64向けにビルドされています。LinuxサーバーやVPS、NAS、Raspberry Piで動作し、すべてのデータを1つのデータフォルダに保存します。セットアップは数分で終わります。
必要なもの
- Compose付きのDocker、またはコンテナイメージを実行できるNAS(Synology、Unraid、CasaOS)。
- amd64またはarm64のマシン:Raspberry Piや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 logsecret.keyのコピーはバックアップとは別の場所に保管してください。これがないと、データベース内のストレージのキーを読み取れません。
ブラウザで初期セットアップ
- ブラウザでサーバーのアドレスを開きます:
http://<server>:8080、またはホスティングで割り当てられたドメイン。 - ログの
server is not set up: … enter the setup code K7P2-9QXMという行からセットアップコードを探します。セットアップが終わるまで、再起動のたびにコードが変わります。 - コードを入力して管理者を作成します。開いたアドレスが、スマートフォン用QRコードのホームネットワークのアドレスまたはインターネットのアドレスになります。あとから「設定 → サーバー」で変更できます。
- 最初の書籍をアップロードします:フォルダやファイルを管理画面にドラッグします。Berthがタグ、チャプター、カバーを読み取るので、内容を確認して書籍をライブラリに追加します。
Docker単体、NAS、Raspberry Pi
Docker単体の場合や、NASの画面でイメージ名を求められる場合:
- NASの画面(Synology Container Manager、Unraid、CasaOS)では、イメージ
ghcr.io/joveptesg/berth:1、ポート8080、/dataにマウントするフォルダを指定します。 - Raspberry Piでも同じコマンドが使えます。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を入力すると、スマートフォン用のQRコードにこのアドレスが含まれます。アプリはホームネットワークとインターネットのアドレスを自動で切り替えます。
バックアップ
- 管理画面の「設定 → バックアップ」では、データベースのコピーをダウンロードしたり、自動バックアップやアップロードしたファイルから復元したりできます。復元の前に現在のデータベースが保存されるので、復元は元に戻せます。
- S3ストレージを使う場合、サーバーはデータベースの日次コピーをバケットにも保存できます。データベースがあるディスクとは別の場所です。
- コンソールから(サーバーを停止した状態で):
berth admin restore <file>。