Skip to content

个人云端极速同步方案:Docker + WebDAV + Obsidian

这篇文章将介绍一套适合个人开发者的云端极速同步方案。

Obsidian 是什么

Obsidian 是一款基于本地 Markdown 文件的强大知识库与笔记软件。 它以“双向链接”为核心,能够像大脑神经元一样将离散的知识点连接成网。由于它所有的文件都是普通的 .md 文本格式,不需要依赖任何专有数据库,因此它具备极高的灵活性、极快的启动速度,以及极其繁荣的第三方插件生态(如下文提及用于同步的 Remotely Save 插件)。

为什么要有 Obsidian(本地笔记)

市面上有那么多云笔记应用(Notion、印象笔记等),为什么还要坚持使用 Obsidian 这种“本地优先”的笔记?

  1. 你的数据,永远属于你(数据主权)

    绝大多数云笔记的本质是:你把数据租借给了一家商业公司。如果这家公司改变了收费策略、服务器宕机,甚至公司倒闭,你的知识库就会随之消亡或被锁死。Obsidian没有自己的数据库格式,所有的笔记都是你电脑硬盘里最普通的 .md(Markdown 纯文本)文件。这意味着,哪怕几十年后 Obsidian 这个软件不复存在了,你依然可以用任何一个文本编辑器(甚至是 Windows 自带的记事本)打开并阅读你一生的积累。

  2. 极其脆弱,又极其坚固

    因为它是纯文本,所以它不依赖任何特定的环境,这就是它的“坚固”。 你刚才部署的 WebDAV + 云服务器 就是最好的例子:你不需要向官方交每月的订阅费,凭借你自己的技术,就能用完全属于你的服务器、按你自己的规则,把数据同步到世界的每一个角落。它是完全开源生态的受益者。

  3. 从“树状文件柜”到“网状大脑”(双向链接)

    传统的文件夹系统是“树状”的(比如:工作/2026/项目A/会议记录.docx)。但人类的大脑不是这么工作的,大脑的神经元是呈网状交织的。 Obsidian 引入了强大的 [[双向链接]]。当你在 A 笔记里打出 [[B笔记]] 时,它们之间就产生了一条“神经突触”。随着笔记的增多,你的知识库会长出一张属于你自己的星空图谱

实时关系图谱(Canvas)

下面这个图谱基于原生 Vue canvas 实现,不是静态图片,也不是 iframe,由 GPT-5.3 创作并持续维护。

交互说明

  • 拖拽单个节点:调整节点位置
  • 鼠标滚轮:缩放画布
  • 按住空白区域拖动:平移视图
  • 点击节点:直接跳转到对应文章
  • 双击空白区域:重置视图到初始状态

事前准备

  • 一台云服务器:本文以阿里云 Ubuntu 系统为例(需带有公网 IP)。

  • 基础环境:服务器已安装好 Docker 环境。

  • 本地软件:电脑或手机已安装 Obsidian,并在插件市场安装好 Remotely Save 插件。

  • 规划参数

    • 访问端口8888

    • WebDAV 账号obsidian

    • WebDAV 密码obsidian

    • 数据挂载目录~/OBSIDIAN_WEBDAV

目前的 WebDAV 同步方案,以及我们在这台服务器上将要通过 docker run -p 8888:80 暴露的服务,本质上是建立在纯 HTTP 协议之上的。如果你对 HTTP 比较陌生,可以跳转至本站 HTTP 协议 查阅相关信息。


Docker + WebDAV 配置

受限于国内网络环境,直接从 Docker Hub 拉取镜像可能会遇到 403 Forbiddeni/o timeout。因此,本配置采用国内目前可用的镜像加速代理(如 docker.1panel.live)。

1. 创建数据目录并赋予最高权限

在服务器终端执行以下命令。注意:赋权这一步极其关键,如果不执行 chmod 777,会导致 Docker 容器内的程序没有权限写入文件,Obsidian 同步时会报错。

Bash
# 创建存放笔记的目录
mkdir -p ~/OBSIDIAN_WEBDAV

# 赋予最高读写权限
sudo chmod -R 777 ~/OBSIDIAN_WEBDAV

2. 运行 WebDAV 容器

使用 Bytemark 提供的轻量级 WebDAV 镜像,通过加入国内代理前缀直接拉取并运行:

Bash
docker run -d \
  --name webdav \
  --restart always \
  -p 8888:80 \
  -v ~/OBSIDIAN_WEBDAV:/var/lib/dav \
  -e AUTH_TYPE=Basic \
  -e USERNAME=obsidian \
  -e PASSWORD=obsidian \
  docker.1panel.live/bytemark/webdav:latest

3. 配置防火墙(最容易踩坑的一步)

容器跑起来后,外网默认是无法访问的,必须开启双重防火墙放行 8888 端口。

  • 阿里云安全组(外层网关): 进入阿里云控制台 -> 实例详情 -> 安全组 -> 入方向规则 -> 手动添加:

    • 协议类型自定义 TCP

    • 端口范围8888/8888

    • 授权对象0.0.0.0/0

  • Ubuntu 系统防火墙 (内层,若已开启 UFW): 执行 sudo ufw allow 8888/tcp 放行端口。

测试方法:在浏览器地址栏输入 http://{公网IP}:8888,如果弹出输入用户名和密码的提示框,则说明服务端部署彻底成功。


Obsidian 配置

打开本地 Obsidian 软件,进入第三方插件 Remotely Save 的设置页面:

  1. 选择远程服务:选择 WebDAV

  2. 服务器地址:填写 http://{公网IP}:8888/ (注意:如果是 HTTP,千万别填成 HTTPS,末尾建议带上斜杠)

  3. 用户名obsidian

  4. 密码obsidian

  5. 身份验证:选择 Basic

  6. 点击**“检查”**按钮。如果提示连接成功,即可回到左侧边栏点击“同步”图标,开始你的云端同步之旅!


FAQ

Q1:浏览器访问 http://{公网IP}:8888 一直转圈,提示“当前无法使用此页面”或“连接超时”怎么办? A: 99% 的概率是防火墙没开。请去云服务器后台(如阿里云、腾讯云的安全组)检查是否开放了 TCP 8888 端口。如果在服务器内通过 curl -I http://127.0.0.1:8888 能返回 401 Unauthorized,说明容器正常,完全是外层防火墙拦截的问题。

Q2:Obsidian 能连上服务器,但一点击同步就报错“403 Forbidden”或“无法写入”? A: Linux 的目录权限问题。Docker 映射出来的物理文件夹当前用户没有写权限。请在服务器终端执行 sudo chmod -R 777 ~/OBSIDIAN_WEBDAV 即可解决。

Q3:配置 docker run 时提示 Unable to find image... 然后报错 403 或者 Timeout A: 国内网络无法直连 Docker Hub。请在镜像名 bytemark/webdav:latest 前加上代理站前缀,例如 docker.1panel.live/dockerpull.org/。如果所有代理都失效,可以通过本地下载 .tar 镜像包,使用 scp 传到服务器后 docker load -i 导入。

Q4:目前的 HTTP 协议同步安全吗? A: HTTP 是明文传输,如果你所处的公共 Wi-Fi 环境被监听,账号密码存在泄露风险。如果是非常隐私的笔记,建议后续进阶玩法:部署 Nginx 反向代理 WebDAV 的 8888 端口,并挂载 SSL 证书,启用 HTTPS 加密传输。


相关文章