
解读:ConvertX——自托管在线文件转换器,1000+ 格式
本文是对开源项目 ConvertX 的摘要与评论。抓取时仓库约 ★19214、forks≈1104、开源许可 AGPL-3.0,主语言 TypeScript;完整能力与部署以仓库 README为准。插图为 GitHub 社交预览。
这篇在说什么
ConvertX 定位很直接:可自托管的在线文件转换器。你在浏览器里上传文件,选目标格式,批量转换;支持密码保护与多账号。技术栈是 TypeScript + Bun + Elysia(Bun 是偏高性能的 JavaScript 运行时,Elysia 是跑在其上的 Web 框架),对外主打 Docker 镜像(ghcr.io/c4illin/convertx 与 Docker Hub)。
它没有自研一整套编解码器,而是把一批已经成熟的转换引擎挂到同一套 Web UI 后面。对用户来说,界面像「免费在线转换网站」;对运维来说,数据可以留在自己的机器或 NAS 上——这正是自托管赛道的核心卖点。
先记住一句:ConvertX 卖的是产品封装与数据边界,不是又一个从零发明的编解码算法。 下面先讲它解决什么问题,再看引擎清单、部署旋钮、许可与边界。

它解决什么问题
公开的在线转换站用起来方便,但合同扫描件、内部截图、会议录音一旦上传,就等于把文件交给了别人的服务器。家庭实验室和小团队常想要一个折中:浏览器体验保留,数据不出内网。ConvertX 就是这类「格式万能插座」:一个人装好,全家人或全组同事用同一个入口转 HEIC、转 PDF、转字幕、转电子书。
另一类痛点是「工具太散」。图像靠 ImageMagick,文档靠 LibreOffice,音视频靠 FFmpeg,电子书靠 Calibre——每换一种格式就要记一套命令,还要处理依赖安装与路径。对非命令行用户,这套门槛本身就会把「转个格式」拖成半天。ConvertX 把这些引擎收进同一产品,让大多数日常转换回到浏览器里完成。
背后挂了哪些引擎
README 用表格列出转换器与大致格式覆盖,例如:图像侧有 ImageMagick、GraphicsMagick、libvips、libjxl、libheif、Inkscape、resvg、Potrace、VTracer 等;文档与电子书侧有 LibreOffice、Pandoc、Calibre、DjVuLibre、XeLaTeX、Microsoft Markitdown 等;音视频靠 FFmpeg;三维靠 Assimp;结构化数据靠 Dasel。官方宣称合计支持 1000+ 格式(部分 FFmpeg 格式存在重复计数,读数字时宜留一点余量)。缺某个转换器时,仓库 issue / PR 里也有「converter request」一类入口,说明扩展路径是开放的。
这种「聚合引擎」路线有个直接后果:镜像会偏大,首次拉取与磁盘占用都要按「全家桶」来估,而不是按一个轻量 Node 服务来估。你换来的是覆盖面与统一入口,付出的是资源与维护面。
你能拿来做什么
家庭或小团队私有转换站。 本机或 NAS 起一个 Docker,映射 3000 端口,挂上 ./data,设置 JWT_SECRET 与匹配宿主机的 PUID / PGID。首次访问创建管理员账号;不要长时间保持「未配置且对公网开放」——任何人都能注册第一个账号。若登录异常,先确认你是通过 localhost 或 HTTPS 访问;非加密 HTTP 时可能需要显式打开 HTTP_ALLOWED。
批量转与自动清理。 一次可处理多文件;AUTO_DELETE_EVERY_N_HOURS 可按小时清历史,避免磁盘被旧任务堆满。MAX_CONVERT_PROCESS 还能限制并发,防止 LibreOffice / FFmpeg 把机器打满。对 NAS 用户来说,这两项往往比「再多支持一种冷门格式」更影响日常体验。
按需加固与品牌。 默认关掉开放注册;ACCOUNT_REGISTRATION 与 ALLOW_UNAUTHENTICATED 只适合内网,README 明确警告勿对公网打开。BRANDING、WEBROOT 可改站名和子路径,方便挂在反向代理子路径后面。FFMPEG_ARGS / FFMPEG_OUTPUT_ARGS 则给有硬件加速需求的人留了口子。
解读:价值在产品封装——把「装一堆 CLI + 记一堆参数」收成浏览器操作。和直接包一层 CloudConvert API 不同,文件可以留在自己机器上;这和 Immich、Paperless 一类 NAS 栈是同一风格的取舍。
代价、许可与边界
镜像体积大,因为内嵌多引擎;CPU 与内存会随 LibreOffice、FFmpeg 任务明显抖动。许可是 AGPL-3.0,对二次分发与网络服务有传染约束,打算改造成对外 SaaS 前先读许可。若你只是偶尔转几个 PDF,系统自带预览或单装 Pandoc 可能更轻;若你已经在跑家庭实验室工具柜,ConvertX 很适合作为「格式层」补进去。
它也不适合当成对外随便挂公网的公共服务:认证开关一旦配错,上传面就是攻击面。更稳妥的用法是内网或 VPN 可达,需要外网时再经带鉴权的反向代理,并保持注册关闭。把 ConvertX 当成「给信任用户用的内部插座」,比当成「互联网免费转换站」更符合它的设计假设。
什么时候值得装,什么时候不必
值得装的信号通常是:你们经常互传「请帮我转成 PDF / 压成 mp4 / HEIC 我打不开」;或者合规上不允许把文件丢给公网转换站;或者你已经在维护 NAS,多一个 Docker 服务的边际成本很低。不必装的信号则是:需求极度单一,一年转不了几次;或者机器资源很紧,再塞进 LibreOffice 全家桶会抢光内存。
和「自己写个脚本调 FFmpeg」比,ConvertX 赢在可分享的界面与多引擎统一入口;和「继续用公网免费站」比,它赢在数据边界。选哪条路,取决于你更怕麻烦,还是更怕文件出域。部署细节、环境变量与镜像标签以仓库为准。
读完可以怎么做:在内网先用 ghcr.io/c4illin/convertx 起一份,创建管理员账号后关掉注册,用几张典型样张(HEIC、docx、一段短视频)验证常用路径;再决定要不要挂到反向代理与自动清理策略上。不要一上来就对公网打开未认证访问。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。
完整能力表、参数默认值与最新变更仍以仓库 README 与 Release 说明为准;本文只做摘要与评论,不替代原文。