环境变量配置指南
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 一致(或只提供一个密钥供所有地址共用),数量不匹配会在发送时直接报错。
邮件自助友链(申请 / 修改 / 删除)在用户发送第一封邮件时,会先要求识别一封含验证码图片的邮件,防止自动化滥用:
- 用户向收件地址发送「友链申请 / 友链修改 / 友链删除」
- Rin 生成一张带干扰线 / 干扰点的验证码图片(4 位字符),以内嵌图片形式发送到用户邮箱
- 用户识别图片中的字符,在 new 邮件正文中只回复这 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 项目文档。