CuteHttpFileServer / chfs 文件服务器,简易nas,支持http、webdav

软件名为CuteHttpFileServer ,官方简称 chfs。

原来论坛里也有人推荐过,不过没什么介绍,没人重视。在这里重新介绍一下,以小米路由为例子,并附上一些常见的配置、用法、说明。

开源的,LGPL v3协议,不过看起来源码已经比较旧,官网的版本比较新,而且隔三差五还会更新。建议用官网的。

这是一个跨平台的、开源、使用简单、支持http、webdav的文件服务器。

c++ 写的,只要知道设备的 CPU 类型,到官网上下载对应的编译二进制文件,就可以直接运行。所以不仅仅传统的 windows、完整的 linux 发行版、mac 能运行,像软路由、nas 一类精简、魔改的linux应该问题都不大。

  1. 准备

我这里用小米路由为例子。型号是小米路由 R1D。

先刷成开发板。然后申请开 ssh。

  1. 下载

到官网 http://iscute.cn/chfs

找个位置,创建个chfs目录,我这里用/etc/chfs。

电脑、服务器的根据系统选择版本。如果是路由器,例如很多是魔改openwrt就属于精简linux,根据cpu选对应版本,多数是arm、mips。

小米路由R1D就选 chfs-linux-arm-2.0.zip

使用命令 wget http://iscute.cn/tar/chfs/2.0/chfs-linux-arm-2.0.zip

  1. 配置

下完压缩包,命令解压unzip chfs-linux-arm-2.0.zip

得到 chfs 文件

删除下载的压缩包,已经没有必要留着 rm chfs-linux-arm-2.0.zip

编写配置文件 vi /etc/chfs/config.ini

按 i,是编辑模式。

输入以下内容,注意自己替换一下用户名密码

port=81
path=/userdisk/data/
rule=::|用户名:密码:d
log=/etc/chfs/logs
html.title=miroute
html.notice=miroute
image.preview=true
ssl.cert=
ssl.key=
allow=

小白就改一下用户名密码。老司机的可以看一下参数解释。

port 是端口。

path 是路径,/ 也是可以的,不过不太安全。

rule 是用户权限与目录,比较复杂,详细看官网,我只简单说。| 是分割每一条规则,:是分割参数,第一个参数用户名,第二个参数密码,第三个参数是根目录权限。一二参数空就是匿名用户。权限有4种,""(不可访问),“R”(只读),“W”(读写),“D”(写+删除)。第四、五参数,是子目录和对应权限。

log 就是日志文件位置。

html.title 是浏览器标签页上的标题。

html.notice 是网页上第一行描述文字。

image.preview 是开启图片预览功能。

allow 是控制ip黑白名单,具体看官网。

ssl.certssl.key 是开 https 用的。

保存:按 esc 退出编辑模式,输入:wq 保存并退出。

给 chfs 授权,chmod -R 755 chfs

这时候我们可以手动运行一下,测试:

nohup /etc/chfs/chfs --file=/etc/chfs/config.ini &

正常情况下会显示这样的文字

浏览器输入路由ip和端口就能打开网页操作文件

  1. 开机启动

进入开机脚本的目录:cd /etc/init.d

创建文件 chfs:vi chfs

输入以下内容:

#!/bin/sh /etc/rc.common
START=99
start() {
    /etc/chfs/chfs --file=/etc/chfs/config.ini
}
stop() {
    echo 233 >>/userdisk/data/log
}

保存退出

给脚本授权: chmod -R 777 chfs

到目录 cd /etc/rc.d

建立启动软链接 ln -s /etc/init.d/chfs /etc/rc.d/S99chfs

重启路由,测试是否正常开机自启动。

  1. 其他

windows建议可以用raiddrive做客户端,支持协议多,免费还没什么限制。

Android建议可以用es文件浏览器做客户端,但是设置有点奇葩,webdav协议竟然藏在ftp分类里。播放器建议可以用nplayer。

电视可以用kodi和nplayer。

如果家里宽带能申请到公网地址,可以做个ddns,然后在外面也能访问到路由的文件。

1赞

path似乎不支持虚拟目录?

linux下我没测试过虚拟目录。windows是下mklink可以

看起来是的,这就比较尴尬了。

用2.0的GUI版,在内网使用,真的好用方便,不论电脑间,还是电脑手机间,

但用外网的IP来访问不成功,路由已做了端口映射,但是用外网的IP+端口,始终不能,

不知还要什么设定

PS:改过了后可以连了,一些试用后,发现GUI版共享目录设定还不够好

我的可以使用

和以前介绍的webd一样的功能啊,轻量级 webd 网盘更新了, 支持权限 配置文件 Windows Linux OpenWrt Armbian 多平台

gui版一直比较旧,功能不太完善,还是推荐命令行。外网端口估计是网络的配置问题。

这个功能更多一点点,例如搜索,还有一套api,二次开发很方便。

弄个 Docker 版可能试试……

好的,我试试呢,局域网有时候用用很方便

别动不动都上docker,这小软件就一个编译好的二进制文件,直接运行,都不用考虑环境。上docker有什么意义 :joy:

遇到一个小小的问题。我写的那个“搜索路由”小工具( Easy Search 快速切换搜索引擎 )放在上面,结果传入空格都变成了加号,还没查是传入问题还是运行问题,放在网站上是正常的。

你怎么加搜索链接???

搜索的rul是这个,但是返回的是json。。。 https://域名/chfs/search?str=关键字

不是啦,你去看看我的帖子,我写了个页面(静态)来路由我的搜索(互联网)请求

这个开发api怎么访问呀:运行chfs后,通过地址:http://host:port/asset/api.html访问API文档。 求指教

字面意思。。。 在浏览器,输入你网盘的链接,后面路径用/asset/api.html,就能打开api文档

运行CHFS后,浏览器打开根目录页面,然后在地址栏后面把asset/api.html粘贴到地址后面,回车就可以了 比如说你的IP是192.168.1.11,端口设定是2333,那么访问API的地址就是 http://192.168.1.11:2333/asset/api.html