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