用Docker快速部署一个文件中转站:文件快递柜

推荐一个 Python 项目 FileCodeBox,中文名:文件快递柜。项目介绍:匿名口令分享文本,文件,像拿快递一样取文件。

Github 项目地址:

https://github.com/vastsa/FileCodeBo

使用效果:

菜刀中转

模拟的是丰巢快递柜,输入密码即可取出文件。

左边的按钮是上传入口:

菜刀中转

支持设置有效期,过期后文件会自动删除。

右边的按钮是快递柜入口,输入取件码后可以重复打开:

菜刀中转

同时也有删除权限,删除文件后,快递柜中显示为空。

文件柜是匿名的,不同 IP 看到的内容是不一样的。相同 IP 的客户端在重复上传时能看到之前自己上传的文件

分享文件时可以复制链接,或将取件码告诉对方。使用逻辑与实体快递柜一致,分存件人和取件人两种角色。存件人存件时可以看到所有之前存入的文件,取件人只能看到指定的文件。

下面说下安装和部署:

通过 docker 部署服务,提前创建数据目录,并规划好服务端口。比如这里使用 /opt/file_code_box 作为数据目录,8080端口作为服务端口:

$ mkdir -p /opt/file_code_box
$ docker run -d \
--restart=always \
-p 3088:12345 \
-v /Data/AppData/transfer/file_code_box:/app/data \
--name filecodebox \
lanol/filecodebox:beta


Unable to find image 'lanol/filecodebox:beta' locally
beta: Pulling from lanol/filecodebox
b4d181a07f80: Pull complete
a1111a8f2ec3: Pull complete
445d04774519: Pull complete
24f3f85d41f3: Pull complete
d299f7fb612d: Pull complete
7e1c0964f4bd: Pull complete
4d9e8893ce72: Pull complete
35546af3d9bd: Pull complete
4f4fb700ef54: Pull complete
fd816f9024da: Pull complete
Digest: sha256:2d3a00d05aa0363ad9c906fde3904eb8973ec19eb088d13d0e921a45e77b5795
Status: Downloaded newer image for lanol/filecodebox:beta
d423b6a5eca1c0bef002fe4434643350066651d5cf742afc8b512d9f9c4d0fa3

在 /Data/AppData/transfer/f 目录下会生成配置文件 .env2,里面有管理员密码:

菜刀中转

管理界面入口为:

http://<server-ip>/#/admin

输入密码后可以进入管理后台,在管理后台可以修改管理密码,也可以看到所有文件:

菜刀中转

菜刀中转

在知道取件码的情况下,可以通过 wget 下载文件:

``` $ wget http://:8080/share/select?code=37725 -O test.gif

HTTP request sent, awaiting response... 200 OK Length: 432617 (422K) [image/gif] Saving to: `test.gif'

 0K .......... .......... .......... .......... .......... 11% 6.61M 0s
50K .......... .......... .......... .......... .......... 23%  106M 0s

100K .......... .......... .......... .......... .......... 35% 53.1M 0s 150K .......... .......... .......... .......... .......... 47% 37.6M 0s 200K .......... .......... .......... .......... .......... 59% 50.5M 0s 250K .......... .......... .......... .......... .......... 71% 43.0M 0s 300K .......... .......... .......... .......... .......... 82% 41.2M 0s 350K .......... .......... .......... .......... .......... 94% 66.1M 0s 400K .......... .......... .. 100% 60.1M=0.01s

2024-02-25 21:11:35 (28.5 MB/s) - `test.gif' saved [432617/432617]