環境変数設定ガイド
Rin は Variables(平文) と Secrets(暗号化) の 2 種類の環境変数を必要とします。
クイックリファレンス
Variables(平文)
これらの変数は wrangler.toml または GitHub Actions に平文で保存され、機能フラグと基本パラメータを制御します。
サイト設定
サイト設定はデプロイ後に 設定ページ から変更できます。環境変数は初期デフォルト値としてのみ機能します。
ストレージ設定
機能フラグ
CACHE_STORAGE_MODE を database に設定することを推奨します。追加の S3 キャッシュ設定なしでデプロイの複雑さを軽減できます。
Secrets(暗号化)
これらの機密値は Cloudflare Workers Secrets として設定する必要があり、デプロイ時に CLI で入力するか、事前に設定します。
認証
Cloudflare Workers は生の TCP SMTP をサポートしていません。メール認証は MailPort 送信サービスによって処理されます:
- MailPort をデプロイし、送信者を作成して、配信方法(SMTP / HTTP API / Outlook または Gmail OAuth)を設定
- Rin ブログが認証コードリクエストを受信し、
EMAIL_SEND_URLSのエンドポイントを呼び出し、Authorization: Bearer <EMAIL_SEND_KEYS>で認証 - 許可される受信者ドメインは MailPort 送信者設定で管理
EMAIL_SEND_URLS と EMAIL_SEND_KEYS は順番に 1 対 1 で対応し、ポーリングされます:最初のエンドポイントが失敗した場合は次が試され、すべて失敗した場合にのみエラーが発生します。
EMAIL_SEND_URLS が未設定の場合、Rin はレガシーの EMAIL_RESEND_URL / EMAIL_RESEND_PASS(Rin-Email プロジェクト)にフォールバックします。
形式
EMAIL_SEND_URLS は送信 URL の JSON 配列で、各要素は MailPort 送信者の完全な送信エンドポイントで、https://<your-domain>/api/<sender-id>/send のような形式です。EMAIL_SEND_KEYS は対応する API キーを保持し、JSON 配列にすることもできます。
単一送信者の場合、EMAIL_SEND_KEYS は配列の角括弧が不要なプレーン文字列にできます:
それぞれ独自のキーを持つ複数の送信者の場合、2 つの配列はインデックスで対応します:
複数の送信者が 1 つのキーを共有する場合、すべてのエンドポイントに適用される単一のキーを記述します:
EMAIL_SEND_KEYS が複数の値を提供する場合、その数は EMAIL_SEND_URLS と一致する必要があります(または単一の共有キーを提供)。不一致の場合、送信時に失敗します。
EMAIL_RESEND_FROM は省略可能な from アドレスの一覧で、カンマで分割して EMAIL_SEND_URLS と 1 対 1 に対応します。空項目はそのエンドポイントで from を送らないことを意味します(先頭・末尾・連続カンマによる空項目も同様。項目が足りない場合、残りの端点は from を送らず、余分な項目は無視されます)。例えば aaaa@blog.com,,ddd@you.com は 1 番目と 3 番目の端点に from を設定し、2 番目には設定しません。from はその端点が MailPort の「メール API 送信」送信者に対応する場合のみ有効で、他のタイプでは無視され warning が返されます。
セルフサービス友だちリンクフロー(メールによる申請 / 変更 / 削除)では、自動化された悪用を防ぐために申請者の最初のメールでキャプチャ検証が必要です:
- 申請者が「友链申请 / 友链修改 / 友链删除」(申請 / 変更 / 削除)を受信アドレスに送信
- Rin がキャプチャ画像(ノイズラインとドット付きの 4 文字)を生成し、インライン画像として申請者に送信
- 申請者がそれらの 4 文字のみを含む新しいメールで返信
- キャプチャが通過した後、通常の JSON テンプレートフローが続行されます
これは MailPort のインライン画像サポートに依存し、新しい環境変数は不要です — EMAIL_SEND_URLS + EMAIL_SEND_KEYS を再利用します。レガシーの Rin-Email リレーはインライン画像をサポートしていません。まだ使用中の場合は、キャプチャステップが自動的にスキップされます。
以下の認証方法のうち少なくとも 1 つ を設定する必要があります:
- GitHub OAuth(
RIN_GITHUB_CLIENT_ID+RIN_GITHUB_CLIENT_SECRET) - Gitee OAuth(
RIN_GITEE_CLIENT_ID+RIN_GITEE_CLIENT_SECRET) - QQ ログイン(
RIN_QQ_TOKEN) - WeChat ログイン(
RIN_WECHAT_APPID+RIN_WECHAT_APPKEY) - メール認証コードログイン(
EMAIL_SEND_URLS+EMAIL_SEND_KEYS、またはレガシーのEMAIL_RESEND_URL+EMAIL_RESEND_PASS) - ユーザー名/パスワード(
ADMIN_USERNAME+ADMIN_PASSWORD)
そうしないと管理パネルにアクセスできません。
QQ ログインのコールバック URL は https://<your-domain>/api/user/xinyueqq/callback に固定されています。心躍のトークンに対して同じコールバック URL を設定する必要があります。パスはコード内にハードコードされており、環境変数は不要です。
S3 ストレージ認証情報
CACHE_STORAGE_MODE=database の場合、S3 ストレージ認証情報はオプションであり、画像アップロードにのみ必要です。
Cloudflare バインディング(環境変数ではない)
以下は wrangler.toml で設定される Cloudflare Worker バインディングであり、環境変数ではありません:
GitHub Actions 変数
GitHub Actions で自動デプロイを使用する場合、リポジトリ設定で以下を構成します:
リポジトリ変数(Settings → Secrets and variables → Variables)
リポジトリシークレット(Settings → Secrets and variables → Secrets)
ローカル開発環境
ローカル開発では .env ファイルを使用します(.env.example を参照):
最小デプロイチェックリスト
ユーザー名/パスワードログインのみ(最小構成)
フル構成(全機能)
サイト設定、すべての OAuth プロバイダー、メールログイン、S3 ストレージ、Webhook、RSS を含みます。
FAQ
Q: CACHE_STORAGE_MODE=database の場合、S3 設定は必要ですか?
いいえ。database モードではキャッシュを D1 データベースに保存し、S3/R2 は不要です。ただし、画像アップロードが必要な場合は S3 設定が依然として必要です。
Q: 複数のログイン方法を同時に有効にできますか?
はい。複数の方法の認証情報を設定すると、フロントエンドが対応するログインボタンを自動的に表示します。
Q: メール認証コードログインを設定するには?
メール認証は MailPort 送信サービスによって処理されます:
- MailPort をデプロイし、送信者を作成して、配信方法(SMTP / HTTP API / Outlook または Gmail OAuth)を設定
- MailPort 送信者ページで API キーを生成し、必要に応じて許可する受信者ドメインを設定
- Cloudflare Worker で設定:
EMAIL_SEND_URLS= MailPort 送信者の完全な送信エンドポイント(JSON 配列、複数可)EMAIL_SEND_KEYS= 対応する API キー(エンドポイントと順番に対応)
EMAIL_SEND_URLS と EMAIL_SEND_KEYS は順番にポーリングされます:最初のエンドポイントが失敗した場合は次が試され、すべて失敗した場合にのみエラーが発生します。
これらの 2 つの変数が未設定の場合、Rin はレガシーの EMAIL_RESEND_URL / EMAIL_RESEND_PASS(Rin-Email)にフォールバックします。
Q: EMAIL_SEND_URLS と EMAIL_SEND_KEYS はどのような JSON 形式を使用しますか?
EMAIL_SEND_URLS は送信 URL の JSON 配列で、それぞれ https://<your-domain>/api/<sender-id>/send の形式です。EMAIL_SEND_KEYS はそれらと順番に対応するキーを保持します。
単一送信者の場合、キーはプレーン文字列でも可:
それぞれ独自のキーを持つ複数の送信者の場合、配列はインデックスで対応します:
複数の送信者が 1 つのキーを共有する場合、単一のキーを記述します:
キーの数は URL の数と一致する必要があります。または単一の共有キーを提供してください。不一致の場合、送信時に失敗します。
Q: 許可するメールドメインを制限するには?
MailPort 送信者設定の「許可する受信者ドメイン」リストに許可するドメインを追加します。それらのドメインの受信者にのみ配信されます。
リストを空のままにすると、すべてのドメインが許可されます。
Q: MailPort はどのような配信方法をサポートしていますか?
MailPort は以下の配信方法をサポートしています:
- SMTP: 任意の SMTP プロバイダー(163 Mail、QQ Mail、Gmail など)
- HTTP API: カスタム HTTP エンドポイントへの転送
- Outlook OAuth2 / Gmail OAuth2: アプリパスワードなしで送信
MailPort プロジェクトドキュメント を参照してください。