LanguageTool selbst hosten – Vollständige Docker-Anleitung 2026

LanguageTool kostenlos selbst hosten – vollständige Docker-Anleitung 2026 mit erikvl87-Image, N-Grams, FastText und Speicheroptimierung. Unterstützt Deutsch, Englisch, Spanisch, Französisch und über 30 weitere Sprachen.

LanguageTool ist eines der besten Open-Source-Tools zur Sprachprüfung – und für viele Nutzer die beste Alternative zu Grammarly. Es prüft Texte auf Rechtschreibfehler, Grammatikfehler, Kommafehler und Stilprobleme und lässt sich nahtlos in Browser (Chrome, Firefox), Thunderbird, LibreOffice, VS Code, Obsidian und viele weitere Anwendungen einbinden.

Ein besonderer Vorteil: LanguageTool unterstützt über 30 Sprachen und Dialekte – darunter Deutsch, Englisch, Spanisch, Französisch, Portugiesisch, Niederländisch und viele mehr. Damit ist es eines der umfangreichsten Sprachprüfungs-Tools überhaupt.

Das Ende des kostenlosen Angebots

Lange Zeit war LanguageTool kostenlos nutzbar. Seit Ende 2025 ist die Browser-Extension jedoch nur noch im kostenpflichtigen Abo verfügbar – aktuell 59,89 €/Jahr. Für viele Nutzer ein Grund, sich nach Alternativen umzusehen.

Die gute Nachricht: Der Kern von LanguageTool ist Open Source. Du kannst es selbst auf deinem Server hosten und die Grammatik- und Rechtschreibprüfung weiterhin kostenlos nutzen – vollständig datenschutzkonform, da kein Text an externe Server gesendet wird.

Kleiner Wermutstropfen: Die KI-basierten Features (automatisches Umformulieren von Sätzen, erweiterte Stilvorschläge) sind ausschließlich in der Cloud-Version verfügbar. KI würde Sätze nicht nur korrigieren, sondern aktiv verbessern und umschreiben – das bleibt dem Abo vorbehalten. Für den Standardgebrauch – also Rechtschreibung, Grammatik und Kommas – leistet die self-hosted Version aber sehr gute Dienste.

Anforderungen und Speicherplanung

LanguageTool ist speicherhungrig. Für eine stabile Installation benötigst du:

  • Mindestens 1,5 GB RAM (mit Optimierungen)
  • 4 GB RAM (empfohlen für stabile Performance)
  • Docker und Docker Compose auf deinem Server

Wichtig: Swap-Dateien sind keine Lösung – sie verlangsamen deinen Server massiv und können ihn zum Einfrieren bringen. Stattdessen solltest du LanguageTool mit Docker-Memory-Limits konfigurieren.

Schritt 1: Installation – Welcher Weg ist richtig?

Die beste Grundlage ist das erikvl87/docker-languagetool Image auf GitHub.

Option A: Docker Hub Image (EMPFOHLEN) ✓

docker pull erikvl87/languagetool

Das fertige Image wird direkt von Docker Hub heruntergeladen. Kein lokaler Build nötig, kein git clone.

Option B: Git Clone + Local Build

git clone https://github.com/Erikvl87/docker-languagetool.git --config core.autocrlf=input
cd docker-languagetool
docker build -t languagetool .

Nutze diese Option nur, wenn du das Image selbst anpassen möchtest (z.B. Custom Plugins).

Schritt 2: Verzeichnisstruktur vorbereiten

Best Practice für Linux-Server ist /opt/docker/ – nicht /root/, das sollte für System-Einstellungen reserviert bleiben.

sudo mkdir -p /opt/docker/languagetool
cd /opt/docker/languagetool
mkdir -p ngrams
sudo chown -R $USER:$USER /opt/docker/languagetool
chmod 755 /opt/docker/languagetool

Schritt 3: docker-compose.yml erstellen

Erstelle die Datei /opt/docker/languagetool/docker-compose.yml:

version: "3"

services:
  languagetool:
    image: erikvl87/languagetool:latest
    container_name: languagetool
    restart: unless-stopped
    ports:
      - 8010:8010
    environment:
      - langtool_languageModel=/ngrams   # N-Grams (optional aber empfohlen)
      - Java_Xms=256m                    # Minimaler Java Heap
      - Java_Xmx=1200m                   # Maximaler Java Heap (80% vom Container-Limit)
      - langtool_maxCheckThreads=2       # Parallele Anfragen begrenzen (spart RAM)
      - LOG_LEVEL=WARN                   # Weniger Logging = weniger Speicher
    deploy:
      resources:
        limits:
          memory: 1.5G                   # Container-Speicherlimit
          # memswap NICHT setzen – verursacht Probleme!
    volumes:
      - ./ngrams:/ngrams:ro
      # - /path/to/logback.xml:/LanguageTool/logback.xml:ro  # Nur für Debugging

Was bedeuten diese Einstellungen?

  • Java_Xms=256m: Java startet mit 256 MB Heap – spart RAM beim Hochfahren
  • Java_Xmx=1200m: Java darf maximal 1,2 GB Heap nutzen. Sollte ca. 80% des Container-Limits sein – der Rest geht für Libraries und Betriebssystem-Overhead drauf
  • memory: 1.5G: Wird dieser Wert überschritten, wird der Container beendet – das ist gewollt! So bleibt der Rest des Servers stabil
  • langtool_maxCheckThreads=2: Jeder Thread verbraucht Speicher – weniger Threads = weniger RAM
  • LOG_LEVEL=WARN: Reduziert Logs auf Warnungen und Fehler
  • restart: unless-stopped: Startet den Container automatisch neu nach einem Absturz

Schritt 4: N-Gram Datasets installieren

N-Grams analysieren Wortfolgen statistisch und erkennen Fehler, die reine Regelprüfungen übersehen – z.B. „das“ vs. „dass“ im Kontext. Sie nutzen Daten aus riesigen Textkorpora (z.B. Google Books) und verbessern die Erkennungsgenauigkeit spürbar.

cd /opt/docker/languagetool

# N-Grams für Deutsch herunterladen (ca. 1 GB)
wget https://languagetool.org/download/ngram-data/de_DE-1.0.zip
unzip de_DE-1.0.zip -d ngrams/
rm de_DE-1.0.zip
chmod -R 755 ngrams/

Für weitere Sprachen einfach ersetzen: en_US-1.0.zip, fr_FR-1.0.zip, es_ES-1.0.zip, pt_PT-1.0.zip, nl_NL-1.0.zip usw. Alle Downloads unter languagetool.org/download/ngram-data.

Hinweis: N-Grams sind optional – ohne sie verbraucht LanguageTool weniger Speicher, aber die Qualität der Erkennung sinkt etwas.

Schritt 5: FastText – automatische Spracherkennung

Das erikvl87 Image enthält FastText bereits eingebaut. FastText erkennt automatisch, in welcher Sprache ein Text geschrieben ist – besonders praktisch bei mehrsprachigen Texten oder wenn keine Sprache explizit angegeben wird. Das Modell (lid.176.bin, ca. 350 MB) wird beim ersten Start automatisch heruntergeladen. Keine weitere Konfiguration nötig.

Schritt 6: Container starten und testen

# Container starten
cd /opt/docker/languagetool
docker-compose up -d

# Status prüfen
docker ps | grep languagetool

# Logs beim ersten Start beobachten (dauert etwas länger)
docker-compose logs -f languagetool

# Installation testen
curl "http://localhost:8010/v2/check?language=de&text=Das%20ist%20ein%20test"

Speicherprobleme beheben

Viele Nutzer merken nach der Installation, dass die Swap-Auslastung stark steigt und der Server langsam oder instabil wird. Das passiert, wenn LanguageTool mehr RAM verbraucht als verfügbar ist und Linux anfängt, Speicher auf die Festplatte auszulagern.

Mit den Memory-Limits oben wird LanguageTool kontrolliert beendet, bevor es den ganzen Server blockiert. Mit restart: unless-stopped startet es danach automatisch wieder.

# Speichernutzung live überwachen
docker stats languagetool

# Logs auf Fehler prüfen
docker logs languagetool --tail 100

# Container manuell neustarten
docker-compose restart languagetool

Tipp: Den Parameter memswap in der docker-compose.yml nicht setzen – das verursacht in Portainer einen Error 500 beim Speichern der Konfiguration.

Reverse Proxy mit Nginx

server {
    listen 80;
    server_name lt.example.com;

    location / {
        proxy_pass http://localhost:8010;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 100m;
    }
}

Integration in Node.js

const response = await fetch('http://localhost:8010/v2/check', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    language: 'de',
    text: 'Dein Text hier'
  })
});
const result = await response.json();
console.log(result.matches); // Gefundene Fehler

Updates einspielen

cd /opt/docker/languagetool
docker-compose pull
docker-compose up -d

Weitere Ressourcen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Vielleicht gefällt dir auch folgendes?

WordPress Cookie Plugin von Real Cookie Banner