局域网内跨平台传输文件一直是个挺常见的需求。实现方式有很多,无论是用基于P2P的传输软件,还是电脑上开一个共享文件夹,都可以把文件传输到目标设备上。
我比较偏好基于浏览器的工具,因为用起来方便,不需要一个个设备都装一遍软件。
目前常用的工具叫CuteHttpFileServer(https://iscute.cn/chfs
),简称CHFS。这款工具实际上是个网页端的文件服务器,拿来在局域网中互传文件或者文本比较方便。
之前它是部署在我常用的游戏本上面的,刚好最近上线的OpenWRT x86小主机容量管够,可以在上面搭建Docker环境,那就趁此机会,试试看它的Docker版用着效果如何。
1.搭建Docker环境
在部署容器前,当然得先把Docker搭建好。
Docker环境会占掉不小的存储空间,容量不是很充足的路由器不建议尝试。
1.1.更新软件源
通过SSH连接至OpenWRT,按照惯例更新软件源。
opkg update
1.2.安装Docker包
执行以下命令安装Docker、Docker Compose以及LuCI上的Docker管理插件。
命令执行完成后,退出LuCI控制台并重新登录,就会看到由luci-app-dockerman插件提供的Docker管理菜单。
opkg install docker dockerd docker-compose luci-app-dockerman luci-i18n-dockerman-zh-cn
1.3.配置防火墙区域转发
Docker安装完成后,会在防火墙中生成一个叫docker
的安全域。需要放行从lan
区域到docker
区域的流量转发,才能让局域网中的设备正常访问Docker容器映射出来的端口。
在网络
下拉菜单中找到防火墙
,进入防火墙的常规设置界面,点击lan
一行的编辑按钮。
点开Allow forward to destination zones
下拉菜单,追加勾选docker
区域并保存。保存完后记得点一下“保存并应用”。
2.部署CHFS容器
2.1.拉取CHFS镜像
执行以下命令拉取CHFS容器。如果拉取报错,那就证明需要给OpenWRT上个加速,或者加一个Docker镜像源。
docker pull docblue/chfs:v4.0beta.min
2.2.创建CHFS配置文件
CHFS在容器内的配置文件位于/config/chfs.ini
。可以先在OpenWRT里面创建一个这样的配置文件,并在创建容器时把目录映射过去。
执行以下命令创建配置文件目录。
mkdir -p /opt/docker/containers/chfs/config
然后执行以下命令创建一个配置文件。
cat >> /opt/docker/containers/chfs/config/chfs.ini << EOF port=80 path=/data allow= log=/log html.title=CHFS html.notice= image.preview= folder.download= ssl.cert= ssl.key= session.timeout= file.remove=3 [guest] password= rule.default=d rule.none= rule.r= rule.w= rule.d= EOF
完整版的配置文件及注释可以参考作者官网(https://iscute.cn/asset/chfs.ini
)。
2.3.创建CHFS容器
在LuCI控制台中点击Docker
下拉菜单中的容器
,进入容器管理页面。
点击新增
,新建一个容器。
一个个填空比较麻烦,可以点击命令行
按钮,直接粘贴docker命令进行解析。
docker run \ --name chfs \ -d \ -p 8080:80 \ -v /opt/docker/containers/chfs/config:/config\ -v /opt/docker/containers/chfs/data:/data \ -v /opt/docker/containers/chfs/log:/log\ docblue/chfs:v4.0beta.min
上面的这串命令是将Web访问端口映射到OpenWRT的8080
端口。文件目录和日志目录都映射到opt/docker/containers/chfs
下对应的目录。
不过我自己用的环境是把文件目录和日志目录映射到/tmp
下的目录,重启就可以全部清空,不用手动清理(笑)。
容器的重启策略可以用默认的Unless stopped
,这样每次重启OpenWRT,只要CHFS容器之前没手动停掉,就能自动启动。
确认完配置,点击最下面的提交
按钮,保存容器。接下来就可以运行一下试试看了。
3.个人吐槽
还是拿x86小主机跑OpenWRT体验好啊。用起来基本不用担心内存或者存储空间不足,一些轻量级的容器都可以放在上面运行。
小主机目前还在用商家送的电源,看着不是非常靠谱,就没打算在上面跑太多东西。CHFS我也只打算用于文件互传,不会真的把文件一直保存在小主机的硬盘里。如果现在就把它做成AIO,那么最终打造出来的估计会是“AIB”,也就是All in BOOM。
0 Comments