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.

Update

21.08.2021 Kleiner Fehler behoben
19.08.2021 An die aktuelle Version 22.1.0 angepasst.
30.12.2020 Erstellung dieser Anleitung.

Wer Traefik noch nicht installiert hat, findet hier eine Anleitung, wie ihr dies schnell tun könnt.

Als Grundlage meiner Anleitung dient die offizielle Nextcloud Anleitung für Docker.

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.

cd /opt/containers/nextcloud/
nano docker-compose.yml

Inhalt

version: '3.3'

services:
  nextcloud-db:
    image: mariadb
    container_name: nextcloud-db
    command: – transaction-isolation=READ-COMMITTED – log-bin=ROW
    command: – 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 
    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:
        REDIS_HOST: nextcloud-redis
        REDIS_HOST_PASSWORD: test # Redis Passwort von oben wieder eingeben
    volumes:
      - /opt/containers/nextcloud/app:/var/www/html
      - /opt/containers/nextcloud/daten:/var/www/html/data
      - /opt/containers/nextcloud/imagemagick/policy.xml:/etc/ImageMagick-6/policy.xml

    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud-app.entrypoints=http"
      - "traefik.http.routers.nextcloud-app.rule=Host(`nextcloud.euredomain.de`)"
      - "traefik.http.middlewares.nextcloud-app-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.nextcloud-app.middlewares=nextcloud-app-https-redirect"
      - "traefik.http.routers.nextcloud-app-secure.entrypoints=https"
      - "traefik.http.routers.nextcloud-app-secure.rule=Host(`nextcloud.euredomain.de`)"
      - "traefik.http.routers.nextcloud-app-secure.tls=true"
      - "traefik.http.routers.nextcloud-app-secure.tls.certresolver=http"
      - "traefik.http.routers.nextcloud-app-secure.service=nextcloud-app"
      - "traefik.http.services.nextcloud-app.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"
      - "traefik.http.routers.nextcloud-app-secure.middlewares=nextcloud-dav,secHeaders@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:
      - /opt/containers/nextcloud/elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - default

networks:
  proxy:
    external: true

Notwendige Anpassungen:

  1. MySQL Root Passwort ändern
  2. MySQL User Kennwort ändern
  3. MySQL User für Nextcloud ändern
  4. 2x eure Domain bei Traefik anpassen (nextcloud.euredomain.de“)

Diese Docker Compose Datei funktioniert nur, wenn ich euch mittels meiner Anleitung hier Traefik installiert habt. Sonst heißen einige Traefik Variablen wohl anders. Diese müsst ihr dann dementsprechend bei euch 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.10.1
RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install – batch ingest-attachment
RUN yum install -y yum-utils.noarch
RUN yum-config-manager – add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_8/
RUN yum -y install tesseract – nogpgcheck
RUN yum -y install tesseract-langpack-deu – nogpgcheck
RUN yum -y install tesseract-langpack-eng – nogpgcheck

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 Reverse Proxy Konfiguration

Als nächstes sagen wir Nextcloud, dass es unserem Traefik Reverse Proxy vertrauen kann. Dazu müssen wir dessen IP-Adresse herausfinden. Gebt folgenden Befehl ein:

docker inspect traefik

Wenn ihr nun ganz nach unten scrollt, seht ihr folgendes:

Bei mir ist die „IPAddress“: 172.18.0.2 und das „IPPrefixLen“: 16

Mit diesen beiden Werten öffnen wir nun die Nextcloud config.php.

nano /opt/containers/nextcloud/app/config/config.php

Hier fügt ihr nun folgende Zeile ein. Passt diese aber bitte an eure Konfiguration ein.

'trusted_proxies' => '172.18.0.2/16',

8.3 Nextcloud komplett auf HTTPs umstellen

Wenn ihr euch bei Nextcloud anmelden, dann fällt euch sicher auf, dass einige Symbole nicht angezeigt werden. Dies hängt damit zusammen, dass diese per HTTP nachgeladen werden sollen. Dies wird aber blockiert.

Um dies zu lösen öffnen wir wieder die Konfigurationsdatei:

nano /opt/containers/nextcloud/app/config/config.php

Hier ändert ihr nun folgende Zeile:

vorher:
 'overwrite.cli.url' => 'http://nextcloud.euredomain.de',

nachher:
 'overwrite.cli.url' => 'https://nextcloud.euredomain.de',

Anschließend fügt ihr noch folgenden Zeilen hinzu:

  'overwriteprotocol' => 'https',
  'overwritehost' => 'nextcloud.euredomain.de',

Dies sollte dann so aussehen.

8.4 Container neu starten

Nun starten wir Nextcloud neu um sicherzugehen, dass alle Einstellungen übernommen werden. Nun sollte es so aussehen:

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 alle Apps bis auf die „Bookmarks“ App, da diese zum aktuellen Zeitpunkt noch „ungetestet“ ist.

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://markus-blog.de/index.php/2018/06/21/how-to-install-fulltextsearch-in-nextcloud-13-with-elasticsearch-and-tesseract-ocr/

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

Teile diesen Beitrag
Christian

Categories:

35 Kommentare

  1. 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

  2. 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?

  3. „Problem“ gelöst! Sorry für soviel Unsinn. Ich habe mich zwischen „alter“ und „neuer“ Anleitung verirrt.
    Jetzt läuft alles bestens !

  4. 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

  5. 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

  6. 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

  7. 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?

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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 🙁

    • um Probleme zu vermeiden sollte man lieber noch ip_range hinzufügen. mit ip_range gibt man den frei vergebbaren Adressraum an:

      config:
      – subnet: 172.18.0.0/16
      ip_range: 172.18.1.0/24

    • Hallo,
      das Update geht ganz einfach.

      Du gehst in das entsprechende Verzeichnis und führst folgende Befehle aus:

      docker-compose down
      docker-compose pull
      docker-compose up -d

      Viele Grüße
      Christian

  13. 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

  14. 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

  15. 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.

    • ok hat sich dann auch Kurzerhand erledigt.
      Anstatt folgende Befehle
      command: – transaction-isolation=READ-COMMITTED – log-bin=ROW
      habe ich
      command: –transaction-isolation=READ-COMMITTED –log-bin=ROW

      gesetzt.

      Lag das evtl an der Shell, dass mein Server die Optionen nicht interpretiert hat?

  16. 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

  17. 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…

      • Hallo Fabian,

        leider bleibt der Fehler der gleiche, kannst Du mir evtl. noch die Stellen im Code nennen wo ich dies noch anpassen müsste?

        Danke für die schnelle Antwort und beste Grüße

  18. 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

  19. 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)

    • Kein Problem.

      Der Befehl bezieht sich auf folgende Datei (Der Command wird)
      /opt/containers/nextcloud/elasticsearch/Dockerfile
      am besten mit Nano (nano /opt/containers/nextcloud/elasticsearch/Dockerfile) öffnen und dann manuell das „–“ vor batch ingest-attachment löschen und dann manuell mit 2x – eintippen (Ich vermute dass es sich hierbei um ein Formatierungsfehler handelt, man merkt, dass es unterschiedliche Zeichen sind wenn man ein manuell getipptes – neben dem aus dem Skript kopiertem setzt)

      • Hallo Fabian,

        ich habe diese Erklärung auch beim ersten Mal verstanden, Du hast es ja klar und deutlich formuliert 😉
        Dennoch habe ich es erneut manuell eingegeben, diesmal sogar den kompletten , betreffenden Befehl. Leider kommt an dieser Stelle immer wieder der gleiche Fehler.
        Ein wenig bin ich am verzweifeln, ….muss sich das in dem Befehl befindliche Plugin in dem besagten Ordnerpfad befinden? Denn wie gesagt existiert diser Pfad bei mir gar nicht.

        Vielleicht hat jemand anderes auch noch eine Idee was ich überprüfen könnte. Ich wäre dankbar, falls sich nochmal jemand die Mühe macht. Ein schönes Wochenende allen und Gruß Marcel

Schreibe einen Kommentar zu Fabian Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.