デプロイ
管理ホストに任せる方法と、Cloudflareで自分で運用する方法があります。 2つの設定は別々です。
どちらを使うか
| 目的 | 使う場所 | 管理する人 |
|---|---|---|
| Takosumiなどのホストで運用する | deploy/takoform |
選んだホスト |
| Cloudflareでセルフホストする | ルートのmain.tf |
Cloudflareアカウントの所有者 |
| 既存のCloudflareリソースへ接続する | wrangler.jsonc |
Cloudflareアカウントの所有者 |
まず クイックスタートで
bun run dev:mock を動かしてから、本番の方法を選ぶのが
おすすめです。
Takosumiなどの管理ホストに入れる
deploy/takoform には、Yurucommuが必要とするWebサービス、
SQLデータベース、ファイル保存先、キーバリューストア、キュー、
定期実行の定義があります。Cloudflare固有のIDや認証情報は含みません。
指定する内容
Git URL: https://github.com/tako0614/yurucommu.git
ref: 安定版のタグ、または確認済みのコミット
path: deploy/takoform
手順
- ホストのアプリ追加画面でGit URL、ref、pathを入力します。
- ホストが表示する作成内容と公開URLを確認します。
- 認証方法と必要なシークレットをホスト側で設定します。
- 変更内容を確認して適用します。
-
アプリのURLを開き、
/readyzとログインを確認します。
Takoserverのmanaged resourceを使う場合も、Takosumiの追加画面から Gitの取得元を指定してください。 ホスト向けの詳しい契約は deploy/takoformのREADME にあります。
Cloudflareでセルフホストする
Cloudflareアカウントの所有者が、Workerとデータを自分で管理する方法です。 YurucommuにはワンクリックのCloudflareデプロイはありません。
新しくリソースを作る
ルートの main.tf を使います。Worker、D1、R2、Workers
KV、通常の配信用キュー、失敗した配信用のキュー、定期実行をまとめて
確認できます。
主に指定する内容は次のとおりです。
-
enable_cloudflare_resources=trueとenable_cloudflare_worker_script=true - CloudflareのアカウントID
- Worker名と公開URL
- 暗号化キー
- パスワードまたはOIDCの設定
tofu plan
で作成・変更されるものを確認してから適用します。
2つの有効化設定は初期値が false
なので、作成内容を確認したあと明示的に有効にします。シークレットは
リポジトリや通常の変数ファイルへ保存しないでください。
すでにあるリソースへ接続する
wrangler.jsonc は、Cloudflare上に用意済みのD1、R2、
Workers
KV、2つのキューへWorkerを接続するための設定です。テンプレートを
そのまま本番へ公開せず、実際のリソースIDや名前、公開URLを反映した設定を
用意してください。
認証は
bunx wrangler whoami で確認できます。シークレットは
bunx wrangler secret put で設定できますが、この操作は
Workerの新しいバージョンを作るため、実行前に対象のWorkerと戻し方を
確認してください。
公開前の確認
bun install
bun run check
bun run check は、フォーマット、型、OpenTofuの定義、
テスト、Workerのビルドをまとめて確認します。生成される
dist/yurucommu-worker.js はコミットしません。
データベースの更新
Workerの公開とデータベースの更新は別の作業です。Workerを更新しても、
SQLの変更は自動では適用されません。既存環境を更新する前に、現在の
マイグレーション履歴、バックアップ、復旧方法を確認してください。
SQLの正本は @takosjp/yurucommu-core にあります。
公開後の確認
- 公開URLをブラウザで開く
GET /healthzで不足している接続がないか確認するGET /readyzが準備完了を返すことを確認する- ログイン、投稿、画像のアップロードを試す
- 外部サーバーへの配信と失敗キューを確認する
/healthz は一部の機能が不足していても応答することが
あります。HTTPステータスだけでなく、本文の status と
missingBindings も確認してください。
戻す準備
更新前のWorkerバージョン、OpenTofuの状態、データベースの復旧地点を 記録します。コードだけを戻せる場合と、データベースも戻す必要がある場合を 分けて判断してください。管理ホストを使う場合は、そのホストの更新履歴と 復旧手順を使います。
よくあるエラー
/readyzが準備未完了になる
DB、KV、APP_URL、
ENCRYPTION_KEY、認証方法を確認します。
投稿はできるが外部へ届かない
DELIVERY_QUEUE と DELIVERY_DLQ
の接続、キューを処理するWorker、失敗回数を確認します。
画像をアップロードできない
MEDIA の接続先と権限を確認します。Cloudflareでは
R2バケットの名前とWorkerのbindingを確認してください。