環境變數設定指南
Rin 部署需要設定兩類環境變數:Variables(明文變數) 與 Secrets(加密變數)。
快速區分
Variables(明文變數)
這些變數以明文儲存在 wrangler.toml 或 GitHub Actions 中,用於設定功能開關與基本參數。
站台設定
站台設定可在部署後透過設定頁面修改,環境變數僅作為初始值。
儲存設定
功能開關
建議將 CACHE_STORAGE_MODE 設為 database,無需額外設定 S3 快取即可使用,降低部署複雜度。
Secrets(加密變數)
這些敏感資訊必須設定為 Cloudflare Workers Secrets,部署時透過命令列輸入或事先設定。
驗證相關
至少設定以下驗證方式中的 一種:
- GitHub OAuth(
RIN_GITHUB_CLIENT_ID+RIN_GITHUB_CLIENT_SECRET) - Gitee OAuth(
RIN_GITEE_CLIENT_ID+RIN_GITEE_CLIENT_SECRET) - QQ 登入(
RIN_QQ_TOKEN) - 微信登入(
RIN_WECHAT_APPID+RIN_WECHAT_APPKEY) - 電子郵件驗證碼登入(
EMAIL_SEND_URLS+EMAIL_SEND_KEYS,或舊的EMAIL_RESEND_URL+EMAIL_RESEND_PASS) - 帳號密碼登入(
ADMIN_USERNAME+ADMIN_PASSWORD)
否則無法登入後台。
Rin 部落格執行於 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 依序一一對應、輪詢使用:第一個失敗會自動嘗試下一個,全部失敗才回報錯誤。
未設定 EMAIL_SEND_URLS 時,回退到舊的 EMAIL_RESEND_URL / EMAIL_RESEND_PASS(Rin-Email 專案)。
填寫格式
EMAIL_SEND_URLS 是寄件位址的 JSON 陣列,每個元素是 MailPort 寄件端點的完整寄件位址,形如 https://<你的網域>/api/<寄件端點ID>/send;EMAIL_SEND_KEYS 是與之對應的 API 金鑰,同樣可以是 JSON 陣列。
只用一個寄件端點時,EMAIL_SEND_KEYS 可以直接寫成一般字串,無需陣列括號:
使用多個寄件端點,且每個寄件端點的金鑰各不相同時,兩個陣列依索引一一對應:
使用多個寄件端點,但共用同一組金鑰時,EMAIL_SEND_KEYS 只寫一個即可,會自動套用到所有位址:
當 EMAIL_SEND_KEYS 提供多個值時,其數量必須與 EMAIL_SEND_URLS 一致(或只提供一個金鑰供所有位址共用),數量不符會在傳送時直接回報錯誤。
EMAIL_RESEND_FROM 為選用的 from 寄件人清單,以英文逗號切分並與 EMAIL_SEND_URLS 一一對應,空項表示該端點不傳 from(開頭、結尾或連續逗號造成的空項同樣視為不傳;項數不足時其餘端點也不傳,多餘項忽略)。例如 aaaa@blog.com,,ddd@you.com 表示第 1、3 個端點各用對應寄件人,第 2 個端點不傳。只有該端點對應的 MailPort 寄件商為「郵件 API 寄件」時 from 才會生效,其餘類型會忽略並回傳 warning。
郵件自助友連(申請/修改/刪除)在使用者寄出第一封郵件時,會先要求辨識一封含驗證碼圖片的郵件,防止自動化濫用:
- 使用者向收件位址寄出「友链申请/友链修改/友链删除」
- Rin 產生一張帶干擾線/干擾點的驗證碼圖片(4 位字元),以內嵌圖片形式傳送到使用者信箱
- 使用者辨識圖片中的字元,在新郵件本文中只回覆這 4 位字元
- 驗證通過後進入一般的 JSON 範本流程
此功能依賴 MailPort 的內嵌圖片能力,無需新增任何環境變數,直接沿用 EMAIL_SEND_URLS + EMAIL_SEND_KEYS。舊版 Rin-Email 中繼不支援內嵌圖片,若仍在使用舊中繼,驗證碼步驟會自動略過。
S3 儲存憑證
當 CACHE_STORAGE_MODE=database 時,S3 儲存憑證為選用設定,僅圖片上傳功能需要。
Cloudflare 繫結(非環境變數)
以下為 Cloudflare Worker 繫結,透過 wrangler.toml 設定,不屬於環境變數:
GitHub Actions 變數設定
使用 GitHub Actions 自動部署時,需在 Repository 設定中配置以下變數:
Repository Variables(Settings → Secrets and variables → Variables)
Repository Secrets(Settings → Secrets and variables → Secrets)
本地開發環境變數
本地開發使用 .env 檔案,參考 .env.example:
最小部署清單
僅使用帳號密碼登入(最小設定)
完整設定(所有功能)
包含站台設定、所有 OAuth、電子郵件登入、S3 儲存、Webhook、RSS。
常見問題
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 依序輪詢:第一個失敗會自動嘗試下一個,全部失敗才回報錯誤。
未設定這兩個變數時,回退到舊的 EMAIL_RESEND_URL / EMAIL_RESEND_PASS(Rin-Email)。
Q: EMAIL_SEND_URLS / EMAIL_SEND_KEYS 的 JSON 格式怎麼填?
EMAIL_SEND_URLS 是寄件位址的 JSON 陣列,每個元素形如 https://<你的網域>/api/<寄件端點ID>/send;EMAIL_SEND_KEYS 是與之一一對應的金鑰陣列。
只用一個寄件端點時,金鑰可直接寫成一般字串:
使用多個寄件端點,且金鑰各不相同時,兩個陣列依索引對應:
多個寄件端點共用一個金鑰時,金鑰只寫一個:
多個金鑰的數量必須與位址數量一致,或只提供一個金鑰共用;數量不符會在傳送時回報錯誤。
Q: 如何限制允許的信箱網域?
在 MailPort 寄件端點設定的「收件網域白名單」中加入允許的網域(例如 qq.com、example.com),只有白名單內的收件位址才會寄送。
白名單留空則不限制網域。
Q: MailPort 支援哪些寄件方式?
MailPort 支援以下寄件方式:
- SMTP:任意 SMTP 服務供應商(163 信箱、QQ 信箱、Gmail 等)
- HTTP API:轉發到自訂的 HTTP 介面
- Outlook OAuth2 / Gmail OAuth2:免應用程式密碼,授權後直接寄件
詳見 MailPort 專案文件。