ZTE MC801A Router mit externen 5G Antennen auf die Sprünge helfen

An sich wollte ich 5G noch nicht nutzen. Nachdem ich aber ein Martyrium mit meinem ehemaligen Anbieter (Drei) hinter mich gebracht hatte (Vorspiegelung falscher Tatsachen, Verkauf von Produkten, die gar nicht zur Verfügung stehen etc.) und nun beim Mitbewerb  gelandet bin, hab ich mir  einen 5G Tarif geleistet. Mit im Paket ist ein ZTE MC801A.  Das gelieferte Paket war schnell ausgepackt und installiert.

Info in eigener Sache: Diskussionsforum zum Thema

Speedtest

Wenn wir uns ehrlich sind, reicht wohl für die meisten Anwendungen eine Downloadgeschwindigkeit von 80-100Mbit – zumindest dann, wenn man nicht mehrere Personen „an der Leitung hängen hat“. Mein Zugang sollte aber 300Mbit Down- und rund 50Mbit Upload liefern.

Nichts wie zum https://www.speedtest.net/

Ich staunte nicht schlecht. 300Mbit Downloadrate und rund 20Mbit Upload. Allerdings hatte der Upload eine sehr hohe Latenz (bis zu 400ms). An diesem Punkt hatte ich mir noch nicht wirklich etwas dabei gedacht.

Nextcloud auf einem Miniserver – Uploadkatastrophe durch Uploadlatenz

Trotz der verhältnismäßig hohen Uploadrate, konnte ich meinen Augen nicht trauen, als ich versuchte einen Upload (von extern) auf meine selbst gehostete Nextcloudinstallation durchzuführen. 3kb/s, 10kb/s, 50kb/s…. Kann ja nicht sein. Spätestens hier hätte mir auffallen müssen, dass irgendetwas nicht stimmen kann. Dummerweise habe ich den Fehler bei meiner Nextcloud-Installation gesucht und ein paar Tage später aufgegeben.

5G Antennen müssen her

Gar nicht unbedingt wegen des Uploads, sondern einfach um den Empfang zu optimieren, habe ich mich 2 Wochen später dazu entschlossen 5G Antennen anzuschaffen.

Konkret diese hier: Marinegrade 5G Rundstrahlantenne BATLINK MAO5GV1 inklusive einem 5 Meter Kabel und HUACAM HTS9 Adapter

Externen Antennenanschluss des ZTE MC801A aktivieren

Bezüglich dieses Themas gehen die Meinungen auseinander. Manche meinen, dass man diese Option (externe Antennen) im versteckten Menü des Routers nicht aktivieren muss und 5G Antennen, bei entsprechendem 5G Tarif & Empfang automatisch aktiviert werden, andere allerdings pochen auf das Aktivieren der Antennen.

Bei mir war es so, dass ich nach Anschluss der Antennen (ohne den Antenna Switch) zu nutzen, kaum einen Unterschied bemerkt habe. Nach Aktivierung der Option und einem Neustart des Routers jedoch, gab es einen eklatanten Unterschied (positiv gemeint!)

Das Menü findet man via: http://192.168.252.254/index.html#ant_switch nachdem man sich auf dem Router eingeloggt hat (einfach #ant_switch an die Adresse dranhängen)

Anmerkungen:

Die IP Adresse des Routers kann natürlich variieren und hängt von euerer Konfiguration ab.
Ich habe dann nicht mehr versucht, den Antenna-Switch wieder zu deaktivieren und erneut zu testen. Vielleicht habt ihr ja da entsprechende Erfahrungswerte?

Niedrige Latenz nach Restart & Antenna-Switch-Aktivierung

Durch die Außenantennen & Aktivierung des Antenna Switch & Neustart wurde das Signal verbessert. Am Wichtigsten war jedoch, dass mein Upload dadurch eine um Welten bessere Latzenz erreicht hat (30-40ms), was zur Folge hatte, dass auch meine Nextcloud-Uploads entsprechend der Uploadgeschwindigkeit futschten.

Diskussionsforum zum Thema

Kopano Groupware – Community Edition & Forum eingestellt

Als jemand der bereits Zarafa als Vorgänger von Kopano Groupware im Einsatz hatte, war ich zuletzt nicht minder überrascht, dass das Community Forum von Kopano wohl nur noch als Archiv betrieben wird. Ebenso gibt es wohl schon einige Monate keine Community Edition von Kopano mehr. Nachlesen kann man das im read-only Kopano Forum.

Kurz zusammen gefasst ist man hier wohl der Meinung, dass die Beiträge im Forum selbst stagniert sind und begründet dies damit, dass sich die Entwickler hauptsächlich auf die „supported Version“ von Kopano konzentrieren und  deshalb der Entwicklungszweig der „Community Edition“ keine Berücksichtigung mehr findet. Letzterer hat auf Basis dessen auch schon lange keine Updates mehr erhalten.

Das Einstellen der Community-Version wiederum, hätte direkten Einfluss auf die Frequentierung des Kopano-Forums und macht es quasi überflüssig.

Im Hintergrund -so wird es zumindest Im Forenbeitrag beschrieben- ist gerade einiges in Bewegung. All das betrifft aber ausschließlich die „supported Version“.

Ich kann diese Entscheidung überhaupt nicht nachvollziehen. Das Forum diente meiner Meinung nach auch für zahlende Kopanoanwender als Diskussionsplattform und nicht nur für „Communityuser“.

Zukunft?

Ohne zu wissen, was hier hinter den Kulissen wirklich passiert, bleibt zu hoffen, dass die Groupware „Kopano“ auch die nächsten Jahre noch existiert und vor allem weiterentwickelt wird.

Foreneinträge wie

https://www.synology-forum.de/threads/kopano-community-ist-tot.123397/

https://administrator.de/forum/kopano-community-und-forum-eingestellt-4497589711.html

fördern nicht das Vertrauen in die zukünftige Entwicklung von Kopano.

Gerade in Zeiten, in denen das Thema Datenschutz und digitale Souveränität immer mehr an Bedeutung gewinnt, wäre es fatal, wenn eine Opensource-Groupware-Lösung, die meiner Meinung nach herausragend funktioniert und ein echter MS-Exchange-Ersatz ist, sang- und klanglos vom Monitor verschwindet.

Dies wäre -so sehe ich das zumindest- ein gefundenes Fressen für Befürworter der Microsoft365-Cloud, denn Microsoft und deren Zugpferd „Office/Exchange“ wird es wohl noch lange geben.

Unreflektierte Kommentare, wie:

„Selber schuld, wenn man auf Exoten setzt….“
„Warum verwendet ihr nicht Standardprogramme…“
„Können wir nicht das verwenden, was alle verwenden…“
usw.
usf.

sind immer wieder zu hören und würden durch ein derartiges Szenario nur zusätzlich befeuert werden.

Bitte nicht falsch verstehen! Die MS-Produktschiene ist herausragend und eben ein weltweiter Standard (Office/Exchange). Dennoch drängt MS in die Azure-Cloud. Spätestens hier wird es – bezogen auf den Datenschutz – spannend. (EU-Cloud hin oder hier. Die Daten befinden sich „außerhalb des eigenen Einflussbereiches“, was ich als kritisch empfinde.)

Ich für meinen Teil bleibe so lange wie möglich und sinnvoll umsetzbar bei on-premise Installationen (=die Server stehen bei mir im Haus und dort werden auch die Daten gespeichert) und setze auf OSS.

Oben beschriebene Vorgangsweise (von Kopano) und keine klare Kommunikation, erschwert das jedoch ungemein, denn es schürt Unsicherheit und macht es schwierig, pro OSS zu argumentieren, wenn einem die eigene OSS-Groupware-Lösung vielleicht demnächst „um die Ohren fliegt“.

Mein Wunsch wäre deshalb eine klare Kommunikation von Kopano in Richtung der Kunden!

Vielleicht sehe ich Geister, aber irgendwie hat das Ganze einen etwas faden Beigeschmack….

Grammm/Grommunio

Seit Kurzem gibt es mit Gramm/Grommunio eine eventuelle Kopano-Alternative, die von einer österreichischen Firma entwickelt wird. Das Produkt selbst, hat vor allem bzgl. des Email-Client eine starke Ähnlichkeit mit Kopano. Ich habe mir die Software allerdings noch nicht genauer angeschaut, weshalb ich hierzu noch nichts Genaues schreiben kann.

Weitere Details, kann man auf der Website von Grommunio finden.

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

Mittlerweile sind wir schon beim fünften Teil meines Dockertutorials angekommen. Sofern ihr quasi von null startet und ein ähnliches Projekt (Nextcloud, Mariadb, ufw, Fail2ban, NPM etc.) umsetzen wollt, empfehle ich hier zu beginnen.

Ich gehe in diesem Teil davon aus, dass bei euch Docker, UFW – mit Adaptierung für Docker,  Portainer, Nextcloud, Mariadb und der Nginx-Proxymanager laufen. Thema dieses Parts wird die Inbetriebnahme von Fail2Ban sein. Fail2Ban überwacht Logdateien des Systems auf gewisse „Muster“ = Fehler und sperrt zb. IP-Adressen die zu oft fehlerhafte Authentifizierungen durchführen. Um die Filterung durchzuführen, werden Filter (=via reguläre Ausdrücke, regexp) genutzt. Ich bin, was die Erstellung eigener regulärer Ausdrücke angeht nicht gut und meistens auf „das Internet“ angewiesen (nur so nebenbei angemerkt).

Fail2Ban wird in einem Docker Container laufen und sowohl den Host, als auch die Container schützen. Wichtig ist, dass sämtliche Logverzeichnisse (Docker und Host) im Fail2Ban-Dockercontainer „read-only“ (nur lesen) eingebunden werden müssen, da Fail2Ban sonst ja keinen Zugriff auf die Logs hätte und seine Arbeit nicht verrichten könnte.

Logverzeichnisse

Ich greife hier etwas vor, obwohl wir den Container  für Fail2Ban noch nicht ausgerollt haben. Es ist wichtig, dass man folgenden Zusammenhang versteht.

  • Die Logverzeichnisse, der zu überwachenden Dienste,  werden als sog. „Bindmounts“ – nur lesend in den Fail2Ban Container eingebunden.
  • Die Einbindung im Fail2Ban-Container erfolgt im Verzeichnis /remotelogs/<name des Containers oder Dienstes>
  • Es sollen der Nginx-Proxy-Manager, Nextlcoud und der SSH-Zugang des Hosts überwacht werden.
  • Bei mir werden alle Dockervolumes nach /var/lib/docker/volumes/<Name des Volumes> gemountet.

Das sieht dann bzgl. Volumes bei mir zb so aus (in Portainer – Container Fail2Ban):

Aufschlüsselung der (Logging)Verzeichnisse

  • SSH loggt am Host in das Verzeichnis /var/log
  • Nextcloud loggt (in meinem Fall) nach /var/lib/docker/volumes/Nextcloud_data/_data/data
  • NPM nach /var/lib/docker/volumes/nginxpm_data/_data/logs
  • das /config Verzeichnis hat mit dem Logging selbst nichts zu tun, sondern enthält die Konfiguration von Fail2ban

Ausrollung von linuxserver/fail2ban

Wie sicher schon gewohnt, wird der Container von Fail2Ban via Portainer ausgerollt. Der Name des Image ist linuxserver/fail2ban.

Volumes

Es muss nur ein Volume für die Konfiguration von Fail2Ban erzeugt werden. Ich nenne es fail2banconfig.

Abgesehen von der Zuordnung des Volumes für die Fail2Ban-Konfiguration, ges es bei der Zuordnung der weiteren Volumes, um das jeweilige Loggingverzeichnis der diversen Dienste (am Host). Wenn ihr euch 1:1 an die Anleitung hier  gehalten habt, sollte das so ausehen. (Kann aber variieren, wenn ihr andere Bezeichnungen für die Volumes gewählt habt!) Achtet auch darauf, dass die Logs via „BIND“ eingebunden werden!

Netzwerk, Ports

Wir benötigen für Fail2Ban weder eine IP-Adresse noch irgendwelche Ports.

Command & Logging

  • Interactive & TTY

Environment

  • PUID 1000 (die ID eures Standardusers, der ganz am Anfang angelegt worden ist. Seht ihr wenn ihr in /etc/passwd des Hosts reinschaut)
  • PGID 1000 (Gruppe des Standardusers. Seht ihr auch, wenn ihr in /etc/passwd des Hosts reinschaut)
  • TZ Europe/Berlin
  • SSMTP_HOST (Hostname eures SMTP-Servers) -> OPTIONAL: Nur wenn ihr Mailbenachrichtigungen erhalten wollt!
  • SSMTP_PORT (normalerweise 587)
  • SSMTP_HOSTNAME – Der Hostname eures Dockerhosts (ich hab hier den FQDN meines Dockerhosts eingetragen)
  • SSMTP_USER (Der Benutzer zur Benutzerauthentifizierung am Mailserver)
  • SSMTP_PASSWORD (Das Passwort, des Benutzers am Mailserver)
  • SSMTP_TLS (Normalerweise auf YES zu setzen)
  • SSMTP_STARTTLS (Normalerwese auf YES zu setzen)

Restart Policy

  • Always

Capabilities

  • Hier muss zusätzlich „NET_ADMIN“ und „NET_RAW“ aktiviert werden.

Ausrollen

  • Nun kann der Container ausgerollt werden „Deploy the Container“.

Anpassung der Konfiguration von fail2ban

Fail2Ban läuft jetzt zwar, jedoch ohne Konfiguration der sog. „Jails“. In den Jails, werden Dienste definiert, die überwacht werden sollen. Ebenso muss eine „Action“ (also Aktion) definiert werden, um Festzulegen, wie denn mit „bösen“ Anfragen umgegangen werden soll.

Die Konfiguration erledigen wir via SSH am HOST (im Konfigurationsverzeichnis von Fail2Ban).

/var/lib/docker/volumes/fail2banconfig/_data/fail2ban

WICHTIG: Alle *.conf Dateien werden bei einem Restart des Containers überschrieben. Deshalb ist für jede Adaptierung einer .conf-Datei eine .local Datei zu erstellen.

Am Besten ist es, neue Dateien mit der „Endung“ .local zu erstellen, oder bestehende Dateien zu kopieren, wenn man den Inhalt benötigt.

fail2ban.conf -> fail2ban.local

An der.conf-Datei wird KEINE ÄNDERUNG durchgeführt.

Wir kopieren die Datei (vorbeugend) und erstellen so eine .local Datei:

cp fail2ban.conf fail2ban.local

jail.conf -> jail.local

An der.conf-Datei wird KEINE ÄNDERUNG durchgeführt.

Wir kopieren die Datei (vorbeugend) und erstellen so eine .local Datei:

cp jail.conf jail.local

Der Inhalt der Datei jail.local sieht in meinem Fall so aus:

[DEFAULT]
bantime = 21600
findtime = 120
maxretry = 3

[DEFAULT]
mta = sendmail
action = %(action_)s
destemail = admin@it-networker.at
sender = fail2ban@it-networker.at

Filter für NPM und Nextcloud erstellen

Wir wechseln am Host in das Verzeichnis /var/lib/docker/volumes/fail2banconfig/_data/fail2ban/filter.d

Dort erstellen wir eine Datei mit Namen: npm.local

Inhalt des NPM Filters (npm.local)

[INCLUDES]
before = common.conf

[Definition]
failregex = ^\s*(?:\[\]\s+)?- 401 \d+ - [A-Z]+ \w+ \S+ "[^"]+" \[Client <ADDR>\]
^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 403
^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 404
^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 444

Weiters erstellen wir eine Datei für Nextcloud mit Namen nextcloud.local

Inhalt des Nextcloud Filters (nextcloud.local)

[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"messag>
^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"messag>
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"

Jail für SSH (des Hosts) NPM und Nextcloud erstellen

Ganz wichtig ist bezüglich „JAILS“ der Parameter chain = 

  • Ist es ein Dockercontainer, den wir schützen wollen, müssen wir bei chain = DOCKER-USER verwenden!
  • Ist es der Host, den wir schützen wollen, müssen wir bei chain = INPUT verwenden!

Für die Anpassungen müssen wir (wieder am Host) in  das Verzeichnis:

/var/lib/docker/volumes/fail2banconfig/_data/fail2ban/jail.d

wechseln.

Jail für Nextcloud (nextcloud.local)

Via nano nextcloud.local erstellen wir eine Datei,  mit Folgendem Inhalt.

[nextcloud]
backend = auto
enabled =
port = 80,443
chain = docker-user
protocol = tcp
filter = nextcloud
logpath = /remotelogs/nextcloud/nextcloud.log
action = %(known/action)s

Jail für Nextcloud-auth (nextcloud-auth.local)

Via nano nextcloud-auth.local erstellen wir eine Datei,  mit Folgendem Inhalt.

[nextcloud-auth]
enabled = true
chain = docker-user
port = http,https
logpath = %(remote_logs_path)s/nextcloud/nextcloud.log
destemail = admin@it-networker.at
sender = fail2ban@it-networker.at
sendername = Fail2Ban

Jail für den NPM (npm.local)

Via nano npm.local erstellen wir eine Datei,  mit Folgendem Inhalt.

[npm]
enabled = true
chain = docker-user
logpath = /remotelogs/npm/fallback_error.log
/remotelogs/npm/default-host_access.log
/remotelogs/npm/proxy-host-*_error.log
/remotelogs/npm/default-host_error.log
/remotelogs/npm/fallback_access.log

destemail = admin@it-networker.at
sender = fail2ban@it-networker.at
sendername = Fail2Ban

Jail für SSH des Hosts (sshd.local)

Via nano sshd.local erstellen wir eine Datei,  mit Folgendem Inhalt.

[sshd]
enabled=true
chain = INPUT
logpath = /remotelogs/authloghost/auth.log
backend = %(sshd_backend)s

destemail = admin@it-networker.at
sender = fail2ban@it-networker.at
sendername = Fail2Ban

Restart von Fail2Ban bzw. des Containers

Fail2ban kann mit dem Befehlt fail2ban-client restart neu gestartet werden. Hier hat es bei mir allerdings immer wieder ein wenig „gehakelt“.

Am Besten ist es, einfach den Fail2Ban-Container neu zu starten. Nach einem Neustart des Containers, sollte nun auch Fail2Ban ordnungsgemäß funktionieren und sowohl Host, als auch Container schützen.

Beobachten kann man das Verhalten im Fail2Ban – Log. Das Logging findet allerdings im Container statt. Entweder verwendet ihr die Shell, die via Portainer erreichbar ist, oder greift einfach über die Konsole des Hosts darauf zu.

Der Zugriff auf die Container-Konsole gelingt mit:

docker exec -it fail2ban bash

fail2ban = hierbei der Name des Containers.

Das Prompt sieht so aus (bis auf das was vor dem : steht:

root@vps2348723:/# docker exec -it fail2ban bash
root@8ddbafffbff4:/#

Das Logverzeichnis befindet sich hier: /config/log/fail2ban

Die Datei heißt: fail2ban.log

Am Besten ist es ihr lasst mittels tail -f /config/log/fail2ban/fail2ban.log das Log live mitlaufen und gebt bei den übewachten Diensten zb. mehrfach ein falsches Passwort ein. Das Log sollte darauf reagieren. (Bitte drauf achten, dass ihr euch nicht selbst aussperrt!)

Diskussionsforum zum Thema

Auswirkungen VMWARE ESXI Spectre & Meltdown VMkernel.Boot.hyperthreadingMitigation

Für alle, die sich fragen, welchen Impact das Aktivieren des ESXI Parameters VMkernel.Boot.hyperthreadingMitigation haben kann, 2 Diagramme (Readytime), aus der VCenter-Überwachung. Wichtig hierbei ist, dass der Wert so niedrig wie möglich sein sollte und möglichst nicht über rund 1500ms.

 

Wie oben ersichtlich, liegen wir bei einem Host mit 2 CPUs, je 8 Cores  – in Summe also 16-Cores, ohne Hyperthreading bei einem Wert von teilweise !!! 15.000ms !!! Dies hatte massive Auswirkungen auf die Performance des Hosts, auf dem 12VMs laufen. Insgesamt sind 38vCpus zugeordnet.

Der gleiche Host, mit deaktivierter Option „VMkernel.Boot.hyperthreadingMitigation“ und aktivem Hyperthreading:

Nicht täuschen lassen! Die Kurve scheint optisch extremer, aber schaut mal nach links zur Legende. Hier haben wir jetzt eine Wert von „nur“ noch max. 1.750ms. Danach pendelt sich der Wert ein. Dies hatte zur Folge, dass der Host und die darauf installierten VMs wieder normal liefen.

Hier wird man aufgrund der Situation dann zwangsläufig mit der Frage / Entscheidung konfrontiert, ob Sicherheit oder Leistung wichtig ist. In dem Fall habe ich mich (aufgrund der Begleitumstände, dass die Systeme in einer recht sicheren Umgebung laufen) für die Leistung entschieden. Allerdings hätte ich mir nie gedacht, dass der Parameter derartige Auswirkungen hat. Anzumerken ist auch, dass es sich hierbei um relativ alte CPUs handelte, nämlich: Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz (Marktstart: 3. Quartal 2017)

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

Diskussionsforum zum Thema