# Dufs - 文件共享服务器 [Dufs](https://github.com/sigoden/dufs) 是一个轻量级的文件共享服务器,支持 WebDAV、上传、下载、搜索等功能。 ## 服务信息 | 项目 | 值 | |------|-----| | 镜像 | `sigoden/dufs` | | 版本 | `v0.45.0` | | 端口 | `5000` | | 路径前缀 | `/dufs` | ## 目录结构 ``` dufs/ ├── config/ │ └── config.yaml # Dufs 配置文件 ├── env.cfg # 环境变量配置 └── stack.yml # Docker Compose 编排文件 ``` ## 部署前准备 1. 创建数据目录: ```bash mkdir -pv /data/volumes/dufs/data mkdir -pv /data/mygit/config/dufs ``` 2. 修改 `./config/config.yaml` 中的配置,并将其复制到 `/data/mygit/config/dufs` 目录中: ```bash cp ./config/config.yaml /data/mygit/config/dufs/ ``` ## 部署命令 ### 拉取镜像 ```bash docker compose -p dufs --env-file ./dufs/env.cfg -f ./dufs/stack.yml pull ``` ### 启动服务 ```bash docker compose -p dufs --env-file ./dufs/env.cfg -f ./dufs/stack.yml up -d ``` ## 配置说明 ### 环境变量 (`env.cfg`) | 变量 | 说明 | 默认值 | |------|------|--------| | `IMAGE_TAG_VER` | 镜像版本号 | `v0.45.0` | | `IMAGE_TAG` | 镜像完整标签 | `sigoden/dufs:${IMAGE_TAG_VER}` | | `Volumes_Path` | 数据卷路径 | `/data/volumes/dufs` | | `Config_Path` | 配置文件路径 | `/data/mygit/config` | ### 应用配置 (`config/config.yaml`) #### 基本设置 - **serve-path**: 服务根目录,默认为 `.`(容器内 `/data`) - **bind**: 绑定地址,`0.0.0.0` 表示监听所有接口 - **port**: 服务端口,默认 `5000` - **path-prefix**: URL 路径前缀,设为 `/dufs` #### 隐藏文件规则 以下文件/目录在列表中不可见: - `tmp`、`.git`、`.svn`、`.DS_Store`(系统/版本控制目录) - `*.log`、`*.lock`、`*.db`(临时/数据库文件) #### 访问控制(auth) | 用户 | 密码 | 权限范围 | |------|------|----------| | `admin` | `admin` | `/` 目录读写 | | `user` | `pass` | `/backups` 读写,`/shared` 只读 | | 匿名 | - | `/` 只读 | > ⚠️ **安全提示**:请在生产环境中修改默认用户名和密码! #### 功能开关 | 功能 | 状态 | 说明 | |------|------|------| | allow-upload | ✅ | 允许上传文件 | | allow-delete | ✅ | 允许删除文件 | | allow-search | ✅ | 允许搜索文件 | | allow-symlink | ✅ | 允许符号链接 | | allow-archive | ✅ | 允许打包下载 | | enable-cors | ✅ | 启用跨域请求 | | render-index | ✅ | 渲染 index.html | | render-try-index | ✅ | 尝试渲染 index.html | | render-spa | ✅ | SPA 模式 | #### 其他设置 - **compress**: 压缩级别为 `low` - **log-format**: 访问日志格式 - **log-file**: 日志文件路径 `./dufs.log` ## 数据卷映射 | 容器路径 | 宿主机路径 | 说明 | |----------|------------|------| | `/data` | `${Volumes_Path}/data` | 共享文件数据 | | `/config` | `${Config_Path}/dufs` | 配置文件(只读) | | `/etc/timezone` | `/etc/timezone` | 时区(只读) | | `/etc/localtime` | `/etc/localtime` | 本地时间(只读) | ## 访问方式 启动服务后,通过以下方式访问: - **Web UI**: `http://:5000/dufs/` - **WebDAV**: `http://:5000/dufs/`