文章目录
  1. 1. 使用dokcer运行filebrowser
  2. 2. 浏览器访问
  3. 3. 通过API上传文件

最近使用gitea与act_runner搭建自动构建流水线,构建出的artificat产物需要上传后再进行下载部署,需要一个简单的文件服务器。 使用AI问答一番后,filebrowser有上传、下载、用户认证功能, 能满足我简单的需求, 于是决定尝试下,不用重新造轮子了。 minio也是有相同的功能,之前有简单的运行, 了解不深入。

filebrowser是使用golang开发的,开源的。 可以直接下载二进制文件,或者使用docker镜像来运行。docker镜像提供了2种,基于Alpine image或者S6 Overlay image。 S6 Overlay image是使用s6作为启动进程(pid=1),这个倒是第一次了解,之前接触的太少了。

参考:

  1. filebrowser github https://github.com/filebrowser/filebrowser
  2. 安装指南 https://filebrowser.org/installation.html
  3. s6 overlay https://github.com/just-containers/s6-overlay
  4. S6 https://skarnet.org/software/s6/overview.html
  5. tini https://github.com/krallin/tini
  6. fail2ban https://github.com/fail2ban/fail2ban

使用dokcer运行filebrowser

如下使用docker来运行filebrowser。首次启动时会创建配置文件与初始化数据库, 控制台会打印出admin的密码,需要记录下来。如果密码丢失,需要删除配置文件后重新进行初始化。
首次时没有添加-d参数,以前台方式运行, 这样admin的密码才会在控制台打印出来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建目录
mkdir -p filebrowser/data filebrowser/database filebrowser/config
cd filebrowser

# 运行
docker run \
--name filebrowser \
-v ./data:/srv \
-v ./database:/database \
-v ./config:/config \
#-e PUID=$(id -u) \
#-e PGID=$(id -g) \
-p 7041:80 \
filebrowser/filebrowser

# 重新打开一个sh窗口,请求filebrowser
curl http://localhost:7041

在docker容器中运行命令查看配置文件信息。

1
2
3
docker exec -it filebrowser sh
$ filebrowser config cat --config /config/settings.json
$ filebrowser config set --auth.method=json --config /config/settings.json

浏览器访问

浏览器访问 http://localhost:7041, 如下是主界面,显示当前的文件列表,双击文件名打开编辑器来显示内容。右上角有上传、下载按钮。

通过API上传文件

filebrowser默认是使用JSON认证, 通过API访问时需要先使用用户名、密码获取token, 然后在请求头中使用X-Auth参数进行传递。

  • 登陆 curl -X POST --data '{"username":"admin", "password":"pwd"}' -H "content-type: application/json" http://localhost:7041/api/login
  • 创建文件信息 curl -X POST -H "X-Auth: $token" -H "Upload-Length: 1000" http://localhost:7041/api/tus/file-name
  • 上传文件 curl -X PATCH -H "X-Auth: $token" -H "Upload-Offset: 0" -H "Content-Type: application/offset+octet-stream" --data-binary @file.zip http://localhost:7041/api/tus/file-name
  • 分享文件 curl -X POST -H "X-Auth: $token" --data '{"password":"","expires":"1","unit":"hours"}' http://localhost:7041/api/share/file-name?expires=1&unit=hours
  • 下载分享的文件 curl -X GET http://localhost:7041/api/public/dl/El4Sjktx
文章目录
  1. 1. 使用dokcer运行filebrowser
  2. 2. 浏览器访问
  3. 3. 通过API上传文件