enter-services について
Pollinations の enter サービスと生成サービスを扱うためのリポジトリスキルです。エンジニア向けに環境、ステージングテスト、デプロイ手順、トークン管理の安全策を説明します。
主な機能
- 01本番環境とステージング環境の構成説明
- 02ステージングへのデプロイとテストの案内
- 03Worker のシークレットとトークンローテーションの説明
- 04本番デプロイの安全策の説明
活用シーン
- 01ステージングでのサービス変更テスト
- 02ステージング Worker のデプロイ
- 03環境設定とシークレットの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pollinations/ pollinations --skill enter-servicesインストール後、Claude Code で/enter-servicesを入力して読み込まれたか確認します。
同梱ファイル.gitignoretoken-rotation.md
詳細
要件
このスキルを使用する前に、以下を準備してください。
- sops:
brew install sops(シークレットの復号用) - Wrangler:
npm install -g wrangler - Node.js:
brew install node
pollinations リポジトリのルートから実行してください。
アーキテクチャの概要
| 環境 | ゲートウェイ(Cloudflare Worker) | 生成 |
|---|---|---|
| 本番環境 | enter.pollinations.ai | gen.pollinations.ai Worker |
| ステージング | staging.enter.pollinations.ai | staging.gen.pollinations.ai Worker |
以前の enter-services / enter-services-staging EC2 インスタンス
(text-pollinations.service、image-pollinations.service)は廃止されました。
テキストと画像の生成は、gen.pollinations.ai Worker 内で実行されます。
enter-services で稼働していた Discord ボットは、現在は
monitoring-agents EC2 インスタンスで稼働しています。詳しくは
apps/discord-bot-family/README.md および
operations/infrastructure/gpu/GPU_INSTANCES.md を参照してください。
Cloudflare Worker(enter.pollinations.ai)のデプロイ
本番環境へのデプロイは、GitHub Actions(production ブランチから
ディスパッチする Deploy / Cloudflare production)経由でのみ行います。ローカルマシンから
wrangler deploy --env production を実行してはいけません。AGENTS.md の
「Cloudflare Production Deployment Safety」を参照してください。
ステージング環境へのデプロイは、Deploy / Cloudflare staging ワークフロー
(workflow_dispatch:ブランチと service を選択)経由で行います。最初に
migrate:staging を実行し、その後 deploy:staging を実行します。
Workers に secrets/staging.vars.json もプッシュするには、push_secrets に
チェックを入れてください。新規または変更された値をマージする前に、
Secret Mutation Safety の承認(AGENTS.md)が必要です。同じ npm スクリプトは、
サービスごとにローカルでも実行できます。
cd enter.pollinations.ai
npm run deploy:staging # staging only
Worker に設定されている内容は、wrangler secret list --env staging で確認できます。詳細:
token-rotation.md。
ステージング環境でのテスト
- テスト用トークン:
enter.pollinations.ai/.testingtokens内のENTER_API_TOKEN_STAGING。認証に失敗した場合、デプロイを疑う前にenter.pollinations.aiでnpm run check-tokensを実行してください。ファイルに変更がなくても、トークンの有効期限が切れることがあります。 - ステージング環境でエージェントを呼び出す際のモデル ID は、本番環境と同じく
owner/nameです。 - 負荷の低い読み取り専用の確認:
wrangler d1 migrations list DB --remote --env staging、wrangler secret list --env staging、およびディスパッチのネームスペース一覧。
Wrangler の設定
wrangler.toml には環境設定が含まれています。
| 環境 | ルート | サービス URL |
|---|---|---|
production | enter.pollinations.ai | gen.pollinations.ai |
staging | staging.enter.pollinations.ai | staging.gen.pollinations.ai |
local | localhost:3000 | ローカル開発 |
トークンのローテーション
内部の信頼境界トークン(PLN_ENTER_TOKEN、PLN_GPU_TOKEN、Tinybird
トークン、SOPS の受信者)については、一覧、ローテーションの仕組み、デプロイ
手順、ロールバックの詳細を token-rotation.md で確認してください。
OAuth クライアントに関する注意事項
enter に対するサードパーティ OAuth クライアントの構築時に記録した日付入りのメモです。 参照する前に、最新のソースを確認してください。
- Open WebUI 0.11.x(2026-09):
expires_atの5分前以内にのみトークンを更新し、モデル呼び出しで 401 が返されても更新しません。更新に失敗すると、ユーザーのログイン状態は維持したままoauth_session行を削除するため、ユーザーからは更新の失敗も API キーの取り消しも同じように見えます(次のモデル呼び出しで 401)。自己修復できるようにするには、短いexpires_inを設定して更新が実行されるようにし、有効なアカウントについては更新エンドポイントから常に 200 を返してください。 apikeyテーブル:shared/db/better-auth.tsでは、所有者フィールドはuserIdではなくreferenceIdです。型付けが緩いコードではrow.userIdがコンパイルを通過しますが、実行時にはcreateApiKeyから誤解を招く「Unauthorized or invalid session」エラーが返されます。このテーブルを扱う新しいファイルは、本番環境でテストする前にtscを実行してください。
注意事項
- 本番環境は
productionブランチへのプッシュ時にデプロイされます - ステージング環境は
Deploy / Cloudflare stagingワークフロー(手動実行)またはサービスごとのnpm run deploy:stagingでデプロイされます - 本番環境にマージする前に、必ずステージング環境でテストしてください
enter.pollinations.aiは認証と課金を処理し、生成リクエストはgen.pollinations.aiWorkerが処理します