Files
nexus/#recycle/knowlegebase/macmini-webdav-setup.md
2026-03-23 20:57:45 +08:00

10 KiB
Raw Blame History

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 命令

# 重启 FRPCMac 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'

配置步骤

  1. 打开 Obsidian
  2. 安装 Remotely Save 插件(或其他 WebDAV 同步插件)
  3. 选择远程服务为 WebDAV
  4. 填写上方配置参数
  5. 点击 检查 按钮验证连接
  6. 开始同步

七、内网访问

  • URL: http://192.168.3.189/webdav/
  • 用户名: webdav
  • 密码: macmini_dav

八、注意事项

  1. 安全提示:

    • Basic 认证密码明文传输,建议仅在内网使用
    • 外网访问建议配合 HTTPSCaddy 自动提供 Let's Encrypt
  2. 端口规划:

    • Apache: 80
    • FRP 映射: 60080
  3. 防火墙:

    • Mac 防火墙需允许 80 端口入站
    • VPS 防火墙需开放 FRP 映射的端口
  4. 开机自启:

    • Apache 开机自动启动MacOS 默认行为)
    • FRPC 需配置开机自启tmux 或 launchd
  5. 代理问题:

    • 如果 Mac Mini 使用科学上网代理FRPC 需要设置 no_proxy 环境变量
    • 参考上面的 FRP 命令部分

九、故障排除

问题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 记录未生效

解决:

  1. 确认 DNS A 记录已添加
  2. 等待 5-30 分钟 DNS 传播
  3. 本地刷新 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

十二、关键修正记录

本配置在测试过程中发现并修复了以下问题:

  1. WebDAV 模块未启用: 需要在 httpd.conf 中取消注释 DAV 相关模块
  2. DavLockDB 权限问题: 需要创建目录并设置 _www 所有权
  3. 符号链接权限问题: 符号链接使用绝对路径 /Users/weishen/...
  4. Obsidian 目录权限: 需要将目录所有权改为 _www 并设置 775 权限
  5. FRPC 代理干扰: Mac Mini 的代理设置会干扰 FRPC 连接,需要设置 no_proxy
  6. DNS 解析延迟: 添加 DNS 记录后需要等待传播

文档更新时间: 2026-03-19