从零部署 Rin 博客:基于 Cloudflare 生态的轻量化博客搭建指南
type
Post
status
Published
date
Oct 16, 2025
slug
summary
tags
category
技术分享
icon
password
标签
VPS

在追求「无服务器运维」和「轻量化工具」的当下,越来越多开发者倾向于用云原生服务搭建个人博客。Rin 博客作为一款基于 Cloudflare 全家桶(Pages + Workers + D1 + R2)的开源项目,完美契合这一需求——无需服务器、无需备案,且在小额用量内完全免费。本文将带你一步步完成 Rin 博客的部署,从环境准备到前后端对接,让你快速拥有自己的轻量化博客。
一、先搞懂:Rin 博客是什么?适合谁?
在动手前,先明确 Rin 博客的核心特性,判断它是否符合你的需求:
1. 核心技术栈
Rin 并非传统的动态博客(如 WordPress),而是前后端分离架构:
- 前端:纯静态页面,部署在 Cloudflare Pages(加载速度快,自动CDN加速);
- 后端:依赖 Cloudflare Workers 提供 API 服务,D1 数据库存储配置/文章数据,R2 存储图片等静态资源;
- 整体无需自建服务器,所有服务均运行在 Cloudflare 全球节点上。
2. 适合这类人群
- 不想维护服务器、反感复杂运维的「懒人」;
- 追求轻量化、高加载速度的个人博主;
- 喜欢云原生技术,想体验 Cloudflare 生态的开发者;
- 希望「零成本」搭建博客(小额用量完全免费)。
3. 注意事项(避坑提醒)
- 功能待完善:Rin 目前处于初期阶段,部分功能(如多用户、高级评论)尚未支持,稳定性需持续优化;
- 迁移限制:仅支持从 WordPress 批量导入文章,其他博客(如 Hexo、Typecho)迁移需手动处理;
- R2 激活要求:Cloudflare R2 功能需绑定支付方式(PayPal 或银行卡均可,无用量不扣费,仅用于身份验证);
- 安全提示:后续配置中涉及的 API 令牌、密钥等信息,切勿公开或分享,否则可能导致账户权限泄露。
二、部署前准备:提前备好这些「工具」
开始部署前,确保你已准备好以下资源,避免中途卡顿:
- GitHub 账号:用于 Fork Rin 源码、配置 GitHub Actions(后端部署依赖);
- Cloudflare 账号:需完成个人域名解析(将域名托管到 Cloudflare,具体解析步骤可参考 Cloudflare 官方文档);
- 已解析的域名:1 个用于前端(如 blog.yourdomain.com),1 个用于后端(如 api.yourdomain.com,也可复用子域名,建议分开更清晰);
- 耐心+细心:后端配置涉及多个密钥和环境变量,需逐一对齐,避免拼写错误或空格问题。
三、第一步:前端部署(Cloudflare Pages)
前端是用户直接访问的页面,部署核心是将 Rin 前端代码通过 Cloudflare Pages 构建并绑定域名。
1. Fork Rin 源码
- 打开 Rin 官方 GitHub 项目地址:openRin/Rin;
- 点击右上角「Fork」按钮,将源码复制到你的 GitHub 仓库(仓库名称可自定义,如
rin-blog)。

2. 配置 Cloudflare Pages
- 登录 Cloudflare 控制台,左侧菜单栏找到「Workers 和 Pages」,点击「创建」;

- 切换到「Pages」选项卡,选择「连接到 Git」;

- 首次使用需授权 Cloudflare 访问你的 GitHub 账号,授权后选择刚才 Fork 的 Rin 仓库,点击「开始设置」;

- 填写构建配置(未提及项保持默认):
- 构建命令:
bun b(Rin 依赖 Bun 构建工具,Cloudflare 会自动处理环境); - 构建输出目录:
client/dist(前端代码构建后的输出路径)。
3. 添加关键环境变量
点击「环境变量(高级)」,添加以下变量(严格避免多余空格,变量含义已标注):
环境变量名 | 取值示例 | 说明 |
NAME | 小明 | 博客左上角显示的昵称 |
DESCRIPTION | 分享技术与生活的小站 | 昵称下方的个人描述 |
AVATAR | 左上角头像的在线链接(建议用 GitHub 头像) | |
API_URL | 后端域名(先填临时值,后续会修改) | |
PAGE_SIZE | 5 | 首页文章分页数量,推荐 5-10 |
SKIP_DEPENDENCY_INSTALL | true | 跳过依赖安装(固定值,勿修改) |
UNSTABLE_PRE_BUILD | asdf install bun latest && ...(原命令) | 预构建 Bun 环境(固定值,勿修改) |
4. 完成前端部署与域名绑定
- 点击「保存并部署」,等待约 30 秒(Cloudflare 会自动构建并部署);
- 部署完成后,回到 Pages 管理页,点击「自定义域」→「设置自定义域」,输入你的前端域名(如 blog.yourdomain.com);
- 等待 Cloudflare 验证域名(约 1-5 分钟),状态变为「有效」后,访问该域名即可看到前端页面(此时因未对接后端,功能暂不可用)。
.jpg?table=block&id=a44a81b9-1220-82b4-b84f-01bd06130f4d&t=a44a81b9-1220-82b4-b84f-01bd06130f4d)
四、第二步:后端部署(GitHub Actions + Cloudflare 生态)
后端是 Rin 的「大脑」,负责处理 API 请求、存储文章数据和图片,核心依赖 GitHub Actions 自动部署到 Cloudflare Workers,无需手动操作 Workers 项目。
1. 配置 Cloudflare R2 存储桶(存储图片等资源)
R2 是 Cloudflare 的对象存储服务,用于存放博客中的图片、附件等资源:
- 进入 Cloudflare 控制台,左侧菜单栏找到「R2」,点击「新建存储桶」;
- 存储桶配置:
- 复制「S3 API」地址(如
https://abc123.r2.cloudflarestorage.com,后续需去掉路径,仅保留域名); - 「公开访问」:绑定一个域名(如
storage.yourdomain.com,用于公开访问存储的资源); - 「CORS 策略」:点击「添加 CORS 策略」,避免前端跨域问题(将示例中的域名替换为你的前端域名,可以跳过这一步):


[ { "AllowedOrigins": ["<https://blog.yourdomain.com>"], "AllowedMethods": ["GET", "DELETE", "HEAD", "POST", "PUT"], "AllowedHeaders": ["Content-Type"] } ]- 创建 R2 API 令牌:

2. 获取 Cloudflare 账户 ID 与 API 令牌
后端部署需要 Cloudflare 账户权限,需创建一个具备特定权限的 API 令牌:
- 账户 ID:进入 Cloudflare 控制台,任意打开一个域名的管理页,页面下方即可看到「账户 ID」;
.jpg?table=block&id=11da81b9-1220-82b7-8fd8-013932d01e76&t=11da81b9-1220-82b7-8fd8-013932d01e76)
- 自定义 API 令牌:
- 点击右上角「我的个人资料」→「API 令牌」→「创建令牌」;

.jpg?table=block&id=749a81b9-1220-8359-bb03-015802f0f76a&t=749a81b9-1220-8359-bb03-015802f0f76a)
3. 配置 GitHub OAuth(实现登录功能)
Rin 依赖 GitHub 授权登录,需创建一个 OAuth 应用:
- 打开 GitHub OAuth Apps 页面,点击「New OAuth App」;
- 填写配置(后端域名后续绑定,先按格式填写):
- Application name:自定义(如「Rin 博客登录」);
- Homepage URL:你的前端域名(如
https://blog.yourdomain.com); - Authorization callback URL:
https://api.yourdomain.com/user/github/callback(后端域名+固定路径);
.jpg?table=block&id=bdda81b9-1220-8222-b32b-818d04f136bb&t=bdda81b9-1220-8222-b32b-818d04f136bb)
- 点击「Register application」,然后点击「Generate a new client secret」(需 GitHub 二步验证);
- 记录「Client ID」和「Client secret」(后续配置需用到)。

4. 配置 GitHub Actions(自动部署后端)
GitHub Actions 会读取仓库中的配置,自动将后端代码部署到 Cloudflare Workers,核心是添加「变量」和「密钥」:
步骤 1:添加 Repository Variables
- 打开你 Fork 的 Rin 仓库(openRin/Rin 的衍生仓库),进入「Settings」→「Secrets and variables」→「Actions」→「Variables」;

- 点击「New repository variable」,依次添加以下变量(值来自前文配置):
变量名 | 取值示例 | 来源 |
FRONTEND_URL | 前端域名 | |
S3_BUCKET | rin-storage | R2 存储桶名称 |
S3_REGION | auto | 固定值(R2 自动识别区域) |
S3_ENDPOINT | R2 的 S3 API 域名(去掉路径) | |
S3_ACCESS_HOST | R2 公开访问域名 |
步骤 2:添加 Repository Secrets
- 切换到「Secrets」选项卡,点击「New repository secret」,依次添加以下敏感信息(Secrets 会加密存储,不显示具体值):

密钥名 | 取值示例 | 来源 |
CLOUDFLARE_ACCOUNT_ID | abc123def456... | Cloudflare 账户 ID |
CLOUDFLARE_API_TOKEN | abc123def456... | 自定义的 Cloudflare API 令牌 |
RIN_GITHUB_CLIENT_ID | abc123def456... | GitHub OAuth App 的 Client ID |
RIN_GITHUB_CLIENT_SECRET | abc123def456... | GitHub OAuth App 的 Client Secret |
JWT_SECRET | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 随机生成的加密密钥(用密码生成器创建) |
S3_ACCESS_KEY_ID | abc123def456... | R2 API 令牌的「访问密钥 ID」 |
S3_SECRET_ACCESS_KEY | abc123def456... | R2 API 令牌的「机密访问密钥」 |
步骤 3:触发 GitHub Actions 部署
- 进入仓库的「Actions」界面,首次使用需点击「I understand my workflows, go ahead and enable them」开启功能;
- 找到「Deploy」 workflow,点击「Run workflow」→「Run workflow」,触发自动部署;

- 等待约 1 分钟,若显示绿色对勾(Success),说明后端已部署到 Cloudflare Workers;若显示红色叉号,需检查变量/密钥是否填写正确(重点排查域名、密钥拼写)。

五、第三步:前后端对接与最终验证
前端和后端分别部署完成后,需通过配置关联,让前端能调用后端 API:
1. 绑定后端域名(Cloudflare Workers)
- 进入 Cloudflare 控制台,「Workers 和 Pages」→ 找到名为
rin-server的 Worker(GitHub Actions 自动创建);
- 进入
rin-server的「触发器」页面: - 点击「添加自定义域」,绑定你的后端域名(如
api.yourdomain.com); - 点击「添加路由」,依次添加两条路由(让前端请求转发到后端):
- 路由 1:
https://blog.yourdomain.com/sub/*(前端订阅相关请求); - 路由 2:
https://blog.yourdomain.com/seo/*(前端 SEO 相关请求)。

2. 更新前端 API 地址并重新部署
- 回到前端 Pages 项目(如
blog.yourdomain.com)的「设置」→「环境变量」;
- 将「API_URL」的值修改为你的后端域名(如
https://api.yourdomain.com);
- 进入「部署」页面,找到最新的部署记录,点击「重试部署」(让前端加载新的 API 地址)。
3. 验证登录与管理员权限
- 部署完成后,访问前端域名(如
https://blog.yourdomain.com);
- 点击右上角「GitHub 登录」,跳转至 GitHub 授权页面,授权后返回博客;
- 第一个登录的用户会自动成为博客管理员,后续可通过登录后的后台管理文章、配置博客信息。
六、部署后:这些小事可以留意
- 问题排查:若遇到功能异常(如无法登录、文章无法加载),可先查看 Cloudflare Pages/Workers 的「日志」,或前往 Rin 官方 GitHub 仓库(openRin/Rin)的「Issues」板块搜索同类问题;
- 功能参考:Rin 支持的完整功能(如「 Moments 」动态、友链检测、标签自动解析等),可访问官方演示站 xeu.life 体验,或查看官方文档 docs.openrin.org;
- 数据备份:定期导出 D1 数据库(Cloudflare 控制台「D1」→ 选择 Rin 数据库 →「导出」),避免数据丢失;
- 贡献与定制:若需参与 Rin 开发或提交功能建议,可参考官方仓库的「CONTRIBUTING.md」或「CONTRIBUTING_zh_CN.md」文档,按规范提交 PR 或 Issues。
至此,你已成功搭建了一个基于 Cloudflare 生态的 Rin 博客!无需服务器运维,即可拥有一个轻量化、高速度的个人博客。后续可根据需求慢慢探索功能,享受「零成本」博客的便捷~