临时文件上传系统Plik

什么是 Plik ?

Plik 是一个基于 Go 语言的可扩展且用户友好的临时文件上传系统(类似于 Wetransfer)。

软件主要特点:

  • 强大的命令行客户端
  • 易于使用的 Web 用户界面
  • 多个数据后端:文件、OpenStack SwiftS3Google Cloud Storage
  • 多个元数据后端:Sqlite3PostgreSQLMySQL
  • OneShot:文件在第一次下载后销毁
  • 流式传输:文件从上传者直接流式传输给下载者(服务器端不存储任何内容)
  • 可移动的:允许上传者随时删除文件
  • TTL:自定义过期日期
  • 密码:使用登录/密码(基本认证)保护上传
  • 评论:添加自定义信息(使用 Markdown 格式)
  • 用户认证:本地/Google/OVH
  • 上传限制:IP源/令牌
  • 管理员命令行界面和 Web 用户界面
  • 服务器端加密(使用 S3 数据后端)
  • 多架构构建和 Docker 镜像
  • ShareX Uploader:直接集成到 ShareX
  • plikSharp:适用于 Plik.NET API 客户端
  • Filelink for PlikThunderbird 插件,用于将附件上传到 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

端口

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

bash 复制代码
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8566 8080

命令行安装

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

bash 复制代码
# 新建文件夹 plik 和 子目录
mkdir -p /volume1/docker/plik/data

# 进入 plik 目录
cd /volume1/docker/plik

# 修改目录权限
chmod a+rw /data

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name plik \
   -p 8566:8080 \
   -v $(pwd)/data:/home/plik/server/files \
   rootgg/plik

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

yaml 复制代码
version: '3'

services:
  plik:
    image: rootgg/plik
    container_name: plik
    restart: unless-stopped
    ports:
      - 8566:8080
    volumes:
      - ./data:/home/plik/server/files

然后执行下面的命令

bash 复制代码
# 新建文件夹 plik 和 子目录
mkdir -p /volume1/docker/plik/data

# 进入 plik 目录
cd /volume1/docker/plik

# 修改目录权限
chmod a+rw /data

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

# 一键启动
docker-compose up -d

运行

在浏览器中输入 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/plik
Plik

地址:https://plik.root.gg

相关推荐
“码”力全开12 小时前
打破芯片与协议壁垒:基于 Docker + 边缘计算的 GB28181/RTSP 视频智能管理平台架构设计与源码交付方案
docker·音视频·边缘计算
Albert Edison15 小时前
【Docker】Ubuntu22.04 安装 Docker 教程
运维·docker·容器
AI服务老曹15 小时前
基于Docker的低代码AI视频管理平台架构解析:打通GB28181/RTSP多协议,支持异构边缘计算与全源码交付
人工智能·低代码·docker
codefan※16 小时前
一键部署私人 LLM:Ollama + Docker 极简指南
运维·docker·容器·大模型·llm·本地部署·ollama
IT策士18 小时前
Docker 网络进阶:容器间通信与 DNS 解析
网络·docker·容器
热爱Liunx的丘丘人19 小时前
Docker Compose 实现 Nginx 与 MySQL 多容器服务编排
mysql·nginx·docker
热爱Liunx的丘丘人19 小时前
Docker
运维·docker·容器
sszdzq20 小时前
docker 安装 rocketmq + dashboard
docker·容器·rocketmq
ai产品老杨20 小时前
深度解析:基于 Docker 与异构计算的下一代 AI 视频管理平台架构(附 GB28181/RTSP 统一接入与源码交付方案)
人工智能·docker·音视频
ruanyongjing21 小时前
元数据驱动开发 - 面向对象编程思想的补充 (十二)
nginx·macos·docker