使用Docker+rclone自建WebDAV的实现示例
适合用于备份 CC-Switch、Obsidian、应用配置等小型数据。
整体链路:
客户端
↓ HTTPS
dav.test.com
↓ Nginx
127.0.0.1:18080
↓ rclone WebDAV
本地 data 目录
rclone 的 serve webdav 可以直接将本地目录作为 WebDAV 服务对外提供。
1. 创建目录
mkdir -p webdav/data/cc-switch-sync
目录结构:
webdav/
├── .env
├── docker-compose.yaml
└── data/
└── cc-switch-sync/
后续还可以继续增加其他项目:
mkdir -p webdav/data/obsidian mkdir -p webdav/data/app-config
2. 生成账号密码
生成随机密码:
openssl rand -hex 32
创建环境变量文件:
vim webdav/.env
写入:
WEBDAV_USER=你的用户名 WEBDAV_PASS=刚刚生成的密码
限制文件权限:
chmod 600 webdav/.env
3. 创建 Docker Compose
vim webdav/docker-compose.yaml
写入:
services:
webdav:
image: rclone/rclone:latest
container_name: webdav
restart: unless-stopped
command:
- serve
- webdav
- /data
- --addr
- 0.0.0.0:8080
- --user
- ${WEBDAV_USER}
- --pass
- ${WEBDAV_PASS}
- --log-level
- INFO
ports:
- "127.0.0.1:18080:8080"
volumes:
- ./data:/data这里将宿主机的:
webdav/data
挂载到容器:
/data
127.0.0.1:18080 只允许服务器本机访问,公网请求统一通过 Nginx 转发。
4. 启动 WebDAV
cd webdav docker compose up -d
查看状态:
docker compose ps
查看日志:
docker compose logs --tail=100 webdav
本机测试:
curl -i \ -u '用户名:密码' \ -X PROPFIND \ -H 'Depth: 1' \ http://127.0.0.1:18080/
返回以下状态说明 WebDAV 正常:
HTTP/1.1 207 Multi-Status
5. 准备 HTTPS 证书
推荐使用公共 CA 签发的证书,例如:
Let's Encrypt 阿里云 SSL 腾讯云 SSL 51SSL
阿里: yundun.console.aliyun.com 51ssl: 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.conf
6. 配置 Nginx
创建配置:
vim nginx/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:18080
7. 加载 Nginx 配置
检查配置:
docker exec nginx nginx -t
重新加载:
docker exec nginx nginx -s reload
测试 HTTPS WebDAV:
curl -i \ -u '用户名:密码' \ -X PROPFIND \ -H 'Depth: 1' \ https://dav.test.com/
正常应返回:
HTTP/1.1 207 Multi-Status
8. 配置 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 用户名和密码。
到此这篇关于使用Docker+rclone自建WebDAV的实现示例的文章就介绍到这了,更多相关Docker+rclone自建WebDAV内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
docker内网搭建dns使用域名访问替代ip:port的操作
这篇文章主要介绍了docker内网搭建dns使用域名访问替代ip:port的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11
Docker部署Mysql8.0.20并配置主从复制的实现步骤
主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点,本文主要介绍了Docker部署Mysql8.0.20并配置主从复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下2024-06-06
如何解决报错unable to remove volume问题
这篇文章主要介绍了如何解决报错unable to remove volume问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-02-02
Visual Studio发布 Docker 镜像的实现步骤
本文详细指导如何在Visual Studio中为ASP.NET Core WebAPI项目集成Docker支持,包括配置步骤、编写Dockerfile、测试代码、launchSettings.json配置及docker-compose.yml编写,感兴趣的可以了解一下2026-04-04
Docker安装Tomcat、MySQL和Redis的步骤详解
这篇文章主要介绍了Docker安装Tomcat、MySQL和Redis的步骤详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11


最新评论