All Articles ConvertX

Self-Hosted File Converter: ConvertX's 1000+ Format Support (Complete Docker Deployment)

ConvertX is a self-hosted, open-source file conversion platform that replaces online converters with a single Docker-based service. Supporting 1000+ formats across documents, media, images, e-books, vector graphics, and 3D models, it delivers unlimited conversions, zero file size limits, and complete data privacy. This guide covers architecture, Docker deployment, security hardening, performance tuning, and real-world production use cases”everything you need to run your own private conversion hub.

January 30, 2026 13 min read Likhon
🎧 Listen to this article
Checking audio availability...

Self-Hosted File Converter: ConvertX's 1000+ Format Support (Complete Docker Deployment)

You upload a DOCX to an online converter. It says "file too large." You try another—it wants $9/month for batch processing. A third works, but now your sensitive client document lives on someone else's server. Forever.

ConvertX takes a different approach: it's a self-hosted, open-source file conversion platform supporting 1000+ formats across video, audio, images, documents, e-books, vector graphics, and 3D models.[388][156][393] One Docker container. Zero file size limits. Complete privacy. And it's free.

With 9.2k GitHub stars, 442 forks, and 18 integrated converters (FFmpeg, ImageMagick, Pandoc, LibreOffice, Calibre, Inkscape, and more), ConvertX is the universal file translator you've been looking for.[388][165] This guide walks through the complete architecture, deployment strategies, security hardening, and production best practices—everything you need to replace your scattered conversion workflows with a single, self-hosted hub.


TL;DR: What ConvertX Actually Does

ConvertX is a web-based conversion service that runs on your own infrastructure, handling 1000+ file format conversions without ever sending data to third parties.[388][156][393]

Quick Facts

Feature Details
Format support 1000+ formats (18 converters)[388]
Tech stack TypeScript (90%), Bun runtime, Elysia framework[388][392]
License AGPL-3.0 (open source)[388]
Deployment Single Docker container[388][394]
GitHub stars 9.2k[388]
File size limits Only limited by your disk space[156][393]
Privacy Self-hosted, data never leaves your server[156][393][396]
Cost $0 for software + your infrastructure[156][393]

The 18 Converters Under the Hood

ConvertX isn't a single tool—it's an orchestration layer that wires together 18 professional-grade conversion engines:[388][165]

Converter Use Case Input Formats Output Formats
FFmpeg Video/Audio ~472 ~199
ImageMagick Images 245 183
GraphicsMagick Images 167 130
Assimp 3D Assets 77 23
Pandoc Documents 43 65
LibreOffice Documents 41 22
Calibre E-books 26 19
Vips Images (fast) 45 23
Inkscape Vector graphics 7 17
libjxl JPEG XL 11 11
Potrace Raster → vector 4 11
VTracer Raster → vector 8 1
Dasel Data files 5 4
dvisvgm Vector images 4 2
libheif HEIF images 2 4
resvg SVG rendering 1 1
msgconvert Outlook emails 1 1
XeLaTeX LaTeX documents 1 1

Total theoretical combinations: 166,000+ unique conversion paths.[388]


Why Self-Host Instead of Using Online Converters?

The Problem with Online Tools

CloudConvert, Zamzar, OnlineConvert, and similar services all suffer from:

  1. File size caps: 100MB-1GB limits (CloudConvert free tier: 25 files/day)[156][393]
  2. Privacy risks: You upload sensitive files to third-party servers
  3. Subscription costs: $8-25/month for batch processing and higher limits
  4. Ads: Free tiers inject ads into the conversion flow
  5. API restrictions: Paid-only API access for automation
  6. Internet dependency: No offline use

ConvertX Advantages

Dimension ConvertX Online Converters
Privacy ✅ Data never leaves your server[156][393][396] ⌠Third-party upload
File size ✅ Only limited by disk space[156][393] ⌠100MB-1GB caps
Cost ✅ $0 for software[156][393] ⌠$8-25/month
Format support ✅ 1000+ (18 converters)[388][156] âš ï¸ 200-500 formats
Ads ✅ None ⌠Ads on free tiers
Batch processing ✅ Built-in[388] âš ï¸ Premium only
API ✅ Self-hosted API ⌠Paid API tiers
Offline ✅ Works without internet[156] ⌠Internet required

Break-even cost analysis (12 months):

  • ConvertX (VPS): $24/month × 12 = $288/year (unlimited conversions)
  • CloudConvert (Paid): $9/month × 12 = $108/year (12,000 conversions total, ~33/day)
  • Overage: $8 per 500 conversions beyond limit

If you convert >15,000 files/year, ConvertX is cheaper. Plus: no privacy risk, no file size limits.[156][393][396]


Complete Docker Deployment Guide

Quick Start (5 Minutes)

The fastest way to get ConvertX running:[388][394]

docker run -d \
  --name convertx \
  -p 3000:3000 \
  -v ~/convertx-data:/app/data \
  ghcr.io/c4illin/convertx

Then visit http://localhost:3000 in your browser. First visitor automatically becomes admin—create your account immediately.[388][394]

âš ï¸ Security warning: Don't leave ConvertX unconfigured and publicly accessible. Anyone can register the first account.[388]

Production Deployment (Docker Compose)

For teams and persistent deployments, use Docker Compose:[388][392]

# docker-compose.yml
services:
  convertx:
    image: ghcr.io/c4illin/convertx
    container_name: convertx
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:3000"  # Only expose to localhost
    environment:
      - JWT_SECRET=aLongAndSecretStringUsedToSignTheJSONWebToken1234
      # - HTTP_ALLOWED=true  # Uncomment ONLY for local development
    volumes:
      - ./data:/app/data

Start the service:

docker-compose up -d

Check logs:

docker logs -f convertx

Environment Variables: Full Configuration Reference

ConvertX supports 11 environment variables for customization:[388][392]

Variable Default Description Production Recommendation
JWT_SECRET randomUUID() Secret for signing JSON Web Tokens REQUIRED: Set to a long, random string (50+ characters)
ACCOUNT_REGISTRATION false Allow user registration false (invite-only) or true (public)
HTTP_ALLOWED false Allow HTTP connections false (HTTPS only in production)
ALLOW_UNAUTHENTICATED false Allow unauthenticated users false (production) or true (local dev)
AUTO_DELETE_EVERY_N_HOURS 24 Auto-delete files older than N hours 6 or 12 (aggressive cleanup)
WEBROOT / Base path for application /convert for subdirectory hosting
FFMPEG_ARGS (empty) Custom FFmpeg arguments -preset veryfast -crf 28 for speed
HIDE_HISTORY false Hide conversion history page false (useful for auditing)
LANGUAGE en Language for date formatting (BCP 47) en, fr, de, etc.
UNAUTHENTICATED_USER_SHARING false Share history between anonymous users false (privacy)
MAX_CONVERT_PROCESS 0 Max concurrent conversions (0 = unlimited) 5-10 (prevent CPU exhaustion)
services:
  convertx:
    image: ghcr.io/c4illin/convertx
    container_name: convertx
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      - JWT_SECRET=${JWT_SECRET}  # Store in .env file
      - ACCOUNT_REGISTRATION=false
      - AUTO_DELETE_EVERY_N_HOURS=12
      - MAX_CONVERT_PROCESS=10
      - FFMPEG_ARGS=-preset veryfast -crf 28
    volumes:
      - ./data:/app/data

Create .env file:

# .env
JWT_SECRET=$(openssl rand -hex 32)

Security Hardening: HTTPS, Reverse Proxy, and Best Practices

The HTTPS Requirement

âš ï¸ CRITICAL: ConvertX login only works over:[388][392]

  1. HTTPS (TLS/SSL)
  2. localhost (127.0.0.1)
  3. HTTP_ALLOWED=true (development only, NOT recommended)

If you access ConvertX over HTTP from a non-localhost address, login will fail silently.

Reverse Proxy Setup (nginx)

For production, place ConvertX behind a reverse proxy with HTTPS:[405][408][411]

nginx configuration:

# /etc/nginx/sites-available/convertx
server {
    listen 80;
    server_name convert.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name convert.yourdomain.com;
    
    # SSL certificates (Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/convert.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/convert.yourdomain.com/privkey.pem;
    
    # Allow large file uploads
    client_max_body_size 1000M;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # Increase timeout for large conversions
        proxy_connect_timeout 600s;
        proxy_send_timeout 600s;
        proxy_read_timeout 600s;
    }
}

Enable and reload:

sudo ln -s /etc/nginx/sites-available/convertx /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Reverse Proxy Setup (Caddy)

Caddy is simpler and handles HTTPS automatically:[405]

# /etc/caddy/Caddyfile
convert.yourdomain.com {
    reverse_proxy localhost:3000
    request_body {
        max_size 1GB
    }
    timeouts {
        read 10m
        write 10m
    }
}

Reload Caddy:

sudo systemctl reload caddy

Additional Security Measures

1. Disable public registration:

environment:
  - ACCOUNT_REGISTRATION=false

Create accounts manually via the admin panel.

2. Aggressive file cleanup:

environment:
  - AUTO_DELETE_EVERY_N_HOURS=6

Prevents disk exhaustion from abandoned conversions.

3. Limit concurrent conversions:

environment:
  - MAX_CONVERT_PROCESS=5

Prevents CPU/memory exhaustion under load.

4. Use secrets management:

environment:
  - JWT_SECRET=${JWT_SECRET}

Store secrets in .env (add to .gitignore).

5. Monitor logs:

docker logs -f --tail 100 convertx

Watch for failed conversions, authentication attempts, errors.


File Storage and Disk Management

Data Directory Structure

ConvertX stores all data in /app/data/ inside the container:[388][392]

/app/data/
├── database.db          # SQLite (user accounts, history)
├── uploads/             # Temporary uploaded files
├── conversions/         # Converted output files
└── temp/                # Conversion working directory

Volume mount (host → container):

volumes:
  - ./data:/app/data

On the host machine, data lives in ./data/ (relative to docker-compose.yml).

Disk Space Management

Conversions accumulate quickly. Without cleanup:[388][392]

  • Video conversions: 1-10GB per file
  • Batch image processing: 100MB-1GB per job
  • Document conversions: 10-100MB per file

AUTO_DELETE_EVERY_N_HOURS automatically purges old files:[388][392]

environment:
  - AUTO_DELETE_EVERY_N_HOURS=12
  • Checks every 12 hours
  • Deletes files older than 12 hours
  • Set to 0 to disable (manual cleanup only)

Manual cleanup:

# Delete all conversions (keep database)
sudo rm -rf ./data/conversions/*
sudo rm -rf ./data/uploads/*
sudo rm -rf ./data/temp/*

# Check disk usage
df -h ./data

Production recommendation: AUTO_DELETE_EVERY_N_HOURS=6 (aggressive) or 12 (balanced).[392]


Docker Images and Architectures

ConvertX publishes images to GitHub Container Registry (GHCR) and Docker Hub:[388][398]

Image Description Use Case
ghcr.io/c4illin/convertx:latest Latest stable release (GHCR) Recommended for production
ghcr.io/c4illin/convertx:main Latest commit on main branch (GHCR) Bleeding edge, testing
c4illin/convertx:latest Latest stable release (Docker Hub) Alternative registry
c4illin/convertx:main Latest commit (Docker Hub) Bleeding edge, testing

Architecture support:[392][398]

  • linux/amd64 (Intel/AMD x86-64)
  • linux/arm64 (Raspberry Pi 4, Apple Silicon)

Docker automatically pulls the correct image for your architecture.


Use Cases: When to Deploy ConvertX

1. Video & Audio Workflows

FFmpeg integration (~472 input formats → ~199 output formats):[388][156]

  • Video transcoding: MP4 → WebM, MKV, AVI, MOV, FLV
  • Audio extraction: MP4 → MP3, AAC, FLAC, OGG
  • Compression: -preset veryfast -crf 28 via FFMPEG_ARGS
  • Format normalization: Convert all uploads to H.264 + AAC for web

Example: Media production company converting client deliverables to standardized formats (MP4 for web, ProRes for editing, AVI for archive).

2. Document Processing Pipelines

LibreOffice (41 → 22) + Pandoc (43 → 65):[388][156]

  • Office compatibility: DOCX ↔ ODT ↔ PDF ↔ RTF
  • Presentations: PPTX ↔ ODP ↔ PDF
  • Spreadsheets: XLSX ↔ ODS ↔ CSV
  • Markdown workflows: MD → DOCX, MD → PDF (via Pandoc)
  • LaTeX publishing: TEX → PDF (via XeLaTeX)

Example: Legal firm converting client contracts (DOCX) to archival PDFs with watermarks, then to HTML for web publishing.

3. Image Optimization for Web

Vips (45 → 23) + ImageMagick (245 → 183) + GraphicsMagick (167 → 130):[388][156]

  • Format modernization: JPEG/PNG → WebP (20-40% smaller)
  • Responsive images: Generate 1x, 2x, 3x variants
  • Bulk resizing: Standardize dimensions across product catalogs
  • High-resolution support: 4K, 8K image processing

Example: E-commerce site batch-converting 10,000 product images to WebP for faster page loads.

4. E-book Publishing

Calibre (26 → 19):[388][156][391]

  • Multi-format distribution: EPUB ↔ MOBI ↔ PDF ↔ AZW3
  • Kindle preparation: EPUB → MOBI with metadata preservation
  • Library standardization: Convert mixed-format library to EPUB

Example: Indie publisher converting manuscripts to EPUB (iBooks), MOBI (Kindle), and PDF (print-on-demand).

5. Vector Graphics and Logo Assets

Inkscape (7 → 17) + resvg (SVG rendering):[388][156]

  • Logo export: SVG → PNG (favicon), SVG → PDF (print)
  • Design handoff: AI → SVG → PNG variants
  • Icon generation: SVG → multi-resolution PNG sets

Example: Design agency exporting client logos to all requested formats (SVG for web, EPS for print, PNG for social media).

6. 3D Model Pipelines

Assimp (77 → 23):[388][156]

  • Game engine prep: FBX → GLTF for Three.js
  • 3D printing: OBJ → STL for slicing software
  • CAD interop: STEP ↔ Collada ↔ OBJ

Example: Architecture firm converting Revit exports (FBX) to web-friendly GLTF for 3D portfolio viewer.

7. Raster-to-Vector Conversion

Potrace (4 → 11) + VTracer (8 → 1):[388][156]

  • Logo vectorization: Bitmap logo → SVG (scalable)
  • Scan cleanup: Paper sketch → vector outline
  • Embroidery prep: Image → vector path for CNC machines

Example: T-shirt printing service converting customer-uploaded JPG logos to SVG for scalable printing.


Performance Optimization and Resource Planning

Resource Requirements

Workload CPU RAM Disk Network
Light (10-50 conversions/day) 2 vCPU 2GB 50GB SSD 100Mbps
Medium (100-500 conversions/day) 4 vCPU 8GB 200GB SSD 1Gbps
Heavy (1000+ conversions/day) 8+ vCPU 16GB+ 500GB+ SSD 1Gbps

Converter-specific demands:[392][156]

  • FFmpeg (video): CPU-intensive (multi-core scaling), 1-10GB disk per conversion
  • ImageMagick (images): RAM-intensive (large images), fast I/O
  • LibreOffice (docs): Moderate CPU/RAM, headless rendering
  • Assimp (3D): High RAM (complex models), CPU for mesh processing

Optimization Strategies

1. Limit concurrent conversions:

environment:
  - MAX_CONVERT_PROCESS=5

Prevents CPU/RAM exhaustion. Adjust based on available resources.[388][392]

2. Fast FFmpeg presets:

environment:
  - FFMPEG_ARGS=-preset veryfast -crf 28

Sacrifices compression efficiency for speed (acceptable for most use cases).

3. Aggressive file cleanup:

environment:
  - AUTO_DELETE_EVERY_N_HOURS=6

Frees disk space quickly.[388][392]

4. Reverse proxy caching (nginx):

location /assets/ {
    proxy_pass http://localhost:3000/assets/;
    proxy_cache_valid 200 30d;
    expires 30d;
}

Cache static assets (CSS, JS) to reduce load on ConvertX.

5. CDN offload:

After conversion, upload results to S3/CloudFront and serve from CDN instead of ConvertX server.


Troubleshooting Common Issues

Issue 1: Can't Login

Symptoms: Login page loads but login fails silently.

Causes:[388][392]

  • Accessing over HTTP (not localhost)
  • Missing HTTPS certificate

Solutions:

  • Access via http://localhost:3000 (if local)
  • Set HTTP_ALLOWED=true (development only)
  • Set up HTTPS reverse proxy (production)

Verify:

curl -I https://convert.yourdomain.com
# Should return: HTTP/2 200

Issue 2: Permission Denied on Database

Symptoms: unable to open database file error in logs.[388]

Cause: Docker container can't write to mounted volume due to file ownership mismatch.

Solution:

# Option 1: Change ownership to Docker user (UID 1000)
sudo chown -R 1000:1000 ./data

# Option 2: Change permissions (less secure)
sudo chmod -R 755 ./data

Verify:

ls -la ./data
# Should show: drwxr-xr-x ... 1000 1000 ... database.db

Issue 3: Conversion Hangs or Fails

Symptoms: Upload succeeds but conversion hangs indefinitely or fails with cryptic error.

Causes:

  • Unsupported format variant
  • Corrupted source file
  • Resource exhaustion (CPU/RAM)

Solutions:

1. Check converter logs:

docker logs -f convertx

Look for FFmpeg errors, LibreOffice crashes, or OOM (out-of-memory) kills.

2. Verify format support:

Check the converter table (Section 1.1) to confirm your format is supported.

3. Increase Docker memory limit:

services:
  convertx:
    mem_limit: 8g
    memswap_limit: 8g

Or via docker run:

docker run --memory=8g --memory-swap=8g ...

4. Test file manually:

docker exec -it convertx sh
ffmpeg -i /app/data/uploads/test-video.mp4 -c copy /tmp/output.mp4

If manual conversion works, issue is in ConvertX orchestration. File a GitHub issue.[388]


Issue 4: Disk Space Exhaustion

Symptoms: Conversions fail, df -h shows 100% disk usage.

Cause: Conversions accumulating faster than auto-delete cleanup.

Solutions:

1. Lower auto-delete threshold:

environment:
  - AUTO_DELETE_EVERY_N_HOURS=6

More aggressive cleanup.[388][392]

2. Manual cleanup:

sudo rm -rf ./data/conversions/*
sudo rm -rf ./data/uploads/*
sudo rm -rf ./data/temp/*

3. Monitor disk usage:

# Set up cron job to alert at 80% usage
df -h ./data | awk 'NR==2 {if ($5+0 > 80) print "ALERT: ConvertX disk usage at " $5}'

4. Add more storage:

  • Resize VPS disk
  • Mount external volume to ./data

Advanced Deployment Scenarios

Scenario 1: Personal Use (Local Development)

Goal: Quick setup for local file conversions.

docker run -d \
  --name convertx \
  -p 3000:3000 \
  -v ~/convertx-data:/app/data \
  -e HTTP_ALLOWED=true \
  -e ALLOW_UNAUTHENTICATED=true \
  ghcr.io/c4illin/convertx
  • HTTP_ALLOWED: Skip HTTPS requirement (local only)
  • ALLOW_UNAUTHENTICATED: Skip login (single-user)
  • Access: http://localhost:3000

Scenario 2: Team Deployment (VPS + HTTPS)

Goal: Secure multi-user deployment for small team.

docker-compose.yml:

services:
  convertx:
    image: ghcr.io/c4illin/convertx
    container_name: convertx
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      - JWT_SECRET=${JWT_SECRET}
      - ACCOUNT_REGISTRATION=true
      - AUTO_DELETE_EVERY_N_HOURS=12
      - MAX_CONVERT_PROCESS=10
    volumes:
      - ./data:/app/data

nginx reverse proxy (see Section 4.2).

Cloudflare DNS:

  • Point convert.yourdomain.com to VPS IP
  • Enable "Proxied" for DDoS protection

Scenario 3: Enterprise (Cloud PaaS)

Goal: One-click deploy on managed platform.

Railway (one-click deploy):[390]

Hostinger VPS (one-click Docker):[396]

  • Select "Docker" template in VPS dashboard
  • Paste ghcr.io/c4illin/convertx image
  • Hostinger auto-configures networking + SSL

Render.com (Docker deploy):

  • Create new "Web Service"
  • Connect GitHub repo or use image: ghcr.io/c4illin/convertx
  • Set environment variables via dashboard
  • Render auto-provisions HTTPS domain

Scenario 4: High-Availability (Multi-Instance)

Goal: Load-balanced, redundant deployment for enterprise.

Architecture:

  • 2+ ConvertX instances (separate containers/VMs)
  • Shared storage (NFS, S3, MinIO) for /app/data
  • Load balancer (nginx, HAProxy, or cloud LB)
  • Database replication (SQLite → PostgreSQL for multi-instance)

Challenge: ConvertX uses SQLite (single-file DB), which doesn't support multi-writer replication. For HA, you'd need to:

  1. Fork ConvertX and replace SQLite with PostgreSQL
  2. Use shared NFS volume for database (not recommended)
  3. OR: Deploy multiple single-instance ConvertX services behind load balancer with sticky sessions

Cost Analysis: ConvertX vs Alternatives

12-Month Total Cost of Ownership

Solution Upfront Cost Monthly Cost Annual Cost Notes
ConvertX (VPS) $0 $24 (4GB RAM VPS) $288 Unlimited conversions[156][393]
ConvertX (Cloud) $0 $50 (Railway/Render) $600 Managed platform[390]
CloudConvert (Free) $0 $0 $0 25 files/day, 100MB limit
CloudConvert (Standard) $0 $9 $108 1,000 conversions/month
CloudConvert (Pro) $0 $25 $300 5,000 conversions/month
Adobe Acrobat Pro $0 $20 $240 PDF-only, single user
HandBrake + GIMP + ... $0 $0 $0 Free desktop apps, fragmented UX

Break-even analysis:

  • If you convert >15,000 files/year, ConvertX VPS ($288) beats CloudConvert Standard ($108 + overage)
  • If you convert <1,000 files/month, CloudConvert Standard ($108) is cheaper
  • If you need privacy or unlimited file sizes, ConvertX is the only viable option[156][393][396]

When NOT to Use ConvertX

ConvertX isn't always the right choice:

⌠Low-frequency conversions (<10 files/month): Online tools faster, no setup
⌠No infrastructure available: Can't run Docker, no VPS budget
⌠Mobile-first workflows: ConvertX is web-only, no native mobile apps
⌠No technical expertise: Setup requires Docker, CLI, reverse proxy knowledge
⌠Specialized formats: Niche converters (e.g., CAD, GIS) may need dedicated tools


Future Roadmap and Community

Requested Features (Open Issues)[388]

  • S3/MinIO backend: Distributed storage for multi-instance deployments
  • WebSocket progress streaming: Real-time conversion progress
  • Batch API endpoints: Programmatic bulk conversions
  • Conversion presets: "Web Optimized", "Print Quality", etc.
  • More converters: Check GitHub issues tagged "converter request" (easy contributions)

Community Stats[388]

  • 28 contributors
  • 442 forks
  • 9.2k stars
  • 27 releases (v0.15.1 latest as of January 2026)

Contributing

Pull requests welcome![388] Easy entry points:

  • Add converters (tagged "converter request")
  • Improve documentation
  • Fix bugs and cleanup issues
  • Use conventional commits for commit messages

Key Takeaways

When to Deploy ConvertX

✅ Privacy-sensitive conversions (legal, medical, financial documents)[156][393][396]
✅ High-volume batch processing (no per-conversion fees)[156][393]
✅ Large file support (multi-GB videos, high-res images)[156][393]
✅ Unified conversion hub (1000+ formats, 18 converters)[388][156]
✅ Team collaboration (multi-account system)[388]
✅ Offline/air-gapped environments[156]
✅ API integration for automation[156][393]

Production Checklist

Before deploying ConvertX to production:[388][392]

  • Set JWT_SECRET to long, random string (50+ characters)
  • Disable ACCOUNT_REGISTRATION or use invite-only
  • Set AUTO_DELETE_EVERY_N_HOURS to 6-12 (disk cleanup)
  • Limit MAX_CONVERT_PROCESS to 5-10 (prevent CPU exhaustion)
  • Deploy HTTPS reverse proxy (nginx/Caddy + Let's Encrypt)
  • Monitor disk usage (df -h ./data)
  • Set up backup strategy (daily backup of ./data/database.db)
  • Test conversion workflows for your specific formats
  • Document recovery procedures (restore from backup)

Final Verdict

ConvertX is the self-hosted alternative to CloudConvert, Zamzar, and other online converters—offering 1000+ format support, zero file size limits, complete privacy, and unlimited conversions for the cost of a $24/month VPS.[388][156][393][396]

If you're converting files regularly, dealing with sensitive data, or frustrated by online converter limitations, ConvertX is worth the 10-minute Docker setup. The open-source community backing (9.2k stars, 442 forks, 28 contributors) ensures ongoing development and support.[388]

Get started:

docker run -p 3000:3000 -v ./data:/app/data ghcr.io/c4illin/convertx

Visit http://localhost:3000 and convert your first file.


Further Resources


Last updated: January 29, 2026. Versions, pricing, and features subject to change. All data verified against official ConvertX repository and deployment guides.

Likhon - Gen AI Specialist

Senior Cloud and AI Engineer

Generative AI expert with 6+ years experience and 300+ certifications. Building LLM, RAG systems, and multi-cloud AI solutions.