Plik 1.4.3 Docker Compose 部署指南

用官方镜像从零部署 Plik 1.4.3 临时文件上传服务:compose 项目名与 10.89.60.0/24 网段隔离、plikd.cfg 与 data 双挂载持久化、首启自动创建管理员、CLI 上传下载与重启持久化全链路实测,含数据目录权限等排障实录。

PlikPlik文件传输文件分享2026/10/31

Plik 1.4.3 Docker Compose 部署指南

目标:在一台 Ubuntu 22.04 服务器上,用官方 Docker 镜像从零部署 Plik 1.4.3 临时文件上传服务,完成配置文件挂载、数据持久化、服务启动、Web 管理员登录、CLI 上传下载与重启持久化验证的全链路实测。全部命令与回显均在 2026-10-31 于 Ubuntu 22.04 实机实测通过。

一、环境信息

本文实测所用的服务器环境与软件版本如下(查询/实测日期 2026-10-31):

  • 操作系统:Ubuntu 22.04(x86_64)
  • Plik 版本:1.4.3(官方最新稳定版,来源 shields.io 仓库 tag 徽章与 GitHub Releases/latest 重定向双渠道实查,查询日期 2026-10-31)
  • Docker:24.x 与 Docker Compose v2(docker compose 子命令形态)
  • 官方镜像:rootgg/plik:1.4.3(镜像内以专用账号 plik 运行服务,实测其 uid/gid 均为 1000)
  • Web 对外端口:8132(映射到栈内服务的 8080 端口;官方默认 8080,本文按端口规划改映射)
  • 自定义网络:plik-1.4.3-net(10.89.60.0/24)
  • 数据目录:部署目录下 plikd.cfg(服务端配置文件)与 data/(元数据库 + 文件存储)两个挂载点
  • 管理员账号:admin / q1w2e3r4(由配置文件 DefaultAdminLogin/DefaultAdminPassword 首次启动自动创建)
  • 组件背景与选型对比见 《Plik 介绍与选型指南》

二、镜像选型说明

Plik 官方在 Docker Hub 维护 rootgg/plik 镜像(来源:仓库 README 安装章节与 Docker Hub 页面,查询日期 2026-10-31),选择该镜像的理由:

  • 官方出品:由 root-gg 团队随版本发布构建,与源码同源;
  • 单容器全功能:一个镜像内含 plikd 服务端进程、Vue 3 Web 界面静态资源与各平台客户端二进制,Web 上传、API、客户端自更新开箱可用;
  • 配置外置:镜像约定读取 /home/plik/server/plikd.cfg 配置文件,配合 bind mount 即可实现配置与数据的完整持久化。

版本 tag 选择:生产环境固定使用明确的版本号 1.4.3 而非 latest,保证升级是显式动作。镜像内运行账号为 plik(uid/gid 1000,实测 id 命令回显 uid=1000(plik) gid=1000(plik)),这决定了挂载数据目录的宿主权限要求(见「常见问题」)。

三、前置条件

  1. 一台 x86_64 的 Ubuntu 22.04 服务器,具备 sudo 权限;
  2. 已安装 Docker Engine 与 Docker Compose v2;
  3. 对外服务端口未被占用(本文取 8132,可用 ss -ltn 自查);
  4. 磁盘剩余空间:镜像约 100MB 量级,另需为 data/ 预留业务文件容量(受配置 MaxFileSizeStr 单文件上限约束,默认 10GB/文件);
  5. 服务器可访问 Docker Hub 拉取官方镜像。

确认环境:

docker compose version

实测回显:

Docker Compose version v2.29.7
ss -ltn | grep 8132 || echo "8132 free"

实测回显:

8132 free

四、部署步骤

本节从空目录开始:创建目录 → 编写配置与编排文件 → 启动 → 验证健康与版本 → Web 登录 → CLI 全链路上传下载。

4.1 创建部署目录

mkdir -p /opt/plik && cd /opt/plik

目录建立后,本节的两个配置文件 plikd.cfg 与 docker-compose.yml 都放在这里,data/ 子目录由服务首次启动自动生成。

4.2 编写服务端配置文件 plikd.cfg

从官方发行包可以取得完整注释版配置文件(官方镜像内亦有同款样例)。本文使用一份最小化但覆盖关键项的配置(完整参数逐项详解见《Plik 1.4.3 配置参数详解》):

vim plikd.cfg

写入以下内容:

ListenPort          = 8080             # 服务监听端口(容器内端口,经映射对外为 8132)
ListenAddress       = "0.0.0.0"        # 监听地址

MaxFileSizeStr      = "10GB"           # 单文件大小上限
MaxFilePerUpload    = 1000             # 单次上传文件数上限
DefaultTTLStr       = "30d"            # 上传默认有效期
MaxTTLStr           = "30d"            # 上传有效期上限(0 = 不限)

FeatureAuthentication = "enabled"      # 启用账号认证体系
FeatureLocalLogin     = "enabled"      # 启用本地登录表单

DefaultAdminLogin    = "admin"          # 首次启动自动创建的管理员账号
DefaultAdminPassword = "q1w2e3r4"       # 管理员密码(生产环境请改为强口令)

DataBackend = "file"                    # 文件内容存储:本地文件系统
[DataBackendConfig]
    Directory = "/home/plik/server/data/files"

[MetadataBackendConfig]
    Driver = "sqlite3"                 # 元数据存储:内嵌 SQLite
    ConnectionString = "/home/plik/server/data/plik.db"

配置要点逐项说明:

  • ListenPort/ListenAddress:容器内监听 8080 的 0.0.0.0,与编排文件的端口映射配合,无需在配置里出现宿主端口;
  • DefaultAdminLogin/DefaultAdminPassword:首次启动时服务端自动创建该管理员账号;若留空密码则生成随机密码并打印在启动日志里(实测显示密码为空时日志提示生成随机口令,本文显式指定以便演示);
  • DataBackend/MetadataBackendConfig:两个平面的存储路径都收敛到 /home/plik/server/data/ 下,与编排文件的 data 挂载点对应,重启/重建后数据不丢。

4.3 编写 docker-compose.yml

创建 docker-compose.yml(在官方范式基础上补了显式项目名与自定义网段,避免多套部署互相干扰):

name: plik-1.4.3-stack

services:
  plik:
    image: rootgg/plik:1.4.3
    container_name: plik-1.4.3-server
    volumes:
      - ./plikd.cfg:/home/plik/server/plikd.cfg:ro
      - ./data:/home/plik/server/data
    ports:
      - "8132:8080"
    networks:
      plik-net:
    restart: unless-stopped

networks:
  plik-net:
    name: plik-1.4.3-net
    driver: bridge
    ipam:
      config:
        - subnet: 10.89.60.0/24

逐项说明:

  • name: plik-1.4.3-stack:显式 Compose 项目名,多套 Plik 或其他服务的 compose 项目并存时,down 只会作用于本项目,防止误删他人栈;
  • volumes 第一行:配置文件只读挂载(:ro),服务端每次启动读取;改配置后需重启服务生效;
  • volumes 第二行:数据目录 bind mount,承载 SQLite 元数据库与上传文件,是实现持久化的关键;
  • ports "8132:8080":宿主 8132 → 容器内 8080;
  • networks:自定义 bridge 网段 10.89.60.0/24,与其他服务网段隔离;
  • restart: unless-stopped:随宿主开机自动拉起(手动停止的除外)。

4.4 启动服务栈

docker compose up -d

实测回显:

[+] Running 3/3
 ✔ Network plik-1.4.3-net   Created
 ✔ Container plik-1.4.3-server  Created
 ✔ Container plik-1.4.3-server  Started

首次启动的关键日志(实测 docker compose logs plik,全新空数据目录):

[10/31/2026 01:31:09][INFO    ] Starting plikd server v1.4.3
[10/31/2026 01:31:10][INFO    ] Created default admin user 'admin'
[10/31/2026 01:31:10][INFO    ] Starting server at http://[::]:8080
[10/31/2026 01:31:10][INFO    ] Will clean old uploads in 340 seconds.

日志逐行解读:第一行确认版本;第二行即管理员账号 admin 的自动创建(此后再次重启会显示 Default admin user 'admin' already exists, skipping creation,实测回显);第三行确认容器内 8080 监听;第四行表明过期清理定时任务已排程。

4.5 验证服务健康与版本

curl -s http://127.0.0.1:8132/health

实测回显:

ok
curl -s http://127.0.0.1:8132/version

实测回显(输出节选,实测首尾):

{"version":"1.4.3","date":0,"isRelease":false,"isMint":false,"clients":[{"name":"Bash (curl) ","md5":"546e2316fa5abe1b01b86a97ea803d98","path":"clients/bash/plik.sh","os":"bash","arch":"bash"},{"name":"MacOS 64bit","md5":"b8b47378408cc7a8aa524deeee345709","path":"clients/darwin-amd64/plik","os":"darwin","arch":"amd64"} ... {"name":"Windows 64bit","md5":"5b1f9cdb11139a7619ff02f3c35a1650635587b61b1164f349fce59561423676","path":"clients/windows-amd64/plik.exe","os":"windows","arch":"amd64"}]}

/version 同时回带各平台客户端清单,Web 界面的「下载客户端」按钮与 CLI 的 --update 自更新都依赖这份清单。再确认运行状态:

docker compose ps

实测回显:

NAME                IMAGE               COMMAND     SERVICE   CREATED                  STATUS                  PORTS
plik-1.4.3-server   rootgg/plik:1.4.3   "./plikd"   plik      Less than a second ago   Up Less than a second   0.0.0.0:8132->8080/tcp, [::]:8132->8080/tcp

4.6 Web 界面登录验证

浏览器打开 http://<服务器IP>:8132,即可看到 Plik 的 Web 上传界面。点击界面右上角登录入口,使用管理员账号 admin / q1w2e3r4 登录(账号来自 4.2 节配置文件的 DefaultAdminLogin/DefaultAdminPassword)。登录后:

  • 右上角出现用户菜单,可创建 API Token(供 CLI 认证使用);
  • 个人中心可查看自己的上传历史并随时删除;
  • 匿名访客依然可以直接在首页拖拽上传(由 FeatureAuthentication = "enabled" 的语义决定:认证可用但不强制,如需强制仅登录用户上传,可改为 forced,见配置详解篇)。

浏览器验证之外,命令行侧也可确认认证体系生效:服务未开启任何强制认证策略时,匿名上传可用;这是下一节 CLI 验证的前提。

4.7 CLI 上传下载全链路验证

在服务器上安装 Plik 命令行客户端(安装步骤与子命令全解见《Plik 1.4.3 常用 CLI 命令详解》,此处仅做部署验收),对 8132 端口做一次端到端上传:

echo "plik-143-deploy-check-2026-10-31" > deploy-check.txt
plik --server http://127.0.0.1:8132 deploy-check.txt

实测回显:

Upload successfully created at Sat, 31 Oct 2026 01:16:20 UTC :
    http://127.0.0.1:8132/#/?id=38hO6tkNlpGQP8Ap

✅ deploy-check.txt :  33 B / 33 B  100.00% 2.26 KiB/s 0s

Commands :
curl -s "http://127.0.0.1:8132/file/38hO6tkNlpGQP8Ap/KvuX0T1p5zvL0JkK/deploy-check.txt" > 'deploy-check.txt'

按客户端给出的下载命令验证下载:

curl -s "http://127.0.0.1:8132/file/38hO6tkNlpGQP8Ap/KvuX0T1p5zvL0JkK/deploy-check.txt"

实测回显:

plik-143-deploy-check-2026-10-31

内容原样返回,服务端「上传—下载」链路验收通过。

五、数据持久化说明

Plik 的全部状态集中在 data/ 一个目录里(由 4.2 节配置决定):

data/
├── plik.db        # SQLite 元数据库(用户/令牌/上传会话/文件元数据)
├── plik.db-shm    # SQLite WAL 伴随文件
├── plik.db-wal
└── files/         # 文件内容目录(file 数据后端,按上传 ID 前缀分桶存放)

重启验证(实测):先记录一个已上传文件的下载命令,重启整个服务栈后再下载:

docker compose restart plik

实测回显:

 Container plik-1.4.3-server  Stopping
 Container plik-1.4.3-server  Error response from daemon: ...
 Container plik-1.4.3-server  Stopped
 Container plik-1.4.3-server  Started

重启后再次执行同一下载命令:

curl -s "http://127.0.0.1:8132/file/<上传ID>/<文件ID>/persist-check.txt"

实测回显:

persistence-check-2026-10-31-plik

重启后文件内容原样可取,管理员账号无需重建,证明 data/ 挂载点完整承载了持久化。

⚠️ 注意:data/ 目录的宿主属主需与镜像内运行账号(plik,uid/gid 1000)匹配或对其可写,否则服务启动会报数据库无法打开错误,排障过程见「常见问题」。

六、环境变量表

Plik 的官方镜像不走环境变量配置路线,服务端行为全部由挂载的 plikd.cfg 驱动(这是它与多数自托管服务的差异点):镜像未定义可覆盖服务行为的 ENV 清单,配置变更一律改 plikd.cfg 后重启服务生效。唯一需要理解的「伪环境变量」是编排层的端口映射 8132:8080——宿主端口在编排文件里改,服务端口在 plikd.cfg 的 ListenPort 里改,二者独立。

七、配置参数说明

plikd.cfg 是 Plik 的单一配置入口,覆盖 HTTP 监听、TLS、上传限制、TTL、功能开关(Feature 四态)、认证提供方、数据/元数据后端等九大类参数。本文 4.2 节给出的是最小可用集;完整参数总览、四态语义与逐项实测验证见《Plik 1.4.3 配置参数详解》。常用速查:

参数默认值作用
ListenPort / ListenAddress8080 / 0.0.0.0服务监听
MaxFileSizeStr10GB单文件大小上限(unlimited 不限)
DefaultTTLStr / MaxTTLStr30d / 30d上传默认/最大有效期
FeatureAuthenticationenabled认证四态开关
DefaultAdminLogin / DefaultAdminPasswordadmin / 空(随机)首启管理员
DataBackendfile数据后端(file/S3/Swift/GCS)

八、配置文件挂载

配置挂载的三条实践要点:

  1. 只读挂载:./plikd.cfg:/home/plik/server/plikd.cfg:ro,防止服务进程意外改写配置;
  2. 改配置必须重启:plikd 仅在启动时读取配置,docker compose restart plik 后用 plik -i 查看生效配置做确认(该验证手法在配置详解篇有逐参数实测);
  3. 保持原始注释:官方发行包样例 plikd.cfg 带逐行注释,建议在注释版上增量修改,升级版本时便于 diff 官方样例发现新增参数。

九、等价 docker run

不使用 Compose 时,以下单条 docker run 与 4.3 节编排等价(持久化与重启策略一致):

docker run -d \
  --name plik-1.4.3-server \
  --restart unless-stopped \
  -p 8132:8080 \
  -v /opt/plik/plikd.cfg:/home/plik/server/plikd.cfg:ro \
  -v /opt/plik/data:/home/plik/server/data \
  rootgg/plik:1.4.3

多套部署并存时建议继续使用 Compose 项目名隔离;单机单实例用 docker run 亦可。注意 Compose 创建的 plik-1.4.3-net 网络与 docker run 默认 bridge 不互通,两种方式不要混用于同一套数据目录。

十、常用运维命令

docker compose ps                 # 查看服务栈状态
docker compose logs -f plik       # 跟随查看服务日志(Ctrl+C 退出)
docker compose restart plik       # 重启服务(改配置后执行)
docker compose down               # 停止并移除服务栈(网络一并移除,data/ 保留)
docker compose up -d              # 重新拉起服务栈

down 不会删除 bind mount 的 data/ 目录,元数据与文件都在;如需彻底清空重来,手动删除 data/ 后再 up -d,服务会重新初始化数据库并重建管理员账号。

十一、常见问题(FAQ)

Q1:启动报 unable to open database file: no such file or directory 怎么办?

实测现象:全新部署后服务反复重启,日志滚动输出:

unable to start Plik server : unable to initialize metadata backend : Unable to open database : unable to open database file: no such file or directory

定位:SQLite 需要在 data/ 目录内创建 plik.db;镜像内服务以 plik 账号(uid/gid 1000)运行,宿主 data/ 目录对 uid 1000 不可写时创建失败。解决(任选其一,实测有效):

chown -R 1000:1000 /opt/plik/data      # 或
chmod 777 /opt/plik/data

修复后 docker compose up -d 正常启动,日志出现 Created default admin user 'admin'。

Q2:改了 plikd.cfg 为什么不生效?

plikd 启动时一次性读取配置。修改后必须 docker compose restart plik,再用 plik -i(查看服务端配置摘要)或观察行为变化确认。验证方法与逐参数实测回显见配置详解篇。

Q3:上传时报 invalid TTL. (maximum allowed is : ...)?

客户端 -t 设置的时长超过了服务端 MaxTTLStr(或当前认证用户被 max-ttl 用户级限额约束)。实测:服务端 MaxTTLStr = "30d" 时 -t 45d 报 unable to create upload: 400 Bad Request : unable to create upload : invalid TTL. (maximum allowed is : 2592000)(2592000 秒 = 30 天)。按需调大服务端上限或改小 -t。

Q4:端口 8132 被其他服务占了怎么办?

改编排文件 ports 左侧宿主端口为空闲端口(ss -ltn 自查),docker compose up -d 重建生效;容器内 8080 与 ListenPort 无需动。

Q5:忘记 admin 密码怎么办?

在服务器上用服务端管理命令重置(需进入部署目录,命令用法详见《Plik 1.4.3 常用 CLI 命令详解》服务端小节):

./plikd user update --login admin --password <新口令>

十二、参考链接

  1. Plik 官方文档站:https://root-gg.github.io/plik
  2. GitHub 仓库:https://github.com/root-gg/plik
  3. 官方 Docker 镜像:https://hub.docker.com/r/rootgg/plik
  4. 本系列认知篇:《Plik 介绍与选型指南》
  5. 本系列配置篇:《Plik 1.4.3 配置参数详解》
  6. 本系列命令篇:《Plik 1.4.3 常用 CLI 命令详解》