← ClaudeAtlas

cf-private-deploylisted

個人用 Web アプリを Cloudflare Pages に載せ、Cloudflare Access(Google ログイン限定)で自分だけに閉じた状態で公開する。トークン発行以外は全て REST API で行い、ダッシュボードの GUI 操作を排する。アプリを初めて配信するとき、Access で保護するとき、pages.dev の穴を塞ぐときに使う。
yktsnet/dotfiles-public · ★ 1 · DevOps & Infrastructure · score 68
Install: claude install-skill yktsnet/dotfiles-public
# cf-private-deploy Cloudflare Pages + Access で、自分だけがログインできるアプリを配信する。 **GUI が要るのは Cloudflare アカウントにつき生涯2回だけ**(API トークンの初回発行と、GitHub 連携の初回認可)。それ以外を GUI でやろうとすると 20 手前後に膨れるので、必ず API に寄せる。 ダッシュボードのクリック経路は変わるが、REST API のエンドポイントは変わらない。手順を API で書くのは自動化のためだけでなく、手順書が腐らないためでもある。 ## 0. 一度だけの準備 ### 0-1. API トークン Cloudflare は「最初の1本目だけはダッシュボードから」と明記している(2本目以降は API で作れる)。CLI での発行手段は無い。`wrangler login` の OAuth は Workers/Pages のスコープしか持たず、Access と DNS を触れないので代替にならない。 https://dash.cloudflare.com/profile/api-tokens → Create Token → Create Custom Token | | | | |---|---|---| | Account | `Cloudflare Pages` | `Edit` | | Account | `Access: Apps and Policies` | `Edit` | | Account | `Access: Organizations, Identity Providers, and Groups` | `Read` | | Zone | `DNS` | `Edit` | | Zone | `Zone` | `Read` | | User | `API Tokens` | `Edit` | `Access: Apps and Policies` だけでは identity provider の一覧を引けない。3行目が無いと `/access/identity_providers` が `Authentication error` を返す。 **トークンは2本に分ける。** 上の6行を持つ管理用を1本作り、そこから API で作業用(`User: API Tokens` を除いた5行)を発行する。日常の作業には作業用だけを使う。 理由は Cloudflare の制約で、**API から作るトークンにはトークン管理権限を付けられない**(`1001 sub-token is not allowed to have permissions to manage other tokens`)。管理用は必ずダッシュボード発行になるので、一度作ったら秘密管理の仕組みへ寝かせて触らない。作業用を漏らしても、管理用があれば API だけで作り直せる。 既存トークンに `User` スコープを後から追加することはできない(編集画面に `User` の選択肢が出ない)。**作成時に入れ忘れたら作り直すしかない。** `Global API Key` は使わない。全権限・無期限で、失効させるとアカウント全体が壊れる。 発行したら**手元の秘密管理(sops 等)へ入れて永続化する**。ここを毎回やり直すから面倒に感じる。1本入れておけば以後のリポは GUI ゼロで済む。 ### 0-2. GitHub 連携 Pages