IvyLabs Wiki
言語: 日本語

Docker Compose でデプロイする

1 台のマシンで BostonIvy 全体を動かします。PostgreSQL、サーバー、BostonIvy Web の構成は、bostonivy-os リポジトリの deploy/compose.yaml に書かれています。いちばん手早く始められる方法で、家族や小さなチームならこれで十分です。

始める前に

echo "$GITHUB_TOKEN" | docker login ghcr.io -u <GitHub のユーザー名> --password-stdin

BostonIvy を起動する

  1. サンプルから設定ファイルを作ります。

    cd deploy
    cp .env.example .env
    
  2. サーバーのシークレットを生成し、.env の BOSTONIVY_AUTH_SECRET に貼り付けます。

    docker compose run --rm --no-deps bostonivy keygen
    
  3. すべてを起動します。

    docker compose up -d
    
  4. http://localhost:8080 を開いてアカウントを作成します。新しいデータベースでは、最初のアカウントが管理者になります。その後ほかの人が登録できるかどうかは、auth.open_registration と管理パネルの設定で決まります。

docker compose ps で 3 つのサービスがすべて healthy になっていれば成功です。サーバーは起動のたびにデータベースをマイグレーションするので、ほかに実行するコマンドはありません。

サンプルの .env は BOSTONIVY_COOKIE_SECURE=false になっていて、これは http://localhost でしか使えません。ほかの人に使ってもらう前に HTTPS を設定し(後述)、true に変更してください。

設定

設定はすべて deploy/.env にあります。

変数 意味
BOSTONIVY_AUTH_SECRET 必須。署名と暗号化の鍵はすべてここから導出されます。失うと全員がサインインし直すことになり、暗号化して保存した TOTP や webhook のシークレットも復号できなくなります。必ずバックアップしてください
BOSTONIVY_URL 利用者が開くアドレス。メール内のリンクや共有リンクに使われます
BOSTONIVY_PORT このマシンで公開するポート。既定は 8080
BOSTONIVY_COOKIE_SECURE 本番では true(HTTPS が必要)。false は http://localhost で試すときだけにしてください。そうしないとページを再読み込みしたときにサインインが切れます
BOSTONIVY_SMTP_URL、BOSTONIVY_MAIL_FROM メールの設定。例:smtps://user:password@smtp.example.com と BostonIvy <noreply@example.com>。空ならメールを送りません。log にするとメールをサーバーログに書き出すので、お試しに便利です
POSTGRES_PASSWORD データベースのパスワード
BOSTONIVY_VERSION イメージのタグ。latest は最新リリースに追従します
BOSTONIVY_SITE Caddy のサイトアドレス。後述の HTTPS を参照してください

そのほかのサーバー設定(レート制限、Redis、webhook、オブジェクトストレージ、アカウント削除の猶予期間など)は、BOSTONIVY_<セクション>__<キー> という名前の環境変数で設定できます。例:BOSTONIVY_STORAGE__KIND=s3。compose.yaml の bostonivy.environment に追加してください。すべての項目は bostonivy-os の bostonivy.example.toml にあります。

HTTPS

次のどちらかを選びます。

バックアップとアップグレード

バックアップするものは 3 つです。

アップグレードは、新しいイメージを取得して再起動するだけです。

docker compose pull && docker compose up -d

新しいバージョンは起動時にデータベースをマイグレーションします。マイグレーションは追加だけで削除はしないので、バックアップと組み合わせれば前のバージョンに戻せます。

コマンドライン

docker compose exec bostonivy bostonivy admin promote <ユーザー名>   # 管理者にする
echo "新しいパスワード" | docker compose exec -T bostonivy bostonivy admin set-password <ユーザー名>
docker compose exec bostonivy bostonivy health                      # ヘルスチェック

イメージを自分でビルドする

bostonivy-web を bostonivy-os の隣にチェックアウトするか、.env の BOSTONIVY_WEB_SOURCE でその場所を指定します。Web アプリは非公開の BostonIvy デザインパッケージを使うため、ビルドには IvyLabsApp の非公開リポジトリを読めるトークンが必要です。トークンはビルド用シークレットとしてだけ使われ、イメージには残りません。

cd deploy
GITHUB_TOKEN=$(gh auth token) docker compose build
docker compose up -d