Languagetool selber hosten

  Norbert Rüthers   Lesezeit: 6 Minuten  🗪 5 Kommentare

LanguageTool ist ein unverzichtbares Werkzeug um Texte korrekt auf Rechtschreibung zu prüfen

languagetool selber hosten

Sehr viele nutzen und lieben LanguageTool zum Verfassen von Texten am PC. So auch ich.

Da man LanguageTool auch selber hosten kann, sollte man von dieser Möglichkeit, wenn möglich, Gebrauch machen.

Als Systemvoraussetzung gilt:

Debian 10/11 oder Ubuntu Server 22.04 LTS

4 GB RAM sollten es schon sein.

2 CPU Kerne sollten reichen (ggf. erhöhen).

Als HDD/SSD sollten 32 GB veranschlagt werden.

Die komplette Installation umfasst ohne OS ca. 18 GB.

Im Prinzip erfüllt der Raspberry Pi ebenfalls die Anforderungen von LanguageTool. Ausreichend Speicherplatz lässt sich mit einer entsprechend großen Speicherkarte schaffen. Auch die Rechenkapazität  eines Raspberry Pi 4 genügt vollkommen. Und der Raspberry Pi 4 lässt sich auch mit 64 Bit betreiben, den LanguageTool Server gibt es nur in einer 64-Bit-Version. Ausprobiert habe ich die Installation aber nicht.

Los gehts

Am Terminal anmelden und folgende Kommandos eingeben

sudo apt install default-jre-headless unzip

sudo apt install hunspell hunspell-de-de hunspell-en-us

wget https://languagetool.org/download/LanguageTool-stable.zip

unzip LanguageTool-stable.zip

sudo mv LanguageTool-*.*/ /opt/LanguageTool

rm LanguageTool-stable.zip

Anschliessend werden die Ngram Dateien für Deutsch installiert (ca. 3,5 GB)

sudo mkdir /opt/LanguageTool/ngrams

wget https://languagetool.org/download/ngram-data/ngrams-de-20150819.zip

sudo unzip ngrams-de-20150819.zip -d /opt/LanguageTool/ngrams

rm ngrams-de-20150819.zip

Danach die Ngram Dateien für Englisch (ca. 8 GB)

wget https://languagetool.org/download/ngram-data/ngrams-en-20150817.zip

sudo unzip ngrams-en-20150817.zip -d /opt/LanguageTool/ngrams

rm ngrams-en-20150817.zip

Für einen ersten Test sollte man nun auf das Terminal in das Installationsverzeichnis unter /opt/LanguageTool wechseln. Das zweite Kommando startet dann die Server-Komponente von LanguageTool. Der Dienst lauscht auf Port 8081 auf Anfragen. Mit der Tastenkombination [Strg]+[C] beendet ihr den Dienst und kehrt wieder auf die Shell zurück.

cd /opt/LanguageTool

java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port 8081

Jetzt müssen die optional installierten N-Gramm-Daten integriert werden.

Man erstellt mit einem Editor wie Nano unterhalb des Ordners /opt/LanguageTool die Konfigurationsdatei languagetool.cfg. Als Inhalt fügt man die Ausgabe nach dem im folgenden Listing eingefügten Kommando cat languagetool.cfg ein. Mit der Tastenkombination [Strg]+[O] und [Eingabe] speichert ihr die Änderung des Editors ab, mit [Strg]+[x] geht es dann zurück auf die Shell.

sudo nano /opt/LanguageTool/languagetool.cfg

Ausgabe von 
cat languagetool.cfg

in  /opt/LanguageTool/languagetool.cfg eintragen

languageModel=/opt/LanguageTool/ngrams/

Damit der LanguageTool-Server jetzt automatisch mit dem Rechner hochfährt, legt ihr eine Unit für Systemd an. Dazu übertragt ihr den Inhalt aus dem folgenden Listing in die noch zu erstellende Datei /etc/systemd/system/languagetool.service.

 Alle Pfade beziehen sich auf den bei der Installation gewählten Ordner /opt/LanguageTool. Habt ihr ein anderes Installationsziel gewählt, müsst ihr die Pfade selbstverständlich in der Unit-Datei anpassen.

[Unit]
Description=LanguageTool
After=syslog.target
After=network.target

[Service]
Type=simple
User=languagetool
Group=nogroup
WorkingDirectory=/opt/LanguageTool
ExecStart=/usr/bin/java -cp /opt/LanguageTool/languagetool-server.jar org.languagetool.server.HTTPServer --config languagetool.cfg --port 8081 --allow-origin "*" --public
Restart=always
#Environment=USER= HOME=/opt/LanguageTool

[Install]
WantedBy=multi-user.target

Damit LanguageTool nicht mit Root-Rechten oder mit den Rechten eures Benutzers laufen muss, legt ihr nun noch einen eigenen System-Benutzer mit dem Namen languagetool an, ein Home-Verzeichnis braucht er nicht. Er muss sich auch nicht anmelden, daher wird auch kein Passwort gesetzt. Anschließend lasst ihr Systemd seine Konfiguration neu einlesen und aktiviert das Starten des LanguageTool-Servers. Danach ruft ihr den Dienst einmal von Hand auf und lässt euch zur Kontrolle den Status ausgeben. Der Dienst sollte sich mit active (running) zurückmelden und auch die ersten Logeinträge ausgeben.

sudo adduser --system --no-create-home languagetool

sudo systemctl daemon-reload

sudo systemctl enable languagetool

sudo systemctl start languagetool

sudo systemctl status languagetool

Bild Statusanzeige einfügen

Danach läuft LanguageTool und es muss nur noch dem Browser  bzw. dem Plugin mitgeteilt werden, dass von jetzt an auf euren Server zugegriffen werden soll. Also im Browser das Icon von LanguageTool anklicken und unten rechts auf das Zahnrad gehen.

Wichtig ist das hinter eurer URL noch ein /v2 angehängt werden muss

Wenn ihr nicht nur lokal aus eurem LAN auf den Server zugreifen wollt, muss der Server noch via Dyn DNS von aussen zugängig gemacht werden. Der Port 8081 muss dann auch im Router weitergeleitet werden.

Der beste Weg ist gleich einen Proxyserver zu benutzen. Die Beschaffung eines SSL Zertifikat wird ebenfalls damit erledigt.

Viel Spass mit eurer eigenen LanguageTool Instanz.

Quelle: https://languagetool.org/de/dev

Tags

Hilfe, LanguageTool, FLOSS-Projekte

lutz
Geschrieben von lutz am 3. Januar 2023 um 15:22

"Man erstellt mit einem Editor wie Nano unterhalb des Ordners /opt/LanguageTool die Konfigurationsdatei languagetool.cfg. Als Inhalt fügt man die Ausgabe nach dem im folgenden Listing eingefügten Kommando cat languagetool.cfg ein. Mit der Tastenkombination [Strg]+[O] und [Eingabe] speichert ihr die Änderung des Editors ab, mit [Strg]+[x] geht es dann zurück auf die Shell."

Du erstellst eine leere Datei und willst dessen Inhalt einfügen?Ich glaube, da ist was durcheinander geraten. Du möchtest einfach

echo "languageModel=/opt/LanguageTool/ngrams/" |sudo tee -a /opt/LanguageTool/languagetool.cfg

ausführen.

Norbert
Geschrieben von Norbert am 12. Januar 2023 um 10:23

ja natürlich

war etwas sperrig zu beschreiben

Thomas S.
Geschrieben von Thomas S. am 5. Januar 2023 um 18:22

Danke für den Tipp. Hab’s ausprobiert und läuft (hinter einem Reversen Proxy) recht gut.

Fred Georgi
Geschrieben von Fred Georgi am 8. Januar 2023 um 10:42

In der Konsole:

Jan 08 10:35:00 Tower systemd[1]: Started LanguageTool.Jan 08 10:35:00 Tower java[5126]: 2023-01-08 10:35:00.977 +0100 INFO org.languagetool.server.DatabaseAccessOpenSource Not setting up database access, dbDriver is not configured Jan 08 10:35:00 Tower java[5126]: 2023-01-08 09:35:00 +0000 WARNING: running in HTTP mode, consider running LanguageTool behind a reverse proxy that takes care of encryption (HTTPS) Jan 08 10:35:00 Tower java[5126]: 2023-01-08 09:35:00 +0000 WARNING: running in public mode, LanguageTool API can be accessed without restrictions! Jan 08 10:35:00 Tower java[5126]: 2023-01-08 09:35:00 +0000 Setting up thread pool with 10 threads Jan 08 10:35:01 Tower java[5126]: WARN: no common words file defined for Japanese - this language might not be correctly auto-detected Jan 08 10:35:01 Tower java[5126]: WARN: no common words file defined for Khmer - this language might not be correctly auto-detected Jan 08 10:35:02 Tower java[5126]: 2023-01-08 09:35:02 +0000 Starting LanguageTool 6.0 (build date: 2022-12-29 12:13:11 +0000, e44dbb0) server on http://localhost:8081...

Jan 08 10:35:02 Tower java[5126]: 2023-01-08 09:35:02 +0000 Server started

Im Localhost: Error: Missing arguments for LanguageTool API. Please see https://languagetool.org/http-api/swagger-ui/#/default

Funktioniert wohl doch nicht so, wie beschrieben. Aber wer nicht versucht, der wird's nie wissen. Trotzdem Danke, der Text wurde sehr gut aus dem englichen in's deutsche übersetzt. Grüße von der Insel

Sven
Geschrieben von Sven am 23. April 2024 um 09:20

Vielen Dank für die ausführliche Anleitung. Eine Frage: Wenn man Languagetool selbst hostet, sind dann auch alle Premiumfunktionen inbegriffen, oder bekommt man die ausschließlich über den Webdienst?