如果已经有一台本地 NAS,又希望笔记尽量保存在自己手里,可以把 Markdown 笔记放进 NAS 上的 Git Server,再用 Android 和 Windows 客户端同步。这个方案不依赖公共云盘,适合 Obsidian、Markor、VS Code、Typora 这类以本地 Markdown 文件为核心的笔记工具。
它的基本思路很简单:
- NAS 上创建一个 Git 裸仓库,作为笔记的中央仓库。
- Windows 端克隆仓库,用常见编辑器写笔记。
- Android 端克隆同一个仓库,用 Git 客户端拉取和推送。
- 每次换设备前先
pull,写完后再commit和push。
这种方式不是最傻瓜的同步方案,但可控性很好,历史版本也清楚。只要养成提交习惯,就能把笔记、配置、图片附件都放在自己的 NAS 上长期保存。
方案适合谁
这套方案适合下面几类人:
- 家里或办公室已经有 NAS。
- 笔记主要是 Markdown 文件。
- 希望笔记数据保存在本地网络里,而不是只放在商业云盘上。
- 需要 Windows 和 Android 多设备同步。
- 能接受 Git 的基本操作,例如
clone、pull、commit、push。
如果你希望完全自动、完全无感同步,Syncthing、WebDAV 或笔记软件自带同步可能更省心。Git 更适合重视版本历史、可回滚、可迁移和可控性的笔记库。
一、在 NAS 上安装 Git Server
不同 NAS 系统的入口不一样,但目标都一样:让 NAS 提供一个可以通过 SSH 访问的 Git 仓库。
常见做法有三种:
| 方式 | 适合场景 |
|---|---|
| NAS 套件中心安装 Git Server | 群晖、威联通等成品 NAS,想少折腾 |
| Docker 部署 Gitea | 想要 Web 界面、账号管理和更完整的 Git 服务 |
| 直接用 SSH + 裸仓库 | 只给自己用,追求简单稳定 |
如果只是个人笔记同步,SSH + 裸仓库已经够用。假设 NAS 上有一个专门的 Git 用户 git,仓库存放目录为 /volume1/git,可以在 NAS 终端里执行:
|
|
裸仓库不直接编辑文件,只作为同步中心。实际写笔记的目录在 Windows 或 Android 本地。
接着确认 SSH 可以访问 NAS:
|
|
如果 NAS 支持 SSH 公钥登录,建议配置公钥,避免每次推送都输入密码。Windows 和 Android 可以分别生成自己的 SSH key,再把公钥加入 NAS 的 authorized_keys 或 Git Server 用户设置里。
二、Windows 端设置
Windows 端建议安装 Git for Windows,然后选择一个本地目录存放笔记,例如 D:\Notes。
首次克隆:
|
|
进入目录后,可以创建基本结构:
|
|
然后用 Obsidian、VS Code、Typora 或其他 Markdown 编辑器打开 D:\Notes。写完第一批笔记后提交:
|
|
如果仓库默认分支是 master,就把命令里的 main 换成 master。也可以统一改成 main:
|
|
日常使用时,Windows 端可以保持这个节奏:
|
|
三、Android 端设置
Android 端可以使用支持 Git 的客户端来同步本地 Markdown 目录。常见选择包括:
| 工具 | 用法 |
|---|---|
| Termux | 最灵活,接近 Linux 命令行 |
| MGit | 图形界面 Git 客户端,适合不想敲太多命令 |
| GitJournal | 更像笔记应用,适合简单 Markdown 笔记 |
如果选择 Termux,可以先安装 Git 和 OpenSSH:
|
|
生成 SSH key:
|
|
把生成的公钥加入 NAS 的 Git 用户授权里。然后在手机本地选择一个目录克隆仓库:
|
|
如果想让普通 Android 编辑器访问这个目录,可以把仓库放到共享存储目录,例如:
|
|
之后可以用 Markor、Obsidian Android 或其他 Markdown 编辑器打开 /sdcard/Notes。手机端修改后,再回到 Termux 执行:
|
|
Android 上最容易出问题的是权限和路径。Termux 自己的家目录更稳定,但部分编辑器不一定能直接访问;/sdcard 方便编辑器访问,但权限、文件监听和性能可能受系统限制。可以先用少量笔记测试,再决定最终目录。
四、Obsidian 和 Joplin 怎么落地
NAS Git Server 只解决“文件放在哪里、怎么同步”的问题。真正写笔记时,还需要选择笔记应用。这里可以分成 Obsidian 方案和 Joplin 方案。
| 方案 | 同步方式 | 适合人群 | 注意点 |
|---|---|---|---|
| Obsidian + Git | 笔记目录就是 Git 仓库,Windows 和 Android 都拉取同一个仓库 | 想要双链、知识图谱、插件生态和纯 Markdown 文件的人 | Android 上最好先测试 Git 客户端和 Obsidian 对同一目录的访问权限 |
| Joplin + Git | 不建议直接把 Joplin 数据库放进 Git;更适合用 Joplin 自带同步,或定期导出 Markdown 到 Git | 想要网页剪藏、端到端加密、传统笔记本结构的人 | Joplin 的本地数据不是普通 Markdown 文件夹,不适合直接当 Git 笔记库同步 |
Obsidian 方案
Obsidian 最适合这套 NAS Git 同步方案。原因是它的 vault 本质上就是一个普通文件夹,里面是 Markdown 文件、图片附件和配置文件。你可以直接把 D:\Notes 或 /sdcard/Notes 作为 Obsidian vault。
Windows 端流程:
|
|
然后在 Obsidian 里打开 D:\Notes。
Android 端流程:
|
|
然后在 Obsidian Android 里打开 /sdcard/Notes。
Obsidian 方案建议:
- 单人使用时,可以提交
.obsidian/,让主题、插件和部分设置在多设备间同步。 - 如果 Android 和 Windows 插件差异很大,可以只提交笔记正文,不提交
.obsidian/workspace.json这类设备状态文件。 - 图片附件建议统一放到
attachments/,避免散落在各级目录里。 - 每次打开 Obsidian 前先
git pull --rebase,写完后再commit和push。
可以准备一个 .gitignore,减少设备状态文件造成的冲突:
|
|
Joplin 方案
Joplin 的思路和 Obsidian 不一样。它虽然使用 Markdown 语法,但本地数据主要由应用数据库管理,不是一个可以直接拿来 Git 同步的普通 Markdown 文件夹。因此,不建议把 Joplin 的配置目录或数据库目录直接放进 Git 仓库。
如果你更喜欢 Joplin,有两种更稳的做法:
| 做法 | 说明 |
|---|---|
| 使用 Joplin 自带同步 | 通过 WebDAV、Nextcloud、Joplin Cloud、Dropbox、OneDrive 等方式同步,NAS 可以提供 WebDAV 或 Nextcloud |
| 定期导出 Markdown 到 Git | Joplin 作为主力笔记应用,定期把笔记导出为 Markdown,再提交到 NAS Git 仓库做备份 |
如果 NAS 上已经有 WebDAV 或 Nextcloud,Joplin 直接连 NAS 同步会比 Git 更顺滑。它还可以启用端到端加密,适合不想处理 Git 冲突、但又希望数据尽量在自己控制范围内的人。
Joplin + NAS 的推荐路线是:
- NAS 上开启 WebDAV 或部署 Nextcloud。
- Joplin Windows 端配置同一个同步目标。
- Joplin Android 端配置同一个同步目标。
- 需要版本备份时,再定期导出 Markdown 到 Git 仓库。
简单判断:
- 想要“本地 Markdown 文件夹 + 双链 + Git 历史”,选 Obsidian。
- 想要“传统笔记应用 + 网页剪藏 + 加密同步”,选 Joplin。
- 想把 NAS Git Server 作为主同步中心,Obsidian 更合适。
- 想把 NAS 当成私有云同步后端,Joplin 更合适。
五、推荐的笔记目录结构
笔记库不要一开始就设计得太复杂。可以先用下面这种结构:
|
|
含义很直观:
inbox/放临时记录。daily/放日记、日志和每日流水。projects/放项目笔记。resources/放长期资料。attachments/放图片、PDF 和其他附件。
如果使用 Obsidian,可以把这个目录直接作为 vault。.obsidian/ 配置是否提交,要看个人习惯。单人多设备使用时可以提交;如果不同设备插件差异很大,也可以只提交部分配置。
六、避免同步冲突
Git 同步笔记的关键不是命令多复杂,而是习惯要稳定。
建议遵守几条规则:
- 换设备写笔记前,先执行
git pull --rebase。 - 写完一轮后,及时
commit和push。 - 不要在两台设备上同时长时间编辑同一个文件。
- 图片和大附件不要无限塞进 Git 仓库。
- 定期在 NAS 外再备份一份仓库。
如果出现冲突,Git 会标出冲突文件。Markdown 文本冲突通常不难处理,但手机上处理体验比较差,所以尽量在 Windows 上解决冲突。
七、是否需要自动同步
可以给 Windows 写一个简单脚本,把 pull、add、commit、push 串起来。但笔记同步不建议完全无脑自动提交,因为误删、空提交、冲突和大附件都可能被自动推上去。
更稳妥的方式是半自动:
- 打开笔记前先手动拉取。
- 写完后运行一个脚本提交。
- 每次提交信息简单说明这次改了什么。
例如 Windows 可以准备一个 sync-notes.ps1:
|
|
如果没有变更,git commit 会提示 nothing to commit,这不是问题。
八、这个方案的优缺点
| 方面 | 说明 |
|---|---|
| 优点 | 数据在本地 NAS,版本历史清晰,可回滚,可迁移,适合 Markdown |
| 缺点 | 需要理解 Git,冲突需要手动处理,移动端体验不如云同步顺滑 |
| 适合 | 技术用户、本地优先笔记、个人知识库、项目文档 |
| 不适合 | 完全不想接触命令行、需要多人实时协作、频繁同步大附件 |
我的建议
如果只是想在 Android 和 Windows 之间同步普通 Markdown 笔记,可以先从最小方案开始:NAS 上一个裸仓库,Windows 上 Git for Windows,Android 上 Termux 或 MGit。不要一开始就引入复杂权限、自动化脚本和过度分类。
等这套流程跑顺以后,再考虑 Gitea、自动备份、SSH key 分设备管理、附件分仓库、定时任务等扩展。笔记系统最重要的是长期稳定可用,而不是第一天就把所有功能堆满。
一句话:NAS Git Server 适合把 Markdown 笔记做成本地优先、可追溯、可迁移的个人资料库;它不如云同步省心,但控制权更清楚。