banner
约 3,000 字
10 分钟

从零部署 Rin 博客:基于 Cloudflare 生态的轻量化博客搭建指南

摘要

本文介绍如何利用 Cloudflare 全家桶搭建 Rin 博客。步骤包括:准备 GitHub 与 Cloudflare 账号及域名;前端通过 Cloudflare Pages 部署并配置环境变量;后端通过配置 R2、API 令牌及 GitHub Actions 自动部署至 Workers;最后绑定域名并更新 API 地址,实现前后端对接。该方案无需服务器,适合追求轻量化与零成本的开发者。

blog image
blog image

在追求「无服务器运维」和「轻量化工具」的当下,越来越多开发者倾向于用云原生服务搭建个人博客。Rin 博客作为一款基于 Cloudflare 全家桶(Pages + Workers + D1 + R2)的开源项目,完美契合这一需求——无需服务器、无需备案,且在小额用量内完全免费。本文将带你一步步完成 Rin 博客的部署,从环境准备到前后端对接,让你快速拥有自己的轻量化博客。(以前用的,目前flare-stack-blog

一、先搞懂: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(后端部署依赖);

  2. Cloudflare 账号:需完成个人域名解析(将域名托管到 Cloudflare,具体解析步骤可参考 Cloudflare 官方文档);

  3. 已解析的域名:1 个用于前端(如 blog.yourdomain.com),1 个用于后端(如 api.yourdomain.com,也可复用子域名,建议分开更清晰);

  4. 耐心+细心:后端配置涉及多个密钥和环境变量,需逐一对齐,避免拼写错误或空格问题。

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

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

1. Fork Rin 源码

  1. 打开 Rin 官方 GitHub 项目地址:openRin/Rin

  2. 点击右上角「Fork」按钮,将源码复制到你的 GitHub 仓库(仓库名称可自定义,如 rin-blog)。

    blog image
    blog image

2. 配置 Cloudflare Pages

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

    blog image
    blog image
  2. 切换到「Pages」选项卡,选择「连接到 Git」;

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

    blog image
    blog image
  4. 填写构建配置(未提及项保持默认):

    • 构建命令bun b(Rin 依赖 Bun 构建工具,Cloudflare 会自动处理环境);

    • 构建输出目录client/dist(前端代码构建后的输出路径)。

3. 添加关键环境变量

点击「环境变量(高级)」,添加以下变量(严格避免多余空格,变量含义已标注):

环境变量名

取值示例

说明

NAME

小明

博客左上角显示的昵称

DESCRIPTION

分享技术与生活的小站

昵称下方的个人描述

AVATAR

https://avatars.githubusercontent.com/xxx

左上角头像的在线链接(建议用 GitHub 头像)

API_URL

https://api.yourdomain.com

后端域名(先填临时值,后续会修改)

PAGE_SIZE

5

首页文章分页数量,推荐 5-10

SKIP_DEPENDENCY_INSTALL

true

跳过依赖安装(固定值,勿修改)

UNSTABLE_PRE_BUILD

asdf install bun latest && ...(原命令)

预构建 Bun 环境(固定值,勿修改)

4. 完成前端部署与域名绑定

  1. 点击「保存并部署」,等待约 30 秒(Cloudflare 会自动构建并部署);

  2. 部署完成后,回到 Pages 管理页,点击「自定义域」→「设置自定义域」,输入你的前端域名(如 blog.yourdomain.com);

  3. 等待 Cloudflare 验证域名(约 1-5 分钟),状态变为「有效」后,访问该域名即可看到前端页面(此时因未对接后端,功能暂不可用)。

    blog image
    blog image

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

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

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

R2 是 Cloudflare 的对象存储服务,用于存放博客中的图片、附件等资源:

  1. 进入 Cloudflare 控制台,左侧菜单栏找到「R2」,点击「新建存储桶」;

    • 存储桶名称:自定义(如 rin-storage,后续需用到);

    • 位置提示:可选「亚太地区」(提升国内访问速度),不选也可;

      blog image
      blog image
      blog image
      blog image
  2. 存储桶配置:

    • 复制「S3 API」地址(如 https://abc123.r2.cloudflarestorage.com,后续需去掉路径,仅保留域名);

      blog image
      blog image
    • 「公开访问」:绑定一个域名(如 storage.yourdomain.com,用于公开访问存储的资源);

      blog image
      blog image
    • 「CORS 策略」:点击「添加 CORS 策略」,避免前端跨域问题(将示例中的域名替换为你的前端域名,可以跳过这一步):

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

    blog image
    blog image
    • 回到存储桶「概述」页,点击「管理 R2 API 令牌」→「创建 API 令牌」;

      blog image
      blog image
    • 权限选择「管理员读和写」,名称自定义;

      blog image
      blog image
    • 生成后立即记录「访问密钥 ID」和「机密访问密钥」(刷新后会消失,务必保存)。

      blog image
      blog image

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

后端部署需要 Cloudflare 账户权限,需创建一个具备特定权限的 API 令牌:

  1. 账户 ID:进入 Cloudflare 控制台,任意打开一个域名的管理页,页面下方即可看到「账户 ID」;

    blog image
    blog image
  2. 自定义 API 令牌

    blog image
    blog image
    • 点击右上角「我的个人资料」→「API 令牌」→「创建令牌」;

    blog image
    blog image
    • 选择「编辑自定义令牌」→「开始使用」;

      blog image
      blog image
    • 授予以下权限(后端运行必需):

      • Workers R2 存储:编辑;

      • D1:编辑;

      • Workers 脚本:编辑;

    • TTL(有效期):留空为永久生效,或设置具体时间(过期前需重新生成);

      blog image
      blog image
    • 点击「继续以显示摘要」→「创建令牌」,记录生成的令牌(安全存储,勿公开)。

      blog image
      blog image

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

Rin 依赖 GitHub 授权登录,需创建一个 OAuth 应用:

  1. 打开 GitHub OAuth Apps 页面,点击「New OAuth App」;

  2. 填写配置(后端域名后续绑定,先按格式填写):

    • Application name:自定义(如「Rin 博客登录」);

    • Homepage URL:你的前端域名(如 https://blog.yourdomain.com);

    • Authorization callback URLhttps://api.yourdomain.com/user/github/callback(后端域名+固定路径);

      blog image
      blog image
  3. 点击「Register application」,然后点击「Generate a new client secret」(需 GitHub 二步验证);

  4. 记录「Client ID」和「Client secret」(后续配置需用到)。

    blog image
    blog image

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

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

步骤 1:添加 Repository Variables

  1. 打开你 Fork 的 Rin 仓库(openRin/Rin 的衍生仓库),进入「Settings」→「Secrets and variables」→「Actions」→「Variables」;

    blog image
    blog image
  2. 点击「New repository variable」,依次添加以下变量(值来自前文配置):

    变量名

    取值示例

    来源

    FRONTEND_URL

    https://blog.yourdomain.com

    前端域名

    S3_BUCKET

    rin-storage

    R2 存储桶名称

    S3_REGION

    auto

    固定值(R2 自动识别区域)

    S3_ENDPOINT

    https://abc123.r2.cloudflarestorage.com

    R2 的 S3 API 域名(去掉路径)

    S3_ACCESS_HOST

    https://storage.yourdomain.com

    R2 公开访问域名

步骤 2:添加 Repository Secrets

  1. 切换到「Secrets」选项卡,点击「New repository secret」,依次添加以下敏感信息(Secrets 会加密存储,不显示具体值):

    blog image
    blog 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」开启功能;

  2. 找到「Deploy」 workflow,点击「Run workflow」→「Run workflow」,触发自动部署;

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

    blog image
    blog image

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

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

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

  1. 进入 Cloudflare 控制台,「Workers 和 Pages」→ 找到名为 rin-server 的 Worker(GitHub Actions 自动创建);

  2. 进入 rin-server 的「触发器」页面:

    • 点击「添加自定义域」,绑定你的后端域名(如 api.yourdomain.com);

    • 点击「添加路由」,依次添加两条路由(让前端请求转发到后端):

      • 路由 1:https://blog.yourdomain.com/sub/*(前端订阅相关请求);

      • 路由 2:https://blog.yourdomain.com/seo/*(前端 SEO 相关请求)。

        blog image
        blog image

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

  1. 回到前端 Pages 项目(如 blog.yourdomain.com)的「设置」→「环境变量」;

  2. 将「API_URL」的值修改为你的后端域名(如 https://api.yourdomain.com);

  3. 进入「部署」页面,找到最新的部署记录,点击「重试部署」(让前端加载新的 API 地址)。

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

  1. 部署完成后,访问前端域名(如 https://blog.yourdomain.com);

  2. 点击右上角「GitHub 登录」,跳转至 GitHub 授权页面,授权后返回博客;

  3. 第一个登录的用户会自动成为博客管理员,后续可通过登录后的后台管理文章、配置博客信息。

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

  1. 问题排查:若遇到功能异常(如无法登录、文章无法加载),可先查看 Cloudflare Pages/Workers 的「日志」,或前往 Rin 官方 GitHub 仓库(openRin/Rin)的「Issues」板块搜索同类问题;

  2. 功能参考:Rin 支持的完整功能(如「 Moments 」动态、友链检测、标签自动解析等),可访问官方演示站 xeu.life 体验,或查看官方文档 docs.openrin.org

  3. 数据备份:定期导出 D1 数据库(Cloudflare 控制台「D1」→ 选择 Rin 数据库 →「导出」),避免数据丢失;

  4. 贡献与定制:若需参与 Rin 开发或提交功能建议,可参考官方仓库的「CONTRIBUTING.md」或「CONTRIBUTING_zh_CN.md」文档,按规范提交 PR 或 Issues。

至此,你已成功搭建了一个基于 Cloudflare 生态的 Rin 博客!无需服务器运维,即可拥有一个轻量化、高速度的个人博客。后续可根据需求慢慢探索功能,享受「零成本」博客的便捷~

END
© 2026 执手听风. All Rights Reserved. / RSS / Sitemap
Powered by Tanstack Start & Flare Stack Blog