《打造个人内容矩阵:在 Cloudflare 零成本部署 Rin 博客与专属导航网站》

随着云端折腾经验的不断丰富以及长线运营计划的推进,建立一个长期、可扩展的底层基础设施来承载内容与软件工具矩阵,变得尤为重要。传统的 VPS 建站虽然自由度高,但往往伴随着繁琐的服务器维护、环境配置以及续费焦虑。

今天这篇文章,我们将彻底转换思路,利用 Serverless 架构的优势,依托 Cloudflare 的强大生态,手把手教你零成本、高可用地部署个人内容大本营——Rin 博客系统,以及一个用于集中管理各类云端服务的专属导航网站。这套方案免去了底层运维的烦恼,并自带全球边缘节点的极速 CDN 加速。


一、 核心底座:部署 Rin 博客系统

Rin 是一款极其轻量且专为 Cloudflare 生态打造的现代博客系统。它依赖 Cloudflare Workers 提供后端计算,利用 D1 承担数据库,并使用 R2 作为对象存储(图床)。

1. 准备源码与获取 CF 授权

首先,需要获取源码并赋予 GitHub Actions 自动化部署到 Cloudflare 的权限。

  • Fork 仓库:前往 GitHub,访问 openRin/Rin 仓库,点击右上角的 Fork 将代码复制到你的个人账号下。
  • 获取 Account ID:登录 Cloudflare 控制台,在主页随便点击进入一个你托管的自定义域名,在页面右下方找到 账户 ID (Account ID) 并复制备用。
  • 创建高定权限的 API Token
    1. 点击右上角头像进入 我的个人资料 (My Profile) -> API 令牌 (API Tokens) -> 创建令牌 (Create Token)
    2. 选择 编辑 Cloudflare Workers 模板。
    3. 划重点:修改默认权限!
      • 删除不需要的权限(如 KV 存储、路由、账户设置等)。
      • 保留以下三项权限:Workers 脚本 (Edit)R2 存储桶 (Edit)Cloudflare Pages 项目及其配置 (Edit)
      • 手动新增一项:点击 添加更多,搜索并添加 D1 (Edit) 权限。
    4. 在底部“账户资源”区域,选择 包括 -> 所有账户
    5. 设定好令牌到期时间(例如一个月或更长),点击创建并妥善保存这串 API Token

2. 配置 GitHub 机密环境变量 (Secrets)

为了让 GitHub Actions 能够顺利建库和部署,必须将凭证安全地存入仓库。

进入你 Fork 的 Rin 仓库,点击 Settings -> Secrets and variables -> Actions,在 Secrets 标签页下点击 New repository secret,依次添加以下变量:

Secret 名称填入的值说明
CLOUDFLARE_ACCOUNT_ID你的 Cloudflare 账户 ID刚获取的 CF 账户标识
CLOUDFLARE_API_TOKEN修改过权限(包含 D1)的 API Token赋予部署权限
JWT_SECRET任意长度的随机英文字符串用于系统鉴权的密钥
ADMIN_USERNAME自定义用户名博客后台的首个管理员账号
ADMIN_PASSWORD自定义密码博客后台的首个管理员密码

3. 配置站点信息与图床 (Variables)

Rin 博客的站点名称、描述以及图床依赖,推荐通过 GitHub Variables 进行固化配置,避免重新部署时设置丢失。

  • 创建 R2 存储桶:在 Cloudflare 面板左侧找到 R2 对象存储,创建一个新的存储桶(例如命名为 rin-images,名字不与其他用户冲突即可),复制该存储桶的名称。
  • 添加 Variables:回到 GitHub 仓库的 Settings -> Secrets and variables -> Actions,切换到 Variables 标签页,点击 New repository variable 依次添加:
    • NAME: 你的博客站点名称(例如:mliaomcx)
    • DESCRIPTION: 你的站点描述
    • R2_BUCKET_NAME: 刚刚在 CF 创建的 R2 存储桶名称(填入后即可在后台正常上传图片到图床)

4. 进阶选项:配置 GitHub OAuth 快捷登录(可选)

如果你希望后续能直接用 GitHub 账号登录后台,可以配置 OAuth App(注意:首次必须用账号密码登录以获取管理员权限):

  1. 在 GitHub 右上角头像菜单进入 Settings -> 最底部的 Developer settings -> OAuth Apps -> New OAuth App
  2. 填写名称,Homepage URL 填入你的博客域名(如 https://blog.yourdomain.com)。
  3. Authorization callback URL 填入:https://你的域名/api/auth/callback
  4. 注册后,复制 Client ID,并生成一个 Client Secret 复制下来。
  5. 回到 Rin 仓库的 Secrets 设置中,新增两个 Secret:GH_CLIENT_IDGH_CLIENT_SECRET,分别填入对应的值。

5. 触发自动化部署 (Build) & 绑定域名

  • 进入 Rin 仓库的 Actions 选项卡。
  • 如果是第一次进入,点击绿色按钮启用工作流。如果在左侧找不到 build,请先回到代码主页点击 Sync fork 同步拉取最新代码。
  • 在左侧工作流列表中选择 build,点击右侧的 Run workflow 手动触发构建。
  • 等待 3-5 分钟绿灯亮起,代码编译完成。此时 Cloudflare 需要 1-2 分钟同步全网节点。
  • 同步完成后,在 Cloudflare 左侧菜单的 Workers 和 Pages 中,找到新部署的 Rin 服务,进入其 设置 -> 触发器 -> 自定义域,添加你的专属域名(如 blog.yourdomain.com),等待 SSL 证书自动签发即可访问并开始创作!

二、 效率枢纽:部署“拾光集”导航站

当探针、路由面板、内网穿透入口越来越多时,我们需要一个集中的导航页。这里强烈推荐部署“拾光集” (wangwangit/nav) 的 V2 版本。它基于 Workers + D1 + KV 构建,不仅自带边缘缓存,还大幅升级了后台安全机制(支持会话登录)。

整个部署过程分为四步,请严格按照下方的顺序和名称配置

1. 准备基础资源:创建数据库与存储

  • 创建 D1 数据库
    • 登录 Cloudflare,选择 存储和数据库 -> D1 SQL 数据库,点击创建。名称建议填 book(位置选亚太地区)。
    • 初始化数据表:进入该数据库的 控制台 (Console)

CREATE TABLE sites (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
url TEXT NOT NULL,
logo TEXT,
“desc” TEXT,
catelog TEXT NOT NULL,
status TEXT,
sort_order INTEGER NOT NULL DEFAULT 9999,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE pending_sites (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
url TEXT NOT NULL,
logo TEXT,
“desc” TEXT,
catelog TEXT NOT NULL,
status TEXT,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE category_orders (
catelog TEXT PRIMARY KEY,
sort_order INTEGER NOT NULL DEFAULT 9999
);

  • 创建 KV 命名空间(配置后台账密)
    • 在左侧菜单找到 存储和数据库 -> KV,点击创建,名称建议填 NAV_AUTH
    • 进入该 KV 空间,在 KV 条目 (KV Entries) 中依次添加两条数据作为你的后台凭证:
      • 第一条:键填入 admin_username,值填入你的自定义账号。
      • 第二条:键填入 admin_password,值填入你的自定义密码。(注:键名必须全小写,一字不差)

2. 部署导航站核心代码

  • 在 Cloudflare 左侧菜单选择 Workers 和 Pages,点击 创建 -> 创建 Worker,给程序起个名字(如 my-nav),点击部署。
  • 部署后点击 编辑代码,清空左侧的默认代码。
  • 回到 拾光集 GitHub 源码库,找到 work_v2.js 文件。复制里面的所有代码,粘贴到 Cloudflare 的编辑器中,点击右上角的 部署,然后返回上一级 Worker 面板。

3. 核心绑定(⚠️ 最容易踩坑的一步)

现在代码跑起来了,但我们需要把步骤 1 创建的资源“绑定”给代码。

**避坑必读:**在 Cloudflare 体系中,“你在后台创建的资源名”和“代码读取的变量名”是两码事。代码里硬编码了特定的变量名,填错会导致站点直接崩溃报 undefined!

在当前 Worker 面板,进入 设置 -> 变量和机密 -> 绑定 (Bindings),严格按照下表添加:

绑定类型变量名称 (代码里的暗号,必须严格大写)右侧资源选择
D1 数据库NAV_DB选择你的 D1 数据库 ( book)
KV 命名空间NAV_AUTH选择你的 KV 空间 ( NAV_AUTH)

(进阶设置:如果你想关闭前台访客提交链接的入口,可在“环境变量”中新增变量 ENABLE_PUBLIC_SUBMISSION,值填 false。)

4. 绑定域名与后台管理

  • 配置自定义域名:在 Worker 面板进入 设置 -> 触发器 -> 自定义域,添加专属域名(例如 nav.yourdomain.com)。
  • 登录后台:浏览器访问 你的域名/admin,输入你在 KV 中配置的账号密码。
  • 开始使用:进入后台后,尽情添加你的 iStoreOS 面板、服务器探针和其他云端服务入口吧!设置好分类和排序后,前台主页会实时极速响应。

结语

至此,一套轻量化、免维护且零服务器支出的个人内容基建就彻底打通了。这种将底层架构全面交给 Serverless 与边缘计算的方案,极大地降低了我们日常运维的心智负担,让我们能够将更多时间专注投入到高价值的“内容沉淀”和矩阵运营本身。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注