随着云端折腾经验的不断丰富以及长线运营计划的推进,建立一个长期、可扩展的底层基础设施来承载内容与软件工具矩阵,变得尤为重要。传统的 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:
- 点击右上角头像进入 我的个人资料 (My Profile) -> API 令牌 (API Tokens) -> 创建令牌 (Create Token)。
- 选择
编辑 Cloudflare Workers模板。 - 划重点:修改默认权限!
- 删除不需要的权限(如 KV 存储、路由、账户设置等)。
- 保留以下三项权限:Workers 脚本 (Edit)、R2 存储桶 (Edit)、Cloudflare Pages 项目及其配置 (Edit)。
- 手动新增一项:点击
添加更多,搜索并添加 D1 (Edit) 权限。
- 在底部“账户资源”区域,选择
包括->所有账户。 - 设定好令牌到期时间(例如一个月或更长),点击创建并妥善保存这串 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(注意:首次必须用账号密码登录以获取管理员权限):
- 在 GitHub 右上角头像菜单进入 Settings -> 最底部的 Developer settings -> OAuth Apps -> New OAuth App。
- 填写名称,
Homepage URL填入你的博客域名(如https://blog.yourdomain.com)。 Authorization callback URL填入:https://你的域名/api/auth/callback。- 注册后,复制
Client ID,并生成一个Client Secret复制下来。 - 回到 Rin 仓库的 Secrets 设置中,新增两个 Secret:
GH_CLIENT_ID和GH_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)。
- 登录 Cloudflare,选择 存储和数据库 -> D1 SQL 数据库,点击创建。名称建议填
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,值填入你的自定义密码。(注:键名必须全小写,一字不差)
- 第一条:键填入
- 在左侧菜单找到 存储和数据库 -> KV,点击创建,名称建议填
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 与边缘计算的方案,极大地降低了我们日常运维的心智负担,让我们能够将更多时间专注投入到高价值的“内容沉淀”和矩阵运营本身。