背景
我需要一套可以在多个设备之间同步的 Obsidian 笔记系统,同时希望把经过整理的内容发布为公开博客。
最初考虑过自建 VPS、数据库和实时同步服务,但这会引入服务器运维、备份、HTTPS、监控以及迁移成本。对于个人笔记与静态文章发布,最重要的不是拥有一台服务器,而是:数据可恢复、发布路径简单、长期维护负担低。
因此最终选择了一套零 VPS 架构。
技术选型
| 需求 | 方案 | 作用 |
|---|---|---|
| 多端笔记同步 | Obsidian + Remotely Save | 在各设备的 Vault 之间同步文件 |
| 远端对象存储 | Cloudflare R2 | 以 S3 兼容接口保存同步文件 |
| 静态站点生成 | Hugo | 将 Markdown 构建为静态网站 |
| 主题 | PaperMod | 提供搜索、暗色模式、RSS 和良好的阅读基础 |
| 代码托管 | GitHub | 保存博客源文件与变更历史 |
| 自动部署 | Cloudflare Pages | 监测 main 分支并自动构建、发布 |
架构
1┌────────────────────┐ S3-compatible ┌──────────────────────┐
2│ Mac / iPhone / iPad │ ◀────────────────────▶ │ Cloudflare R2 │
3│ Obsidian │ Remotely Save │ 私有同步 Bucket │
4└────────────────────┘ └──────────────────────┘
5
6┌────────────────────┐ git push ┌──────────────────────┐
7│ Hugo 源码 │ ──────────────────────▶ │ GitHub │
8│ Ian688/ian-blog │ │ main 分支 │
9└────────────────────┘ └──────────┬───────────┘
10 │ 自动构建
11 ┌──────────▼───────────┐
12 │ Cloudflare Pages │
13 │ ian-blog-3pc.pages.dev│
14 └──────────────────────┘
两条链路刻意分离:
- 同步链路只处理私有 Vault 文件;
- 发布链路只处理明确放入 Hugo 仓库的公开文章。
这避免了“把整个笔记库一键发布”的隐私风险。
实施要点
1. R2 与 Remotely Save
R2 Bucket 保持私有,并创建仅限该 Bucket、只拥有对象读写权限的 API Token。Obsidian 中使用 Remotely Save 的 S3 兼容配置连接 R2。
首次同步前应完成三件事:
- 对本地 Vault 做完整备份;
- 确认远端 Bucket 是空的;
- 只在一台设备执行首次上传。
确认 R2 中的笔记、附件和必要的 Obsidian 配置都完整后,再让其他设备从空 Vault 接入。
2. 设备特定文件不参与同步
不同设备的窗口布局和缓存不应覆盖彼此。同步时应排除:
1.obsidian/workspace.json
2.obsidian/workspace-mobile.json
3.obsidian/cache/
4.DS_Store
5Thumbs.db
但不应直接排除整个 .obsidian/ 目录,否则主题、插件和大部分配置也会失去同步。
3. 博客自动部署
博客源文件位于独立 Git 仓库。Cloudflare Pages 连接 GitHub 仓库后,构建设置很简单:
1Framework preset: Hugo
2Build command: hugo --minify
3Build output directory: public
4Production branch: main
每次将内容推送至 main,Cloudflare Pages 会重新构建并部署;静态站不需要常驻进程、数据库或 VPS。
发布原则
- 私有 Vault 与公开博客物理分离;
- 只发布经过整理、确认可公开的内容;
- 每篇文章保留准确的标题、摘要、分类、标签和更新时间;
- 发布前检查是否有 Token、密钥、私密链接、真实地址或未经授权的内容;
- 不把 R2 的 Access Key、Secret、Cloudflare Token 提交到 Git 或写进笔记正文。
成本与维护边界
这套方案没有 VPS 固定成本,但并不意味着没有维护责任:
- R2 免费额度、存储容量和请求次数需要按 Cloudflare 当前规则关注;
- 同步不是版本控制,仍应保留本地 Vault 备份;
- 两台设备同时编辑同一篇笔记仍可能造成冲突;
- iOS/iPadOS 不保证应用在后台持续同步,打开 App 后应等待同步完成,离开前再同步一次;
- 博客发布前仍需人工筛选,自动化不能替代隐私检查。
结果
最终得到的是一套轻量而可迁移的个人基础设施:
- 笔记多端同步不依赖自建服务器;
- 博客从 Markdown 到上线只需提交 Git;
- Cloudflare Pages 提供 HTTPS、CDN 和自动构建;
- 如果未来更换存储或托管平台,数据和 Hugo 源文件都可以迁移。