Cloudflare設定
Cloudflareでセルフホストする人向けのページです。Takosumiなどの管理ホスト で動かす場合は、この設定を使いません。
管理ホストを使う場合は
デプロイガイドの
deploy/takoform の手順へ進んでください。
用意するもの
- Cloudflareアカウント
- Bun 1.3以降
- OpenTofu、またはWrangler
- 公開URLと、ログインに使うパスワードまたはOIDC設定
- データベースのバックアップと復旧を行える運用手順
設定方法を選ぶ
| 状況 | 使うファイル |
|---|---|
| 必要なリソースを新しくまとめて作る | ルートのmain.tf |
| 作成済みのリソースへWorkerを接続する | wrangler.jsonc |
main.tf と wrangler.jsonc
は、同時に使うことを前提にした手順ではありません。どちらがリソースと
Workerの設定を管理するか、先に決めてください。
ルートのOpenTofu設定は、Cloudflare上の変更を初期状態では行いません。
作成内容を確認したうえで
enable_cloudflare_resources=true と
enable_cloudflare_worker_script=true を指定します。
必要なCloudflareサービス
| サービス | 役割 | Workerから見える名前 |
|---|---|---|
| Workers | Web画面とAPIを実行 | - |
| D1 | アカウント、投稿、メッセージなどを保存 | DB |
| R2 | 画像と動画を保存 | MEDIA |
| Workers KV | セッションや試行回数を保存 | KV |
| Queues | ActivityPubの配信と、失敗した配信の退避 | DELIVERY_QUEUE、DELIVERY_DLQ |
| Cron Triggers | 期限切れデータを定期的に整理 | 1時間ごとの実行 |
認証を確認する
bunx wrangler login
bunx wrangler whoami
CIやOpenTofuでAPIトークンを使う場合は、必要な操作だけに権限を絞り、 リポジトリへ保存しません。実行前に対象のCloudflareアカウントを 確認してください。
公開URLとログインを設定する
本番で最低限必要な設定は次のとおりです。
APP_URL- 実際にブラウザで開くHTTPSのURLENCRYPTION_KEY- 64文字の16進数で作る暗号化キー-
AUTH_PASSWORD_HASH、Google/X OAuth、OIDCのいずれか
公開してよい値とシークレットを分けます。Wranglerを使う場合、 シークレットは次のように対話形式で登録できます。
bunx wrangler secret put ENCRYPTION_KEY
bunx wrangler secret put AUTH_PASSWORD_HASH
Secretの登録はWorkerの新しいバージョンを作ります。すでに運用中の
Workerでは、対象と戻し方を確認してから実行してください。OpenTofuを
使う場合は、main.tf の機密入力として渡します。
データベースを別に扱う
Workerの公開だけではD1のマイグレーションは実行されません。既存環境では マイグレーション履歴を確認し、バックアップと復旧方法を用意してから スキーマを変更してください。コード公開とデータベース更新を一度に 試し直さないようにします。
動作確認
- 公開URLを開く
/healthzの本文を確認する/readyzが準備完了を返すことを確認する- ログイン、投稿、画像アップロードを試す
- キューの配信と失敗キューを確認する
トラブルシューティング
認証エラーが出る
bunx wrangler whoami
でログイン中のアカウントを確認します。APIトークンを使う場合は、
アカウントIDと権限の対象が一致しているか確認します。
接続が不足している
/healthz の
missingBindings と、Workerに設定した名前を比べます。D1は
DB、R2は MEDIA、Workers KVは
KV です。
外部サーバーへの配信が止まる
通常の配信キューと失敗キューの両方を確認します。手動で何度も再送する 前に、失敗理由と試行回数を記録してください。