docker系列 使用docker基于go-file搭建支持用户认证的轻量级文件分享系统
本文最后更新于 344 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。

前言

关于可以分享文件的app,我前面介绍过好几个了,复杂的有私人COS平台的minio(我主要用来提供大文件的下载,毕竟minio的永久文件链接需要手动生成,略low,且效率也低下,具体配置步骤参见:docker系列 搭建基于minio的私人COS平台),轻量级的有pingvin-share(我主要用来存放博客上需要分享的小文件,具体配置步骤参见:docker系列 使用docker基于pingvin-share部署轻量级文件共享平台),而平时给朋友发送文本和小文件是用的cryptgeon提供的阅后即焚(具体配置步骤参见:docker系列 使用docker基于cryptgeon搭建自己的阅后即焚应用),讲道理,其实基本也足够应付平时的各种场景了。

不过美中不足的是,给朋友发文本或者文件的时候,用阅后即焚总感觉有点偷偷摸摸的,有点怕被网监误会我在干坏事。。。而且阅后即焚的app基本都是不需要注册的,导致我都不敢光明正大的用(毕竟链接的主机名会暴露我的网址),怕被不当使用之后导致我被查水表~~~(在天朝生活需小心谨慎)。而pingvin-share虽然支持注册,但是其本质上是用固定链接分享一个文件夹,虽然也可以每次新建一个链接来分享单独的文件,但是操作稍嫌复杂并且也有大炮打蚊子的感觉,所以个人觉得还是用在博客上最好。

那么有没有平时可以正大光明的用来给朋友或者用户或者其他人分享文件的app呢?今天无意中发现了,那就是go-file。

这篇文章就来介绍了支持用户认证的轻量级文件分享app:go-file。

部署go-file

创建宿主机上需要挂载到容器内部的目录

mkdir -p /docker/go-file/data

这个目录也是用来存放需要分享的视频、文件、图片等,所以尽量根据需要选择一个好的存储位置。

搭建go-file

docker run格式搭建go-file的命令如下:

docker run --name go-file -d --restart=always \
   -p 3000:3000 \ #映射宿主机上的3000端口到容器内部的3000端口,请根据实际环境修改
   -e TZ=Asia/Shanghai \ #设定容器时区
   -v /docker/go-file/data:/data \ #设定宿主机上需要挂载到容器内部的目录
   justsong/go-file

使用合适的方式发布go-file到公网(可选)

除非是只在局域网中使用,否则go-file肯定需要发布到公网上,大家需要根据实际环境和自己使用的反向代理选择最适合自己的发布方式,可以参考我以前的几篇文章:
1、docker系列 使用docker基于NPM搭建自己的反向代理
2、linux面板系列 配置反向代理并使用非443端口进行发布
3、家庭数据中心系列 通过国内备案云主机白嫖cloudflare实现国外快速访问国内站点
4、家庭数据中心系列 通过无公网IP的家庭宽带白嫖cloudflare实现快速建站(通用)

其中第1,2种方式适合有公网ip却没有合法443端口的环境(家庭宽带、未备案的云主机),需要在url后面加非标端口(如果使用cloudflare建站的不需要加端口,但是需要自定义源站端口,这个可以参考:家庭数据中心系列 通过cloudflare的Origin Rules解决建站有公网IP却没有合法的80、443端口的问题)。第3种方式适合有备案的云主机,第4种方式适合所有环境(包括没有公网IP的环境),也是我建议的方式(不管你的环境有没有公网IP,因为这种方式不需要直接在公网上跑https流量)。

假设发布后go-file的访问方式为https://example.com

访问并配置go-file

使用https://example.com访问go-file(局域网使用http://宿主机ip:3000访问),界面如下图:

image.png

首次访问直接点击上图右上角红框中的"登录",在用户登陆界面,使用默认用户名"admin",默认密码"123456",然后点击"提交":
image.png

登录之后点击右上角红框中的"admin"菜单下的"系统管理":
image.png

然后修改默认的管理员密码(注意:更改显示名称不是更改账号的用户名),然后点击"提交":
image.png

上图中的"账号管理"界面还能添加"普通用户"和"管理员用户":
image.png

以及"管理用户":
image.png

在"系统设置"里可以设置上传下载分别需要的最低权限:
image.png

如果大家只是用来自己用,则"文件上传"和"图片上传"都选管理员即可,我是因为考虑到朋友也能使用,所以上传的最低权限选择了"普通用户",如下图:
image.png

使用go-file分享文件

分享文本文件

为什么要单独把文本文件拿出来说呢?因为这涉及到另外一种应用方式:终端下的直接调用。

比如想向服务器内粘贴一段代码,又担心各种字符格式问题,这时候你可以直接将txt文本文件上传至 go-file ,然后通过 wget https://example.com/xxxxxxxx.txt -O file_name 来将文本文件直接下载到本地并重命名;又或者新装了一台没有图形化界面的服务器,没开 sshd 服务,没有可用的编辑器去编辑 sources.list 文件,直接用默认源安装一个编辑器又太慢,此时可以用 curl https://example.com/xxxxxxxx.txt > /etc/apt/sources.listwget https://example.com/xxxxxxxx.txt -O /etc/apt/sources.list 来更新 apt 源,然后使用 apt update进行更新,或者其他诸如之类的场景。讲道理minio也可以,但是相对步骤就繁琐了,不如go-file方便。

其实讲到这个功能,以前pasteme是最方便的,不过被请喝茶以后就不行了。

分享文本很简单,直接点击右上角红框中的"上传":

image.png

这里有两种方式,一种直接把文本复制到"描述信息",然后直接点上传,会自动生成;也可以用下方红框中的选择,选择一个本地的文本文件然后点上传:
image.png

上传完毕之后直接在点击右边红框中的复制按钮就可以获得文件地址:
image.png

获得文件地址之后然后就可以通过上方描述的几种方式进行操作了。

分享视频文件

其实上传的步骤是一样的,只是上传完视频文件以后,除了同样可以使用分享链接进行分享以外,还可以直接通过视频菜单进行在线播放:

image.png

当然,这个实际上是浏览器直接播放,所以需要浏览器支持的格式(或者安装播放器)。

简易图床功能

在图床菜单下,直接复制粘贴或者拖拽上传图片都可以:

image.png

为啥说简易图床?看右边红框,只有2种格式,一种http(s)或者markdown:
image.png

仅从提供的图片链接而言,相比chevereto就显得格外简陋:
image.png

image.png

更别说chevereto还有其他功能~。不过,虽然简陋,但是也提供了和picgo配合的插件:
image.png

总体而言只能说能用,大家视情况选择吧。

在线预览

如果是在首页直接上传文件的,可以在线预览:

image.png

为啥我要说在首页?因为默认go-file就只有一个image文件夹,用来存放在图床菜单下上传的图片,而其他直接上传的文件都在系统自动生成"年-月"命名的文件夹里,在这个自动生成的文件夹下的文件,都可以在首页直接看到,并且能够:删除、二维码分享、复制链接地址、在线预览和直接下载,如上图右下方的5个图标。

在自己创建的文件夹上传文件

如果你在宿主机系统里/docker/go-file/data/upload目录下新建其他的文件夹,比如我按我的习惯新建了file、text、video这3个文件夹,则选择go-file的"文件"菜单就会看到新的目录:

image.png

上图下方蓝框内的文件是系统自动生成的,红框内的文件是我直接在宿主机创建的。在自己创建的文件夹里上传的文件是不会出现在首页的,所以也无法在页面上直接删除、生成二维码和在线预览,只能进入文件夹里下载和复制分享链接:

image.png

如果大家希望上传的文件在首页中不显示出来,就可以用这种方式。

总结

总体而言,go-file算是补齐了我平时给其他人分享文件时候的小短板,同时支持用户认证这点让我很满意,总算有个能够正大光明的拿来给人分享的工具了,如果在自建的目录里上传文件,在首页上也看不到,私密性也得到了保证。同时我也通过自定义主机名把应用接入了cloudflare进行流量清洗,也不怕攻击了,完美。

不过也有一些小遗憾,比如完全没有文件管理的功能,除了在首页上传的文件可以在页面上直接删除以外,在自己创建的文件夹里上传的文件,只能去宿主机里进行删除。。同时,也不支持分享加密码,也不支持阅读次数和时间控制。。。最起码,有个选项能控制首页是不是显示访客文件嘛,这个的确有点蛋痛,我就算在首页上传了文件,也并不是希望人人来都能访问啊,我可能只想通过链接分享呢?这点上peertube的视频分享就不错:

image.png

希望go-file以后能新增这些功能吧。

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       

本站已禁用鼠标右键和各种快捷键,代码块内容可以直接在右上角点击复制按钮进行复制

zh_CN