CuteHttpFileServer是一个简易的WebDAV网盘程序,上手简单快速,容易使用。所以本次就拿这个来构建一个支持WebDAV协议的网盘。
1.环境:
- centos7.9
- docker和docker-compose
- portainer
Tips:这部分内容本教程就不讲了,没有相关基础的建议去先补课。
2.项目
- 官网:http://iscute.cn/chfs
- DockerHub:https://hub.docker.com/r/docyc/chfs
- 安装所需默认配置文件:http://iscute.cn/asset/chfs.ini
Tips:由于这个项目开发者似乎已经不再积极开发,所以我找了一个比较活跃的docker项目部署。
3.搭建
3-1.编辑YAML文件
version: '3.3'
services:
chfs:
container_name: chfs
restart: always
volumes:
- '/home/docker-compose/chfs/chfs.ini:/app/chfs.ini'
- '/home/docker-compose/chfs/data:/app/data'
ports:
- '10020:666'
image: docyc/chfs
Tips:请编辑参数以符合你的实际运行环境,上面给出的例子不一定符合你的需求。
3-2.编辑参数配置文件
#--------------------------------------- # 请注意: # 1,如果不存在键或对应值为空,则不影响对应的配置 # 2,配置项的值,语法如同其对应的命令行参数 #--------------------------------------- # 监听端口 port=666 # 共享根目录,通过字符'|'进行分割 # 注意: # 1,带空格的目录须用引号包住,如 path="c:\a uply name\folder" # 2,可配置多个path,分别对应不同的目录 path=/app/data # IP地址过滤 allow= #----------------- 账户控制规则 ------------------- # 注意:该键值可以同时存在多个,你可以将每个用户的访问规则写成一个rule,这样比较清晰,如: # rule=:: # rule=root:123456:RW # rule=readonlyuser:123456:R rule= # 用户操作日志存放目录,默认为空 # 如果赋值为空,表示禁用日志 log= # 网页标题 html.title= # 网页顶部的公告板。可以是文字,也可以是HTML标签,此时,需要适用一对``(反单引号,通过键盘左上角的ESC键下面的那个键输出)来包住所有HTML标签。几个例子: # 1,html.notice=内部资料,请勿传播 # 2,html.notice=`<img src="https://mat1.gtimg.com/pingjs/ext2020/qqindex2018/dist/img/qq_logo_2x.png" width="100%"/>` # 3,html.notice=`<div style="background:black;color:white"><p>目录说明:</p><ul>一期工程:一期工程资料目录</ul><ul>二期工程:二期工程资料目录</ul></div>` html.notice= # 是否启用图片预览(网页中显示图片文件的缩略图),true表示开启,false为关闭。默认开启 image.preview= # 下载目录策略。disable:禁用; leaf:仅限叶子目录的下载; enable或其他值:不进行限制。 # 默认值为 enable folder.download= #-------------- 设置生效后启用HTTPS,注意监听端口设置为443------------- # 指定certificate文件 ssl.cert= # 指定private key文件 ssl.key= # 设置会话的生命周期,单位:分钟,默认为30分钟 session.timeout=0
Tips:由于是在容器里运行,所以上述参数都应该修改为符合容器内部运行环境的参数。
3-3.创建目录与配置文件
touch /home/docker-compose/chfs/chfs.ini
Tips:把上述内容填入保存即可。
3-4.把YAML参数填入portainer的堆栈模板中,并运行即可完成搭建。
3-5.如需更详细的配置,可以按需修改配置文件即可,修改完成后重启堆栈即可。
4.权限设定
参数说明:
rule="USER:PWD:MASK[:DIR:MASK...][|...]" USER=用户名 PWD=密码 MASK=权限(''=空值;'r'=读;'w'=写;'d'=删) r=查看+下载 w=上传+创建+重命名 d=上传+创建+重命名+删除 DIR=目录(允许'*'和'?') []=中括号中的内容为可选参数 |=用于间隔每个用户之间的参数,每个用户最多4个:
参数例子(来自官网说明):
//匿名用户具有只读权限(默认情况下匿名用户具有读写权限) //账户ceshizu,密码为ceshizu123,对根目录的权限为只读,但对test目录具有读写权限 //账户yanfazu,密码为yanfazu123,对根目录的权限为只读,但对yanfa目录具有读写权限 chfs --rule="::r|ceshizu:ceshizu123:r:test:rw|yanfazu:yanfazu123:r:yanfa:rw" //匿名用户什么权限都没有(默认情况下匿名用户具有读写权限) //账户admin,密码为admin123,具有读写权限 //账户zhangsan,密码为zhangsan123,对根目录的权限为不可读写,但对zhangsanfiles目录具有读写权限 chfs --rule="::|admin:admin123:rw|zhangsan:zhangsan123::zhangsanfiles:rw"
end…