临时文件上传系统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

相关推荐
你那是什么调调8 分钟前
Docker 中运行 JAR 文件
docker·容器·jar
细心的莽夫15 分钟前
Elasticsearch复习笔记
java·大数据·spring boot·笔记·后端·elasticsearch·docker
程序员阿鹏25 分钟前
实现SpringBoot底层机制【Tomcat启动分析+Spring容器初始化+Tomcat 如何关联 Spring容器】
java·spring boot·后端·spring·docker·tomcat·intellij-idea
爱的叹息2 小时前
本地(NAS/服务器)与云端(Docker/Kubernetes)部署详解与对比
服务器·docker·kubernetes
itachi-uchiha3 小时前
Docker配置带证书的远程访问监听
docker·容器·tls
lizhou8284 小时前
IDEA中Quarkus框架(3.13版本)容器编排、压测与调优、注意事项等
docker·云原生·intellij-idea·quarkus
时迁2477 小时前
【k8s】docker、k8s、虚拟机的区别以及使用场景
docker·容器·kubernetes
ONETHING_CLOUD_27 小时前
设备存储空间不足怎么办?
数据库·电脑·备份·数据存储·网盘·存储空间·数码知识
YUELEI1188 小时前
Centos9安装docker
运维·docker·容器
andrew_12198 小时前
docker底层原理简述
linux·docker·容器