Languagetool selber hosten

Di, 3. Januar 2023, Norbert Rüthers

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