
适合用于备份 CC-Switch、Obsidian、应用配置等小型数据。整体链路客户端 ↓ HTTPS dav.test.com ↓ Nginx 127.0.0.1:18080 ↓ rclone WebDAV 本地 data 目录rclone 的serve webdav可以直接将本地目录作为 WebDAV 服务对外提供。1. 创建目录mkdir-pwebdav/data/cc-switch-sync目录结构webdav/ ├── .env ├── docker-compose.yaml └── data/ └── cc-switch-sync/后续还可以继续增加其他项目mkdir-pwebdav/data/obsidianmkdir-pwebdav/data/app-config2. 生成账号密码生成随机密码openssl rand-hex32创建环境变量文件vimwebdav/.env写入WEBDAV_USER你的用户名 WEBDAV_PASS刚刚生成的密码限制文件权限chmod600webdav/.env3. 创建 Docker Composevimwebdav/docker-compose.yaml写入services:webdav:image:rclone/rclone:latestcontainer_name:webdavrestart:unless-stoppedcommand:-serve-webdav-/data---addr-0.0.0.0:8080---user-${WEBDAV_USER}---pass-${WEBDAV_PASS}---log-level-INFOports:-127.0.0.1:18080:8080volumes:-./data:/data这里将宿主机的webdav/data挂载到容器/data127.0.0.1:18080只允许服务器本机访问公网请求统一通过 Nginx 转发。4. 启动 WebDAVcdwebdavdockercompose up-d查看状态dockercomposeps查看日志dockercompose logs--tail100webdav本机测试curl-i\-u用户名:密码\-XPROPFIND\-HDepth: 1\http://127.0.0.1:18080/返回以下状态说明 WebDAV 正常HTTP/1.1 207 Multi-Status5. 准备 HTTPS 证书推荐使用公共 CA 签发的证书例如Lets Encrypt 阿里云 SSL 腾讯云 SSL 51SSL阿里: https://yundun.console.aliyun.com51ssl: https://www.51ssl.com/假设获得的证书文件为dav.test.com.pem dav.test.com.key放入 Nginx 挂载的证书目录nginx/conf.d/cert/最终结构nginx/conf.d/ ├── cert/ │ ├── dav.test.com.pem │ └── dav.test.com.key └── webdav.conf6. 配置 Nginx创建配置vimnginx/conf.d/webdav.conf写入server { listen 80; listen [::]:80; server_name dav.test.com; return 301 https://$host$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name dav.test.com; ssl_certificate /etc/nginx/conf.d/cert/dav.test.com.pem; ssl_certificate_key /etc/nginx/conf.d/cert/dav.test.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; client_max_body_size 1g; location / { proxy_pass http://127.0.0.1:18080; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_request_buffering off; proxy_buffering off; proxy_connect_timeout 30s; proxy_send_timeout 600s; proxy_read_timeout 600s; } }Nginx 使用proxy_pass将 HTTPS 请求转发给本机 rclone 服务。如果 Nginx 使用 Docker需要确保以下目录已经挂载volumes:-./conf.d:/etc/nginx/conf.d:ro如果 Nginx 使用network_mode:host则可以直接访问127.0.0.1:180807. 加载 Nginx 配置检查配置dockerexecnginx nginx-t重新加载dockerexecnginx nginx-sreload测试 HTTPS WebDAVcurl-i\-u用户名:密码\-XPROPFIND\-HDepth: 1\https://dav.test.com/正常应返回HTTP/1.1 207 Multi-Status8. 配置 CC-Switch在 CC-Switch 中填写服务商自定义 WebDAV 服务器地址https://dav.test.com/ WebDAV 账户WEBDAV_USER WebDAV 密码WEBDAV_PASS 远程根目录cc-switch-sync 同步配置名default第一次使用保存配置 → 测试连接 → 上传 → 开启自动同步数据最终保存在webdav/data/cc-switch-sync/9. 存放多个项目一个 WebDAV 服务可以保存多个项目只需要使用不同目录data/ ├── cc-switch-sync/ ├── obsidian/ ├── app-config/ └── server-backup/对应地址https://dav.test.com/cc-switch-sync/ https://dav.test.com/obsidian/ https://dav.test.com/app-config/ https://dav.test.com/server-backup/所有目录共用同一套 WebDAV 用户名和密码。