Diese Anleitung kann sowohl für Debian 12 -, als auch für Ubuntu 22 – Server (64Bit) angewandt werden. Wir empfehlen Ihnen, die Entwicklung des genutzten RAMs und Plattenplatz zu überwachen, da beides durch den Einsatz der Elasticsearch Volltextsuche stärker belastet werden.
- Installation Elasticsearch
- Installation der Nextcloud-Apps
- Optional: Einrichtung Nextcloud-Service
- Anpassung der JVM-Parameter
1. Installation Elasticsearch
Starten wir mit der Aktualisierung des Systems.
sudo -s
apt update && apt upgrade -V
und binden dann die Paketquellen von Elasticsearch ein. Bitte wählen Sie entsprechend Ihres Systems die Quellen von Ubuntu o. Debian:
Ubuntu:
wget -O - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /etc/apt/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list
Debian:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
Ab hier wieder für beide Derivate:
Die Installation beginnt:
apt update
apt install elasticsearch
Zum Ende der Installation werden Ihnen sowohl die Credentials des elasticsearch-Benutzers, als auch die notwendigen Befehle zur Inbetriebnahme des Elasticsearch-Services dargestellt.
Notieren Sie sich die Credentials (bspw. KeePass) und starten den Service
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
Im Anschluss sollte der Service gestartet sein (active (running)):
systemctl status elasticsearch.service
In unserem Szenario wird Elasticsearch auf dem Nextcloudserver betrieben, weshalb Sie folgende Einstellungen vornehmen sollten:
nano /etc/elasticsearch/elasticsearch.yml
Ändern Sie die Zeile
#network.host: 192.168.0.1
in
network.host: 127.0.0.1
sowie die Zeile
xpack.security.enabled: true
in
xpack.security.enabled: false
Starten Sie den Dienst neu und überprüfen den Zustand des Services erneut.
systemctl restart elasticsearch.service
systemctl status elasticsearch.service
Um bspw. auch PDF Dateien in die Volltextsuche einbeziehen zu können wird Teseract benötigt. Wir installieren das Modul wie folgt:
apt install -y tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng
Nutzen Sie die Nextcloud Collectives-App, so stellen Sie sicher, dass die notwendigen PHP-Erweiterungen installiert sind:
apt install php-mysql php8.3-sqlite3
Alle benötigen Volltext-Softwarepakete wurden erfolgreich installiert, so dass die Volltextsuche in der Nextcloud eingebunden werden kann.
2. Installation der Nextcloud-Apps
Führen Sie die nachfolgenden Befehle aus, um die vier Apps über Nextcloud Kommandozeile zu installieren:
sudo -u www-data php /var/www/nextcloud/occ app:enable fulltextsearch
sudo -u www-data php /var/www/nextcloud/occ app:enable fulltextsearch_elasticsearch
sudo -u www-data php /var/www/nextcloud/occ app:enable files_fulltextsearch
sudo -u www-data php /var/www/nextcloud/occ app:enable files_fulltextsearch_tesseract
Sie können die Apps natürlich auch über den Nextcloud-Appstore im Browser aktivieren.
Konfigurieren Sie als Nextcloud-Administrator die Volltexteinstellungen wie dargestellt:
Sofern die Überprüfung der Volltextsuche erfolgreich abgeschlossen wurde,
sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:test
so kann der eigentliche Volltextindex initial erstellt werden. Da die Erstellungsdauer abhängig vom Datenbestand und -volumen ist, führen wir die initiale Erstellung im Hintergrund (screen) durch.
screen -S NC-INDEX
sudo -u www-data php /var/www/nextcloud/occ fulltextsearch:index
Hinweis:
- diese screen-Session verlassen Sie mit < STRG+A > gefolgt von < d >.
- Zurück zu dieser Session gelangen Sie mittel < screen -r >
Sobald der Index erstellt wurde kommt der blinkende Cursor zum Prompt zurück.
3. Optional: Einrichtung eines Nextcloud-Service
» OPTIONAL: sofortige Indizierung anstatt des cron-Intervalls
Möchten Sie eine sofortige Indizierung anstelle der cron-gesteuerten Indizierung einrichten, so erstellen Sie den Nextcloud-Index-Dienst. Dieser indiziert neue Dokumente sofort und fügt diese dem bestehenden Index hinzu.
nano /etc/systemd/system/nextcloud-fulltext-elasticsearch-worker.service
Fügen Sie diesen Text hinein:
[Unit] Description=Elasticsearch Worker for Nextcloud Fulltext Search After=network.target mariadb.service redis-server.service elasticsearch.service Requires=mariadb.service elasticsearch.service [Service] User=www-data Group=www-data WorkingDirectory=/var/www/nextcloud ExecStart=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:live -q ExecStop=/usr/bin/php /var/www/nextcloud/occ fulltextsearch:stop Nice=19 Restart=always [Install] WantedBy=multi-user.target
Aktivieren und starten Sie den neuen Index-Service:
systemctl enable nextcloud-fulltext-elasticsearch-worker.service
systemctl start nextcloud-fulltext-elasticsearch-worker.service
ENDE OPTIONAL «
Die Volltextsuche kann nun bereits genutzt werden und sieht in der neuen Suche von Nextcloud Hub 7 wie folgt aus.
4. JVM-Paramater
Um den Speicherverbrauch von Elasticsearch einzugrenzen empfehlen wir, die JVM-Parameter anzupassen. In der Praxis zeigte sich diese Datei als ein guter, durchschnittlicher Ansatz:
nano /etc/elasticsearch/jvm.options.d/jvm.options
Fügen Sie in diese Datei folgenden Inhalt ein (Annahme: Server mit 16GB RAM, sonst bitte auf bspw. 2g reduzieren):
-Xms4g
-Xmx4g
Starten Sie den Elasticsearch-Service neu.
systemctl restart elasticsearch.service
Weiterführende Links:
- Nextcloud GmbH: https://github.com/nextcloud/fulltextsearch/wiki/Basic-Installation
- Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/current/advanced-configuration.html#set-jvm-options
Die Installation der Volltextsuche mit Elasticsearch 8 wurde erfolgreich abgeschlossen und so wünsche ich Ihnen viel Spaß mit Ihren Daten in Ihrer privaten Cloud. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!