10 KiB
Mac Mini WebDAV 服务配置指南
目的
在 Mac Mini 上通过原生 Apache 配置 WebDAV 服务,用于共享 Obsidian 笔记。
一、Mac Mini 本地配置
步骤 1: 启用 WebDAV 模块
编辑 Apache 配置文件,启用 DAV 模块:
sudo nano /etc/apache2/httpd.conf
找到以下行并取消注释(去掉 #):
LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
LoadModule dav_lock_module libexec/apache2/mod_dav_lock_module
步骤 2: 创建 DavLockDB 目录
WebDAV 需要一个目录来存储锁文件:
sudo mkdir -p /var/run/dav
sudo chown _www:_www /var/run/dav
步骤 3: 创建 WebDAV 目录并链接 Obsidian
sudo mkdir -p /Library/WebServer/Documents/Obsidian
sudo ln -s /Users/weishen/Obsidian/shenwei /Library/WebServer/Documents/Obsidian/shenwei
步骤 4: 配置 WebDAV
创建配置文件:
sudo nano /etc/apache2/other/webdav.conf
配置内容(完整版):
DavLockDB /var/run/dav/DavLock
<IfModule mod_dav.c>
DAVMinTimeout 240
</IfModule>
Alias /webdav "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
DAV On
DAVDepthInfinity off
Header set Allow "OPTIONS, GET, HEAD, POST, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK"
AuthType Basic
AuthName "WebDAV"
AuthUserFile /etc/apache2/webdav.users
Require valid-user
</Directory>
步骤 5: 创建访问用户
sudo htpasswd -c /etc/apache2/webdav.users webdav
输入密码: macmini_dav
注意: 用户名和密码需要与后续 Obsidian 客户端配置一致
步骤 6: 设置目录权限(重要!)
WebDAV 需要 Apache 运行用户 (_www) 对 Obsidian 目录有读写权限:
# 修复用户目录权限
sudo chmod o+x /Users/weishen
sudo chmod -R o+rx /Users/weishen/Obsidian
# 将 Obsidian 目录所有权改为 _www
sudo chown -R _www:_www /Library/WebServer/Documents/Obsidian
sudo chown -R _www:_www /Users/weishen/Obsidian/shenwei
sudo chmod -R 775 /Users/weishen/Obsidian/shenwei
步骤 7: 启动 Apache 服务
sudo apachectl start
二、FRP 端口映射配置
在 Mac Mini 上编辑 FRP 配置文件:
sudo nano /opt/frp/frp_0.65.0_darwin_arm64/frpc.toml
添加以下配置(WebDAV 使用 80 端口):
[[proxies]]
name = "macmini-webdav"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 60080
重要: 如果 Mac Mini 上设置了代理(科学上网),需要在 FRPC 启动时添加
no_proxy环境变量:export no_proxy="192.227.222.142,127.0.0.1,localhost" cd /opt/frp/frp_0.65.0_darwin_arm64 && ./frpc -c frpc.toml
三、VPS1 Caddy 反向代理配置
在 VPS1 上编辑 Caddyfile:
sudo nano /etc/caddy/Caddyfile
添加以下配置:
# WebDAV 外网访问
macwebdav.ishenwei.online {
reverse_proxy localhost:60080
}
重载 Caddy 配置:
sudo systemctl reload caddy
注意: 需要先在 DNS 服务商处添加 A 记录:
- 主机记录:
macwebdav- 记录类型:
A- 记录值:
192.227.222.142(VPS1 IP)
四、防火墙配置
VPS1 防火墙(如果使用 UFW)
sudo ufw allow 60080/tcp
五、常用命令
Apache 命令
| 命令 | 功能 |
|---|---|
sudo apachectl start |
启动 Apache |
sudo apachectl stop |
停止 Apache |
sudo apachectl restart |
重启 Apache |
sudo apachectl -t |
检查配置语法 |
sudo apachectl -M | grep dav |
确认 WebDAV 模块已加载 |
FRP 命令
# 重启 FRPC(Mac Mini 上)
# in tmux
tmux attach -t frpc
# 停止现有进程 (Ctrl+C in tmux)
# 重启(注意添加 no_proxy)
export no_proxy="192.227.222.142,127.0.0.1,localhost" && cd /opt/frp/frp_0.65.0_darwin_arm64 && ./frpc -c frpc.toml
Caddy 命令(VPS1)
sudo systemctl reload caddy
六、Obsidian 客户端连接配置(最终验证版本)
配置参数
| 配置项 | 值 |
|---|---|
| 服务器地址 | https://macwebdav.ishenwei.online/webdav/Obsidian/ |
| 用户名 | webdav |
| 密码 | macmini_dav |
| 鉴权类型 | basic |
| Depth header | 只支持 depth='1' |
配置步骤
- 打开 Obsidian
- 安装 Remotely Save 插件(或其他 WebDAV 同步插件)
- 选择远程服务为 WebDAV
- 填写上方配置参数
- 点击 检查 按钮验证连接
- 开始同步
七、内网访问
- URL:
http://192.168.3.189/webdav/ - 用户名:
webdav - 密码:
macmini_dav
八、注意事项
-
安全提示:
- Basic 认证密码明文传输,建议仅在内网使用
- 外网访问建议配合 HTTPS(Caddy 自动提供 Let's Encrypt)
-
端口规划:
- Apache: 80
- FRP 映射: 60080
-
防火墙:
- Mac 防火墙需允许 80 端口入站
- VPS 防火墙需开放 FRP 映射的端口
-
开机自启:
- Apache 开机自动启动(MacOS 默认行为)
- FRPC 需配置开机自启(tmux 或 launchd)
-
代理问题:
- 如果 Mac Mini 使用科学上网代理,FRPC 需要设置
no_proxy环境变量 - 参考上面的 FRP 命令部分
- 如果 Mac Mini 使用科学上网代理,FRPC 需要设置
九、故障排除
问题:500 Internal Server Error
原因: DavLockDB 目录权限不足
解决:
sudo chown -R _www:_www /var/run/dav
问题:403 Forbidden
原因: Obsidian 目录权限不足,Apache 无法写入
解决:
sudo chown -R _www:_www /Library/WebServer/Documents/Obsidian
sudo chown -R _www:_www /Users/weishen/Obsidian/shenwei
sudo chmod -R 775 /Users/weishen/Obsidian/shenwei
问题:无法解析域名
原因: DNS 记录未生效
解决:
- 确认 DNS A 记录已添加
- 等待 5-30 分钟 DNS 传播
- 本地刷新 DNS 缓存:
sudo dscacheutil -flushcache
问题:FRPC 连接超时
原因: Mac Mini 代理设置干扰 FRPC 连接
解决:
export no_proxy="192.227.222.142,127.0.0.1,localhost"
检查 Apache 状态
sudo apachectl status
查看日志
sudo tail -f /var/log/apache2/error_log
确认 WebDAV 模块加载
sudo apachectl -M | grep -E "dav|webdav"
测试本地访问
curl -u webdav:macmini_dav http://127.0.0.1/webdav/
测试 FRP 端口连通性(VPS1)
curl -u webdav:macmini_dav http://localhost:60080/webdav/
十、测试步骤
阶段 1: Apache 本地测试(Mac Mini)
1.1 检查 Apache 状态
sudo apachectl status
预期输出: Apache 运行中 (running)
1.2 确认 WebDAV 模块已加载
sudo apachectl -M | grep -E "dav|webdav"
预期输出:
dav_module (shared)dav_fs_module (shared)dav_lock_module (shared)
1.3 测试本地认证访问
curl -u webdav:macmini_dav -I http://127.0.0.1/webdav/
预期输出: HTTP/1.1 200 OK
1.4 列出 WebDAV 目录内容
curl -u webdav:macmini_dav -X PROPFIND -H "Depth: 1" http://127.0.0.1/webdav/Obsidian/shenwei/
预期输出: XML 格式的目录列表
阶段 2: FRP 连通性测试
2.1 检查 FRPC 状态(Mac Mini)
tmux capture-pane -t frpc -p | tail -10
预期输出: 看到 [macmini-webdav] start proxy success
2.2 测试 VPS1 端口监听
# 在 VPS1 上执行
sudo ss -tlnp | grep 60080
预期输出: *:60080 LISTEN
2.3 测试内网通过 FRP 访问(从 VPS1 测试)
# 在 VPS1 上执行
curl -u webdav:macmini_dav -I http://localhost:60080/webdav/
预期输出: HTTP/1.1 200 OK
阶段 3: Caddy 反向代理测试
3.1 检查 DNS 解析
dig +short macwebdav.ishenwei.online
预期输出: 192.227.222.142
3.2 测试 HTTPS 访问
curl -k -u webdav:macmini_dav -I https://macwebdav.ishenwei.online/webdav/
预期输出: HTTP/1.1 200 OK
阶段 4: 完整链路测试清单
| 序号 | 测试项 | 测试命令/方法 | 预期结果 |
|---|---|---|---|
| 1 | Apache 运行中 | sudo apachectl status |
running |
| 2 | WebDAV 模块已加载 | apachectl -M | grep dav |
dav_module |
| 3 | 本地认证访问 | curl -u webdav:macmini_dav http://127.0.0.1/webdav/ |
200 OK |
| 4 | FRPC 运行正常 | 查看 tmux 日志 | proxy success |
| 5 | VPS1 端口监听 | ss -tlnp | grep 60080 |
LISTEN |
| 6 | 外网 HTTPS 访问 | curl -k -u webdav:macmini_dav https://macwebdav.ishenwei.online/ |
200 OK |
| 7 | Obsidian 连接 | 客户端测试 | 同步成功 |
十一、配置汇总表
| 项目 | 值 |
|---|---|
| 内网 URL | http://192.168.3.189/webdav/ |
| 外网域名 | https://macwebdav.ishenwei.online |
| Obsidian Remotely Save 最终配置路径 | https://macwebdav.ishenwei.online/webdav/Obsidian/ |
| FRP 本地端口 | 80 |
| FRP 远程端口 | 60080 |
| WebDAV 用户 | webdav |
| WebDAV 密码 | macmini_dav |
十二、关键修正记录
本配置在测试过程中发现并修复了以下问题:
- WebDAV 模块未启用: 需要在
httpd.conf中取消注释 DAV 相关模块 - DavLockDB 权限问题: 需要创建目录并设置
_www所有权 - 符号链接权限问题: 符号链接使用绝对路径
/Users/weishen/... - Obsidian 目录权限: 需要将目录所有权改为
_www并设置 775 权限 - FRPC 代理干扰: Mac Mini 的代理设置会干扰 FRPC 连接,需要设置
no_proxy - DNS 解析延迟: 添加 DNS 记录后需要等待传播
文档更新时间: 2026-03-19