ConvertX:Docker 部署自托管文件格式转换
本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 28 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。
它是什么
ConvertX 是一个自托管的在线文件转换服务:上传文件、选目标格式,服务端调用 ImageMagick、FFmpeg、LibreOffice、Pandoc 等工具完成转换。支持文档、图片、音频、视频、电子书等常见格式。
放在内网最大的好处是文件不外传——不用再把合同、截图、录音丢给各种在线转换网站。
前置条件
- 一台 Linux 服务器(2C2G 起;视频转码吃 CPU,建议 4C);
- 已安装 Docker 与 Compose v2;
- 磁盘留足空间:转换过程会产生临时文件。
# 安装 Docker(已安装可跳过)
curl -fsSL https://get.docker.com | sh
# 目录约定
mkdir -p /srv/docker/active/convertx && cd /srv/docker/active/convertx
镜像地址
c4illin/convertx:latest
目录结构
/srv/docker/active/convertx/
├── docker-compose.yml
├── .env
└── data/ # 转换记录与临时文件
部署步骤
cat > .env <<'EOF'
CONVERTX_JWT_SECRET=<随机长字符串>
EOF
chmod 600 .env
# docker-compose.yml
services:
convertx:
image: c4illin/convertx:latest
container_name: convertx
restart: unless-stopped
ports:
- "3455:3000"
volumes:
- ./data:/app/data
environment:
- JWT_SECRET=${CONVERTX_JWT_SECRET}
- HTTP_ALLOWED=true
- LANGUAGE=zh
docker compose up -d
docker compose logs -f --tail=100
浏览器打开 http://<SERVER_IP>:3455。
关键配置
| 项 | 说明 |
|---|---|
3455:3000 |
宿主机 3455 → 容器 3000 |
JWT_SECRET |
会话签名密钥,必须换成随机值,不可用示例 |
HTTP_ALLOWED=true |
允许 HTTP 访问;走 HTTPS 反代时可保留,纯 HTTP 内网也可用 |
LANGUAGE=zh |
界面中文 |
./data |
转换记录与临时文件,要持久化 |
注意事项
- 官方镜像里已经打包了常用转换工具,但不是所有格式都支持,冷门格式会报错,属正常;
- 视频转码非常吃 CPU 和磁盘 IO,别在低配 NAS 上一次传多个大视频;
- 服务本身没有账号体系,只在内网或加反代认证后使用;
- 上传大文件时注意反代
client_max_body_size,否则会 413; latest标签升级不可控,升级前备份data/并记录当前镜像 digest。
备份与升级
# 备份数据
tar czf "convertx-$(date +%F).tar.gz" ./data
# 升级
docker compose pull
docker compose up -d
# 回滚:compose 里把 tag 改回旧版本,再 up -d
- 转换记录不重要的话,
data/也可以不备份,但升级前至少留一份; - 定期清理
data/里的临时文件,避免把盘写满。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果