microfeed中文文档

microfeed中文文档

microfeed: 一个轻量级的 Cloudflare 自托管 CMS

microfeed: 一个轻量级的 Cloudflare 自托管 CMS

欢迎使用 microfeed,一个轻量级内容管理系统(CMS),可自托管于 Cloudflare。

你可以轻松发布音频、视频、照片、文档、博客文章和外部链接到你的 feed,并以网页、RSS 和 JSON 形式展示。

适合技术爱好者,无需自建服务器即可拥有自己的 CMS。

microfeed 由 Listen Notes 构建,托管于 Cloudflare 的 PagesR2D1Zero Trust

如有疑问或建议,请通过 support@microfeed.org 联系我们!

部署到 Cloudflare Pages CI 邮件联系我们 稳定性-alpha

⭐️ 工作原理

自 1990 年代以来,Web 的很大一部分都由 Feed 驱动。

人们(和机器人)向 Feed 发布内容,其他人可以订阅该 Feed 获取新内容。

microfeed 让个人可以轻松在 Cloudflare 上自托管自己的 Feed,包括但不限于:

microfeed 使用 Cloudflare Pages 托管和运行代码,

R2 存储和分发媒体文件,

D1 存储元数据,

Zero Trust 提供后台登录保护。

Cloudflare 提供非常慷慨的免费额度,适合个人或小型企业使用。

你只需支付域名费用,microfeed 的托管几乎是免费的。

你可以发布音频、视频、照片、文档、博客文章和外部链接到可定制的网站、RSS Feed 和 JSON Feed

示例:

microfeed 提供简单强大的管理后台,方便添加内容、上传媒体、定制网页样式。如果你用过 WordPress,会觉得很熟悉。

microfeed管理后台截图 返回 📚目录

🚀 安装

大致流程如下:

  1. Fork microfeed 仓库 到你的 GitHub 账号。
  2. 获取 Cloudflare API Token,并在你的 fork 仓库添加为 secrets。
  3. 使用预设的 GitHub Action,将代码部署到 Cloudflare Pages(用第2步的 secrets)。
  4. 在 Cloudflare 控制台设置自定义域名和安全配置。
  5. 完成,开始发布!

我们理解不是所有人都喜欢看文档,所以尽量让 microfeed 的上手流程简单。

如果 Cloudflare 未来支持"用 Cloudflare 登录"OAuth,将实现一键部署。

目前已尽量让流程适合技术用户。

前置条件

返回目录

步骤1. Fork microfeed 仓库到你的 GitHub

点击 https://github.com/microfeed/microfeed/fork Fork 仓库。

你可以后续修改代码,但一般无需改动,只需保持同步即可。

返回 📚目录

步骤2. 在你的 fork 仓库添加 secrets

进入 fork 仓库的 Settings -> Secrets -> Actions,创建 5 个 secrets(点击可展开详情)。

有了这些 secrets,就能用 GitHub Actions 部署 microfeed 到 Cloudflare Pages。

CLOUDFLARE_ACCOUNT_ID

登录 Cloudflare 后,控制台 URL 如:

https://dash.cloudflare.com/[你的-cloudflare-account-id]

最后一段就是你的 Cloudflare 账号 ID。

例如:

https://dash.cloudflare.com/fff88980eeeeedcc3ffffd4f555f4999

CLOUDFLARE_ACCOUNT_IDfff88980eeeeedcc3ffffd4f555f4999

Cloudflare账号ID截图
CLOUDFLARE_API_TOKEN

https://dash.cloudflare.com/profile/api-tokens 创建 API Token。

自定义 Token:

创建API Token截图

需要 Cloudflare Pages 和 D1 的编辑权限:

API Token权限设置截图

复制 API Token:

复制API Token截图
R2_ACCESS_KEY_IDR2_SECRET_ACCESS_KEY

进入 R2 控制台,如需先绑定信用卡,免费额度很高(10GB 存储 + 1000万次读取/月 + 100万次写入/月)。

创建 R2 API Token:

创建R2 API Token截图

选择"Admin Read & Write"权限:

R2权限选择截图

复制 Access Key ID 到 R2_ACCESS_KEY_ID,Secret Access Key 到 R2_SECRET_ACCESS_KEY:

复制R2密钥截图
CLOUDFLARE_PROJECT_NAME

项目名只能包含 [a-z]、[A-Z]、[0-9] 和 -

建议用你的自定义域名,把点(.)换成短横线(-)

如 photos.mycustomdomain.com,则项目名为 photos-mycustomdomain-com

注意:不要用下划线、空格或其他特殊字符,否则 Cloudflare Pages 不允许创建项目。

共需添加 5 个 secrets:

GitHub Secrets设置截图 返回 📚目录

步骤3. 运行 GitHub Action 部署代码

进入 Actions -> Deploy to Cloudflare Pages 并运行 Workflow。

GitHub Actions运行截图

看到绿色勾即可,Cloudflare 控制台会出现 Pages 项目:

Cloudflare Pages项目截图

可通过 ${CLOUDFLARE_PROJECT_NAME}.pages.dev 访问,如 https://microfeed-org.pages.dev/

返回 📚目录

步骤4. 在 Cloudflare 控制台点击几下

管理 microfeed 实例时,使用后台地址 ${CLOUDFLARE_PROJECT_NAME}.pages.dev/admin,如 https://microfeed-org.pages.dev/admin/(后台需用 Cloudflare Zero Trust 保护)。

首次进入后台会有设置流程:

microfeed后台设置截图 返回 📚目录

步骤5. 完成,开始发布

设置完成后即可使用 microfeed 实例。

可在后台添加、更新、删除内容。

也可在"设置 / 自定义代码"处编辑 HTML 和 CSS,定制网站外观:

自定义代码设置截图

HTML 使用 mustache.js 模板语言,可访问 Feed Json 或 Item Json 的变量。

microfeed.org 首页(Feed Web)用 microfeed.org/json/ 的变量,

某条内容页(Item Web)用 ${item_url}/json 的变量。

通过 Feed Json 和 Item Json,microfeed 可作为 Headless CMS,开发自己的客户端展示内容。

返回 📚目录

Bonus. 升级到最新版 microfeed

我们会持续更新 microfeed,添加新功能和修复 bug。

你可以同步 fork 仓库代码:

同步fork仓库截图

然后再次运行 Actions -> Deploy to Cloudflare Pages 部署新代码。

返回 📚目录

💻 常见问题

如何统计播客/视频/图片下载量?

可用"追踪链接"功能,设置第三方统计链接(如 OP3Podtrac)。

在后台"设置 / 追踪链接"添加第三方统计链接:

追踪链接设置截图

microfeed 会自动将这些链接加到媒体文件 URL 前,实现统计。

这是播客行业的常见做法,有助于了解内容表现和受众情况。

为什么选 Cloudflare?信任商业公司安全吗?

很多个人和组织都信任并使用 Cloudflare 服务,我们(Listen Notes)也用了很多年。

在 Cloudflare 一站式管理 DNS、缓存、防火墙、代码、CDN、登录等非常方便。

microfeed 目前处于开放 alpha 阶段,首选支持 Cloudflare。

未来可能支持其他 serverless 平台,方便迁移。

如果 Cloudflare 禁用我的 microfeed 实例怎么办?

请仔细阅读 Cloudflare 服务条款,违规可能被禁用实例。

建议定期备份 Cloudflare 数据,方便恢复或迁移。

建议用自定义域名,便于迁移和控制内容。

为什么要用 microfeed?

如果你已在用 Cloudflare且满意,microfeed 是不错选择。

不想自己管服务器,microfeed 利用 Cloudflare 基础设施和安全特性。

不想付服务器费,Cloudflare 免费额度很高。

想尝试新方案,microfeed值得一试。建议评估是否适合你的需求。

如何下载/备份 microfeed/Cloudflare 数据?

microfeed 数据存于 Cloudflare D1 和 R2。备份需下载两部分:

  • D1 的 sqlite 数据库(所有元数据)
  • R2 的媒体文件(音频、图片、视频等)

如何下载 D1 的 sqlite 数据库?

用命令行工具 wrangler 查找并下载 sqlite 备份:

https://developers.cloudflare.com/workers/wrangler/commands/#d1

如何下载 R2 媒体文件?

截至 2023年2月,Cloudflare 尚无批量下载 R2 bucket 工具。

可用 S3 兼容 API 写脚本批量下载:

https://developers.cloudflare.com/r2/data-access/s3-api/api/

返回 📚目录

💪 贡献

欢迎为 microfeed 贡献!

如有新功能建议或发现 bug,请提交 issue

如要提交修复或新功能,请创建 pull request 并详细描述你的更改。

本地运行 microfeed

前置条件:node / npm、yarn、wrangler

前置条件 node / npm、yarn、wrangler

1.安装 Node.js 和 npm

Node.js 是运行 JavaScript 的环境,npm 是其默认的包管理器,许多工具都依赖它。

下载安装:访问 Node.js 官网,推荐下载 LTS(长期支持)版本,通常更稳定。安装程序通常会自动将 Node.js 和 npm 添加到系统环境变量(PATH)中(安装时注意勾选相关选项)。

验证安装:打开终端(Windows 上是 Command Prompt 或 PowerShell,macOS/Linux 上是 Terminal),运行以下命令检查是否安装成功:

node -v
npm -v

如果这两条命令都能返回版本号(例如 v20.17.0 和 10.8.2),说明安装成功。

2. 安装 Yarn

Yarn 是一个快速、可靠、安全的 JavaScript 依赖管理工具。

通过 npm 全局安装 Yarn:

在终端中运行:

npm install -g yarn

验证安装

yarn --version

成功安装会显示 Yarn 的版本号。

3. 安装 Wrangler

Wrangler 是 Cloudflare 提供的命令行工具,用于本地开发、测试和部署 Cloudflare Workers 和 Pages 项目,microfeed 的本地边缘(edge)代码运行依赖它。

通过 npm 全局安装 Wrangler:

在终端中运行:

npm install -g wrangler

验证安装

wrangler --version

成功安装会显示 Wrangler 的版本号。

本地运行

首先,在 microfeed 根目录(与本 README.md 同级)创建 .vars.toml 文件,写入 5 个 secrets(与步骤2类似):

# .vars.toml
CLOUDFLARE_PROJECT_NAME = "your-project-org"  # 你的项目名称
CLOUDFLARE_ACCOUNT_ID = "your_account_id_here"  # 你的Cloudflare Account ID
CLOUDFLARE_API_TOKEN = 'your_api_token_here'   # 你创建的API Token
R2_ACCESS_KEY_ID = "your_r2_access_key_id_here" # 你创建的R2 Access Key ID
R2_SECRET_ACCESS_KEY = "your_r2_secret_access_key_here" # 你创建的R2 Secret Access Key
R2_PUBLIC_BUCKET = "your-r2-bucket-name"  # 你在R2中创建的存储桶名称

然后运行本地开发服务器:

yarn dev

可通过 http://127.0.0.1:8788/ 访问本地 microfeed 实例。

yarn dev 如何工作?

本质上同时运行两个进程:yarn dev:clientyarn dev:edge

yarn dev:client 启动 webpack DevServer 用于前端代码,

yarn dev:edge 启动 Wrangler 用于 Pages(edge)代码。

返回 📚目录