本文へスキップ
Berth

DockerでBerthをインストール

2026年10月27日更新

Berthは1つのコンテナghcr.io/joveptesg/berthで、amd64とarm64向けにビルドされています。LinuxサーバーやVPS、NAS、Raspberry Piで動作し、すべてのデータを1つのデータフォルダに保存します。セットアップは数分で終わります。

必要なもの

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. コードを入力して管理者を作成します。開いたアドレスが、スマートフォン用QRコードのホームネットワークのアドレスまたはインターネットのアドレスになります。あとから「設定 → サーバー」で変更できます。
  4. 最初の書籍をアップロードします:フォルダやファイルを管理画面にドラッグします。Berthがタグ、チャプター、カバーを読み取るので、内容を確認して書籍をライブラリに追加します。

Docker単体、NAS、Raspberry Pi

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を入力すると、スマートフォン用のQRコードにこのアドレスが含まれます。アプリはホームネットワークとインターネットのアドレスを自動で切り替えます。

バックアップ

よくある質問

Berthはどのポートを使いますか?

コンテナ内では8080です。ホスト側では好きなポートで公開できます(例:-p 9000:8080)。

書籍はどこに保存されますか?

デフォルトでは./data内のローカルストレージです。あとから管理画面でS3互換ストレージを追加し、新しい書籍のデフォルトにできます。詳しくはS3ストレージをご覧ください。

Berthをソースからビルドできますか?

はい。リポジトリをクローンし、docker-compose.ymlのbuild: .のコメントを外して、docker compose up -d --buildを実行します。