nextcloud original, postgres oder mariadb, ssl

Änderungsstand: 2023-06-30

Nach mehreren Testreihen kann ich nun sicher bestätigen, dass es bei mir auf Unraid Probleme mit Postgresql15 in Verbindung mit Nextcloud gibt. Abhilfe schafft derzeit (06/2023) Postgresql14 oder die Verwendung von MariaDB-Official.

Nicht jeder möchte /linuxserver/nextcloud verwenden. Ich kenne viele Personen, die prinzipiell auf das originale Nextcloud schwören. Ich gehöre nicht dazu, zeige aber den Weg, inkl. Postgres15 Datenbank. Natürlich ist auch eine MariaDB bestens geeignet. Hier empfehle ich die MariaDB-Official von Mgutt.

Zuerst wird eine PostgreSQL Datenbank benötigt. Hier kann man sich belesen, falls noch keine vorhanden ist. Zur MariaBD gehts hier entlang.

Anschließend Nextcloud installieren:

Zuerst einen Freigabeordner für die Nextcloud-Daten anlegen. Unbedingt darauf achten, dass NFS und SMB auf „Privat“ gesetzt sind. ich nenne meinen Test-Freigabeordner: nextcloud-postgresdata

Dann:

  • „Apps“
  • Im Suchfeld nextcloud eingeben
  • Nextcloud (knex666) auf Download-Symbol klicken
  • Gewünschte Einstellungen tätigen
  • Name: nextcloud-postgres
    • Statische IP-Adresse (Optional): br0 oder br1
    • Statische IP-Adresse (Optional): Eine freie IP-Adresse (z.B. 192.168.1.25)
  • Name: nextcloud-postgres
  • HTML/PHP Files: /mnt/user/appdata/nextcloud-postgres/html
  • Apps: /mnt/user/appdata/nextcloud-postgres/apps
    • Config Files: /mnt/user/appdata/nextcloud-postgres/config
  • User Files: /mnt/user/nextcloud-postgresdata
    • WebGUI Port: 80 (oder 8084, wenn Bridge Network verwendet wird)
  • „Apply“

Wenn fertig heruntergeladen,

  • „Done“ klicken
  • „Docker“
  • Autostart „ON“
  • IP-Adresse ablesen, falls keine feste IP-Adresse vergeben wurde

Aufruf im Browser: Unraid-IP-Adresse oder Unraid-IP-Adresse:8084

Warnhinweis, falls angezeigt, kann im eigenen, internen Netzwerk akzeptiert werden.

Nun ausfüllen (eigene Werte verwenden – – Port für Postgres ist meist 5432 und Port für MariaDB ist meist 3306):

Wenn ausgefüllt, „Installieren“ klicken.

Empfohlene Apps installieren.

Wenn fertig, begrüßt die Oberfläche:

Nextcloud wurde mit Postgresql15 eingerichtet und ist intern schon verwendbar.

Nextcloud für den externen Betrieb vorbereiten:

Nginx Proxy Manager (NPM), für den Zugriff von Aussen:

Wer NPM schon installiert hat, kann diesen Schritt überspringen. Weiter geht es in diesem Fall mit „NginX Proxy Manager“ Weboberfläche: .

Vorarbeit:

Um ohne Probleme mit dem „NginX Proxy Manager“ (NPM) arbeiten zu können, sind im Vorfeld einige Anpassungen nötig.

Portfreigaben im Router umlegen und NPM zuweisen:

  • Port 80 –> 80
  • Port 443 –> 443

Alle externen Anfragen auf 80 und 443 werden automatisch zu den angegebenen Ports weitergeleitet und landen immer auf dem NginX-Reverse-Proxy, der dann alles Weitere verwaltet.

DynDNS-Dienst einrichten:

Ich empfehle meist DuckDNS. Hierbei reicht eine angelegte Domain. Ich persönlich verwende dyndns(s) und habe diesen Dienst direkt mit meinem Unifi-Controller in meiner USG eingetragen. Somit entfällt ein weiteres Einrichten in meinen VM’s oder Dockern, auf die ich später extern zugreifen möchte. Auch die Fritz!Box gibt die Möglichkeit, einen DynDNS-Dienst direkt zu verwenden. Das ist wichtig, da sonst nach einem IP-Reset, der in Deutschland, bei den meisten Providern, aller 24 Stunden erfolgt, kein Zugriff auf die Domain erfolgen kann.

„NginX Proxy Manager“ in Unraid einrichten:

Ein kleiner Tipp: Man kann den Nginx Proxy Manager auch auf einem separatem Gerät, wie z.B. einem RaspberryPi oder in einer VM als Dockeranwendung legen. Ich verwende in 3 verschiedenen Haushalten einmal einen RaspberryPi 4 mit 4GB Ram, Raspi OS Lite und Docker-Compose, einmal eine VM mit Debian-Server und Docker-Compose und einmal die Variante, wie in diesem Guide vorgestellt. Alle Varianten arbeiten zuverlässig.

Jetzt die Möglichkeit, NPM als Dockeranwendung, direkt in Unraid:

Unter „Apps“ nginx eingeben und den nginx-proxymanager-official auswählen. Diesen dann zum Installieren verwenden.

Ich nehme hierbei nur eine Veränderung vor.

  • Netzwerktyp: br0 oder br1
  • Statische IP: Eine freie IP-Adresse im eigenen IP-Bereich angeben

Wenn fertig, „Anwenden“ („Apply“) klicken. Dann:

  • Start im Browser: Server-IP:7818
    • Es begrüßt die Startoberfläche
  • Email: admin@example.com
  • Password: changeme

Das war’s auch schon. „NginX Proxy Manager“ ist einsatzbereit.

Jetzt richte ich in NPM Nextcloud ein.

„NginX Proxy Manager“ Weboberfläche:

  • „Host“
    • „Proxy Host“
      • „Add Proxy Host“
        • Details:
          • Domain Names: nextcloudtest.troubadix.duckdns.org
            • (Eigene Domain verwenden)
          • Scheme: http
            • (80 oder 8084 sind HTTP-Ports)
          • Forward Hostname / IP: die Server-IP, worauf sich Nextcloud befindet
          • Forward Port: 80
          • (80 ist mein Nextcloud – Port)
          • Cache Assets: On
          • Websockets Support: On
          • Block Common Exploits: On
          • Access List: nichts ändern
        • SSL:
          • SSL Certificate: „Request a new SSL Certificate“
          • Force SSL: On
          • Http/2 Support: On
          • HSTS Enabled: ON
          • Email Address for Lets‘ Encrypt: Eine gültige Email-Adresse
          • I Agree to the LE Terms of Service: On
        • Advanced:
location ^~ /.well-known {
location = /.well-known/carddav     { return 301 /remote.php/dav/; }
location = /.well-known/caldav      { return 301 /remote.php/dav/; }
location ^~ /.well-known            { return 301 /index.php$uri; }
try_files $uri $uri/ =404;
  }

Save

Nach ca. 10-20 Sekunden wurde das Zertifikat erstellt und der Dienst Nextcloud ist unter der angewendeten Domain, gesichert, von Außen erreichbar. Allerdings würde jetzt Nextcloud den Zugriff mit folgendem Fehler verweigern:

„Zugriff über eine nicht vertrauenswürdige Domain“

Dafür muss ich noch die Konfigurationsdatei ändern.

Nextcloud-Konfigurationsdatei anpassen:

(eigenes Konfigurationsverzeichnis verwenden)

sudo nano /mnt/cache/appdata/nextcloud-postgres/config/config.php

Folgendes am Ende, aber vor dem letzten ); einfügen:

  'default_phone_region' => 'DE',
  'default_language' => 'de',
  'default_locale' => 'de_DE',
  'overwriteprotocol' => 'https',
  'trusted_proxies' => 
   array (
     0 => '192.168.1.110:80',
   ),

Die Ip-Adresse unter Trusted Proxies ist die IP-Adresse des „Nginx Proxy Manager“ inkl. Portangabe.

'overwrite.cli.url' => 'http://192.168.1.25,

ändern in (eigene Domain verwenden):

'overwrite.cli.url' => 'https://nextcloudtest.troubadix.duckdns.org',

Dann die „Trusted Domains“ erweitern (Domain hinzufügen):

  array (
    0 => '192.168.1.50:80',
    1 => 'nextcloudtest.troubadix.duckdns.org',
    2 => 'localhost',
  ),

Strg-x, y, Enter

Am Ende dieser Config steht ein );

Dementsprechend, nach meinem Guide hingehend ist am Ende dann folgendes zu sehen:

 ...ARRAY-Eintrag von oben (trusted Proxies)...   
  ),
);

Bei Trusted Proxies wird die IP-Adresse:Port des Nginx Proxy Managers angegeben. Die IP-Adresse unter Trusted Domains ist die IP des Servers, auf dem NC installiert ist. Da ich NPM auf einem extra Gerät am Laufen habe, sind bei mir 2 verschiedene IP-Adressen angegeben.

Nextcloud kann nun über die Domain geöffnet werden. In meinem Fall ist das:

nextcloud.troubadix.duckdns.org

Es wird automatisch zu http s verbunden und Nextcloud ist erreichbar.

Wurde alles soweit übernommen, sind momentan 2 Sicherheits- und Warnhinweise präsent:

  • Sie haben Ihre E-Mail-Serverkonfiguration noch nicht festgelegt oder überprüft.
  • Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern, richten Sie bitte, sofern verfügbar, Memcache ein.

E-Mail einrichten:

  • Administratoreinstellungen
    • „Persönliche Informationen“
      • E-Mail: E-Mail-Adresse eintragen
    • Grundeinstellungen
      • „E-Mail-Server“ einrichten

Bsp. Web.de:

.

Redis-Cache:

Nun installiere ich den Redis-Docker. Hier ist die Installation ersichtlich.

Jetzt muss ich Nextcloud erzählen, dass der Redis-Cache verwendet werden soll 🙂 . Dazu muss ich in das Konfigurationsverzeichnis und die Einträge für Redis hinzufügen:

(eigenes Konfigurationsverzeichnis verwenden)

sudo nano /mnt/cache/appdata/nextcloud-postgres/config/config.php

Folgendes einfügen ( vor ‚dbtype‘ => ‚..sql‘, ) –> Der ‚host‘ ist die IP-Adresse des Servers, das Passwort und die Portangabe wird vom Eintrag aus dem Redis-Docker übernommen!:

  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => '192.168.1.199',
    'password' => 'PASSWORD345',
    'port' => 6379,
  ),
  'dbtype' => '..sql',

Strg-x, y, Enter

Die letzte Zeile steht schon drin und dient zur Übersicht, wo man den restl. Text einfügt!

Wenn erledigt, NC-Docker neu starten, Browserfenster aktualisieren und fertig.

Hat man alles eingerichtet, sind die Sicherheits- und Warnhinweise auch obsolet:

Collabora verwenden:

Zuerst im Nginx Proxy Manager eine weitere Subdomain erstellen. Ich nenne diese collaboratest.troubadix.duckdns.org. Dort folgendes eintragen:

„Host“

  • „Proxy Host“
    • „Add Proxy Host“
      • Details:
        • Domain Names: collaboratest.troubadix.duckdns.org
          • (Eigene Domain verwenden)
        • Scheme: https
          • (9980 ist ein HTTPS-Port)
        • Forward Hostname / IP: die Server-IP, worauf sich Collabora befindet
        • Forward Port: 9980
        • (9980 ist mein Collabora – Port)
        • Cache Assets: Off
        • Websockets Support: On
        • Block Common Exploits: On
        • Access List: nichts ändern
      • SSL:
        • SSL Certificate: „Request a new SSL Certificate“
        • Force SSL: On
        • Http/2 Support: On
        • HSTS Enabled: ON
        • Email Address for Lets‘ Encrypt: Eine gültige Email-Adresse
        • I Agree to the LE Terms of Service: On
        • SAVE

Nun Collabora-Docker installieren. Hier ist der Guide dazu. Man beachte, dass ich unter Umständen manchmal collabora und manchmal collaboratest verwende. Das muss für diesen Guide auf collaboratest angepasst werden, damit es funktioniert. Hat man im Collabora-Guide alles abgearbeitet, sollte Collabora auch schon funktionstüchtig sein.

.

SSL Labs bringt ein A+ zur Ausgabe.

Nextcloud ist nun auch von Außen, gesichert erreichbar.

Cron:

Am Ende richte ich bei Verwendung dieser Nextcloud-Version noch einen Cron-Job ein, da es hier, nicht wie bei /linuxserver/nextcloud, automatisch abläuft. Dazu benötige ich die „User Scripts“. Dort lege ich ein neues Script an und trage folgendes ein:

#!/bin/bash
docker exec -u 99 Nextcloud php -f /var/www/html/cron.php
exit 0

Dieses Script lasse ich nun im viertel Stunden Rhythmus laufen:

Schedule: Custom: 15 * * * *

Apply (links unten) nicht vergessen!

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten