Microfeed 是一个轻量级的 CMS,可以自托管在 Cloudflare 上,主要利用 Cloudflare 的多种服务,包括 Cloudflare Pages (用于前端部署)、Cloudflare R2 (用于媒体文件存储)、Cloudflare D1 (用于数据存储) 和 Cloudflare Zero Trust (用于后台管理面板的安全访问)。
以下是部署 Microfeed 到 Cloudflare 的详细步骤:
核心原理:
Microfeed 的部署是基于 GitOps 的理念,通过将代码托管在 GitHub/GitLab,并利用 Cloudflare Pages 的持续集成/持续部署 (CI/CD) 功能,实现自动化部署。
部署步骤:
- 准备工作
-
Cloudflare 账号: 确保你有一个 Cloudflare 账号。如果没有,请注册一个。
-
GitHub/GitLab 账号: Microfeed 的部署依赖于 Git 仓库,所以你需要一个 GitHub 或 GitLab 账号。
-
域名(可选但推荐): 虽然你可以使用 Cloudflare Pages 提供的 .pages.dev 域名,但为了更好的品牌和体验,推荐准备一个自定义域名并将其 DNS 托管在 Cloudflare。
- Fork Microfeed 仓库
-
访问 Microfeed 的 GitHub 仓库:https://github.com/microfeed/microfeed
-
点击右上角的 "Fork" 按钮,将仓库 Fork 到你自己的 GitHub 账号下。
- 创建 Cloudflare Pages 项目
-
登录你的 Cloudflare 仪表盘。
-
导航到 Pages 服务。
-
点击 "创建项目" (Create a project)。
-
选择 "连接 Git" (Connect to Git)。
-
授权 GitHub/GitLab: 如果你还没有连接,Cloudflare 会引导你授权访问你的 GitHub/GitLab 账号。
-
选择你的 Fork 仓库: 在仓库列表中找到你刚刚 Fork 的 microfeed 仓库,然后点击 "开始设置" (Begin setup)。
- 配置构建和部署设置
在 Cloudflare Pages 的项目设置页面,通常不需要做太多修改,因为 Microfeed 已经针对 Cloudflare Pages 进行了优化。
-
构建命令 (Build command): 通常会自动识别,例如 npm run build 或 yarn build。
-
输出目录 (Output directory): 通常会自动识别,例如 dist 或 build。
-
Root 目录 (Root directory): 通常留空,表示仓库根目录。
确认这些设置无误后,点击 "部署站点" (Deploy site)。
Cloudflare Pages 会自动拉取你的 Fork 仓库代码,并执行构建和部署过程。第一次部署可能需要几分钟。
- 设置 Cloudflare R2 (媒体存储)
Microfeed 使用 R2 来存储图片、音频、视频等媒体文件。
-
在 Cloudflare 仪表盘中,导航到 R2 服务。
-
点击 "创建存储桶" (Create bucket)。
-
给你的存储桶起一个名字(例如 microfeed-media)。
-
重要: 创建后,你需要为这个 R2 存储桶配置 公共访问策略,使其可以被 Microfeed 访问并提供给用户。这通常涉及设置一个 公共访问策略 或 自定义域。
- 设置 Cloudflare D1 (数据存储)
Microfeed 使用 D1 来存储 CMS 的元数据(例如文章内容、分类等)。
-
在 Cloudflare 仪表盘中,导航到 D1 服务。
-
点击 "创建数据库" (Create database)。
-
给你的数据库起一个名字(例如 microfeed-db)。
- 配置环境变量和 API Tokens
为了让你的 Microfeed 实例能够连接到 R2 和 D1,你需要配置环境变量。这些通常通过 Cloudflare Pages 的项目设置来完成。
-
在你的 Cloudflare Pages 项目设置中,找到 "环境变量" (Environment variables) 或 "设置" (Settings) -> "环境变量"。
-
你需要添加以下环境变量,它们通常包含你的 R2 存储桶的访问凭证和 D1 的数据库 ID。这些凭证应该在你的 Cloudflare 仪表盘中生成。
-
CF_ACCOUNT_ID: 你的 Cloudflare 账号 ID。
-
R2_ACCESS_KEY_ID: R2 S3 兼容 API 的 Access Key ID。
-
R2_SECRET_ACCESS_KEY: R2 S3 兼容 API 的 Secret Access Key。
-
D1_DATABASE_ID: 你的 D1 数据库的 ID。
如何获取这些值:
-
CF_ACCOUNT_ID:在 Cloudflare 仪表盘的任何页面右侧边栏可以找到。
-
R2_ACCESS_KEY_ID 和 R2_SECRET_ACCESS_KEY:在 R2 存储桶设置中,选择 "管理 API 凭证" (Manage API credentials) 来生成。请确保这些凭证具有足够的权限(例如读写你的 R2 存储桶)。
-
D1_DATABASE_ID:在 D1 数据库页面,点击你的数据库名称,可以在 URL 或概览页面找到其 ID。
-
-
GitHub Actions Secrets (可选,但推荐用于生产): 为了更安全地管理这些敏感信息,你可以将这些变量作为 GitHub/GitLab 仓库的 Secrets 添加。这样,在 CI/CD 过程中,Cloudflare Pages 会自动读取这些 Secret 作为环境变量。
- 配置 Cloudflare Zero Trust (管理面板访问安全)
Microfeed 通常会有一个管理面板,用于创建和管理内容。为了保护这个面板,可以使用 Cloudflare Zero Trust。
-
在 Cloudflare 仪表盘中,导航到 Zero Trust (Access)。
-
创建一个新的 Application。
-
选择 Self-hosted。
-
配置规则,只允许特定的电子邮件地址、IP 地址或身份提供商 (如 GitHub、Google) 访问你的 Microfeed 管理面板的 URL。这通常涉及到配置应用程序的 URL (你的 Microfeed 域名/Pages 域名加上管理面板路径,例如 /admin)。
- 绑定自定义域名 (可选)
-
在你的 Cloudflare Pages 项目设置中,导航到 "自定义域" (Custom domains)。
-
点击 "设置自定义域" (Set up a custom domain)。
-
输入你的域名,并按照指示创建相应的 DNS 记录 (通常是一个 CNAME 记录)。
- 初始设置和内容管理
-
一旦部署成功并配置了所有环境变量,访问你的 Microfeed 站点 URL。
-
首次访问管理面板(通常是 /admin 路径),你可能需要进行一些初始设置,例如创建第一个管理员账户。
-
然后你就可以开始在 Microfeed 中创建和发布内容了!
重要提示:
-
文档优先: 最准确和最新的部署说明总是在 Microfeed 的官方 GitHub 仓库的 README 或专门的部署文档中。请务必参考它们。
-
免费额度: Cloudflare Pages、R2 和 D1 都有慷慨的免费额度,对于个人项目和小型网站来说通常足够了。
-
故障排除: 如果遇到问题,请检查 Cloudflare Pages 的部署日志,它们会提供详细的构建和部署信息,帮助你定位问题。
通过这些步骤,你就可以成功地将 Microfeed 部署到 Cloudflare 上,并享受其轻量级和高效的自托管 CMS 体验。