HTTP静态文件服务器gohttpserver

在这里插入图片描述

本文软件是网友 yfst 推荐的,抱歉拖延到 7 月底才完成,又拖了这么久才发布~

什么是 gohttpserver ?

gohttpserver 要做最好的 HTTP 静态文件服务器,其采用 golang + vue 编写。具备人性化的 UI 体验,支持文件的上传,能为安卓和苹果安装包直接生成二维码。

gohttpserver 是多平台的,除了我们准备安装的 docker 版外,还支持各主流平台。

在这里插入图片描述

gohttpserver 除了本地文件服务器功能外,还有一些额外的功能,比如可以让本地的 ipa,apk 也能支持扫码下载,这对于开发来说应该是比较方便的功能。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 gohttpserver ,选择第一个 codeskyblue/gohttpserver,版本选择 latest

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 gohttpserver,并在其中建一个子文件夹 data

文件夹装载路径说明
docker/gohttpserver/data/app/public存放上传文件

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
70508000

环境变量

gohttpserver 安装比较简单,这一步可以不设置,只设卷和端口就已经能正常使用了。

但是有些高级功能的开启,需要我们在 命令 中输入对应的参数,来对 gohttpserver 进行设置,例如:

  • 如果需要上传功能,请加 --upload
  • 如果要新建文件和删除功能,请加 --delete
  • 启用基本 http 身份验证,请加 --auth-type http --auth-http username:password
  • 更多的设置,请看官方的代码网站的说明,并根据自己的实际需要进行设置;

下图演示了上面几个参数

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 gohttpserver 和 子目录
mkdir -p /volume2/docker/gohttpserver/data

# 进入 gohttpserver 目录
cd /volume2/docker/gohttpserver

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name gohttpserver \
   -p 7050:8000 \
   -v $(pwd)/data:/app/public \
   codeskyblue/gohttpserver \
   --upload --delete --auth-type http --auth-http username:password

记得将 usernamepassword 替换成你想要的账号和密码;

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  fileserver:
    image: codeskyblue/gohttpserver
    container_name: gohttpserver
    restart: unless-stopped
    ports:
      - 7050:8000
    volumes:
      - ./data:/app/public
    command: --upload --delete --auth-type http --auth-http username:password

同样要记得将 usernamepassword 替换成你想要的账号和密码;

然后执行下面的命令

# 新建文件夹 gohttpserver 和 子目录
mkdir -p /volume2/docker/gohttpserver/data

# 进入 gohttpserver 目录
cd /volume2/docker/gohttpserver

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:7050 就能看到主界面

标准安装,也就是命令行中什么都没输入时

在这里插入图片描述

如果加了--upload ,会多一个 Upload 按钮

如果加了 --delete ,会多一个 垃圾桶 和一个 New Folder 按钮

如果加了 --auth-type http --auth-http username:password,首先会弹出登录框

功能比较简单,上一张官方的动图来演示主要的功能

在这里插入图片描述

高级

用户可以在目录中创建 .ghs.yml 文件来控制当前目录的存取规则

root 
  |-- foo
  |    |-- .ghs.yml
  |    |-- 1.txt 
  |    |-- 2.txt 
  |    |-- 3.txt 
  |    |-- 4.txt 
  |    `-- world.txt
  `-- bar
       `-- hello.txt

让我们先浏览下 foo 目录

现在假设我们要实现下面的效果:

  • foo 目录不能上传,不能新建目录和删除;
  • foo 目录中 2.txt3.txt 不显示;

注意是不显示,而不是不能访问;

.ghs.yml 需要填入下面的内容

upload: false
delete: false
accessTables:
- regex: 2.txt
  allow: false
- regex: 3.txt
  allow: false

刷新页面,你会发现 2.txt3.txt 不见了,也不能上传和删除了

但我们可以在路径后面加 ?json=true 查看目录和文件的详细信息,实际路径为 http://192.168.0.197:7050/foo?json=true

在这里插入图片描述

格式化之后看起来比较清楚

{
	"auth": {
		"upload": false,
		"delete": false,
		"users": null,
		"AccessTables": [{
			"Regex": "2.txt",
			"Allow": false
		}, {
			"Regex": "3.txt",
			"Allow": false
		}]
	},
	"files": [{
		"name": "4.txt",
		"path": "foo/4.txt",
		"type": "file",
		"size": 5,
		"mtime": 1659102355340
	}, {
		"name": "world.txt",
		"path": "foo/world.txt",
		"type": "file",
		"size": 3557,
		"mtime": 1658153450866
	}, {
		"name": ".ghs.yml",
		"path": "foo/.ghs.yml",
		"type": "file",
		"size": 101,
		"mtime": 1659113046044
	}, {
		"name": "1.txt",
		"path": "foo/1.txt",
		"type": "file",
		"size": 3557,
		"mtime": 1658153450866
	}]
}

所以你还是可以很轻松访问到隐藏文件的,比如:http://192.168.0.197:7050/foo/2.txt

参考文档

codeskyblue/gohttpserver: The best HTTP Static File Server, write with golang+vue
地址:https://github.com/codeskyblue/gohttpserver

gohttp是一个http的文件服务器,因为是用go语言写的,所以加了一个go的抬头。之所以用go是因为发布起来是一个二进制文件,不同的平台都可以用,而且没有依赖问题,且稳定性也很好。    这个软件从很久以前就开始写了,第一次提交实在2015年的2月11号,作为组内存放公共文件的一个小软件。一开始的功能只有像 python -mSimpleHTTPServer 那种简单的功能。但是当我看到gotty这个软件的时候 ,意思到一个简单的软件竟然可以做到如此出色。之后这个http文件服务器就不断的被优化着,保持着简单易用的同时,开始赋予了它最强大的功能。    这个软件有很多的技术,隐藏在了其简易朴实的外表之下。请容我简单的介绍下pjax简称页面ajax技术        在gohttp进行目录却换的时候,你会看到地址栏在变,但是页面却是局部刷新的。各种文件的预览功能        所有常见的代码都可以直接在gohttp下预览,如果你用的是chrome浏览器的话,包括pdf,mp4,mp3都可以直接预览。实时的目录zip打包下载        强大的体现在它是实时的,即使你马上在目录下新增了一个文件,点击目录zip下载的时候,这个文件也会出现在里面。二维码的支持        手机下载往往没有电脑下载这么容易,点点鼠标就可以了。但是有了二维码,手机也只用扫一扫就可以下载了。苹果应用的在线安装        iphone应用安装包的扩展名是ipa,但是你还必须有个额外的plist文件才行。以及生成一个itms-services开头的地址,gohttp直接把这些工作都做了,ipa的解析,plist以及下载页面的自动生成。同普通文件一样,只需要点击右侧的生成二维码,然后用iphone手机扫描下,iphone的应用就安装到了你的手机上。PS:坑爹的苹果,就不能像安卓一样简单一点吗README文件的自动显示像github网站上的项目,readme文件都会作为项目的介绍自动显示出来。gohttp也借鉴了一下。如果目录下有readme文件的话,就会自动预览出来。文件上传简单的文件上传也有着出色的表现,可以看到上传的进度,以及支持拖拽的方式上传文件。为了更方便的结合自动发布的功能,文件上传也有其相应的API,上传的时候也可是指定软件的版本号,存储结构参考了python,pypi官方的模式。还有很多很多其他的特性    http basic auth认证,不同文件不同的icon,gzip支持,目录的整合显示.... 还有很多功能等待着你去发现和有能力的你去补充。    截图  标签:gohttp
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值