资讯动态

ConvertX实战:十分钟部署自己的千种格式自托管文件转换服务

发布时间:2026/9/8 21:40:01 来源:尧图企业网站定制
ConvertX实战十分钟部署自己的千种格式自托管文件转换服务【免费下载链接】ConvertX Self-hosted online file converter. Supports 1000 formats ⚙️项目地址: https://gitcode.com/GitHub_Trending/co/ConvertX周五下午客户发来一批.mov素材而平台只收 mp4设计组还等着把一堆 PNG 压成 WebP。逐个拖进某个匿名在线转换网站文件到底去了哪台服务器心里没底——这就是我部署 ConvertX 的缘由一个自托管的在线文件转换工具一个容器装下 1000 种格式互转文件只在自己机器里流转。30 秒看懂它是什么一句话定位放在自己服务器上的在线文件转换器浏览器里上传、选格式、点转换、下载和用在线工具一样顺手但数据不出内网。一句话技术栈TypeScript Bun Elysia 写的 Web 服务底层挂接了 FFmpeg、ImageMagick、Pandoc 等 20 个转换引擎。它能接住哪些格式转换需求所有转换引擎的源码都在 src/converters/ 目录下每个引擎对应一个文件。按“你想干什么”看覆盖面大致如下你想做的事背后调用的引擎覆盖面输入→输出格式数视频音频互转mp4、mkv、mov、webm…FFmpeg约 472 → 约 199常见图片互转png、jpg、webp、tiff…ImageMagick245 → 183图片处理偏批量、偏多格式GraphicsMagick167 → 130图片与 HEIC/AVIF/WebP 等现代格式Vips45 → 23文档互转PDF、Word、Markdown、EPUB…Pandoc43 → 65Office 文档批量转换LibreOffice41 → 22电子书格式转换EPUB、MOBI…Calibre26 → 193D 模型格式互转Assimp77 → 23HEIF/HEIC 解码libheif2 → 4位图转矢量图Potrace / VTracer4 → 11 / 8 → 1Outlook .msg 邮件、.vcf 通讯录转 CSVmsgconvert / VCF 转换各 1 → 1完整清单见 README.md 的 Converters 表格。某个格式找不到对应引擎时它会在界面上明确提示“不支持”而不是给你一个坏文件。 最短路径跑起来一条 Docker 命令生产部署只需要一个服务。把下面这份最小配置存成docker-compose.ymlservices: convertx: image: ghcr.io/c4illin/convertx ports: - 3000:3000 volumes: - ./data:/app/data environment: - JWT_SECRET换成你自己的长随机字符串启动并验证docker compose up -d curl -I http://localhost:3000curl返回 200 即服务已就绪浏览器打开http://localhost:3000注册第一个账户即可开始用。两个常见的“第一次就踩中”的坑登录不了服务默认只接受 localhost 或 HTTPS。如果你是通过 HTTP 内网地址访问先设置HTTP_ALLOWEDtrue。提示 unable to open database file给挂载的数据目录补一下属主chown -R $USER:$USER ./data。仓库里的 compose.yaml 是开发调试用的完整示例所有环境变量注释都写在里面可对照参考。第一次上手照这个顺序做注册第一个账户。注意第一个注册的人直接“坐稳”管理位所以别把未配置好的服务直接暴露在公网——这是 README 专门提醒过的。上传文件在上传页拖入或点选支持一次加多个文件。选目标格式界面不会甩给你一整个格式库而是按“这个文件实际能转去哪”分组列出。比如传一个 PDF你会看到 vips、graphicsmagick 等可选目标搜索框支持直接输入格式名过滤。转换并查看状态多个文件会被分批处理单批并发上限由MAX_CONVERT_PROCESS控制默认 0 即不限制每个文件的处理结果会写入数据库随时可以在 History 页翻账。下载转换后的文件沿用原文件名、只改扩展名从界面直接拿走。提醒一句默认策略下文件只保留约 24 小时见下节别攒着不下载。多账户、密码保护是内置的JWT 签发登录态各账户的文件与历史互不可见团队共用一个实例没有问题。 什么时候才需要动环境变量全部环境变量都是可选的先跑起来再按下面的“触发条件”补配置即可遇到什么情况改哪个默认值想稳妥固定登录态避免重启后换 keyJWT_SECRET不设置则每次随机生成希望同事能自行注册账户ACCOUNT_REGISTRATIONfalse仅 HTTP 访问无 HTTPS 的内网场景HTTP_ALLOWEDfalse想给未登录访客直接开放使用自助终端式ALLOW_UNAUTHENTICATEDfalse磁盘上转换产物越攒越多AUTO_DELETE_EVERY_N_HOURS240 表示关闭清理一批大文件把机器打满MAX_CONVERT_PROCESS0不限制并发给 FFmpeg 加参数如 GPU 硬解、更快的编码预设FFMPEG_ARGS/FFMPEG_OUTPUT_ARGS空网站想挂在子路径下如/convert/WEBROOT空隐藏 History 页HIDE_HISTORYfalse日期显示语言LANGUAGEen完整列表见 README.md 的 Environment variables 一节。想读源码或加自己的转换器扩展路径很短每个引擎文件都导出convert转换函数和properties支持的 from/to 格式集合照着 src/converters/ffmpeg.ts 这类实现写一份再到 src/converters/main.ts 的注册表里登记即可。仓库里带 “converter request” 标签的 issue 被官方点名是 easiest 的上手贡献文档和清理类 PR 也欢迎。本地起开发环境需先装好 Bun 和 Gitgit clone https://gitcode.com/GitHub_Trending/co/ConvertX cd ConvertX bun install bun run dev收尾ConvertX 的价值一句话把“把文件拖进别人服务器”的转换习惯变成“自己内网里的一个按钮”。跑起来之后下一步很自然——把它接进团队现有流程比如批量转码脚本、电子书流水线或者为只有你们在用的内部格式写一个专属转换器。【免费下载链接】ConvertX Self-hosted online file converter. Supports 1000 formats ⚙️项目地址: https://gitcode.com/GitHub_Trending/co/ConvertX创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价