Docker mit NGINX-Proxymanager, UFW, Fail2Ban, MariaDB und Nextcloud — Teil 4

MariaDB installieren

Um Nextcloud mit einer  Datenbank versorgen zu können, greife ich auf MariaDB (innerhalb eines Dockercontainers) zurück. MariaDB wird -wie alle anderen Container- die eine fixe IP benötigen, eine manuelle IP, aus dem von uns erstellten „Docker-Netzwerk“ erhalten. Wie immer wird das Image via Portainer ausgerollt.

Volume erstellen

MariaDB benötigte ein Volume, um persistente Daten zu speichern (ich nenne es mariadb_lib).

 

 

Ports und Imagename

  • Image: mariadb:latest
  • Port 3306:3306

Netzwerk

Beim Netzwerk wählen wir unser benutzerdefiniertes Netzwerk und vergeben dem Container eine statische IP, (Gateway, DNS sind optional).

Volume zuordnen

Das erstellte volume wird dem Verzeichnis

/var/lib/mysql

zugeordnet.

Environment Variablen

  • MYSQL_ROOT_PASSWORD -> bei Value ein Rootpasswort für MariaDB setzen

Restart Policy

  • Always

Command and Logging

  • Console -> Interactive & TTY

Container ausrollen

  • via Klick auf „Deploy the container“

Bestenfalls sieht das dann bei euch so aus (bis auf die Netzwerkadresse, die ihr lt. euren Netzwerk vergeben könnt)

Standardabsicherung von Mariadb

Via Portainer und nach Auswahl des Containers „MariaDB“ wechseln wir in die Konsole, des MariaDB-Containers.

Wir tippen: mariadb_secure_installation

um ein paar grundlegende Basiseinstellungen bzgl. Sicherheit zu tätigen. Das Rootpasswort = das Passwort, das wir vorhin bei den Umgebungsvariablen für den MariaDB-Root-User gesetzt haben!

  • switch to unix_socket authentication: Y
  • Passwort für Root setzen: haben wir schon, also N
  • Remove anonymous users: Y
  • Disallow root remotly: Y
  • Remove Testdatabase: Y
  • Reload privileges tables now: y

Datenbank für Nextcloud erstellen

Von den Containern her, wird es wie folgend laufen.

  • MariaDB hat eine fixe IP (10.0.0.100)
  • Nextcloud wird die IP 10.0.0.200 bekommen
  • Wir müssen nun auf unserer Mariadb
    • Eine Datenbank erstellen
    • Einen User erstellen, der via 10.0.0.200 Vollzugriff auf die erstellte Datenkbank hat

Folgende Aktionen sind in der Konsole des MariaDB-Dockercontainers durchzuführen.

Verbinden mit MariaDB

mariadb

User „nextcloud“ erstellen, der von 10.0.0.200 aus auf die DB zugreifen darf

CREATE USER 'nextcloud'@'10.0.0.200' IDENTIFIED BY 'geheimespasswort';

Datenbank erstellen

CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Dem oben erstellten User den Zugriff gewähren

GRANT ALL PRIVILEGES on nextcloud.* to 'nextcloud'@'10.0.0.200';

FLUSH PRIVILEGES;

quit

Nextcloud installieren

Ich gehe davon aus, dass ihr bereits einen DNS-Namen (FQDN) für eure Cloud -bei eurem Provider- eingerichtet habt. Ich nehme für dieses Beispiel hier meine Test(sub)domain nc.it-networker.at

Volume einrichten

Wie mittlerweile schon gewohnt, ist ein Volume zu erstellen. (Name: nextcloud_data). Ich gehe hier jetzt nicht nochmals ins Detail, wie man via Portainer ein Volume erstellt.

Container erstellen

Netzwerkkonfiguration (Ports)

Hier müsst ihr darauf achten, dass ihr hostseitig kein Port verwendet, das bereits vergeben ist. Ich wähle hier in meinem Fall, Port 88 am Host -> Port 80 im Container.

Command and Logging

  • Interactive & TTY

Volumes

  • /var/www/html -> volume Nextcloud_data

Network

Da wir unserem MariaDB Benutzer „nextcloud“@“10.0.0.200“ den Zugriff auf die Nextcloud Datenbank gestattet haben, bekommt der Nextcloudcontainer IP 10.0.0.200 in unserem Dockernetzwerk.

Umgebungsvariablen

Hier ist an sich nichts hinzuzufügen, da die Konfiguration ja erst beim Aufruf der FQDN eurer Nextcloudinstallation startet (zb. nc.euredomain.com). Später kann jedenfalls der Parameter PHP_UPLOAD_LIMIT und PHP_MEMORY_LIMIT angepasst werden.

Restart Policy

  • Always

Container ausrollen

  • Mit Klick auf „Deploy the container“. Bei Erfolg:

NGINX-Proxy-Manager anpassen

Damit wir unsere Nextcloudinstallation ansprechen können, muss nun im NPM ein Host hinzugefügt werden. Wie oben erwähnt, soll meine Nextcloud Installation unter der Subdomain nc.it-networker.at erreichbar sein. Das Ganze soll via SSL erfolgen.

SSL muss sein

Deshalb erstelle ich mir via NPM ein SSL Zertifikat.

  • Login in den NPM
  • Oben SSL-Certificates -> Add SSL Certificate -> Letsencrypt
  • Domain: nc.it-networker.at (add unterhalb anklicken)
  • Eure Mailaddresse angeben
  • I Agree to…. anklicken
  • Save

Host erstellen

  • Login in den NPM
  • Oben Hosts -> Proxy Host
  • Rechts -> Add Proxy Host
  • Domain Namen eingeben
  • Port eingeben (80)
  • Block Common Exploits -> aktivieren  (ist im Screenshot fälschlicherweise inaktiv)

  • Reiter SSL -> das zuvor erstellte SSL – Zertifikat wählen
  • Force SSL
  • ggf. HTTP/2 Support
  • HSTS Enabled
  • Save

Weitere Schritte via GUI von Nextcloud

Nun sollte die Adresse eurer Nextcloud aufrufbar sein.

Folgend die Einstellungen lt. meinem Tutorial

Nach  Klick auf installieren dauert es nun ggf. ein wenig bis ihr in Nextcloud landet.

Nun könnt ihr User anlegen und die Cloud nutzen.

Optimierungen

Vor Allem die Warnung „Du greifst über eine sichere Verbindung auf deine Instanz zu, deine Instanz generiert jedoch unsichere URLs….“ muss ernst genommen werden. Um die Warnung los zu werden ist die config.php von nextcloud anzupassen. Wir erinnern uns, dass wir während dem Setup von Nextcloud ein Volume erstellt haben. Sofern ihr die Konfiguration von Docker nicht adaptiert habt, landen alle erstellten Volumes (im Dateisystem des Hosts) auf /var/lib/docker/volumes/<Containername>/_data.

Die Nextcloud-Konfiguration liegt bei mir auf : /var/lib/docker/volumes/Nextcloud_data/_data/config

Die Datei config.php muss bearbeitet werden.

nano config.php

Nach der Zeile

'version' => '25.0.2.3',

muss Folgendes ergänz werden. (Natürlich mit eurer Domain bzw. eurer Docker-IP des NPM)

'overwritehost' => 'nc.it-networker.at',
'overwrite.cli.url' => 'http://nc.it-networker.at',
'overwriteprotocol' => 'https',
'trusted_proxies' =>
array (
0 => '10.0.0.3',
),

Nach dem Restart des Nextcloud Containers, ist die Warnung dann verschwunden.

Caldav/ Carddav

Eventuell (naja, eigentlich ziemlich sicher) seht ihr auch noch folgende Meldungen, wenn ihr als Administrator in NC (=Nextcloud) einsteigt und „Verwaltung / Übersicht“ aufruft.

Dein Webserver ist nicht richtig konfiguriert, um „/.well-known/caldav“ aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation ?.
Dein Webserver ist nicht richtig konfiguriert, um „/.well-known/carddav“ aufzulösen. Weitere Informationen hierzu findest du in unserer Dokumentation ?.

Um dieses Problem zu lösen, muss der Host von Nextcloud im NPM angepasst werden.

Konkret gesprochen, müsst ihr diese Werte im Fenster (Reiter Advanced des NC-Proxy-Hosts) einfügen.

location /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location /.well-known/caldav
{
return 301 $scheme://$host/remote.php/dav;
}
location /.well-known/webdav
{
return 301 $scheme://$host/remote.php/dav;
}

und speichern.

Dann verschwindet die Meldung.

Hier gehts zu Teil 5

Schreibe einen Kommentar

* Zustimmung zur Datenspeicherung lt. DSGVO

*

Ich bin damit einverstanden