Die eigene Cloud: Nextcloud 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.

Hinweis: Dieses Tutorial funktioniert auch mit Owncloud 8 und 9 sowie für Nextcloud 9.x und 10.x

Update: 9. August 2017 – Seit Version 12.0 nutzt Nextcloud PHP opcache, daher kommt es zu einer neuen Einrichtungswarnung. Mehr dazu hier
Update: 12. Juli 2017 – Nextcloud funktioniert auf der DiskStation mittlerweile auch halbwegs gut mit Apache 2.4 und PHP 7. Ladet die Pakete Apache 2.4 und PHP 7 herunter. Nach der Installation von Nextcloud könnt ihr unter Web Station -> PHP-Einstellungen -> Erweiterungen -> HTTP Backend Server und PHP auf die neuen Versionen setzen. Deinstalliert die alten Pakete nicht, derzeit werden sie noch für das Update der Nextcloud benötigt.

Vorbereitung

Nextcloud ist auf der DiskStation installiert und läuft.

Optimierung und Fehlerbehebung

Zuerst loggen wir uns in das Webinterface von Nextcloud ein und wechseln in das Administrator-Menü, dort führt Nextcloud selbst einige checks aus und teilt uns mit welche Fehler bestehen und wo noch Optimierungspotential besteht.

Nextcloud Sicherheitswarnungen
Nextcloud Sicherheitswarnungen im Administrationsmenü

Die Warnungen die angezeigt werden hängen davon ab wie Nextcloud installiert wurde bzw. welche Konfigurationen schon vorher am Webserver durchgeführt wurden. Ich werde auf die gängigsten Meldungen eingehen und wie man sie beheben kann. Noch eine kleine Anmerkung, diese Warnungen bedeuten nicht das Nextcloud nicht funktioniert, sie deuten lediglich auf Sicherheitsrisiken und mögliche Performanceoptimierungen hin.

Hinweis: Änderungen an Konfigurationsdateien und Rechten sollten immer über putty oder WinSCP erfolgen. Erstens trägt der DSM-Texteditor immer den root als Besitzer der bearbeiteten Datei ein und zweitens sind nicht alle User und Gruppen in der Rechteauswahl der DSM verfügbar.

Datenverzeichnis

Solltet ihr euch an diese Anleitung oder an die Nextcloud-Dokumentation gehalten haben, solltet ihr diese Meldung nicht zu Gesicht bekommen. Habt ihr aber keinen eigenen Ordner für eure Daten angegeben nutzt Nextcloud den Standardordner data der dann im web-Verzeichnis eurer DiskStation liegt. Die Meldung „Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar.“ weist euch auf diesen Umstand hin. Natürlich kann jetzt der Zugriff auf den data-Ordner einschränken, am besten ist es aber, die Dateien aus dem web-Verzeichnis herauszunehmen.

HSTS

Diese Meldung wird euch mit ziemlicher Sicherheit begegnen: „Der ‚Strict-Transport-Security‘ HTTP-Header ist nicht auf mindestens „15768000“ Sekunden eingestellt. Um die Sicherheit zu erhöhen, empfehlen wir das Aktivieren von HSTS, wie es in unseren Sicherheitshinweisen erläutert ist.“
Dieses Problem zu beheben ist etwas tricky. Da seit DSM 6 ngingx als Standard-Webserver verwendet wird, muss man etwas suchen bis man die richtige Stelle gefunden hat um HSTS zu aktivieren. In DSM 5 gab es noch eine Option die man aktivieren konnte. An dieser Stelle geht ein Dankeschön an FalkenaugeMihawk und das deutsche Synology-Forum für diese Lösung.

  1. Verbindet euch über SSH mit eurer DiskStation, loggt euch mit euren Administrator ein.
  2. Erlangt root Rechte mit sudo su – und erneut dem Passwort.
  3. Erstellt eine neue Datei in /etc/nginx/conf.d mit dem Namen „http.*.conf“ (den Stern ersetzt durch einen Namen der euch logisch erscheint) und öffnet diese (z.B. Kommando vi /etc/nginx/conf.d/http.hsts.conf).
  4. Fügt folgende Zeile ein: add_header Strict-Transport-Security „max-age=15768000; includeSubDomains; preload;“;
  5. Datei speichern und schließen.
  6. nginx Config neu laden lassen mit nginx -s reload
HSTS im nginx aktivieren
HSTS im nginx aktivieren

Alternativ kann man einen virtual Host einrichten und dort HSTS aktivieren.

Solltet ihr Nextcloud auf einem Apache laufen haben (entweder noch unter DSM 5 oder ihr habt den Apache manuell ausgewählt) dann fügt folgenden Textblog in die Datei /volumeX/web/Nextcloud/.htaccess ein:

Alternativ könnt ihr auch hier wieder einen virtual Host anlegen.

Memcache

Auch die nachfolgende Meldung liest man recht häufig.

Memory-Cache Warnung
Memory-Cache Warnung im Administratormenü

Diese Meldung lässt sich beheben, indem man eine der 4 möglichen Memory-Cache-Varianten aktiviert. Die DiskStation bietet glücklicherweise 2 davon an: APC und APCu. Um den Memory-Cache zu aktivieren loggt euch in den DSM ein. Öffnet über das Menü den Webserver und geht auf PHP Einstellungen, dort hakt ihr „PHP Cache aktivieren“ an und speichert die Änderung ab.

PHP Cache aktivieren
PHP Cache aktivieren im DSM

Jetzt müsst ihr noch die Nextcloud-Konfigurationsdatei bearbeiten.

  1. Verbindet euch über SSH mit eurer DiskStation, loggt euch mit euren Administrator ein.
  2. Erlangt root Rechte mit sudo su – und erneut dem Passwort.
  3. Öffnet die Nextcloud-Konfigurationsdatei mit vi /volumeX/web/Nextcloud/config/config.php
  4. Fügt folgende Zeile innerhalb der Klammern hinzu: ‚memcache.local‘ => ‚\\OC\\Memcache\\APCu‘,
  5. Speichert und schließt die Datei.
Nextcloud config.php
Nextcloud config.php

PHP Opcache

Seit 12.0 nutzt Nextcloud PHP Opcache. Diese PHP-Erweiterung soll für eine höhere Geschwindigkeit von Nextcloud sorgen. Ist Opcache nicht konfiguriert, kann man im Admin-Menü folgende Meldung sehen:

The PHP Opcache is not properly configured. For better performance we recommend to use following settings in the php.ini:
opcache.enable=On
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Wie die Meldung schon sagt, wird Opcache normalerweise in der php.ini konfiguriert. Auf der DiskStation läuft das etwas anders. Es gibt mehrere php.ini und Änderungen sind oft nicht wirksam, bzw. werden sie bei Updates wieder überschrieben. Noch dazu hat sich ein kleiner Fehler in die Meldung eingeschlichen, es muss heißen opcache.enable=1 und nicht On.
Diesmal brauch ihr auch keine Konsole. Öffnet im DSM die Web Station, geht dort auf „PHP Einstellungen“. Wählt die PHP-Version, die ihr für Nextcloud verwendet und öffnet dann „Erweiterte Einstellungen“. Im Tab „Erweiterungen“ seht ihr eine Liste mit allen Variablen die ihr editieren könnt. Scrollt runter, bis ihr zu den opcache-Enträgen kommt und tragt dort die vorgeschlagenen Werte ein (1 statt On nicht vergessen). Die Werte die von Nextcloud nicht erwähnt werden, lasst ihr unverändert.
Startet die DiskStation oder zumindest den Webserver neu, die Meldung sollte dann verschwunden sein.

Rechte und Ownership

Als letztes passen wir noch die Rechte der Ordner und Dateien an, diese werden so strikt wie möglich gesetzt. Am besten ihr legt euch ein Script an (Endung .sh), welches ihr auf der DS ablegt. Für ein Update der Nextcloud müsst ihr die Rechte wieder lockern. Mit einem Script können sie danach schnell wieder angepasst werden. Inhalt des Scripts ist folgender:

Das Script führt ihr mit sh /volumeX/Pfad/zum/Script.sh aus.
Ihr habt jetzt die wichtigsten Einstellungen vorgenommen. Ruft erneut das Nextcloud Webinterface auf und loggt euch ein. Kontrolliert auf der Administrator-Seite ob alle Meldungen verschwunden sind.

Mögliche Fehlerquellen

Sollten die Rechte für den data-Ordner nicht richtig gesetzt sein, und der Webserver das Verzeichnis nicht lesen können, wird eine entsprechende Meldung auf der Administrator-Seite angezeigt.
Sollte der Aufruf von Nextcloud nur eine weiße Seite oder einen Error 500 liefern, liegt das Problem meist in der Konfigurationsdatei von Nextcloud. Sollte beim Einfügen der Zeile das Format verfälscht worden sein, kann die Datei nicht mehr gelesen werden. Kontrolliert ob ihr die Zeile innerhalb der Klammern hinzugefügt habt. Kontrolliert ob die Zeile mit einem Komma abgeschlossen wird, sollten sich danach noch weitere Einträge befinden.
Kontrolliert ob Rechte und Besitzer richtig gesetzt wurden.
Ich selbst hatte ein Problem mit den Rechten, diese waren schon gehärtet, als ich die config.php (über putty) bearbeitet habe. Obwohl auch danach die Rechte immer noch gestimmt haben, konnte die Datei von Webserver nicht gelesen werden. Das Entfernen der Zeile hat den Aufruf von Nextcloud wieder möglich gemacht. Um die Zeile dennoch hinzuzufügen habe ich die Rechte mit dem Script aus diesem Artikel aufgelockert, die Zeile hinzugefügt und die Rechte wieder strikter gesetzt.

 

Hapt ihr noch andere Fehlermeldungen oder Hinweise? Hinterlasst ein Kommentar und ich übernehme sie in den Artikel.
Im nächsten Artikel werde ich erklären wie ihr eure Nextcloud updaten könnt.

9 thoughts on “Die eigene Cloud: Nextcloud Optimierung auf einer Synology DiskStation mit DSM 6

  1. Sauber! 1000 Dank für deine Beiträge zu nextcloud und Synology. Nextcloud läuft jetzt auf meinem NAS und meldet „Alle Überprüfungen bestanden“.

  2. Hallo Jonathan,

    ich habe mir auch einen Wolf gesucht wegen der Opcache-Meldungen.

    Bei mir hat das Eintragen der geforderten Werte in der Datei /usr/local/etc/php56/conf.d/opcache.ini zur Beseitigung der Meldungen geführt.

    $HTTP_RAW_POST_DATA-Meldungen habe ich auch im nextcloud.log und suche noch.

    In welcher Log-Datei taucht denn die DBA_DEFAULT-Meldung auf?

  3. Hallo,
    danke für die Anleitung.

    ich habe noch ein paar Fehler, die ich nicht weg bekomme.

    Erstens bekomme ich unter Administration folgendes angezeigt:

    PHP Opcache ist nicht korrekt eingerichtet. Für bessere Leistung empfehlen wir ↗ folgende Einstellungen in der php.ini:

    opcache.enable=1
    opcache.enable_cli=1
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=10000
    opcache.memory_consumption=128
    opcache.save_comments=1
    opcache.revalidate_freq=1

    Zweite Fehlermeldung (im Logging):
    Error Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‚always_populate_raw_post_data‘ to ‚-1‘ in php.ini and use the php://input stream instead. at Unknown#0

    Drittens (im Logging):
    PHP Startup: No such handler: DBA_DEFAULT at Unknown#0

    Ich habe schon zwei php.ini bearbeitet und hatte leider kein erfolg.
    Vielleicht könnt ihr mir ja bei diesen Fehlern helfen

    Appache HTTP Server 2.2
    PHP 5.6
    MariaDB 5
    Nextcloud 12.0.0

    1. Hallo,

      Tut mir Leid für die späte Antwort. Ich habe heute erst 12.0.1 als stable installiert. opcache wird seit 12.0 benutzt.
      Geh dazu in die WebStation auf PHP Einstellungen. Dort wähle die PHP Version aus die du nutzt (5.6 in deinem Fall).
      Geh dann auf „Erweiterte Einstellungen“ und dort auf den Tab „Erweiterungen“ (Extensions).
      Dort kannst du dann runterscrollen bis zu den opcache-Werten.
      Stell dort die Werte so ein wie Nextcloud sie vorschlägt. Die Werte die Nextcloud nicht angibt lass einfach wie sie sind.
      Starte dann den Webserver neu (oder die DiskStation), dannach sollte die Meldung verschwunden sein.

      always_populate_raw_post_data = -1 hab ich in der .user.ini im Nextcloud-Verzeichnis schon eingetragen sowie in der .htaccess

      „PHP Startup: No such handler: DBA_DEFAULT at Unknown#0“ – Hast du dein Nextcloud data Verzeichnis außerhalb von /web/Nextcloud? Uns wenn ja, hast du es in open_basedir eingetragen?

  4. Danke für alles! Du hast 2 Fehlermeldungen beseitigt, die ich nie (1 Jahr lang) wegbekommen habe UND du hast mir mit diesen ekligen Berechtigungen geholfen.
    Mein Problem ist jetzt noch folgendes:
    Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu beheben finden Sie in unserer Dokumentation. (Liste der ungültigen Dateien… / Erneut scannen…)
    Bitte überprüfen Sie noch einmal die Installationsanleitungen emoji unicode: 2197 und kontrollieren Sie das Log auf mögliche Fehler oder Warnungen.

    Und die Dateien sind alle diese /@eaDir/help.php@SynoEAStream-Dateien…

    Hängen offenbar mit der Photostation zusammen. Wie kann ich ihm sagen, dass diese Dateien nicht schlimm sind?!

    1. Freut mich dass es dir geholfen hat.
      Hast du den /photo Ordner als externen Speicher eingebunden oder benutzt du den direkt als Ordner für die Nextcloud?
      Die Photostation verwendet nur den /photo Ordner.

  5. Danke für die wirklich tolle Anleitung!
    Soweit funktioniert Nextcloud auf meiner DS214+, mittlerweile unter DSM 6.1, auch schon ganz gut. Um das ganze ein wenig zu optimieren, wollte ich das Ganze nun auf Virtual Host umstellen. Dazu habe ich den (externen) FQDN als Virtual Host eingetragen, als Document Root „web/nextcloud“ (ich habe im Pfad bewusst nur Kleinbuchstaben verwendet). Meine Daten liegen, gem. deiner Anleitung, unter einem eigenen Share „nextcloud/data“. Über den herkömmlichen Aufruf (*meinExternerFQDN*/nextcloud) funktioniert es weiterhin. Wenn ich NC aber über den Namen des Virtual Host öffnen will (nc.meinExternerFQDN), bekomme ich vom Nextcloud die folgende Meldung:

    Daten-Verzeichnis (/volume1/nextcloud/data) ist ungültig
    Bitte stellen Sie sicher, dass das Datenverzeichnis auf seiner ersten Ebene eine Datei namens „.ocdata“ enthält.
    Erstellen des „data“-Verzeichnisses ist nicht möglich (/volume1/nextcloud/data)
    Dies kann normalerweise repariert werden, indem dem Webserver Schreibzugriff auf das Wurzelverzeichnis gegeben wird.

    Dies ist aber definitiv gegeben, da über den herkömmlichen Domainnamen weiterhin alles gut funktioniert. Kannst du dir darauf einen Reim machen?

    1. Update für die Nachwelt:
      Ich habe die Lösung für mein Problem an anderer Stelle gefunden.
      Und zwar musste in meinem Fall (Datenverzeichnis ausgelagert nach nextcloud/data, Betrieb mit Virtual Host) folgende Angabe im PHP open_basedir angehängt werden (falls dort etwas drinsteht, zuerst mit einem Doppelpunkt : abtrennen):
      /dev/urandom:/volume1/nextcloud

      1. Freut mich, dass du die Lösung gefunden hast.
        Ich selbst habe derzeit keinen virtuellen host eingerichtet, werde das aber demnächst vielleicht umsetzen und den Artikel aktualisieren. Da werd ich dann deine Lösung erwähnen.

Schreibe einen Kommentar

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