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,然后在外面也能访问到路由的文件。

5 个赞

path似乎不支持虚拟目录?

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

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

不知还要什么设定

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

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

弄个 Docker 版可能试试……

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

遇到一个小小的问题。我写的那个“搜索路由”小工具( 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

我以前也觉得很多小东西没必要上DOCKER
但是后来发现。。docker真的香 :rofl:
我的做法(仅供参考)是: 每个容器实现一个功能,相互不会影响,需要即开,用完即关,最重要是不会搞乱我的系统(我手动往/etc/rc.local里加东西以后总会遇到一些小问题)
然后安装了Portainer面板 配置docker 可以远程操控 本地端只要有个浏览器就行 都不用ssh客户端

1 个赞

试了下webdav。。。结果显示Method Not Allowed
http直接访问则是正常的

1 个赞

兄弟解决了吗?我这里也是一样的问题

Method Not Allowed 的问题是不能用网页访问,用客户端正常了

我的小米R2D路由搭建成功后,为什么外网网页可以正常登陆,而像有Webdav服务的ES文件浏览器和其他第三方APP不能正常登陆。

webdav的链接跟网页不一样
域名端口/webdav/文件路径

昨天正常,今天外网抽风了,彻底连不上。

这个风格的页面看起来好Bootstrap啊 :joy: