以下是基于 dufs 搭建 WebDAV 服务的详细教程,涵盖安装、配置、权限设置及客户端连接等关键步骤:
docker run -d \
--name dufs-webdav \
-p 5000:5000 \
-v /本地目录路径:/data \
sigoden/dufs:latest \
/data --allow-all --auth "user:password@/:rw"
启动命令示例:
./dufs /data -p 5000 --allow-all --auth "user:password@/:rw"
HTTPS 支持(可选):
--tls-cert /path/to/cert.pem --tls-key /path/to/key.pem
路径级权限:通过 --auth 参数指定不同路径的权限,例如:
--auth "user1:pass1@/public:ro, /private:rw"
使用 --hidden 参数隐藏特定文件(如临时文件):
--hidden "*.tmp,logs/"
* * *
### 三、客户端连接 WebDAV
#### 1\. **Windows 客户端**
1. 打开“此电脑” → 右键选择“添加一个网络位置”。
2. 输入地址:`http://服务器IP:5000`。
3. 输入用户名和密码(与 `--auth` 参数一致)。
#### 2\. **Mac/Linux**
- 使用命令行工具 `curl` 或 `davfs2` 挂载:
bash sudo mount -t davfs http://服务器IP:5000 /mnt/dufs
#### 3\. **第三方工具(如 RaiDrive、Cyberduck)**
- 选择 WebDAV 协议,填写服务器地址、端口、账号密码即可[34](/C:/Program%20Files/Joplin/resources/app.asar/@ref "@ref")[42](/C:/Program%20Files/Joplin/resources/app.asar/@ref "@ref")。
* * *
### 四、常见问题排查
1. **端口冲突**:若默认端口 5000 被占用,使用 `-p 新端口:5000` 修改。
2. **权限不足**:确保挂载的本地目录有读写权限(Linux/Mac 使用 `chmod` 调整)。
3. **认证失败**:检查 `--auth` 参数格式是否正确,避免特殊字符(如 `@` 需转义)。
4. **HTTPS 证书错误**:自签证书需在客户端导入信任[34](/C:/Program%20Files/Joplin/resources/app.asar/@ref "@ref")[79](/C:/Program%20Files/Joplin/resources/app.asar/@ref "@ref")。
* * *
### 五、高级功能扩展
- **静态网站托管**:添加 `--render-index` 参数,目录中放置 `index.html` 文件即可[11](/C:/Program%20Files/Joplin/resources/app.asar/@ref "@ref")[16](/C:/Program%20Files/Joplin/resources/app.asar/@ref "@ref")。
- **API 调用**:通过 `curl` 上传/下载文件:
bash
curl -T 本地文件路径 http://服务器IP:5000/目标路径 -u user:password
curl -O http://服务器IP:5000/文件路径 -u user:password
通过上述步骤,可快速搭建一个支持 WebDAV 的 dufs 文件服务器。如需更复杂的配置(如多用户分级权限),可参考 官方文档 或结合 Nginx 反向代理实现负载均衡3479。
以下是一个详细的 dufs 配置文件示例(YAML/TOML 格式),结合注释解释每个配置项的作用,帮助您快速搭建 WebDAV 服务:
dufs-config.yml)# dufs 配置文件示例(YAML 格式)
# 监听地址与端口
port: 5000
host: 0.0.0.0 # 允许所有IP访问(默认localhost)
# WebDAV 基础设置
webdav: true # 启用WebDAV支持(默认true)
# 认证与权限
auth:
- path: / # 控制根目录权限
user: admin # 用户名
password: "123456" # 密码(建议使用环境变量替代明文)
permissions: rw # 读写权限(ro=只读)
- path: /public # 子目录权限
user: guest
password: "guest123"
permissions: ro
# 访问控制
access_control:
allow_upload: true # 允许上传
allow_delete: true # 允许删除
allow_search: true # 允许搜索文件
hidden: ["*.tmp", ".DS_Store"] # 隐藏指定文件/目录
# TLS/HTTPS 加密(可选)
tls:
cert: /path/to/cert.pem # SSL证书路径
key: /path/to/key.pem # SSL私钥路径
# 静态文件托管(可选)
render_index: true # 启用目录索引(显示index.html)
port: WebDAV 服务监听的端口(默认 5000)。host: 绑定 IP 地址,0.0.0.0 允许外部访问,127.0.0.1 仅限本机。webdav: true: 必须启用 WebDAV 才能通过客户端连接。auth: 定义不同路径的访问权限:
path: 受控目录路径(如 / 表示根目录)。user/password: 认证信息(密码建议通过环境变量注入)。permissions: rw(读写)或 ro(只读)。allow_upload/allow_delete: 控制文件操作权限。hidden: 隐藏特定文件(支持通配符 *)。tls: 配置 SSL 证书和私钥路径,启用 HTTPS(需有效证书)。render_index: true: 自动渲染目录中的 index.html。dufs --config dufs-config.yml
docker run -d \
-p 5000:5000 \
-v /本地目录:/data \
-v $(pwd)/dufs-config.yml:/app/config.yml \ # 挂载配置文件
sigoden/dufs \
--config /app/config.yml
auth:
- path: /
user: admin
password: "admin@2023"
permissions: rw
- path: /projects
user: dev
password: "dev-secret"
permissions: rw
- path: /public
user: anonymous
password: ""
permissions: ro
# 通过环境变量传递敏感信息
export DUF_ADMIN_PASS="secure-password"
# 启动命令中引用环境变量
dufs --auth "admin:${DUF_ADMIN_PASS}@/:rw"
使用 RaiDrive 或 Cyberduck 测试:
WebDAV 或 WebDAV HTTPShttp://your-ip:5000 或 https://your-domain:5000auth 部分一致。-v 正确映射)。chmod 755 /本地目录)。通过配置文件,您可以灵活管理复杂的权限规则和功能组合。如需更多高级选项(如日志级别、CORS 等),可参考 官方文档。