Selbst gehosteter Dienst
C4illin/ConvertX avatar
C4illin/ConvertX

ConvertX: über tausend Dateiformate konvertieren im selbst gehosteten Web-Interface

ConvertX ist eine selbst gehostete Webanwendung, die Dateien in mehr als 1.000 Dokument-, Bild-, Audio- und Videoformate konvertiert.

18.987 Sterne1.080 ForksTypeScriptAGPL-3.0
GitHub

Auf einen Blick

Was ist das?
ConvertX bündelt FFmpeg, ImageMagick, Pandoc und mehr hinter einer Weboberfläche aus TypeScript, Bun und Elysia. Was die Konverter-Tabelle wert ist und welche Konfiguration beim Betrieb zählt.
Für wen ist es gedacht?
ConvertX passt zu Selbsthostern und kleinen Teams, die Dateikonvertierung ohne Desktop-Software über den Browser abwickeln wollen und AGPL-3.0 akzeptieren. Weniger geeignet ist es für automatisierte Massen-Pipelines im Hintergrund, denn die Oberfläche und die Löschautomatik sind auf interaktive Nutzung ausgelegt.
Darf ich es kommerziell nutzen?
Ja, unter strengen Bedingungen. AGPL-3.0 ist eine Lizenz mit Netzwerk-Copyleft: Wenn andere eine veränderte Version über ein Netzwerk nutzen, etwa als gehosteten Dienst, müssen Sie ihnen den Quellcode unter derselben Lizenz anbieten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 1 Tag.
In welcher Sprache ist es geschrieben?
Hauptsächlich TypeScript, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

ConvertX: ein Converter-Backend aus Bun, Elysia und 20 Werkzeugen

ConvertX ist eine selbst gehostete Webanwendung, die Dateien zwischen mehr als tausend Dokument-, Bild-, Audio- und Videoformaten umwandelt. Geschrieben ist sie in TypeScript, mit Bun als Laufzeit und Elysia als Web-Framework. Die Idee lässt sich kurz fassen: Statt auf jedem Rechner Conversion-Tools zu installieren, betreibt man einen Dienst im Netz, lädt Dateien hoch und wählt das Zielformat.

Die Feature-Liste im README ist bewusst knapp: Konvertieren in verschiedene Formate, Verarbeitung mehrerer Dateien gleichzeitig, Passwortschutz und mehrere Accounts. Das Projekt ist populär, 18619 Sterne und 1046 Forks sprechen eine klare Sprache, zugleich stehen 125 Issues offen. Die Magie steckt nicht im Frontend, sondern in der Kombination bewährter Konvertierungswerkzeuge, die das Projekt hinter einer gemeinsamen Oberfläche kapselt.

Konverter-Tabelle: FFmpeg mit rund 472 Eingangs- und 199 Zielformaten

Die Tabelle der unterstützten Konverter ist der informativste Teil des README. FFmpeg deckt Video und Audio mit etwa 472 Eingangs- und 199 Zielformaten ab, ImageMagick beherrscht 245 Eingangs- und 183 Zielformate, GraphicsMagick 167 und 130. Pandoc wandelt Dokumente mit 43 Eingangs- und 65 Zielformaten, LibreOffice liefert 41 zu 22, Calibre kümmert sich um E-Books mit 26 zu 19.

Spezialfälle sind ebenfalls eingebunden: Inkscape für Vektorbilder, libjxl für JPEG XL, libheif für HEIF, resvg für SVG, Assimp für 3D-Assets mit 77 zu 23, dvisvgm und XeLaTeX für LaTeX-Wege, Potrace und VTracer für Raster-zu-Vektor-Umsetzung, msgconvert für Outlook-Nachrichten, Dasel für Datendateien, VCF to CSV für Kontakte sowie Markitdown von Microsoft mit 6 Eingangsformaten zu einem Ziel. Ein Kommentar im README räumt selbst ein, dass viele FFmpeg-Formate Duplikate sind, die über tausend Gesamtzahl ist also mit Vorsicht zu lesen. Fehlt ein Konverter, lädt das Projekt ein, Issue oder Pull Request zu öffnen.

Deployment mit docker-compose.yml, Port 3000 und ./data-Volume

Der dokumentierte Startweg ist ein Docker-Container aus ghcr.io/c4illin/convertx. Das README zeigt eine docker-compose.yml mit Port-Mapping 3000:3000 und dem Volume ./data:/app/data, alternativ reicht docker run -p 3000:3000 -v ./data:/app/data ghcr.io/c4illin/convertx. Danach öffnet man http://localhost:3000 im Browser und legt den Account an.

Zwei Warnungen verdienen Beachtung. Erstens: Wer sich nicht anmelden kann, greift vermutlich nicht über localhost oder https zu, dann hilft die Variable HTTP_ALLOWED=true, laut README aber nur lokal. Zweitens: Der erste Account sollte nicht offen und unbeaufsichtigt bleiben, denn jeder kann ihn registrieren. Bei der Fehlermeldung unable to open database file rät das README zu chown -R $USER:$USER auf den gewählten Datenpfad, ein typisches Rechteproblem beim ersten Start mit gemounteten Volumes.

Umgebungsvariablen: JWT_SECRET, WEBROOT und FFMPEG_OUTPUT_ARGS

Alle Umgebungsvariablen sind laut README optional, empfohlen wird aber die Setzung von JWT_SECRET, einem langen geheimen String zum Signieren des JSON Web Tokens. Ohne Setzung greift der Wert aus randomUUID(), was für ernsthafte Betriebe ungenügend ist, weil ein Container-Neustart dann alte Tokens ungültig machen kann, je nach Session-Handling.

Weitere Schrauben: ACCOUNT_REGISTRATION steuert, ob Nutzer selbst Accounts anlegen dürfen, Standard ist false. ALLOW_UNAUTHENTICATED erlaubt Nutzung ohne Anmeldung, ebenfalls nur für lokale Tests gedacht. AUTO_DELETE_EVERY_N_HOURS steht auf 24 und löscht Dateien, die älter als n Stunden sind, mit 0 deaktiviert man das. WEBROOT verschiebt die Oberfläche unter einen Unterpfad wie example.com/convert/. Für Video-Aufgaben gibt es FFMPEG_ARGS, etwa -hwaccel vaapi für Hardwarebeschleunigung, wozu das README auf Issue 190 verweist, und FFMPEG_OUTPUT_ARGS für Output-Parameter wie -preset veryfast. HIDE_HISTORY blendet die Verlaufsseite aus.

Passwortschutz, mehrere Accounts und die Grenzen des Werkzeugs

Der Passwortschutz und die Multi-Account-Unterstützung machen ConvertX für geteilte Umgebungen brauchbar, etwa in einem Haushalt oder kleinen Team. Die Verlaufsseite sammelt frühere Konvertierungen, was das Wiederauffinden von Ergebnissen erleichtert, solange die Automatik sie nicht schon gelöscht hat.

Die Grenzen liegen woanders. ConvertX ist eine interaktive Weboberfläche, kein Batch-Backend: Wer nachts tausende Dateien durchrechnen will, sucht umsonst nach einer Job-Queue oder Webhook-Integration, denn das README dokumentiert nichts dergleichen. Bei großen Videodateien entscheidet die Container-Ressourcenzuteilung, nicht die Anwendung. Und weil jedes Zielformat letztlich vom untergeschobenen Werkzeug abhängt, variiert die Qualität stark: Ein PNG-Wechsel über Vips ist ein anderes Kaliber als ein HEIC-Export über libheif. Wer deterministische Pipelines braucht, fährt mit direkt aufgerufenem FFmpeg besser und nutzt ConvertX nur für den interaktiven Rest.

AGPL-3.0, Release-Verlauf v0.16.1 bis v0.18.0 und der Pflegezustand

ConvertX steht unter AGPL-3.0, einer Copyleft-Lizenz, die bei netzwerkbasierten Diensten verlangt, Nutzern den Quellcode angepasster Versionen anzubieten. Wer die Anwendung unverändert intern betreibt, ist nicht betroffen, wer sie als angepassten öffentlichen Dienst anbietet, muss den Code offenlegen.

Der Release-Verlauf zeigt kontinuierliche Arbeit: v0.16.1 vom Dezember 2025, v0.17.0 vom Januar 2026 und v0.18.0 vom Juni 2026. Container-Images liegen auf GitHub Packages und Docker Hub als c4illin/convertx, ein Workflow namens docker-publish.yml baut sie. Die 125 offenen Issues bei dieser Nutzerzahl sind ein normaler Stand, ein Blick hinein lohnt vor dem Formatcheck, denn dort landen Meldungen über kaputte Zielkonvertierungen zuerst. Insgesamt ist ConvertX ein praktisches Werkzeug mit klarem Umfang, dessen Stärke in der Breite der eingebundenen Konverter liegt und dessen Schwäche in den Grenzen der interaktiven Oberfläche.

Redaktionelles Fazit

ConvertX passt zu Selbsthostern und kleinen Teams, die Dateikonvertierung ohne Desktop-Software über den Browser abwickeln wollen und AGPL-3.0 akzeptieren. Weniger geeignet ist es für automatisierte Massen-Pipelines im Hintergrund, denn die Oberfläche und die Löschautomatik sind auf interaktive Nutzung ausgelegt. Vor dem Einsatz sollte man mit docker run -p 3000:3000 einen Test starten, die eigenen Zielformate aus der Konverter-Tabelle prüfen und JWT_SECRET sowie HTTP_ALLOWED sauber setzen.

Offizielle Quellen

  1. Official README
  2. Project repository
  3. Release notes
Community-Notizen

Community-Notizen