MySQL Bzw. generelle Einrichtungsprobleme

Hallo liebes Forum,

Habe ein Kleines Problem, beim erstellen meiner Nextcloud.
Habe diese zwar, als Docker via Portainer auf OpenMediaVault am laufen.
Aber weiter als zum Einrichtungsbildschirm komme ich nicht, siehe bilder:

4

Egal was ich einstelle. Ich habe eine eigene MySQL datenbank und zusätzlich noch die von nextcloud.
Aber egal was ich mache keine der beiden funktioniert.
Hatte eigentlich gedacht das MySQL dafür benutzen kann ohne zusätzlich eine weitere zu installieren, da ich MySQL eh benutze.

Beides läuft auf dem selben server, per Docker… wie auch auf dem Bild zu sehen.

Hoffe habe alles angegeben was ihr braucht, sonst einfach fragen.
Habe auch schon die suche verwendet, mein Englisch ist aber nicht das beste, daher habe ich leider nichts gefunden…

Habe auch schon versucht SQLite zu benutzen aber selbst das funktiniert nicht…

Schon mal danke im vor raus!!!

Mit freundlichen Grüßen
Sascha

Hi,

Du kannst auf jeden Fall das vorhandene MySQL-Image benutzen und ich denke mal Du hast natürlich für die Datenbanken auch ein persistentes Volume angelegt…

Für mich sieht die Anmelde-Maske Deiner Nextcloud Instanz ganz danach aus dass Du den Nutzer “nextcloud” auf Deinem MySQL-Server und die Datenbank noch nicht angelegt hast.

Der entsprechende Teil meines docker-compose sieht so aus…

image

Also meine docker-compose sieht so aus:

version: ‘2’

volumes:
nextcloud:
db:

services:
db:
image: mysql/mysql-server:5.7
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD= Starl0rd
- MYSQL_PASSWORD=Starl0rd2020
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud

app:
image: nextcloud
restart: always
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=Starl0rd
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db

Weis aber leider gerade nicht was du mit persistentes Volume meinst!?

Aber zu den Benutzer hier mal ein Bild meiner Datenbank, da ich diese mit dem gesamten OMV-System neu aufgesetzt habe. daher ist diese auch noch so leer…

Datenbank

Aber so sehen meine aktuellen Benutzer aus, sowie die Datenbank.

In der Anmeldemaske für die Nextcloud Installation steht

image

Deine Basiskonfiguration ist so eingerichtet dass sich der Nutzer nextcloud@172.21.0.3 versucht mit einem Passwort am MySQL Server anzumelden. Die Liste der berechtigten Nutzer in Deinem Bild zeigt aber dass es gar keinen solchen Nutzer gibt.

Das ist eine Spezifik der Docker-Installation da der Zugriff von einem anderen Container aus erfolgt welcher natürlich nicht über “localhost” sondern über dessen eigene IP-Adresse “172.21.0.3” erfolgt. Wenn Du diesen Nutzer einrichtest und ihm alle Rechte auf die Nextcloud Datenbank gibst muss es funktionieren.

Das mit dem persisten Volume hast Du schon richtig gemacht (siehe Volumes Definition) und meint ja nur dass die Daten separat und nicht im Container gespeichert werden weil sie ja sonst nach einem Image-Update in der Regel wech sind.

Ich verstehe das so, das sich der Benutzer nextcloud an der Adresse 172.21.0.3 anmelden möchte. denn für mich ist das @ Zeichen eigentlich die aussage WO sich jemand anmeldet, so kenne ich das.

Habe aber dennoch mal versucht einen Benutzer zu erstellen mit dem Namen nextcloud@172.21.0.3:

Datenbank1

Und selbst damit bleibt es bei der selben Fehler Meldung…

Das ist nicht richtig

image

bedeutet als Nutzerkennung nextcloud@172.21.0.3.localhost. Es muss aber nextcloud@172.21.0.3 konfiguriert sein.

https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/linux_database_configuration.html

erklärt das sehr schön.

Für Dich bedeutet das: Go to the Konsole des MySQL-Servers (im Docker-Container!) und gibt nachfolgendes ein:

CREATE USER 'nextcloud'@'172.21.0.3' IDENTIFIED BY 'nextcloud_db_passwort_deiner_wahl';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES on nextcloud.* to 'nextcloud'@'172.21.0.3';
FLUSH privileges;

Dann funzt es auch. Ich habe auch immer gedacht dass die Installation die Datenbank selbst anlegt aber das macht sie NICHT. Sie füllt nur eine vorhandene Datenbank mit Tabellen und Routinen.

So nun bin ich echt am Verzweifeln.

Denn ich habe seit gestern Abend versucht Nextcloud einzurichten.

Aber leider komme ich zu keinem wirklichen Erfolg.

Trotz der guten anleitung:

https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/linux_database_configuration.html

Und auch nach der Antwort von heute morgen. Bin ich nicht weiter gekommen. Meine Datenbank sieht nun so aus:

Datenbank2

Und meine Anmeldebildschirm so:

Es ist auch egal was ich bei den Daten für die Datenbank eingebe nichts geht…

Das muss gehen.

Hast Du die Befehle die ich oben geschrieben habe auf der MySQL Konsole eingegeben?
Komisch finde ich, dass der Nutzer nextcloud@172.21.0.3 kein GRANT Recht hat.

Wenn ich mir Dein Portainer Screenshot (genau, warum hab ich das nicht gleich gemacht…) anschaue kann das aber auch eigentlich gar nicht gehen denn Dein Nextcloud_db_1 Container exposed ja gar keine Ports. Wie soll der Nextcloud Container sich darauf verbinden? Wenn Du auf meinen Screenshot schaust siehst Du die Port exposed Definition.

Wenn Du willst kann ich Dir mal die docker-compose.yml meiner Testkonfiguration anhängen welche ich benutze. Da stimmt vermutlich insgesamt was nicht.

Ja ich habe die Befehle auf der MySQL Konsole eingegeben.
Aber wie oben geschrieben, oder ich habe mich falsch ausgedrückt.
Ich würde gerne Die MySQL Datenbank benutzen und nicht den Nextcloud_db_1 Container, denn das währe ja eigentlich alles nur doppelt… denn auf den Nextcloud_db_1 Container habe ich auch keinen wirklichen Zugriff, egal was ich eingebe.

Vielleicht währe das mit deiner docker-compose.yml mal ein versuch währt, auch wenn ich denke das ich dann ja wieder 2 Datenbanken habe!? Oder sehe ich das falsch?

Das ist völlig falsch wie Du das interpretierst. Schau Dir nochmal die Grundlagen von Docker und Container an dann verstehst Du auch warum Deine Installation nicht funktionieren kann.

Aus irgendeinem Grund kann ich hier grad nix hochladen, weder Screenshots noch Dateien, weiss der Geier… weder mit Chrome noch mit Firefox.

Ok, werde ich mir heute Abend noch mal zu Gemüte führen…
Aber würde es dennoch gerne mal mit deiner docker-compose.yml versuchen…
habe auch schon mal versucht Ports oder so hin zu zu fügen, wie du das oben hast, aber da gibt er mir permanent Fehler aus…

Das Problem mit dem hochladen hatte ich letztens auch!
Einfach immer weiter versuchen, irgendwann geht es dann mit dem hochladen… :smiley:

version: '3.7'

services:
  nextcloud:
    image: nextcloud:24
    container_name: nextcloud
    networks:
      nextcloud:
       ipv4_address: 172.18.0.2
    ports:
      - 8080:80
    volumes:
      - nextcloud:/var/www/html
    depends_on:
      - mariadb
      - redis
      - elasticsearch
      - collabora
    environment:
      - NEXTCLOUD_TRUSTED_DOMAINS=<Host-IP>:8080
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=mysql
      - MYSQL_HOST=nextcloud-mariadb
      - REDIS_HOST=nextcloud-redis
    restart: unless-stopped

  mariadb:
    image: mariadb/server:latest
    container_name: nextcloud-mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    networks:
      nextcloud:
       ipv4_address: 172.18.0.3
    ports:
      - 3306:3306
    restart: unless-stopped
    volumes:
      - mariadb-data:/var/lib/mysql
      - mariadb-config:/etc/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=mysql
      - MYSQL_PASSWORD=mysql
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  redis:
    image: redis:latest
    container_name: nextcloud-redis
    command: --save 60 1 --loglevel warning
    networks:
      nextcloud:
       ipv4_address: 172.18.0.4
    volumes:
      - redis-data:/data
    ports:
      - 6379:6379
    restart: unless-stopped

  collabora:
    image: collabora/code:21.11.5.1.1
    container_name: nextcloud-collabora
    restart: unless-stopped
    networks:
      nextcloud:
       ipv4_address: 172.18.0.5
    volumes:
      - code-config:/etc/coolwsd
    ports:
      - 9980:9980
    environment:
      - 'dictionaries=de en'
      - 'extra_params=--o:ssl.enable=false'
    cap_add:
      - MKNOD
    tty: true

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4
    container_name: nextcloud-elasticsearch
    restart: unless-stopped
    networks:
      nextcloud:
       ipv4_address: 172.18.0.6
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - bootstrap.memory_lock=true
      - 'discovery.type=single-node'
    ulimits:
     memlock:
      soft: -1
      hard: -1
    volumes:
      - elastic-data:/usr/share/elasticsearch/data


networks:
 nextcloud:
  driver: bridge
  ipam:
   driver: default
   config:
   - subnet: 172.18.0.0/24


volumes:
 nextcloud:
 mariadb-config:
 mariadb-data:
 redis-config:
 redis-data:
 elastic-data:
 code-config:

So sieht meine docker-compose.yml aus. Anschließend die Datenbank im MySQL Container erstellen und erst dann das Setup aufrufen.
Die Variable <Host-IP> musst Du natürlich durch deine eigene erstzen…

Zum Schluss noch einige hifreiche Pakete in den Nextcloud Container nachinstallieren und Elasticsearch so erweitern dass es auch PDFs in die Volltextsuche aufnehmen kann. Dazu habe ich eine kleine Batch Datei geschrieben.

#!/bin/bash

docker exec --user root nextcloud bash -c "apt update && apt -y install libmagickcore-6.q16-6-extra smbclient iputils-ping nmap mc htop iotop net-tools ncdu java-common default-jre graphicsmagick ffmpeg ghostscript"
docker exec --user root nextcloud-elasticsearch bash -c "/usr/share/elasticsearch/bin/elasticsearch-plugin install --batch ingest-attachment"
docker container restart nextcloud-elasticsearch

So, nun habe ich es mal so eingerichtet, nach mehreren hin und her hat es jetzt zwar soweit geklappt, das ich mich auch anmelden kann und die Nextcloud nutzen kann, zumindest im Privaten netz. Extern muss ich später machen.

Aber leider hat das mit der Datenbank dann doch nicht so geklappt wie ich es mir vorgestellt habe. ich habe alles mögliche versucht. egal wie ich Die IP konfiguriere oder die docker-compose.yml bearbeite, ich bekomme keinen Zugriff auf meine schon installierte SQL-Datenbank.

Entweder, kann ich diese nicht mehr aufrufen und nur noch die von Nextcloud nutzen oder ich habe 2 SQL-Server zur Verfügung die ich von der MySQL-Workbench aus wählen kann. So habe ich ich nun eingerichtet. was aber leider nicht das war was ich gerne hätte. aber besser so wie das meine eigentlich gar nicht mehr zur Verfügung steht.

So sehen nun meine Containers jetzt aus:

und so meine Workbench:

Hallo,

wie ich schon geschrieben habe ist das ein Verständnisproblem bzgl. Docker auf Deiner Seite. Was Du Dir vorstellst kann - wenn ich Dich richtig verstanden habe (!) - nicht gehen.

Also habe mir jetzt einiges an Dokumentationen durch gelesen, aber leider nichts wirklich gefunden was mir helfen kann. Oder was mich weiter bringt und mir erklärt wiese das nicht gehen sollte.

Ich habe ja eine MySQL Datenbank auf meinem OMV-NAS am laufen. diese funktioniert einbandfrei. Meine Idee ist es halt einfach diese auch für Nextcloud zu nutzen.
Denn hatte jetzt am WE eine Installation von Nextcloud gehabt. und dann funktionierte diese nicht mehr, sondern nur noch die von Nextcloud. Aber konnte diese genauso verwenden wie meine Einzelinstallation. Bei meiner jetzigen Installation habe ich sogar 2 SQL-Server am laufen und beide kann ich ganz normal verwende. Daher erschließt es sich mir nicht, wieso ich nicht einfach das ganze mit der schon vorhandenen Datenbank nutzen kann, was für mich ja Ressourcen schonender währe.

Oder wo liegt jetzt genau mein Verständnis Problem?
Ich kapier es leider wirklich gerade nicht. :frowning: