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.