ElasticSearch dient euch als Volltextsuche in Nextcloud. Alle, die keinen Bedarf daran haben, können diese Anleitung verwenden.
Nun zeige ich euch, wie ihr dies in wenigen Minuten mit Docker realisiert. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.
Datum | Änderungen |
---|---|
30.12.2020 | Erstellung dieser Anleitung. |
19.08.2021 | An die aktuelle Version 22.1.0 angepasst. |
21.08.2021 | Kleiner Fehler behoben |
12.01.2022 | Anleitung für aktuelle Nextcloud / ElaticSearch Version angepasst. Danke an @thegraubrot, @Detlef für die Hinweise. |
30.05.2023 | Anpassung an die aktuelle Version 26.01, Anpassung Traefik Labels |
0. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
1. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/nextcloud/{database,app,daten,nextcloud-app,imagemagick} mkdir -p /opt/containers/nextcloud/elasticsearch/data chmod 777 -R /opt/containers/nextcloud/elasticsearch/data
2. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle Nextcloud Compose genommen und diese abgeändert für Traefik.
nano /opt/containers/nextcloud/docker-compose.yml
Inhalt
version: '3.3' services: nextcloud-db: image: mariadb container_name: nextcloud-db command: --transaction-isolation=READ-COMMITTED --innodb_read_only_compressed=OFF restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /opt/containers/nextcloud/database:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=test #SQL root Passwort eingeben - MYSQL_PASSWORD=test #SQL Benutzer Passwort eingeben - MYSQL_DATABASE=nextcloud #Datenbank Name - MYSQL_USER=nextcloud #SQL Nutzername - MYSQL_INITDB_SKIP_TZINFO=1 - MARIADB_AUTO_UPGRADE=1 networks: - default nextcloud-redis: image: redis:alpine container_name: nextcloud-redis hostname: nextcloud-redis networks: - default restart: unless-stopped command: redis-server --requirepass test # Redis Passwort eingeben nextcloud-app: build: ./nextcloud-app container_name: nextcloud-app restart: unless-stopped depends_on: - nextcloud-db - nextcloud-redis environment: TRUSTED_PROXIES: 172.16.255.254/16 OVERWRITEPROTOCOL: https OVERWRITECLIURL: https://nextcloud.euredomain.de OVERWRITEHOST: nextcloud.euredomain.de REDIS_HOST: nextcloud-redis REDIS_HOST_PASSWORD: test # Redis Passwort von oben wieder eingeben volumes: - ./app:/var/www/html - ./imagemagick/policy.xml:/etc/ImageMagick-6/policy.xml - ./daten:/var/www/html/data labels: - "traefik.enable=true" - "traefik.http.routers.nextcloud.entrypoints=websecure" - "traefik.http.routers.nextcloud.rule=(Host(`nextcloud.euredomain.de`))" - "traefik.http.routers.nextcloud.tls=true" - "traefik.http.routers.nextcloud.tls.certresolver=http_resolver" - "traefik.http.routers.nextcloud.service=nextcloud" - "traefik.http.services.nextcloud.loadbalancer.server.port=80" - "traefik.docker.network=proxy" - "traefik.http.routers.nextcloud.middlewares=nextcloud-dav,default@file" - "traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav" - "traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/" networks: - proxy - default elasticsearch: build: ./elasticsearch container_name: elasticsearch restart: unless-stopped environment: - discovery.type=single-node ulimits: memlock: soft: -1 hard: -1 volumes: - ./elasticsearch/data:/usr/share/elasticsearch/data networks: - default networks: proxy: external: true
Notwendige Anpassungen:
- MySQL Root Passwort ändern
- MySQL User Kennwort ändern
- MySQL User für Nextcloud ändern
- eure Domain bei Traefik anpassen (“nextcloud.euredomain.de”)
- OVERWRITECLIURL anpassen
- OVERWRITEHOST anpassen
3. Anpassungen für ImageMagick
ImageMagick wird verwendet um aus PDF Seiten Fotos zu erstellen. Diese können später per OCR erkannt werden. Es gibt derzeit wohl ein kleines Hindernis (Github Quelle) weshalb wir hier noch eine extra Anpassung vornehmen müssen.
nano /opt/containers/nextcloud/imagemagick/policy.xml
Inhalt:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policymap [ <!ELEMENT policymap (policy)+> <!ATTLIST policymap xmlns CDATA #FIXED ''> <!ELEMENT policy EMPTY> <!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED stealth NMTOKEN #IMPLIED value CDATA #IMPLIED> ]> <policymap> <!-- <policy domain="system" name="shred" value="2"/> --> <!-- <policy domain="system" name="precision" value="6"/> --> <!-- <policy domain="system" name="memory-map" value="anonymous"/> --> <!-- <policy domain="system" name="max-memory-request" value="256MiB"/> --> <!-- <policy domain="resource" name="temporary-path" value="/tmp"/> --> <policy domain="resource" name="memory" value="256MiB"/> <policy domain="resource" name="map" value="512MiB"/> <policy domain="resource" name="width" value="16KP"/> <policy domain="resource" name="height" value="16KP"/> <!-- <policy domain="resource" name="list-length" value="128"/> --> <policy domain="resource" name="area" value="128MB"/> <policy domain="resource" name="disk" value="1GiB"/> <!-- <policy domain="resource" name="file" value="768"/> --> <!-- <policy domain="resource" name="thread" value="4"/> --> <!-- <policy domain="resource" name="throttle" value="0"/> --> <!-- <policy domain="resource" name="time" value="3600"/> --> <!-- <policy domain="coder" rights="none" pattern="MVG" /> --> <!-- <policy domain="module" rights="none" pattern="{PS,PDF,XPS}" /> --> <!-- <policy domain="delegate" rights="none" pattern="HTTPS" /> --> <!-- <policy domain="path" rights="none" pattern="@*" /> --> <!-- <policy domain="cache" name="memory-map" value="anonymous"/> --> <!-- <policy domain="cache" name="synchronize" value="True"/> --> <!-- <policy domain="cache" name="shared-secret" value="passphrase" stealth="true"/> --> <!-- <policy domain="system" name="pixel-cache-memory" value="anonymous"/> --> <!-- <policy domain="system" name="shred" value="2"/> --> <!-- <policy domain="system" name="precision" value="6"/> --> <!-- not needed due to the need to use explicitly by mvg: --> <!-- <policy domain="delegate" rights="none" pattern="MVG" /> --> <!-- use curl --> <policy domain="delegate" rights="none" pattern="URL" /> <policy domain="delegate" rights="none" pattern="HTTPS" /> <policy domain="delegate" rights="none" pattern="HTTP" /> <!-- in order to avoid to get image with password text --> <policy domain="path" rights="none" pattern="@*"/> <!-- disable ghostscript format types --> <policy domain="coder" rights="none" pattern="PS" /> <policy domain="coder" rights="none" pattern="PS2" /> <policy domain="coder" rights="none" pattern="PS3" /> <policy domain="coder" rights="none" pattern="EPS" /> <policy domain="coder" rights="read | write" pattern="PDF" /> <policy domain="coder" rights="none" pattern="XPS" /> </policymap>
4. Anpassung für Nextcloud
In der aktuellen Version muss noch GhostScript in den Nextcloud Container hinzugefügt werden. Daher müssen wir uns den Container selbst bauen.
nano /opt/containers/nextcloud/nextcloud-app/Dockerfile
Inhalt:
FROM nextcloud RUN apt-get update RUN apt-get install -y ghostscript RUN apt install -y libmagickwand-dev --no-install-recommends RUN pecl install imagick; exit 0 RUN docker-php-ext-enable imagick RUN rm -rf /var/lib/apt/lists/*
5. Anpassungen für ElasticSearch
Um die OCR Erkennung in ElasticSearch zu realisieren benötigen wir noch das Programm Tesseract. Daher müssen wir uns den ElasticSearch Container auch selbst bauen.
nano /opt/containers/nextcloud/elasticsearch/Dockerfile
Inhalt:
FROM elasticsearch:7.17.10 RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch ingest-attachment RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng
Hier könnt ihr noch weitere Sprachen installieren zur OCR Erkennung. Eine Übersicht alles Sprachen findet ihr hier.
6. Nextcloud Server starten
Zuerst bauen wir uns alle Container zusammen.
cd /opt/containers/nextcloud docker compose build
Den Server startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/nextcloud/docker-compose.yml up -d
7. Nextcloud einrichten
Nun müsst ihr auf “nextcloud.euredomain.de” gehen. Hier müsst ihr jetzt die Verbindung zur SQL Datenbank herstellen sowie einen Administrator für Nextcloud anlegen.
Zuerst klickt ihr auf “Speicher & Datenbank”.
Hier wählt ihr nun “MySQL/MariaDB” aus.
Jetzt solltet ihr folgendes sehen.
Gebt hier nun folgendes ein:
Administrator-Konto anlegen
- Benutzername: Wie euer Nextcloud Admin heißen soll
- Passwort: Wählt ein Passwort
Datenbank Verbindung herstellen
- Datenbank-Benutzer: Holt den Namen aus dem Docker Compose Datei
- Datenbank-Passwort: Holt das Passwort aus dem Docker Compose Datei
- Datenbank-Name: Haben wir in Docker Compose auf “nextcloud” festgelegt
- Datenbank-Host: Haben wir in Docker Compose auf “nextcloud-db” festgelegt
Wenn ihr anschließend auf “Installation abschließen” klickt, dauert es ca. 30 Sekunden, bis die Webseite neu lädt und Nextcloud fertig installiert ist. Ihr werdet dann so begrüßt.
8. Optimierungen
Wenn ihr nun unter “Einstellungen” -> “Übersicht” geht, solltet ihr feststellen, dass Nextcloud noch “Optimierungsbedarf” sieht. Dies wollen wir nun tun.
8.1 Standardtelefonregion festlegen
Dazu öffnet ihr folgende Datei:
nano /opt/containers/nextcloud/app/config/config.php
Fügt nun folgende Zeile hinzu:
'default_phone_region' => 'DE',
Dies setzt die Standardregion auf Deutschland. Beispiele dazu findet ihr hier. Nun könnt ihr die Datei wieder schließen.
8.2 Container neu starten
Nun starten wir Nextcloud neu um sicherzugehen, dass alle Einstellungen übernommen werden.
docker compose -f /opt/containers/nextcloud/docker-compose.yml down docker compose -f /opt/containers/nextcloud/docker-compose.yml up -d
9. Collabora Office integrieren
Ich habe hier eine Anleitung geschrieben, wie ihr in wenigen Minuten Collabora Office mittels Docker installiert und in Nextcloud integrieren könnt. Collabora Office ermöglicht euch ein “komplettes online Office” innerhalb von Nextcloud.
10. ElasticSearch integrieren
Nun könnt ihr noch ElasticSearch integrieren. Dazu müsst ihr noch ein paar Apps in Nextcloud installieren. Meldet euch dazu als Administrator an.
10.1 Apps installieren
Klickt nun auf euren “Buchstaben” und wählt “Apps” aus.
Wählt nun hier “Suche” aus.
Nun installiert ihr folgende Apps:
- Full text search
- Full text search – Elasticsearch Platform
- Full text search – Files
- Full text search – Files – Tesseract OCR
10.2 Verbindung zu ElasticSearch herstellen
Nun müssen wir die Apps noch konfigurieren. Dazu klickt ihr auf euren “Buchstaben” und wählt “Einstellungen” aus.
Anschließend klickt ihr auf “Volltextsuche”.
Hier gebt ihr nun folgendes ein:
Ihr könnt die Einstellungen auch nach euren Wünschen anpassen.
Nun seid ihr in Nextcloud fertig.
10.3 Volltextsuche initialisieren
Nachdem ihr nun das Plugin eingerichtet habt müsst ihr noch die Suche initialisieren. Dazu gebt ihr folgenden Befehl ein:
docker exec --user www-data nextcloud-app php occ fulltextsearch:index
Anschließend werden alle bisherigen Dateien initialisiert. Dies kann etwas dauern.
Nun könnt ihr alle Dateien suchen, die bisher erstellt wurden.
10.4 Neue Dateien initialisieren
Ihr müsst wissen, dass nur Dateien / Texte gesucht werden können, die bereits initialisiert wurden. Wenn ihr also nur 1x täglich eure Dateien initialisiert, dann könnt ihr die Daten / Texte also immer erst nach der nächsten Initialisierung nutzen.
Ihr habt 2 Möglichkeiten der Initialisierung:
- Dateien Live initialisieren
- Dateien zu einen festen Zeitpunkt initialisieren
10.4.1 Live initialisieren
Dazu gebt ihr folgenden Befehl ein:
docker exec --user www-data nextcloud-app php occ fulltextsearch:live
Nun solltet ihr folgendes sehen:
Der Befehl wird jetzt innerhalb des Containers ausgeführt und ihr könnt mit “STRG+C” die Ausgabe abbrechen. Im Container läuft trotzdem noch alles weiter.
10.4.2 Zu einem festen Zeitpunkt initialisieren
Dazu erstellt ihr einen Cron Job. Gebt dazu folgendes ein:
crontab -e
Wählt nun folgendes aus:
Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny Choose 1-2 [1]: 1
Nun gebt ihr folgendes ein:
0 5 * * * docker exec --user www-data nextcloud-app php occ fulltextsearch:index
Durch diesen Code wird euer Server jeden Tag um 05:00 Uhr alle Dateien initialisieren. Weitere Einstellungen zu Cron findet ihr hier.
10.4.2 Zu einem festen Zeitpunkt initialisieren
Dazu erstellt ihr einen Cron Job. Gebt dazu folgendes ein:
crontab -e
Wählt nun folgendes aus:
Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny Choose 1-2 [1]: 1
Nun gebt ihr folgendes ein:
0 5 * * * docker exec --user www-data nextcloud-app php occ fulltextsearch:index
Durch diesen Code wird euer Server jeden Tag um 05:00 Uhr alle Dateien initialisieren. Weitere Einstellungen zu Cron findet ihr hier.
10.4.3 regelmäßig alle paar Minuten initialisieren
Dazu erstellt ihr einen Cron Job. Gebt dazu folgendes ein:
crontab -e
Wählt nun folgendes aus:
Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny Choose 1-2 [1]: 1
Nun gebt ihr folgendes ein:
*/5 * * * * docker exec --user www-data nextcloud-app php occ fulltextsearch:index
Durch diesen Code wird euer Server alle 5 Minuten alle Dateien initialisieren. Weitere Einstellungen zu Cron findet ihr hier.
10.5 Volltextsuche nutzen
Nachdem ihr alles eingerichtet habt könnt ihr die Volltextsuche nutzen. Dazu klickt ihr oben auf die “Lupe” und gebt euren Suchbegriff ein.
11. Quellen
https://hub.docker.com/_/nextcloud/
https://teqqy.de/nextcloud-docker-tutorial-step-by-step-zum-erfolg/
https://nerdblog.steinkopf.net/2018/07/nextcloud-volltext-index-mit-docker-und-elasticsearch/
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
https://github.com/tesseract-ocr/tesseract
https://github.com/nextcloud/fulltextsearch/issues/584
https://github.com/nextcloud/files_fulltextsearch/issues/100
Hallo zusammen,
vielen Dank für die Mühen und die tolle Anleitung. Leider bekomme ich folgende Meldung im Browser nach dem ich alle Werte für User und DB angegeben habe und er angefangen hat Nextcloud zu installieren (Punkt 7):
Internal Server Error
The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.
Im LOG vom nextcloud-app ist folgendes zu finden:
Configuring Redis as session handler
=> Searching for scripts (*.sh) to run, located in the folder: /docker-entrypoint-hooks.d/before-starting
==> but the hook folder “before-starting” is empty, so nothing to do
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 192.168.48.5. Set the ‘ServerName’ directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 192.168.48.5. Set the ‘ServerName’ directive globally to suppress this message
[Mon Oct 16 07:57:43.642989 2023] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.57 (Debian) PHP/8.2.11 configured — resuming normal operations
[Mon Oct 16 07:57:43.643027 2023] [core:notice] [pid 1] AH00094: Command line: ‘apache2 -D FOREGROUND’
192.168.1.1 – – [16/Oct/2023:08:00:17 +0000] “GET /index.php/core/apps/recommended HTTP/1.1” 500 1658 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36”
Hat jemand eine Idee waran das liegen kann? Ich habe alles soweit wie in dre Anleitung beschrieben durchgeführt. Scheiter aber an diesem Punkt hier.
Besten Dank
Daniel
Vielen Dank für diese Anleitung. Ich komme soweit klar, aber an zwei Stellen geht es nicht voran. 1. Wenn ich meine Dokumente indiziere mit docker exec […] occ fulltextsearch:index läuft das zunächst eine halbe Stunde durch mit Statusanzeige, dann erscheint reproduzierbar die Fehlermeldung:
An unhandled exception has been thrown:
TypeError: OCA\Files_FullTextSearch\Service\FilesService::getInt(): Argument #2 ($arr) must be of type array, bool given, called in /var/www/html/custom_apps/files_fulltextsearch/lib/Service/FilesService.php on line 500 and defined in /var/www/html/custom_apps/fulltextsearch/vendor/artificial-owl/my-small-php-tools/lib/Traits/TArrayTools.php:102
Frau Google hat zu diesem Fehler nicht so eine richtige Lösung gebracht. Hast Du eine Idee?
2. Ein Großteil der Dateien scheint aber indiziert worden zu sein, wenn ich den Index stoppe und neu starte, fängt er nicht von vorne an. Aber nutze ich nun die Volltextsuche in der Nextcloud Webgui habe ich keinerlei Treffer auch nicht für offensichtlichste Suchworte. Wo kann ich da weitersuchen?
Anmerkung: Müsste der Port 9200 in der Elasticmaschine nicht im docker-compose.yaml expose: – ‘9200’ angegeben sein?
elastichsearch 8 wurde veröffentlicht,. Wann können wir mit einem Update der Anleitung rechnen?
Bei Docker-Compose Build kommt immer ein Fehler:
debconf: delaying package configuration, since apt-utils is not installed
und
-> Downloading ingest-attachment from elastic
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission createAccessControlContext
See https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Hallo zusammen,
bei mir funktioniert die Sache mit dem OCR nur, wenn die Pakete in der nextcloud-app installiert werden. Zur Info 🙂
FROM nextcloud:23.0.0
# FROM nextcloud:20.0.7-fpm
RUN apt-get update
RUN apt-get install -y ghostscript
#solve issues with imagemagick
RUN apt-get install -y libmagickcore-6.q16-6-extra
RUN apt-get install -y software-properties-common
#RUN add-apt-repository universe && apt upgrade
RUN apt-get install -y ffmpeg
RUN apt-get -y install ocrmypdf
RUN apt-get -y install tesseract-ocr
RUN apt-get -y install tesseract-ocr-deu
Viele Grüße
Jonas
ports:
– “9200:9200”
– “9300:9300”
Muss bei Elasticsearch in der docker-compose Datei raus!
Sonst ist Elasticsearch von extern erreichbar. Habe gerade zum Glück eine Info Mail von Hetzner bekommen:
> Sehr geehrte Damen und Herren,
>
> Elasticsearch ist eine Suchmaschine basierend auf Apache Lucene,
> welche hufig in Verbindung mit Web-Applikationen eingesetzt wird.
>
> Ist ein Elasticsearch-Server offen aus dem Internet erreichbar
> und nicht durch eine Authentifizierung geschtzt, knnen Angreifer
> nach Belieben die mittels Elasticsearch verwalteten Daten auslesen,
> modifizieren oder lschen. Dies ermglicht Angreifern ggf. das
> Aussphen von sensiblen Informationen. Weiterhin knnen Angreifer
> bei Elasticsearch bis zur Version 1.2.x beliebigen Programmcode
> auf dem Server ausfhren.
> Nachfolgend senden wir Ihnen eine Liste betroffener Systeme in Ihrem
> Netzbereich. Der Zeitstempel (Zeitzone UTC) gibt an, wann das System
> geprft und ein offener Elasticsearch-Server identifiziert wurde.
>
> Wir mchten Sie bitten, den Sachverhalt zu prfen und Manahmen zur
> Absicherung der Elasticsearch-Server auf den betroffenen Systemen
> zu ergreifen bzw. Ihre Kunden entsprechend zu informieren.
>
> Falls Sie krzlich bereits Gegenmanahmen getroffen haben und diese
> Benachrichtigung erneut erhalten, beachten Sie bitten den angegebenen
> Zeitstempel. Wurde die Gegenmanahme erfolgreich umgesetzt, sollten
> Sie keine Benachrichtigung mit einem Zeitstempel nach der Umsetzung
> mehr erhalten.
Ich hatte mit dem gebauten nextcloud-app Container das Problem, dass /var/www/html/data nicht angelegt oder beschrieben werden konnte.
Ich hatte das Verzeichnis vorher angelegt.
Verschiedene Tests mit geändertem Besitzer im hostFS oder Anpassung der UID im Container waren erfolglos.
Was am Ende geholfen hat: innerhalb des Containers den Eigentümer von /var/www/html/data auf www-data:root zu setzen.
Vielleicht wäre das noch was für das Dockerfile.
Elasticsearch – Log4Shell Problem
Die hier verwendete Version 7.10.1 weist lt. Docker Hub das Log4Shell-Problem auf. Mit der aktuellen Version 7.16.2 funktionieren die YUM – Befehle im Dockerfile nicht mehr. Scheint sich nunmer um ein Ubuntu 20.04 zu handeln. Mit den folgenden Abwandlungen funktioniert das Dockerfile wieder. Die Daten lassen sich auch indexieren. Sicherheitshalber habe ich apt-update und upt-upgrade eingefügt.
FROM elasticsearch:7.16.2
RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install –batch ingest-attachment
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng
Hallo, hätte hier jemand evtl. einen Rat für mich? Ich komme nicht weiter und weiß auch nicht mehr nach was ich suchen könnte. ;-(
Ich wäre sehr dankbar…Ausgabe von docker-compose:
nextcloud-app | Configuring Redis as session handler
nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 394: exec: –: not found
nextcloud-redis | 1:C 14 Nov 2021 01:41:09.132 # Fatal error, can’t open config file ‘/data/–’: No such file or directory
nextcloud-app | AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 172.18.0.3. Set the ‘ServerName’ directive globally to suppress this message
nextcloud-app | [Sun Nov 14 01:41:10.853753 2021] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.51 (Debian) PHP/8.0.12 configured — resuming normal operations
nextcloud-app | [Sun Nov 14 01:41:10.853793 2021] [core:notice] [pid 1] AH00094: Command line: ‘apache2 -D FOREGROUND’
nextcloud-db exited with code 127
nextcloud-redis exited with code 1
nextcloud-redis | 1:C 14 Nov 2021 01:41:09.132 # Fatal error, can’t open config file ‘/data/–’: No such file or directory
nextcloud-db exited with code 127
nextcloud-db | /usr/local/bin/docker-entrypoint.sh: line 394: exec: –: not found
nextcloud-redis exited with code 1
Fehlermeldung der Nextcloud eine Nachricht drüber.
Ganz lieben Dank und noch ein schönes Wochenende
So habe den Fehler in der Formatierung gefunden und “könnte” nun einen Admin User für Nextcloud anlegen.
Leider erhalte ich folgende Fehlermeldung (obwohl alles nach Anleitung durchgeführt):
Error while trying to create admin user: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
Könnte mir jemand helfen und mir zu mindestens einen Tipp geben, was ich nun mal wieder falsch gemacht habe? Ganz vielen lieben Dank und Grüße
Marcel
Leider immer noch nicht, er scheint auch wirklich explizit an dieser Stelle eine Probleme zu haben:
The command ‚/bin/sh -c /usr/share/elasticsearch/bin/elasticsearch-plugin install – batch ingest-attachment‘
(Was mich wundert, sorry falls die Frage blöd ist, der Ordnerpfad existiert gar nicht, ich habe auch in der Anleitung nicht gefunden das ich diesen anlege oder ähnliches. Bezieht der sich nicht auf das lokal heruntergeladene plugin? Wie gesagt sind meine first steps hier, umso mehr danke für die Mühe und Hilfe)
Da gibt es mehrere:
in der docker-compose.yml
command: (-> hier)– transaction-isolation=READ-COMMITTED (-> hier)– log-bin=ROW
command: (-> hier)– innodb_read_only_compressed=OFF
command: redis-server (-> hier)– requirepass test # Redis Passwort eingeben
in der Nextcloud-App Dockerfile
RUN apt-get install (-> hier)-y ghostscript
RUN apt install (-> hier)-y libmagickwand-dev (-> hier)– no-install-recommends
In der Elasticssearch Dockerfile
RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install(-> hier)– batch ingest-attachment
RUN yum-config-manager (-> hier)– add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_8/
RUN yum -y install tesseract (-> hier)– nogpgcheck
RUN yum -y install tesseract-langpack-deu (-> hier)– nogpgcheck
RUN yum -y install tesseract-langpack-eng (-> hier)– nogpgcheck
Hab’s allerdings nur kurz überflogen
Hallo Marcel,
hatte ähnliche Fehler, ersetze diesen teil hier
“– batch ingest-attachment”
durch ein manuell geschriebenes “–batch ingest-attachment”
Das musst du auch an anderen Stellen im Code machen…
Hi und erstmal danke für die tolle Anleitung, ich habe ein Problem und kann den Fehler nicht finden.
Wäre es möglich mir als Anfänger hier einen Tipp zu geben?
Step 1/7 : FROM elasticsearch:7.10.1
—> 558380375f1a
Step 2/7 : RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install – batch ingest-attachment
—> Running in 8b6332c0dc68
-> Installing ???
-> Failed installing ???
-> Rolling back ???
-> Rolled back ???
A tool for managing installed elasticsearch plugins
Non-option arguments:
command
Option Description
—— ———–
-E Configure a setting
-h, –help Show help
-s, –silent Show minimal output
-v, –verbose Show verbose output
ERROR: Unknown plugin ???
The command ‘/bin/sh -c /usr/share/elasticsearch/bin/elasticsearch-plugin install – batch ingest-attachment’ returned a non-zero code: 64
ERROR: Service ‘elasticsearch’ failed to build : Build failed
Ich wäre sehr dankbar. Viele Grüße
Marcel
Moin,
habe früher schon deine Anleitungen befolgt und hab sher einfach und unkompliziert ein Nextcloud installieren können.
Bei dieser Anleitung jedoch komme ich nach dem docker-compose build an einen Punkt an dem ich nun nicht mehr weiter weiss.
Wenn ich nun mit “docker-compose -f /path/to/file.yml up -d” Ausführe lädt er zwar alles runter aber bringt mir folgende Fehlermeldungen: nextcoud-db exited with code 127, nextcloud-redis exited with code 1.
Habe den Server nun mehrmals neu installiert und alles doppelt und dreifach geprüft aber komme hier einfach nicht weiter.
Hallo,
Leider habe ich ein kleines Problem bei dem befehel “docker-compose build”
Am Ende kommt der fehler:
install failed
ERROR: Service ‘nextcloud-app’ failed to build: The command ‘/bin/sh -c apt install -y libmagickwand-dev –no-install-recommends && pecl install imagick && docker-php-ext-enable imagick && rm -rf /var/lib/apt/lists/*’ returned a non-zero code: 1
Kennt einer die Lösung für mein Problem?
Das verwendete Betriebssystem ist Debian 10
MFG
Thorsten
Hallo,
einen ganz super herzlichen dank erstmal für die guten Anleitungen von dir. Die haben mir viel Zeit erspart.
Eine frage hätte ich aber noch zu Nextcloud. Nach dem ersten Start von NC wird mir in den Einstellungen folgender Hinweis noch angezeigt:
“Dem Modul php-imagick fehlt die SVG-Unterstützung. Für eine bessere Kompatibilität wird empfohlen, es zu installieren.”
Kann man fehlende PHP-Module noch mit in die Docker-Compose Datei packen? Wenn ja wo genau müsste das erfolgen.
Was auch noch Interessant ist wenn die PHP.ini ebenfalls extern erreichbar wäre um diese noch zu editieren.
Gruß
Jochen
Moin !!
Wie läuft das Update bei deinem Guide?
VG ausm Norden 😉
André
Hallo,
tatsächlich kann sich die IP des traefik containers ändern, wenn man z.B. den Server neu startet. Dies bedeutet aber auch, dass man die Nextcloudconfig anpassen muss.
Um das zu verhindern kann man eine feste IP vergeben sowie den Adressraum angeben. Damit entfällt dann auch das manuelle erstellen des Netzwerks.
in der Traefik.yml folgendes hinzufügen
services:
traefik:
…
networks:
proxy:
ipv4_address: 172.18.0.2
networks:
proxy:
name: proxy
ipam:
config:
– subnet: 172.18.0.0/16
Haltet ihr das füe sinnvoll?
Viele Grüße
Jonas
ps. mein OCR-Problem konnte ich noch nicht lösen 🙁
Christian, dir zunächst vielen Dank für deine ausführlichen und tollen Anleitungen!
Leider komme ich bei Punkt 7 nicht weiter, ich erhalte folgende Fehlermeldung:
Error while trying to create admin user: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [1045] Access denied for user ‘ncuser’
Kann mir hier vielleicht jemand weiterhelfen?
Viele Grüße
Christoph
Hallo zusammen,
erstmal vielen Dank für die sehr schöne und gute Anleitung.
Leider habe ich noch Probleme mit der Texterkennung. Wenn ich übers iphone über die App ein Dokument einscanne und fotografiere funktioniert es. Bei eingescannten PDF’s wird leider kein Text erkannt.
Fehlermeldungen kann ich keine finden und ich habe mich genau an deine Anleitung gehalten.
Hat jemand ne Idee oder das gleiche Problem?
Viele Grüße
Jonas
Hallo, wo gibt es evtl. eine Anleitung für eine locale Nutzung?
Bei einem vServer im Internet konnte ich die Anleitung nachstellen.
Bei Virtualbox localen Server kann ich die traefik gar nicht erreichen.
http://192.168.178.58/admin/
Fehler: unsichere Verbindung akzeptiert, dann 404 page not found.
Wie löse ich das Problem?
MfG
Matthias
Hallo,
Vielen Dank für die super Anleitung!
wenn ich versuche den Volltext zu initialisieren (sudo docker exec –user www-data nextcloud-app php occ fulltextsearch:index) kommt bei mir folgendes Problem:
—–
In StaticNoPingConnectionPool.php line 64:
No alive nodes found in your cluster
fulltextsearch:index [–output [OUTPUT]] [-r|–no-readline] [–] []
——
wenn ich `curl -XGET ‘localhost:9200’` versuche kommt folgendes:
—–
curl: (7) Failed to connect to localhost port 9200: Verbindungsaufbau abgelehnt
—–
Wisst ihr was ich falsch gemacht haben könnte? Vorsicht DAU am Werk 😉
Viele Grüße
Vielen Dank für den erstklassigen Guide! Die Nextcloud-Installation läuft inkl. der Volltextsuche super!
Leider scheint es aber ein Problem mit Tesseract OCR zu geben. Wenn ich Bilder und gescannte PDFs (die nicht bereits OCR beinhalten) in der Nextcloud ablege, finde ich die Inhalte über die Volltextsuche nicht. Fehlermeldungen konnte ich aber auch keine entdecken.
Hat jemand einen Tipp bezüglich OCR für mich? Gibt es ein Logfile in welchem ich die korrekte Ausführung von Tesseract nachvollziehen kann?
Hi zusammen,
als Hinweis, falls jemand das gleiche Problem hat wie ich:
In der Datei:
nano /opt/containers/nextcloud/elasticsearch/Dockerfile
muss bei den Zeilen 5 und 6:
RUN yum -y install tesseract –nogpgcheck
RUN yum -y install tesseract-langpack-deu –nogpgcheck
jeweils hinten ein –skip-broken
angehängt werden
LG und viel Erfolg
We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds. Bekomme ich, wenn ich mich neu einloggen will. Der Container sieht dabei nur die 172.x.x.x adresse und bannt mich nach einer weile
Auch hier, danke für die Anleitung. Ich habe beim Bearbeiten der crontab auch gleich noch einen Job für das Aufrufen der cron.php mit eingefügt, damit Hintergrund-Aufgaben alle 5 min ausgeführt werden.
*/5 * * * * docker exec –user www-data nextcloud-app php -f /var/www/html/cron.php
“Problem” gelöst! Sorry für soviel Unsinn. Ich habe mich zwischen “alter” und “neuer” Anleitung verirrt.
Jetzt läuft alles bestens !
Vielen Dank für die Anleitung. Ich habe Traefik auch ans Laufen bekommen und kann via Internet darauf zu greifen. Beim Versuch, den Nextcloud-Container zu installieren, also oben bei Schritt 3.) bekomme ich am Ende der Download- und Installationsnachrichten nur folgende Fehlermeldung:
ERROR: Cannot locate specified Dockerfile: Dockerfile
Was kann ich tun?
Leider erhalte ich folgenden Error:
ERROR: for elasticsearch Cannot start service elasticsearch: OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.go:459: container init caused: process_linux.go:382: setting rlimits for ready process caused: error setting rlimit type 8: operation not permitted: unknown
ERROR: for elasticsearch Cannot start service elasticsearch: OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.go:459: container init caused: process_linux.go:382: setting rlimits for ready process caused: error setting rlimit type 8: operation not permitted: unknown
ERROR: Encountered errors while bringing up the project.
Komplett neu installiert unter debian 10, Traefik gemäss Anleitung erstellt.
folgende Meldung:
nextcloud-db is up-to-date
nextcloud-redis is up-to-date
Starting elasticsearch … error
Starting nextcloud-app … done