临时文件上传系统Plik
什么是 Plik ?
Plik是一个基于Go语言的可扩展且用户友好的临时文件上传系统(类似于Wetransfer)。
软件主要特点:
- 强大的命令行客户端
- 易于使用的
Web用户界面 - 多个数据后端:文件、
OpenStack Swift、S3、Google Cloud Storage - 多个元数据后端:
Sqlite3、PostgreSQL、MySQL OneShot:文件在第一次下载后销毁- 流式传输:文件从上传者直接流式传输给下载者(服务器端不存储任何内容)
- 可移动的:允许上传者随时删除文件
TTL:自定义过期日期- 密码:使用登录/密码(基本认证)保护上传
- 评论:添加自定义信息(使用
Markdown格式) - 用户认证:本地/
Google/OVH - 上传限制:
IP源/令牌 - 管理员命令行界面和
Web用户界面 - 服务器端加密(使用
S3数据后端) - 多架构构建和
Docker镜像 ShareX Uploader:直接集成到ShareX中plikSharp:适用于Plik的.NET API客户端Filelink for Plik:Thunderbird插件,用于将附件上传到Plik

官方提供了在线 demo,地址:https://plik.root.gg
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 plik ,选择第一个 rootgg/plik,版本选择 latest。
本文写作时,
latest版本对应为1.3.8;

卷
在 docker 文件夹中,创建一个新文件夹 plik,并在其中建一个子文件夹 data
记得给
data目录新增Everyone的读写权限,否则上传文件的时候会报错

| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/plik/data |
/home/plik/server/files |
存放上传文件 |
一些高级特性,需挂载设置文件
plikd.cfg到容器的/home/plik/server/plikd.cfg,感兴趣的可以参考官方文档:https://github.com/root-gg/plik/blob/master/documentation/docker.md

端口
本地端口不冲突就行,不确定的话可以用命令查一下
1 | # 查看端口占用 |
| 本地端口 | 容器端口 |
|---|---|
8566 |
8080 |

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 plik 和 子目录 |
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | version: '3' |
然后执行下面的命令
1 | # 新建文件夹 plik 和 子目录 |
运行
在浏览器中输入 http://群晖IP:8566 就能看到主界面

左上角是一些开关项,鼠标移动到问号上,会有提示
Destruct after the first download ?:第一次下载后销毁,意思就是开启后,第一次下载后,文件立即从服务器删除Streaming ?:文件从上传者流式传输到下载者(服务器端不存储任何内容)Removable ?:上传者可以随时删除文件Password ?:启用后,上传和下载之前需要输入密码Comments (Markdown) ?:启用后,可以在上传的内容中添加自定义消息(Markdown格式)

老苏使用了默认状态,有兴趣可以自己试试
点 Add files 选择文件

点 Upload 开始上传,点 Remove 可以删除

上传成功之后

可以把二维码或者 URL 分享给别人,微信扫码后就可以下载了

上传的文件保存在 /docker/plik/data 目录中,但并不是原来的文件名

除了网页外, Plik 还支持命令行客户端

另外 Plik 还提供了 REST-full API 来管理上传和获取文件,感兴趣的请参考官方文档:https://github.com/root-gg/plik/blob/master/documentation/api.md
参考文档
root-gg/plik: Plik is a temporary file upload system (Wetransfer like) in Go.
地址:https://github.com/root-gg/plikPlik
地址:https://plik.root.gg