microfeed中文文档
microfeed: 一个轻量级的 Cloudflare 自托管 CMS
欢迎使用 microfeed,一个轻量级内容管理系统(CMS),可自托管于 Cloudflare。
你可以轻松发布音频、视频、照片、文档、博客文章和外部链接到你的 feed,并以网页、RSS 和 JSON 形式展示。
适合技术爱好者,无需自建服务器即可拥有自己的 CMS。
microfeed 由 Listen Notes 构建,托管于 Cloudflare 的 Pages、R2、D1 和 Zero Trust。
如有疑问或建议,请通过 support@microfeed.org 联系我们!
📚 目录
⭐️ 工作原理
自 1990 年代以来,Web 的很大一部分都由 Feed 驱动。
人们(和机器人)向 Feed 发布内容,其他人可以订阅该 Feed 获取新内容。
microfeed 让个人可以轻松在 Cloudflare 上自托管自己的 Feed,包括但不限于:
- 音频播客 Feed
- 博客文章 Feed
- 类 Instagram 的图片 Feed(如 llamacorn.listennotes.com、brand-assets.listennotes.com)
- 类 YouTube 的视频 Feed
- 带自定义链接的个人网站(如 wenbin.org)
- 外部新闻文章链接的内容聚合 Feed
- 营销网站(如 microfeed.org)
- 带 GUI 管理后台和公开 JSON Feed 的 Headless CMS(如 microfeed.org/json 及其 OpenAPI 规范 YAML 和 HTML)
- 域名出售列表(如 ListenHost.com)
- 整本书的网站(如 The Art of War)
- 更新日志网站(如 changelog.listennotes.com)
- ...
microfeed 使用 Cloudflare Pages 托管和运行代码,
R2 存储和分发媒体文件,
D1 存储元数据,
Zero Trust 提供后台登录保护。
Cloudflare 提供非常慷慨的免费额度,适合个人或小型企业使用。
你只需支付域名费用,microfeed 的托管几乎是免费的。
你可以发布音频、视频、照片、文档、博客文章和外部链接到可定制的网站、RSS Feed 和 JSON Feed。
示例:
- 网页 Feed: https://llamacorn.listennotes.com/
- RSS Feed: https://llamacorn.listennotes.com/rss/
- JSON Feed: https://llamacorn.listennotes.com/json/
microfeed 提供简单强大的管理后台,方便添加内容、上传媒体、定制网页样式。如果你用过 WordPress,会觉得很熟悉。
返回 📚目录
🚀 安装
大致流程如下:
- Fork microfeed 仓库 到你的 GitHub 账号。
- 获取 Cloudflare API Token,并在你的 fork 仓库添加为 secrets。
- 使用预设的 GitHub Action,将代码部署到 Cloudflare Pages(用第2步的 secrets)。
- 在 Cloudflare 控制台设置自定义域名和安全配置。
- 完成,开始发布!
我们理解不是所有人都喜欢看文档,所以尽量让 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_ID 为 fff88980eeeeedcc3ffffd4f555f4999。
CLOUDFLARE_API_TOKEN
在 https://dash.cloudflare.com/profile/api-tokens 创建 API Token。
自定义 Token:
需要 Cloudflare Pages 和 D1 的编辑权限:
复制 API Token:
R2_ACCESS_KEY_ID 和 R2_SECRET_ACCESS_KEY
进入 R2 控制台,如需先绑定信用卡,免费额度很高(10GB 存储 + 1000万次读取/月 + 100万次写入/月)。
创建 R2 API Token:
选择"Admin Read & Write"权限:
复制 Access Key ID 到 R2_ACCESS_KEY_ID,Secret Access Key 到 R2_SECRET_ACCESS_KEY:
CLOUDFLARE_PROJECT_NAME
项目名只能包含 [a-z]、[A-Z]、[0-9] 和 -
建议用你的自定义域名,把点(.)换成短横线(-)
如 photos.mycustomdomain.com,则项目名为 photos-mycustomdomain-com
注意:不要用下划线、空格或其他特殊字符,否则 Cloudflare Pages 不允许创建项目。
共需添加 5 个 secrets:
返回 📚目录
步骤3. 运行 GitHub Action 部署代码
进入 Actions -> Deploy to Cloudflare Pages 并运行 Workflow。
看到绿色勾即可,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 保护)。
首次进入后台会有设置流程:
返回 📚目录
步骤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 仓库代码:
然后再次运行 Actions -> Deploy to Cloudflare Pages 部署新代码。
返回 📚目录💻 常见问题
如何统计播客/视频/图片下载量?
可用"追踪链接"功能,设置第三方统计链接(如 OP3、Podtrac)。
在后台"设置 / 追踪链接"添加第三方统计链接:
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:client 和 yarn dev:edge。
yarn dev:client 启动 webpack DevServer 用于前端代码,
yarn dev:edge 启动 Wrangler 用于 Pages(edge)代码。