Linux(docker)安装搭建CuteHttpFileServer/chfs文件共享服务器

先创建一个chfs相关的文件夹

bash 复制代码
mkdir /home/chfs && cd /home/chfs

创建Dockerfile文件内容

复制代码
FROM alpine:3.7

WORKDIR /chfs

RUN wget http://iscute.cn/tar/chfs/3.1/chfs-linux-amd64-3.1.zip && unzip chfs-linux-amd64-3.1.zip  \
    && mv chfs-linux-amd64-3.1 chfs && chmod +x chfs && mkdir -p /chfs/data && rm -rf /chfs/chfs-linux-amd64-3.1.zip

COPY chfs.ini /chfs

ENTRYPOINT ["/chfs/chfs","--file","/chfs/chfs.ini"]

创建chfs.ini配置文件

配置文件官网文档:chfs.ini配置文件说明

bash 复制代码
#---------------------------------------
# 请注意:
#     1,如果不存在键或对应值为空,则不影响对应的配置
#     2,配置项的值,语法如同其对应的命令行参数
#---------------------------------------


# 监听端口
port=


# 共享根目录,通过字符'|'进行分割
# 注意:
#     1,带空格的目录须用引号包住,如 path="c:\a uply name\folder"
#     2,可配置多个path,分别对应不同的目录
path=


# IP地址过滤
allow=


# 用户操作日志存放目录,默认为空
# 如果赋值为空,表示禁用日志
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=


# 文件/目录删除模式:
#    1: 安全删除:移动到系统回收站 [不是所有操作系统都支持,建议使用前进行测试。默认模式]
#    2: 安全删除:移动到chfs的专属回收站: ~/.chfs_trashbin, 程序会删除存储超过1个月的文件
#    3: 真正删除
file.remove=1


#----------------- ------------------------
# 注意: 账户配置区域放置到配置文件的后面
#------------------------------------------



#----------------- 账户及控制规则 -------------------
#     [xxx] xxx即为账户名, 访客的用户名为guest
#     password 账户密码
#     rule.default 账户对所有的目录和文件的访问权限,但可以针对任意子目录进行重新设定访问权限,以覆盖默认的权限
#     rule.none 表示对哪些子目录设置为不可访问的权限,多个目录使用字符'|'分割,也可以分为多行。注意:该子目录本身也不可访问!
#     rule.r 表示对哪些子目录设置为读权限,多个目录使用字符'|'分割,也可以分为多行。注意: 该子目录本身不受影响,影响的只是它所包含的目录和文件!
#     rule.w 表示对哪些子目录设置为写权限,多个目录使用字符'|'分割,也可以分为多行。注意: 该子目录本身不受影响,影响的只是它所包含的目录和文件!
#     rule.d 表示对哪些子目录设置为最高访问权限,多个目录使用字符'|'分割,也可以分为多行。注意: 该子目录本身不受影响,影响的只是它所包含的目录和文件!
#
#   示例:
#        [foo]
#        password=bar
#        rule.default=r
#        rule.none=d:\公司制度|d:\财务票据
#        rule.r=d:\施工项目\2021年
#        rule.r=d:\施工项目\2022年
#        rule.d=d:\个人目录\foo
#
#    该账户名为foo,密码为bar,默认访问权限是读权限,但账户没有"d:\公司制度"和"d:\财务票据"的访问权限,且
#    对"d:\施工项目\2021年"和"d:\施工项目\2021年"只有读权限,对"d:\个人目录\foo"有最高访问权限。
#


#账户xxx,访客的用户名为guest
[xxx]
password=
rule.default=
rule.none=
rule.r=
rule.w=
rule.d=

示例如下,示例如下,示例如下:

复制代码
port=80
path=/chfs/data
allow=
log=/opt/chfs/logs
html.title=
html.notice=`测试`
image.preview=true
ssl.cert=
ssl.key=
folder.download=
file.remove=2
session.timeout=30
[admin]
password=123456
rule.default=RWD
rule.none=
rule.r=
rule.w=
rule.d=
[guest]
password=
rule.default=R
rule.none=
rule.r=
rule.w=
rule.d=

效果如下:

在当目录构建镜像

复制代码
docker build -t chfs-image:1.0 .

运行

复制代码
docker run -d \
  --name chfs \
  -p 8089:80 \
  -v /home/chfs/data:/chfs/data \
  -v /home/chfs/chfs.ini:/chfs/chfs.ini \
  -v /home/chfs/recycle:/root/.chfs_trashbin \
  chfs-image:1.0

-v /home/chfs/recycle:/root/.chfs_trashbin:这是回收站路径,删除模式为2时启用

登录访问,OK,结束。

相关推荐
Wang's Blog10 分钟前
Vibe Coding一人即团队系列54:云服务器 Node.js 与 MySQL 9 环境搭建及配置指南
服务器·人工智能·mysql·node.js
玉&心10 分钟前
在Docker中部署前端和后端的实现
运维·docker·容器
额额额对了11 分钟前
Linux 数据库开发实战:使用 C 语言与 SQLite3 构建轻量级终端词典
linux·数据库·oracle
爱笑鱼15 分钟前
Android 系统启动机制(六):Zygote 创建 App 为什么走 Socket?哪些是源码事实,哪些是架构解释?
android·linux
2601_9622998827 分钟前
Linux下运行Python脚本
linux·python·ubuntu·脚本·命令
wdfk_prog30 分钟前
Docker 常用语法与命令:CLI、Dockerfile 与 Compose 速查
运维·docker·容器
Zenova EdgeOS31 分钟前
Linux eBPF 工业边缘性能观测实战
linux·服务器·网络
无敌糖果1 小时前
K8S network namespace错误分析
docker·容器·kubernetes
skywalk81631 小时前
通过下载Ubuntu ova文件在Virtual Box快速安装ubuntu
linux·运维·ubuntu·virtualbox
wuminyu1 小时前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++