Was wird alles Benötigt?

DockerSonstiges
Mariadb – linuxservers
NginxProxyManager – jc21
Redis Server – jj9987
Nextcloud – linuxservers
HeidiSQL
WinSCP
Eine Domain, die bereits zu dir nach Hause zeigt.

Aufbau der Nextcloud-Umgebung:

In meiner Unraid-Konfiguration habe ich:
2 x 500 GB SATA SSDs als Cache Pool im Raid 1 (dovm)
1 x 256 GB m.2 NVME SSD als reinen Schreib-Cache (Cache)

MariaDB

Installation:
In Unraid musst du im Reiter “APPS” nach dem “mariaDB”-Docker suchen. Ich empfehle hier den Docker von Linuxserver.
Klicke nun auf “Install” und du wirst sofort auf die Konfigurationsseite weitergeleitet.

Konfiguriere den Docker wie folgt:

Wenn der Docker installiert ist, prüfe nochmal, ob dieser auch gestartet ist.

Verbindung mit der Datenbank herstellen:
Lade dir “HeidiSQL” herunter und öffne es:

  1. Erstelle eine neue Verbindung.
  2. Trage die IP deines Unraid-Servers ein.
  3. Trage den Nutzer ein, den du bei der Dockerinstallation festgelegt hast.
  4. Trage das Passwort ein, dass du bei der Dockerinstallation festgelegt hast.
  5. Trage den Port deiner MariaDB ein. 3306 ist der Standartport.
  6. Öffne die Verbindung.

Datenbank erstellen:

  1. Rechtsklick in das linke Feld
  2. Klicke auf “Neu erstellen”
  3. Klicke auf “Datenbank” und gib den Namen der Datenbank ein (Ich nutze in dieser Anleitung den Namen “nextcloud”).
  4. Klicke im Menüband auf “Werkzeuge” > “Benutzerverwaltung”

Nutzer erstellen und berechtigen:

  1. Klicke auf “Neu”
  2. Trage Benutzername (ich nutze in dieser Anleitung “nextcloud”), Kommt von Host (172.17.%) und das Passwort ein.
  3. Klicke nun auf “Neues Objekt”.
  4. Wähle die nextcloud-Datenbank aus.
  5. Klicke auf “OK”, um deine Auswahl zu bestätigen.
  6. Gewähre globale Rechte auf die Datenbank.
  7. Speicher deine Einstellungen ab.

Redis-Server

Um die Nextcloud etwas performanter zu machen, benötigen wir einen Redis-Server. Hierfür wieder unter “APPS” nach “Redis” suchen und den Docker von jj9987 installieren.

Nextcloud

Bevor die Nextcloud installiert werden kann, muss zuerst ein Share für die Nutzerdaten angelegt werden.
Klicke hierfür in der Unraid-WebUI auf “Freigaben” > “Freigabe” hinzufügen. Vergib einen Namen (ich nutze für diese Anleitung “nextcloud”)
Als primären Speicher wählst du deinen Schreib-Cache und als sekundären dein Array aus.
Nun werden alle User-Daten auf den Cache geschrieben und anschließend vom Mover auf das Array geschuppst.

Da nun der Share für die Nutzerdaten existiert, kann nun die Nextcloud installiert werden.
Hierfür wieder unter “APPS” nach “Nextcloud” suchen. Ich empfehle wieder den Docker von Linuxserver.

Bei WebUI vergebt ihr einen anderen Port als 443 (In dieser Anleitung nutze ich 9556).
Bei “Path: /data” gebt ihr euren frisch erstellten Share für die Nutzerdaten an. In meinen Fall /mnt/user/nextcloud/

Nachdem der Docker installiert ist, kann man nun die WebUI aufrufen. (UNRAID-IP:9556)

Trag deinen gewünschten Nutzernamen und Kennwort ein.
Klicke nun auf den “Speicher & Datenbank”-Reiter. Das Datenverzeichnis lässt du so wie es ist. Unter Datenbank “MySQL/MariaDB” auswählen und die Datenbank, Nutzer und Kennwort eintragen. Bei dem Host muss die Unraid-IP:3306 eingetragen werden.
Klicke anschließend auf “Installieren”.

Sollte hier ein Fehler auftauchen, dass du dich nicht zur DB Verbinden kannst, musst du gegebenenfalls die IP aus der Fehlermeldung kopieren und diese in die HeidiSQL Benutzerverwaltung beim Nextcloud-Nutzer hinterlegen.

Nach der Installation sieht man unter “Administrationeinstellungen” > “Übersicht” einige Fehler:

Einige können behoben werden, indem man die config.php anpasst. Hierfür benötigst du winSCP oder einen vergleichbaren SFTP-Client.
Verbinde dich einfach via SFTP auf deinen Unraid-Server, navigiere in das Nextcloud-Verzeichnis /mnt/user/appdata/nextcloud/www/nextcloud/config/ und öffne die config.php
Nun müssen folgende Einträge ergänzt oder verändert werden:

'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
  array (
    'host' => 'UNRAID-IP',
    'port' => 6379,
    'timeout' => 0.0,
    'password' => '',
  ),
  'overwrite.cli.url' => 'https://your.domain.tld',
  'overwriteprotocol' => 'https',
  'trusted_domains' =>
  array (
    0 => 'UNRAID-IP:9556',
    1 => 'your.domain.tld',
  ),
  'trusted_proxies' =>
  array (
    0 => 'UNRAID-IP',
  ),
  'default_phone_region' => 'DE',
  'mail_smtpmode' => 'smtp',
  'mail_smtpsecure' => 'ssl',
  'mail_sendmailmode' => 'smtp',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtpauth' => 1,
  'mail_smtpname' => 'EMAIL-Address',
  'mail_smtppassword' => 'PASSWORT',
  'mail_from_address' => 'cloud',
  'mail_domain' => 'domain.tld',
  'mail_smtphost' => 'smtp.hoster.de',
  'mail_smtpport' => '465',

Die Config sollte am Ende in etwa so aussehen (instanceid und co. wird sich von deiner Config unterscheiden!):

<?php
$CONFIG = array (
  'datadirectory' => '/data',
  'instanceid' => '',
  'passwordsalt' => '',
  'secret' => '',
  'dbtype' => 'mysql',
  'version' => '27.0.1.2',
  'dbname' => 'nextcloud',
  'dbhost' => 'UNRAID-IP:3306',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => 'Nextcloudtutorial',
  'installed' => true,
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => 'UNRAID-IP',
    'port' => 6379,
    'timeout' => 0.0,
    'password' => '',
  ),
  'overwrite.cli.url' => 'https://your.domain.tld',
  'overwriteprotocol' => 'https',
  'trusted_domains' =>
  array (
    0 => 'UNRAID-IP:9556',
    1 => 'your.domain.tld',
  ),
  'trusted_proxies' =>
  array (
    0 => 'UNRAID-IP',
  ),
  'default_phone_region' => 'DE',
  'mail_smtpmode' => 'smtp',
  'mail_smtpsecure' => 'ssl',
  'mail_sendmailmode' => 'smtp',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtpauth' => 1,
  'mail_smtpname' => 'EMAIL-Address',
  'mail_smtppassword' => 'PASSWORT',
  'mail_from_address' => 'cloud',
  'mail_domain' => 'domain.tld',
  'mail_smtphost' => 'smtp.hoster.de',
  'mail_smtpport' => '465',
);

Bevor die Nextcloud genutzt werden kann, muss noch der “Nginx Proxy Manager” eingerichtet werden.

Nginx Proxy Manager

Als erstes muss wieder ein Share erstellt werden.
Hierfür wieder auf “Freigaben” > “Freigabe hinzufügen”. Dieser Share wird zukünftig für Logfiles dienen, also nennt ihn “logs”.
Damit die Logs nicht im Array landen und die Festplatten deswegen nicht in den Ruhezustand gehen können, wird der Share nur auf dem Cache abgelegt.

Ist der Share eingerichtet, muss noch ein Unterordner erstellt werden. Hierfür wieder mit winSCP in das Verzeichnis navigieren /mnt/user/logs/
Rechtsklick in das Verzeichnis > “Neu” > “Ordner” und nenne diesen “npm” oder “nginxproxymanager” oder so ähnlich.
Danach nochmal Rechtsklick auf den “Ordner” > “Eigenschaften” und setze die Berechtigungen wie folgt:

Wenn das alles erledigt ist, kann es mit dem Proxy auch schon losgehen.
Dieser ist wieder unter APPS zu finden. Ich empfehle hier den Docker von mgutt.

Setze die Einstellungen wie in diesem Beispiel:

Für die logfiles muss ganz unten auf “+Weiteren Pfad, Port, Variable, Bezeichnung oder Gerät hinzufügen” geklickt und folgendes eingetragen werden:

Gelegentlich kann es vorkommen, dass der Nginx Proxy Manager (NPM) beim Hochfahren schneller bereit ist als die Nextcloud-Anwendung. Dadurch besteht die Möglichkeit, dass nach einem Neustart des Servers die Nextcloud nicht erreichbar ist, obwohl alles ordnungsgemäß läuft. Um dieses Problem zu beheben, empfiehlt es sich, in der Unraid-Dockerübersicht die “Erweiterte Ansicht” für den Nginx Proxy Manager zu öffnen und einen Wartezeitwert von 60 Sekunden einzustellen. Durch diese Einstellung wartet der NPM beim Starten nach einem Unraid-Neustart 60 Sekunden, was sicherstellt, dass alle Dienste korrekt gestartet sind und die Nextcloud reibungslos erreichbar ist. 

Wenn der Proxy endlich läuft, muss noch ein Port-Forwarding eingestellt werden.

Port-Forward

Ich selber habe eine Fritzbox 6660, deshalb ist dieses Beispiel nur für die Fritzbox:
Logge dich auf deiner Weboberfläche der Fritzbox ein, gehe auf “Internet” > “Freigaben” > “Portfreigaben”
Füge hier nun ein neues Gerät hinzu. Unter Gerät wählst du jetzt deinen Unraid-Server aus und klickst anschließend ganz unten auf “Neue Freigabe”

Wenn die Portfreigaben nun aktiviert und gespeichert sind, kann es nun mit dem Proxy weitergehen.
Hierfür wird die WebUI benötigt. Um auf die WebUI zu gelangen, gib in deinem Browser UNRAID-IP:81 ein.

Tragt den Default Login ein:
admin@example.com
changeme
Ihr solltet danach aufgefordert werden, diese Daten zu ändern. Sollte keine Aufforderung kommen, kannst du die Daten auch oben rechts ändern.
Klicke nun in der WebUI auf “Hosts” > “Proxy Hosts” und anschließend auf der rechten Seite auf “Add Proxy Host” und richtet diesen wie folgt ein:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_max_temp_file_size 0;
client_max_body_size 0;
location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
}
location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
}
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;
  }

Nun kann die Nextcloud neu gestartet werden und alle Fehler sind behoben.

Weitere Optimierungen für Nextcloud:

Logfiles umlegen:
Hierfür muss wieder ein neuer Ordner unter “logs” erstellt werden. Öffne wieder in winSCP /mnt/user/logs/ und füge einen Ordner namens “nextcloud” hinzu. Danach Rechtsklick auf den “Ordner” > “Eigenschaften” und vergib folgende Berechtigungen:

Öffne nun das Docker-Terminal (Klicke auf das Nextcloud Docker Symbol > Konsole) und gib folgenden Befehl ab:
mkdir /app/www/logs
In der Docker-Konfiguration muss noch der Pfad in den Docker durchgereicht werden.
Diese findest du ganz am Ende unter “+Weiteren Pfad, Port, Variable, Bezeichnung oder Gerät hinzufügen”

Anschließend müssen noch 2 Zeilen in der config.php eingetragen werden:

'loglevel' => 0,
  'logfile' => '/app/www/logs/nextcloud.log',

Papierkorb automatisch >7 Tage alte Dateien nach 7 Tagen leeren 
Trage hierfür diese beiden Zeilen in der config.php ein

'trashbin_retention_obligation' => '7, 7',
  'versions_retention_obligation' => '7, 7',

Externe Uploads > 512MB
Hierfür muss der “client max body size” – Wert in dieser Config angepasst werden: /mnt/user/appdata/nextcloud/nginx/site-confs/default.conf
client_max_body_size 512M; in client_max_body_size 0; ändern

PHP Grenzen anheben
Um die PHP Grenzen wie Uploadlimit Memory Limit und Max File Size anzuheben, müssen ein paar Variablen in der Dockerkonfiguration gesetzt werden. Diese findest du ganz unten unter  “+Weiteren Pfad, Port, Variable, Bezeichnung oder Gerät hinzufügen”
Du musst nun folgende Variablen setzen:

Anschließend auf “Anwenden” klicken.

Zuletzt geprüft und bearbeitet: 22. Jul 2023 @ 10:02