从零部署 Rin 博客:基于 Cloudflare 生态的轻量化博客搭建指南
技术分享|2025-10-16|Last edited: 2026-2-14
type
Post
status
Published
date
Oct 16, 2025
slug
summary
tags
category
技术分享
icon
password
标签
VPS
 
notion image
在追求「无服务器运维」和「轻量化工具」的当下,越来越多开发者倾向于用云原生服务搭建个人博客。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 令牌、密钥等信息,切勿公开或分享,否则可能导致账户权限泄露。

二、部署前准备:提前备好这些「工具」

开始部署前,确保你已准备好以下资源,避免中途卡顿:
  1. GitHub 账号:用于 Fork Rin 源码、配置 GitHub Actions(后端部署依赖);
  1. Cloudflare 账号:需完成个人域名解析(将域名托管到 Cloudflare,具体解析步骤可参考 Cloudflare 官方文档);
  1. 已解析的域名:1 个用于前端(如 blog.yourdomain.com),1 个用于后端(如 api.yourdomain.com,也可复用子域名,建议分开更清晰);
  1. 耐心+细心:后端配置涉及多个密钥和环境变量,需逐一对齐,避免拼写错误或空格问题。

三、第一步:前端部署(Cloudflare Pages)

前端是用户直接访问的页面,部署核心是将 Rin 前端代码通过 Cloudflare Pages 构建并绑定域名。

1. Fork Rin 源码

  1. 打开 Rin 官方 GitHub 项目地址:openRin/Rin
  1. 点击右上角「Fork」按钮,将源码复制到你的 GitHub 仓库(仓库名称可自定义,如 rin-blog)。
    1. notion image

2. 配置 Cloudflare Pages

  1. 登录 Cloudflare 控制台,左侧菜单栏找到「Workers 和 Pages」,点击「创建」;
    1. notion image
  1. 切换到「Pages」选项卡,选择「连接到 Git」;
    1. notion image
  1. 首次使用需授权 Cloudflare 访问你的 GitHub 账号,授权后选择刚才 Fork 的 Rin 仓库,点击「开始设置」;
    1. notion image
  1. 填写构建配置(未提及项保持默认):
      • 构建命令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. 完成前端部署与域名绑定

  1. 点击「保存并部署」,等待约 30 秒(Cloudflare 会自动构建并部署);
  1. 部署完成后,回到 Pages 管理页,点击「自定义域」→「设置自定义域」,输入你的前端域名(如 blog.yourdomain.com);
  1. 等待 Cloudflare 验证域名(约 1-5 分钟),状态变为「有效」后,访问该域名即可看到前端页面(此时因未对接后端,功能暂不可用)。
    1. notion image

四、第二步:后端部署(GitHub Actions + Cloudflare 生态)

后端是 Rin 的「大脑」,负责处理 API 请求、存储文章数据和图片,核心依赖 GitHub Actions 自动部署到 Cloudflare Workers,无需手动操作 Workers 项目。

1. 配置 Cloudflare R2 存储桶(存储图片等资源)

R2 是 Cloudflare 的对象存储服务,用于存放博客中的图片、附件等资源:
  1. 进入 Cloudflare 控制台,左侧菜单栏找到「R2」,点击「新建存储桶」;
  1. 存储桶配置:
      • 复制「S3 API」地址(如 https://abc123.r2.cloudflarestorage.com,后续需去掉路径,仅保留域名);
        • notion image
      • 「公开访问」:绑定一个域名(如 storage.yourdomain.com,用于公开访问存储的资源);
        • notion image
      • 「CORS 策略」:点击「添加 CORS 策略」,避免前端跨域问题(将示例中的域名替换为你的前端域名,可以跳过这一步):
        • [ { "AllowedOrigins": ["<https://blog.yourdomain.com>"], "AllowedMethods": ["GET", "DELETE", "HEAD", "POST", "PUT"], "AllowedHeaders": ["Content-Type"] } ]
  1. 创建 R2 API 令牌:
    1. notion image

2. 获取 Cloudflare 账户 ID 与 API 令牌

后端部署需要 Cloudflare 账户权限,需创建一个具备特定权限的 API 令牌:
  1. 账户 ID:进入 Cloudflare 控制台,任意打开一个域名的管理页,页面下方即可看到「账户 ID」;
    1. notion image
  1. 自定义 API 令牌
    1. notion image
      • 点击右上角「我的个人资料」→「API 令牌」→「创建令牌」;
      notion image

3. 配置 GitHub OAuth(实现登录功能)

Rin 依赖 GitHub 授权登录,需创建一个 OAuth 应用:
  1. 打开 GitHub OAuth Apps 页面,点击「New OAuth App」;
  1. 填写配置(后端域名后续绑定,先按格式填写):
      • Application name:自定义(如「Rin 博客登录」);
      • Homepage URL:你的前端域名(如 https://blog.yourdomain.com);
      • Authorization callback URLhttps://api.yourdomain.com/user/github/callback(后端域名+固定路径);
        • notion image
  1. 点击「Register application」,然后点击「Generate a new client secret」(需 GitHub 二步验证);
  1. 记录「Client ID」和「Client secret」(后续配置需用到)。
    1. notion image

4. 配置 GitHub Actions(自动部署后端)

GitHub Actions 会读取仓库中的配置,自动将后端代码部署到 Cloudflare Workers,核心是添加「变量」和「密钥」:

步骤 1:添加 Repository Variables

  1. 打开你 Fork 的 Rin 仓库(openRin/Rin 的衍生仓库),进入「Settings」→「Secrets and variables」→「Actions」→「Variables」;
    1. notion image
  1. 点击「New repository variable」,依次添加以下变量(值来自前文配置):
    1. 变量名
      取值示例
      来源
      FRONTEND_URL
      前端域名
      S3_BUCKET
      rin-storage
      R2 存储桶名称
      S3_REGION
      auto
      固定值(R2 自动识别区域)
      S3_ENDPOINT
      R2 的 S3 API 域名(去掉路径)
      S3_ACCESS_HOST
      R2 公开访问域名

步骤 2:添加 Repository Secrets

  1. 切换到「Secrets」选项卡,点击「New repository secret」,依次添加以下敏感信息(Secrets 会加密存储,不显示具体值):
    1. notion image
      密钥名
      取值示例
      来源
      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 部署

  1. 进入仓库的「Actions」界面,首次使用需点击「I understand my workflows, go ahead and enable them」开启功能;
  1. 找到「Deploy」 workflow,点击「Run workflow」→「Run workflow」,触发自动部署;
    1. notion image
  1. 等待约 1 分钟,若显示绿色对勾(Success),说明后端已部署到 Cloudflare Workers;若显示红色叉号,需检查变量/密钥是否填写正确(重点排查域名、密钥拼写)。
    1. notion image

五、第三步:前后端对接与最终验证

前端和后端分别部署完成后,需通过配置关联,让前端能调用后端 API:

1. 绑定后端域名(Cloudflare Workers)

  1. 进入 Cloudflare 控制台,「Workers 和 Pages」→ 找到名为 rin-server 的 Worker(GitHub Actions 自动创建);
  1. 进入 rin-server 的「触发器」页面:
      • 点击「添加自定义域」,绑定你的后端域名(如 api.yourdomain.com);
      • 点击「添加路由」,依次添加两条路由(让前端请求转发到后端):
        • 路由 1:https://blog.yourdomain.com/sub/*(前端订阅相关请求);
        • 路由 2:https://blog.yourdomain.com/seo/*(前端 SEO 相关请求)。
          • notion image

2. 更新前端 API 地址并重新部署

  1. 回到前端 Pages 项目(如 blog.yourdomain.com)的「设置」→「环境变量」;
  1. 将「API_URL」的值修改为你的后端域名(如 https://api.yourdomain.com);
  1. 进入「部署」页面,找到最新的部署记录,点击「重试部署」(让前端加载新的 API 地址)。

3. 验证登录与管理员权限

  1. 部署完成后,访问前端域名(如 https://blog.yourdomain.com);
  1. 点击右上角「GitHub 登录」,跳转至 GitHub 授权页面,授权后返回博客;
  1. 第一个登录的用户会自动成为博客管理员,后续可通过登录后的后台管理文章、配置博客信息。

六、部署后:这些小事可以留意

  1. 问题排查:若遇到功能异常(如无法登录、文章无法加载),可先查看 Cloudflare Pages/Workers 的「日志」,或前往 Rin 官方 GitHub 仓库(openRin/Rin)的「Issues」板块搜索同类问题;
  1. 功能参考:Rin 支持的完整功能(如「 Moments 」动态、友链检测、标签自动解析等),可访问官方演示站 xeu.life 体验,或查看官方文档 docs.openrin.org
  1. 数据备份:定期导出 D1 数据库(Cloudflare 控制台「D1」→ 选择 Rin 数据库 →「导出」),避免数据丢失;
  1. 贡献与定制:若需参与 Rin 开发或提交功能建议,可参考官方仓库的「CONTRIBUTING.md」或「CONTRIBUTING_zh_CN.md」文档,按规范提交 PR 或 Issues。
至此,你已成功搭建了一个基于 Cloudflare 生态的 Rin 博客!无需服务器运维,即可拥有一个轻量化、高速度的个人博客。后续可根据需求慢慢探索功能,享受「零成本」博客的便捷~
 
莉莉周她说 - 爱人一文搞懂 CloudFlare CDN/Page/Workers 优选
Loading...