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

**URL:** <https://meta.appinn.net/t/topic/13634>\
**Category:** 发现频道\
**Tags:** linux, windows, 网盘\
**Created:** [2020 年2 月 8 日 23:21 UTC](https://meta.appinn.net/t/topic/13634 "2020-02-08T23:21:38Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![GingerCat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/gingercat/32/1349_2.png) [@GingerCat](https://meta.appinn.net/u/GingerCat)\
**Post date:** [2020 年2 月 8 日 23:21 UTC](https://meta.appinn.net/t/topic/13634/1 "2020-02-08T23:21:38Z")

</div>

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

- 官网：[生活笔记](http://iscute.cn/chfs)
- GitHub：[GitHub - docblue/chfsgui: This is just a GUI WRAPPER for chfs(cute http file server)](https://github.com/docblue/chfsgui)

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

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

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

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

1. 准备

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

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

1. 下载

到官网 [生活笔记](http://iscute.cn/chfs)

 ![图片](https://meta.appinn.net/uploads/default/original/2X/f/f8210d2cd1fd31e2cbff1215d01e14a814056c68.png)

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

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

小米路由R1D就选 [chfs-linux-arm-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-arm-2.0.zip)

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

1. 配置

 ![图片](https://meta.appinn.net/uploads/default/original/2X/f/fd98a7823025f678840c8686a0a1a1410d5be883.jpeg)

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

得到 chfs 文件

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

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

按 i，是编辑模式。

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

```shell
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.cert** 和 **ssl.key** 是开 https 用的。

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

给 chfs 授权，`chmod -R 755 chfs`

这时候我们可以手动运行一下，测试：

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

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

 ![图片](https://meta.appinn.net/uploads/default/original/2X/e/e5f6453e4f7601ecaec2abb02f05fcad4b771be0.jpeg)

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

 ![图片](https://meta.appinn.net/uploads/default/original/2X/e/e89d4ad6d6eba6ec8be02c7d4b85f99d9c3b56d5.png)

1. 开机启动

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

创建文件 chfs：`vi chfs`

输入以下内容:

```shell
#!/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，然后在外面也能访问到路由的文件。

---

<div class="post-metadata">

**Author:** ![yazii](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/yazii/32/13871_2.png) [@yazii](https://meta.appinn.net/u/yazii)\
**Post date:** [2020 年2 月 11 日 10:57 UTC](https://meta.appinn.net/t/topic/13634/2 "2020-02-11T10:57:32Z")

</div>

path似乎不支持虚拟目录？

---

<div class="post-metadata">

**Author:** ![GingerCat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/gingercat/32/1349_2.png) [@GingerCat](https://meta.appinn.net/u/GingerCat)\
**Post date:** [2020 年2 月 11 日 13:18 UTC](https://meta.appinn.net/t/topic/13634/3 "2020-02-11T13:18:39Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![dms](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dms/32/3545_2.png) [@dms](https://meta.appinn.net/u/dms)\
**Post date:** [2020 年2 月 29 日 11:51 UTC](https://meta.appinn.net/t/topic/13634/4 "2020-02-29T11:51:18Z")

</div>

> [@yazii](#):
>
> path似乎不支持虚拟目录？

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

---

<div class="post-metadata">

**Author:** ![cast](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/c/5daacb/32.png) [@cast](https://meta.appinn.net/u/cast)\
**Post date:** [2020 年4 月 4 日 09:11 UTC](https://meta.appinn.net/t/topic/13634/5 "2020-04-04T09:11:28Z")

</div>

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

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

不知还要什么设定

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

---

<div class="post-metadata">

**Author:** ![mzgm](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/m/f05b48/32.png) [@mzgm](https://meta.appinn.net/u/mzgm)\
**Post date:** [2020 年4 月 4 日 12:33 UTC](https://meta.appinn.net/t/topic/13634/6 "2020-04-04T12:33:54Z")

</div>

我的可以使用

---

<div class="post-metadata">

**Author:** ![taozi](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/taozi/32/58290_2.png) [@taozi](https://meta.appinn.net/u/taozi)\
**Post date:** [2020 年4 月 5 日 08:11 UTC](https://meta.appinn.net/t/topic/13634/7 "2020-04-05T08:11:28Z")

</div>

和以前介绍的webd一样的功能啊，[轻量级 webd 网盘更新了, 支持权限 配置文件 Windows Linux OpenWrt Armbian 多平台](https://meta.appinn.net/t/webd-windows-linux-openwrt-armbian/7338)

---

<div class="post-metadata">

**Author:** ![GingerCat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/gingercat/32/1349_2.png) [@GingerCat](https://meta.appinn.net/u/GingerCat)\
**Post date:** [2020 年4 月 5 日 08:38 UTC](https://meta.appinn.net/t/topic/13634/8 "2020-04-05T08:38:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![GingerCat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/gingercat/32/1349_2.png) [@GingerCat](https://meta.appinn.net/u/GingerCat)\
**Post date:** [2020 年4 月 5 日 08:41 UTC](https://meta.appinn.net/t/topic/13634/9 "2020-04-05T08:41:42Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![HardCore](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/hardcore/32/3721_2.png) [@HardCore](https://meta.appinn.net/u/HardCore)\
**Post date:** [2020 年4 月 6 日 15:35 UTC](https://meta.appinn.net/t/topic/13634/10 "2020-04-06T15:35:36Z")

</div>

弄个 Docker 版可能试试……

---

<div class="post-metadata">

**Author:** ![taozi](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/taozi/32/58290_2.png) [@taozi](https://meta.appinn.net/u/taozi)\
**Post date:** [2020 年4 月 7 日 13:45 UTC](https://meta.appinn.net/t/topic/13634/11 "2020-04-07T13:45:19Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![GingerCat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/gingercat/32/1349_2.png) [@GingerCat](https://meta.appinn.net/u/GingerCat)\
**Post date:** [2020 年4 月 7 日 15:28 UTC](https://meta.appinn.net/t/topic/13634/12 "2020-04-07T15:28:01Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![dms](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dms/32/3545_2.png) [@dms](https://meta.appinn.net/u/dms)\
**Post date:** [2020 年4 月 7 日 22:47 UTC](https://meta.appinn.net/t/topic/13634/13 "2020-04-07T22:47:58Z")

</div>

遇到一个小小的问题。我写的那个“搜索路由”小工具（ [Easy Search 快速切换搜索引擎](https://meta.appinn.net/t/easy-search/15127) ）放在上面，结果传入空格都变成了加号，还没查是传入问题还是运行问题，放在网站上是正常的。

---

<div class="post-metadata">

**Author:** ![GingerCat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/gingercat/32/1349_2.png) [@GingerCat](https://meta.appinn.net/u/GingerCat)\
**Post date:** [2020 年4 月 8 日 09:48 UTC](https://meta.appinn.net/t/topic/13634/14 "2020-04-08T09:48:58Z")

</div>

你怎么加搜索链接？？？

搜索的rul是这个，但是返回的是json。。。  
[https://域名/chfs/search?str=关键字](https://xn--eqrt2g/chfs/search?str=%E5%85%B3%E9%94%AE%E5%AD%97)

---

<div class="post-metadata">

**Author:** ![dms](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dms/32/3545_2.png) [@dms](https://meta.appinn.net/u/dms)\
**Post date:** [2020 年4 月 8 日 10:19 UTC](https://meta.appinn.net/t/topic/13634/15 "2020-04-08T10:19:33Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![sunny09](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/s/7ba0ec/32.png) [@sunny09](https://meta.appinn.net/u/sunny09)\
**Post date:** [2020 年4 月 9 日 09:05 UTC](https://meta.appinn.net/t/topic/13634/16 "2020-04-09T09:05:59Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![GingerCat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/gingercat/32/1349_2.png) [@GingerCat](https://meta.appinn.net/u/GingerCat)\
**Post date:** [2020 年4 月 19 日 15:15 UTC](https://meta.appinn.net/t/topic/13634/17 "2020-04-19T15:15:56Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![CNumber](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/cnumber/32/7173_2.png) [@CNumber](https://meta.appinn.net/u/CNumber)\
**Post date:** [2020 年4 月 19 日 15:19 UTC](https://meta.appinn.net/t/topic/13634/18 "2020-04-19T15:19:02Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tthy](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tthy/32/72083_2.png) [@tthy](https://meta.appinn.net/u/tthy)\
**Post date:** [2020 年11 月 27 日 05:44 UTC](https://meta.appinn.net/t/topic/13634/19 "2020-11-27T05:44:15Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tthy](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tthy/32/72083_2.png) [@tthy](https://meta.appinn.net/u/tthy)\
**Post date:** [2020 年11 月 27 日 19:10 UTC](https://meta.appinn.net/t/topic/13634/20 "2020-11-27T19:10:09Z")

</div>

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

[下一页](https://meta.appinn.net/t/topic/13634.md?page=2)
