Nextcloud Hub Optimierung auf einer Synology DiskStation mit DSM 6

Im letzten Beitrag ging es darum Nextcloud auf der DiskStation zu installieren. Nach der Installation sollten aber noch einige Anpassungen gemacht werden, damit Nextcloud optimal läuft bzw. um die Sicherheit zu erhöhen. Außerdem können, je nach Umgebung, einige Fehlermeldungen auftauchen. Und genau darum geht es in diesem Beitrag.

Vorbereitung

Nextcloud ist auf der DiskStation installiert und läuft. Wie ihr Nextcloud auf einer DiskStation installiert, könnt ihr hier nachlesen.

Optimierung und Fehlerbehebung

Nach der Installation sind einige Anpassungen der Einstellungen notwendig. Einige davon werden euch sogar von eurer Nextcloud vorgeschlagen. Ihr findet diese Fehler- und Hinweismeldungen im Menü unter Einstellungen > Übersicht > Sicherheits- und Einstellungswarnungen. Da sich die DiskStation nicht immer wie ein normaler Linux-Server verhält, gilt es herauszufinden wo die Konfigurationsänderungen wirksam vorgenommen werden können und welche zusätzlichen Schritte erforderlich sind.

Nextcloud Hinweise und Warnungen
Meldungen und Warnungen von Nextcloud

Datenbank aktualisieren

Der genaue Wortlaut der Meldung hängt davon ab, welche Version von Nextcloud ihr installiert habt. Der Lösungsweg ist aber immer der selbe. Ihr müsst über die Kommandozeile Änderungen an der Datenbank ausführen. Ihr werdet mit hoher Wahrscheinlichkeit eine ähnliche Meldung nach jedem Update von Nextcloud erhalten. Das liegt daran, dass diese Änderungen bei bestehenden Datenbanken einige Zeit in Anspruch nehmen können und immer über die Kommandozeile zu erledigen sind. Daher sind sie nicht Teil der Installations- bzw. Updateroutine, die auch über den Browser aufgerufen werden kann.

Die Änderungen nehmt ihr mit den occ-Befehlen (Nextclouds Befehlssatz für die Kommandozeile) vor. Die notwendigen Befehle könnt ihr direkt in der Meldung ablesen. Die Hürde ist hier nur, diese richtig auf eurer DiskStation auszuführen.

Öffnet PuTTY und verbindet euch mit eurer DiskStation. Die Kommandozeile eures NAS kennt die occ-Befehle nicht, daher müsst ihr in euer Nextcloud-Verzeichnis wechseln, wo die occ-Befehle definiert sind.

cd /volume1/web/Nextcloud

Damit ihr die occ-Befehle nutzen könnt, braucht ihr aber noch den korrekten Benutzer (sudo -u http), die richtige PHP-Version (php73) und auch das Memory-Limit solltet ihr erhöhen (-d memory_limit=1024M), da der Standard-Wert zu niedrig ist.

Jetzt ist es an der Zeit die fehlenden Indizes zu ergänzen, nutzt dazu folgenden Befehl:

sudo -u http php73 -d memory_limit=1024M occ db:add-missing-indices

Als Nächstes müsst ihr den Datentyp von int in bigint ändern. Das erreicht ihr mit folgendem Befehl:

sudo -u http php73 -d memory_limit=1024M occ db:convert-filecache-bigint

Es kann auch vorkommen, dass durch ein Update die Datenbank erweitert wird, auch das muss nachträglich erledigt werden. Die Meldung weist euch dann auf fehlende Spalten in der Datenbank hin. Der Befehl dafür lautet:

sudo -u http php73 -d memory_limit=1024M occ db:add-missing-columns

Wiederholt den Vorgang für jeden occ-Befehl den ihr in den Sicherheits- und Einrichtungswarnungen von Nextcloud findet.

PHP-Variablen anpassen

Damit auch größere Dateien über das Webinterface hochgeladen werden können, müssen einige PHP-Variablen angepasst werden. Auch der für Nextcloud zur Verfügung stehende Arbeitsspeicher sollte erhöht werden. Öffnet dazu in DSM die Web Station > PHP-Einstellungen und bearbeitet das PHP-Profil, das eure Nextcloud nutzt (ein virtueller Host und ein eigenes PHP-Profil für Nextcloud sind eben sinnvoll). Sucht im Reiter Kern nach der Variable memory_limit und weisen Sie mindestens 512 MB (als Wert 512M) zu. Mehr ist natürlich besser, allerdings hängt das auch davon ab wie viel RAM eure DiskStation besitzt und ob auch andere Prozesse auf eurem NAS laufen (die natürlich ebenfalls RAM benötigen). Für OnlyOffice werden übrigens 2 GB (als Wert 2G) empfohlen.

Sucht jetzt die Variablen post_max_size und upload_max_filesize und tragt dort einen hohen Wert (z.B: 16G) ein. Dabei handelt es sich nicht um Arbeitsspeicher, sondern um die Dateigröße, die ihr auf einmal hochladen könnt. Den Unterschied zwischen den beiden Variablen verrät euch Google, in den meisten Fällen reicht aber der selbe Wert bei beiden Variablen. Für den Upload großer Datenmengen verwendet man sowieso selten das Webinterface.

PHP-Variablen
Mehr RAM und größere Uploadgrenzen für Nextcloud

HSTS aktivieren/https-Umleitung

Habt ihr für die Installation meine Anleitung benutzt und habt euch an meine Empfehlung gehalten für Nextcloud einen eigenen virtuellen Host einzurichten, solltet ihr diese Meldung gar nicht erst erhalten. Falls doch, kontrolliert, ob ihr HSTS und HTTP/2 aktiviert habt. Falls ihr keinen virtuellen Host angelegt habt, könnt ihr jetzt einen anlegen. Wählt dazu in der Web Station virtueller Host und legt einen neuen Eintrag an.

  • Tragt den Hostnamen ein, unter dem ihr eure Nextcloud erreichen wollt. (Der Hostname muss existieren und auf eure DiskStation verweisen, mehr dazu in diesem Artikel.)
  • Wählt die Ports, für die der virtuelle Host gilt (im Normalfall 80/443).
  • Wählt als Dokument-Root den Nextcloud-Ordner (/web/Nextcloud).
  • Aktiviert unbedingt HSTS und HTTP/2, das sorgt dafür, dass alle http-Zugriffe auf eure Cloud auf https umgeleitet werden.
  • Wählt als Webserver Apache 2.4 und das zuvor angelegte PHP-Profil.
Nextcloud vHost
HSTS über den vHost aktivieren

Wollt, oder könnt ihr keinen virtuellen Host verwenden, könnt ihr HSTS auch global auf eurem Webserver aktivieren. Legt in PuTTY als root die Datei /etc/nginx/conf.d/http.hsts.conf an und fügt folgende Zeile ein:

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";

Speichert und schließt die Datei und startet anschließend Nginx neu (synoservice -restart nginx).

PHP-Memory-Cache aktivieren

Der Memory-Cache verbessert die Leistung eurer Cloud. Seid ihr meiner Installationsanleitung gefolgt, habt ihr ihn bereits aktiviert und müsst ihn nur noch in der Nextcloud-Konfiguration eintragen. Habt ihr den Cache nicht aktiviert, könnt ihr das nachholen, indem ihr im PHP-Profil den Haken bei „PHP-Cache aktivieren“ setzt.

Um den Cache in die Nextcloud-Konfiguration einzutragen, öffnet mit PuTTy die Datei /web/Nextcloud/Config/config.php und fügt am Ende der Datei (noch vor der schließenden Klammer) folgende Zeile ein:

'memcache.local' => '\\OC\\Memcache\\APCu',

Speichert und schließt die Datei.

Redis aktivieren

Redis verbesser das File Locking. Um Redis verwenden zu können, müsst ihr das Paket „Redis“ auf eurer DiskStation installieren. Ihr findet es in der Community-Paketquelle. Ist Redis installiert und läuft, öffnet die Datei /web/Nextcloud/Config/config.php in PuTTY und tragt folgende Zeilen innerhalb der geschwungenen Klammern ein:

'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array
(
    'host' => '<lokale IP eures NAS>',
    'port' => '6379',
    'timeout' => '0',
    'dbindex' => '0',
),

Speichert und schließt die Datei.

Redis Paket
Redis findet ihr in der Community-Paketquelle
Redis konfigurieren
Redis in der Nextcloud-Konfiguration eintragen

Hintergrundaufgaben per Cron

Nextcloud erledigt viele Aufgaben über Hintergrundprozesse, diese müssen aber auch ausgeführt werden. Standardmäßig passiert das beim Laden einer Seite, sprich, wenn jemand das Webinterface öffnet. Tut das aber niemand, werden die Hintergrundprozesse nicht ausgeführt. Besser ist es, diese regelmäßig von eurer DiskStation ausführen zu lassen. Dazu verwenden wir den Aufgabenplaner. Öffnet in DSM die Systemsteuerung und dort den Aufgabenplaner. Legt eine neue Aufgabe (Erstellen > Geplante Aufgabe > Benutzerdefiniertes Skript) an.

Skript Aufgabenplaner
Der Aufgabenplaner kann eigene Shell-Kommandos und Skripte ausführen
Nextcloud Cron aufrufen
Ruft die Datei cron.php auf
  • Vergebt einen Namen.
  • Belasst den Benutzer root.
  • Unter Zeitplan legt ihr fest, dass die Aufgabe täglich alle 5 Minuten ausgeführt werden soll.
  • Es ist hilfreich sich per E-Mail benachrichtigen zu lassen („Ausführungsdetails per E-Mail senden“) wenn die Aufgabe nicht richtig ausgeführt werden konnte („Ausführungsdetails senden, wenn das Skript unnormal beendet wird“).
  • Unter „Benutzerdefiniertes Skript“ tragt ihr folgende Zeile ein:
sudo -u http php73 /var/services/web/Nextcloud/cron.php

Bestätigt die neue Aufgabe mit Klick auf OK. Öffnet jetzt im Nextcloud-Webinterface Einstellungen > Grundeinstellungen > Hintergrund-Aufgaben und aktiviert die Option Cron. Wartet jetzt etwas mehr als 5 Minuten und ladet die Seite neu. Der Punkt neben der Überschrift muss grün sein und die letzte Ausführung weniger als 5 Minuten her sein.

Nextcloud Cron
Erfolgreich ausgeführte Hintergrundaufgaben

Upload-Probleme lösen/vorbeugen

Beim Hochladen von Dateien werden diese in Chunks aufgeteilt und in einem temporären Verzeichnis abgelegt und erst nach Abschluss des Uploads zusammengesetzt und an den Bestimmungsort verschoben. Dieses temporäre Verzeichnis kann auf der DiskStation Probleme verursachen, aber auch die sind schnell behoben. Legt über die Kommandozeile ein neues Verzeichnis in eurem Nextcloud-Datenverzeichnis an und passt die Rechte dafür an. Z.B.:

mkdir /volume1/NextcloudData/upload-tmp
chown http:http /volume1/NextcloudData/upload-tmp
chmod 750 /volume1/NextcloudData/upload-tmp

Öffnet das verwendete PHP-Profil (Web Station > PHP-Einstellungen) und wechselt in den Reiter Kern. Sucht die Variable upload_temp_dir und fügt den Pfad zum neuen Verzeichnis ein.

temporäres Uploadverzeichnis
Das Upload-Verzeichnis in den PHP-Variablen eintragen

Open_basedir-Ergänzungen

Öffnet das PHP-Profil für Nextcloud und fügt unter „PHP open_basedir benutzerspezifisch anpassen“ die Pfade /dev/urandom und /proc/meminfo hinzu (vergesst den Doppelpunkt zum Trennen einzelner Pfade nicht).

Das fehlende PHP-Modul imagick

Synology hat nicht nur ein Paket für PHP 7.4 veröffentlich, sondern sich auch entschieden die Unterstützung für ImageMagick einzubauen. Daraus resultiert auch ein Update für PHP 7.3 und die Web Station. Alles ist bereits (mit Stand 18.9.20) im Downloadbereich der Homepage verfügbar, aber noch nicht über das Paket-Zentrum. Wie ihr den Kommentaren vielleicht bereits entnommen habt, sollte die Warnmeldung bezüglich dem fehlenden PHP-Modul „imagick“ durch die Verwendung der neuen Versionen verschwinden.

Das Modul wird zur Erstellung von Favicons aus hochgeladenen Logos im Theming-Bereich verwendet. Außerdem wird das Modul von der Gallery-App benötigt, diese stellt damit verschiedene Formate, wie etwa RAW-Files dar. Habt ihr die Gallery-App und die Theming-App deaktiviert/nicht installiert, sollte die Meldung gar nicht aufscheinen.
Selbst mit Theming- und Gallery-App konnte man gut ohne imagick auskommen, die Warnmeldung hat dennoch viele gestört.

ImageMagick ist kein offizielles PHP-Modul und der Einsatz in Nextcloud ist umstritten, da es outdated ist und Sicherheitslücken aufweist. Leider ist es aber das einzige, das die oben beschriebenen Features ermöglicht. ImageMagick wird z.B. auch von WordPress genutzt. Imagick wird auch nicht von jedem Hosting-Provider unterstützt.

Rechte anpassen

Während der Installation wurden die Rechte für den Nextcloud-Ordner und das Datenverzeichnis nur sehr locker gesetzt. Das ist während der Installation auch notwendig. Für den Betrieb sollten die Rechte aus Sicherheitsgründen aber so strikt wie Möglich gesetzt werden. Da ihr für ein Update die Rechte wieder lockern müsst, ist es ratsam, die Rechte über Skripte anzupassen. Legt also mit PuTTY auf eurer DiskStation eine Datei mit Endung .sh an. Fügt dann folgenden Code ein:

#!/bin/bash
ncpath='/volume1/web/Nextcloud'
ncdatapath='/volume1/NextcloudData'
htuser='http'
htgroup='http'
rootuser='root'

printf "chmod Files and Directories\n"
find ${ncpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ncpath}/ -type d -print0 | xargs -0 chmod 0750
find ${ncdatapath} -type f -print0 | xargs -0 chmod 0640
find ${ncdatapath} -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ncpath}/
chown -R ${htuser}:${htgroup} ${ncpath}/apps/
chown -R ${htuser}:${htgroup} ${ncpath}/config/
chown -R ${htuser}:${htgroup} ${ncpath}/themes/
chown -R ${htuser}:${htgroup} ${ncpath}/updater/
chmod +x ${ncpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ncpath}/.htaccess ]
then
    chmod 0644 ${ncpath}/.htaccess
    chown ${htuser}:${htgroup} ${ncpath}/.htaccess
fi
    chown ${htuser}:${htgroup} ${ncpath}/.user.ini

Achtet bitte wieder auf die einfachen und doppelten Anführungszeichen. Ihr könnt das Skript jetzt mit folgendem Befehl ausführen:

sh /volumeX/Pfad/zum/Script/Betriebsberechtigungen.sh

Wollt ihr eure Nextcloud aktualisieren, könnt ihr die Rechte über das Skript aus diesem Artikel und dem neuen Skript vor und nach dem Update anpassen.

Probleme, die sich nicht oder nur eingeschränkt beheben lassen

Bisher konnten die Sicherheitswarnungen und Betriebsempfehlungen mit relativ wenig Aufwand beseitigt werden. Jetzt kommen wir aber zum unangenehmen Teil. Es gibt Meldungen, die sich auf der DiskStation derzeit nicht oder nur bedingt beheben lassen.

Das fehlende PHP-Modul imagick

Hierfür gibt es auf der DiskStation noch keine Lösung. ImageMagick steht als PHP-Modul nicht zur Verfügung und lässt sich auch nicht nachinstallieren. Es gibt zwar „ImageMagick“ als Paket im Paketzentrum, allerdings handelt es sich hierbei um die Desktop-Version und nicht um das PHP-Modul. Allerdings könnt ihr diese Meldung normalerweise ignorieren. Das Modul wird zur Erstellung von Favicons aus hochgeladenen Logos im Theming-Bereich verwendet. Ihr könnt auch ohne das Modul das Theme verändern, nur eben keine Favicons generieren lassen. Außerdem wird das Modul von der Gallery-App benötigt, diese stellt damit verschiedene Formate, wie etwa RAW-Files dar. Habt ihr die Gallery-App und die Theming-App deaktiviert/nicht installiert, sollte die Meldung gar nicht aufscheinen.

ImageMagick ist kein offizielles PHP-Modul und der Einsatz in Nextcloud ist umstritten, da es outdated ist und Sicherheitslücken aufweist. Leider ist es aber das einzige, das die oben beschriebenen Features ermöglicht.

CalDAV- und CardDAV-URLs

Die Meldung „Ihr Webserver ist nicht richtig konfiguriert um „./well-known/caldav“ (bzw. ./well-known/carddav) aufzulösen.“ Erscheint nur dann, wenn ihr für Nextcloud keinen virtuellen Host konfiguriert habt. Da die, von Nextcloud vorgegebenen, Standardwerte für die URLs vom Document-Root ausgehen. Nextcloud aber in einem Unterverzeichnis liegt. Habt ihr einen virtuellen Host angelegt, ist für diesen das Unterverzeichnis der Root-Ordner und somit alles in Ordnung. Normalerweise ließe sich das Problem auf viele verschiedene Weisen lösen, indem die URL einfach um den Unterordner ergänzt wird. Aus bisher nicht bekannten Gründen funktioniert das aber auf den NAS-Geräten von Synology nicht. Euch bleibt also nur, einen virtuellen Host für Nextcloud einzurichten, oder Nextcloud direkt im Document-Root (/web) zu installieren. Ersteres bedeutet, ihr braucht einen Host (Subdomain) allein für Nextcloud, zweiteres bedeutet ihr könnt keine andere Webseite im Dokument-Root betreiben.

Fazit

Habt ihr alle Meldungen beseitigt (sofern sie sich beseitigen lassen) und habt ihr die Rechte angepasst, steht dem Betrieb eurer eigenen Cloud nichts mehr im Wege. Zumindest bis zum nächsten Update. Denn dann warten vermutlich neue Meldungen darauf von euch beseitigt zu werden.

Der Entwicklungszyklus von Nextcloud ist recht kurz und neben den regelmäßigen Updates, warten zwei Mal in Jahr neue Hauptversionen darauf installiert zu werden. Die Meldungen, die ihr in der Übersicht von Nextcloud erhaltet, hängen stark davon ab, welche Version ihr Installiert, ob ihr ein Update durchführt und welche Versionen ihr dabei ausgelassen habt und vorallem davon, wie euer Webserver bereits konfiguriert ist. Es kann daher gut sein, dass ihr Meldungen sehr, die mir noch nicht untergekommen sind. Sollte das der Fall sein, werdet ihr entweder in der Vorgängerversion dieses Artikels fündig oder ihr hinterlasst mir einen Kommentar.

Ähnliche Beiträge

7 thoughts on “Nextcloud Hub Optimierung auf einer Synology DiskStation mit DSM 6

  1. Moin,
    vielen Dank für das Tutorial.
    Heute ist ja auch php7.4 mit dem imagick Modul erschienen (dafür ist das zip Modul nicht mehr standardmäßig dabei -.-).

    Müssen die Rechte im ncdatapath nach einem Update auch wieder mit dem Skript unter „Rechte anpassen“ geändert werden? Das dauert immer einige Zeit und vor der Installation ändere ich sowieso nur das Webverzeichnis auf 777.

    Gruß

    1. Hallo,

      Hast du PHP 7.4 schon im Paket-Zentrum? Ich noch nicht und konnte dazu auch keine Informationen finden.

      Du hast Recht, der Teil mit dem Data-Part kann nach dem ersten ausführen aus dem Skript entfernt werden. Ja es dauert etwas länger aber das habe ich noch nicht als störend empfunden. Ich werde den Artikel mit einem Hinweis ergänzen.

      Grüße

      1. Moin,

        im Paketzentrum sind PHP und die Webstation noch nicht, ich habe sie direkt über die Synology Website heruntergeladen und dann über das Paketzentrum manuell installiert.

        Alles klar, dann nehme ich den Teil aus dem Skript raus.

        1. Hallo Christian,

          Keine Ahnung was Synology da getan hat aber zumindest lässt sich imagick nicht in der WebStation aktivieren. Vielleicht meint Synology mit „support for imagick“ das jetzt imagick mit viel Aufwand per Hand installiert werden kann. Aber zumindest in der Community konnte ich noch nichts neues dazu finden. ABer ich werde die Augen offen halten.

          Gruß
          Andreas

        2. Also bei mir hat es auf Anhieb funktioniert und die Fehlermeldung in nextcloud ist auch weg.

          Hast du die Web Station bereits auf die 2.1.9-0153 geupdatet?

        3. Du hast ja dir ja die Web Station direkt von Synology geholt. Ich seh grad, auch PHP 7.3 hat ein kleines Update bekommen (das von Christian angesprochene), allerdings wurde auch das noch nicht über das Paket Zentrum ausgeliefert.
          Also scheinbar ist mit dem kommenden Update auch das erledigt.

          Interessant finde ich gerade eher die Tatsache das Synology Pakete offiziell herausgibt, diese aber nicht über das Paket Zentrum verfügbar sind. Eventuell gibts auch hier eine Verteilung in Wellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.