Die eigene Cloud: Nextcloud Optimierung auf einer Synology DiskStation mit DSM 6 [Update: Mai 2019]

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.

Dieser Artikel ist veraltet, bitte lest in der aktuellen Version, wie ihr Nextcloud optimiert.

Hinweis: Dieses Tutorial funktioniert auch ab Owncloud 8 und 9 sowie für Nextcloud 9.x und 10.x. Je nach Version können kleine Unterschiede auftreten, bei neuen Punkten steht die Version dabei, ab wann diese Auftreten. Meldungen von älteren Versionen treten gegebenenfalls nicht mehr auf. Das hängt davon ab welche Version ihr zuerst Installiert und wie aktuell eurer System ist.
Aktuelle Version: 16

Update: Mai 2019 – Weitere Einrichtungshinweise von Nextcloud 16 hinzugefügt.
Update: April 2019 – Weitere Einrichtungshinweise von Nextcloud 13 – 15 hinzugefügt.
Update: Jänner 2019 – Info zur Nextcloud 15 (imagick) hinzugefügt.
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.

Nextcloud 15, PHP >7.0 und imagick

Nextcloud 15 kann schon installiert werden und läuft auch, ihr bekommt aber im Adminbereich die Meldung, dass das PHP-Modul imagick nicht aktiviert wurde.
Die Sache sieht folgendermaßen aus: imagick ist im PHP 7.0-Paket von Synology nicht enthalten. Eine Nachinstallation gestaltet sich als schwierig, da das Modul für die DiskStation extra kompiliert werden müsste. Das Paket für 7.0 wird auch nicht mehr aktualisiert. PHP 7.0 selbst ist eol. Es gibt zwar mittlerweile PHP 7.2, allerdings ist imagick immer noch nicht verfügbar.

Das Modul wird für 2 Dinge gebraucht, ersten im Theming um aus dem Logo ein favicon zu generieren und 2. für die Gallery-App. Ihr könnt das Theming auch ohne imagick verwenden, habt dann nur eben kein favicon. Die Gallery-App habe ich nicht in Verwendung, daher kann ich nicht sagen, ob sie ohne imagick läuft. Habt ihr sie nicht aktiviert, könnt ihr die Meldung also getrost ignorieren.

Der Einsatz von imagick wird in der Nextcloud-Community heftig diskutiert, da es als unsicher gilt und auch nicht mehr aktualisiert wird, allerdings gibt es bisher auch keine Alternative dafür. Ob es demnächst wieder entfernt wird, steht noch nicht fest.

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:

<IfModule mod_headers.c>
    <IfModule mod_fcgid.c>
        <IfModule mod_setenvif.c>
            SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
            RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION [size=150]Header always set Strict-Transport-Security "max-age=15768000"[/size]
        </IfModule>
    </IfModule>
</IfModule>

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.

imagick

Seit Version 15:

Hierfür gibt es auf der DiskStation noch keine Lösung. Es gibt zwar imagemagick als Paket, leider hilft es nicht dieses zu installieren oder gar in PHP zu konfigurieren. 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 für die neueste Version der Gallery-App benötigt, diese kann jetzt auf RAW-Files darstellen. Verwendet ihr die Gallery-App nicht, braucht ihr das Modul nicht.

ImgaeMagick 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. Mit etwas Glück, wird es in einem der nächsten Releases entfernt https://github.com/nextcloud/server/issues/13099.

Redirects

Seit Version 15.0.5:

Dieser Punkt ist etwas schwierig, nicht jeder sieht diese Meldung, außerdem gibt es verschiedene Lösungen die aber nicht für alle funktioniert haben. Ich versuche einige Lösungen aufzulisten, da ich selbst die Meldung nicht gesehen habe kann ich auch nicht sagen welche bei mir geholfen hat.

Für die provider-Meldung sollte es reichen im /web-Verzeichnis eine .htaccess anzulegen mit folgendem Inhalt:

Redirect 301 /ocm-provider /nextcloud/ocm-provider
Redirect 301 /ocs-provider /nextcloud/ocs-provider

Habt ihr schon eine .htacces, ergänzt die Einträge einfach.

Für die Meldung zu caldav/carddav sollte es reichen im Installationsordner eurer Nextcloud (/web/nextcloud) in der .htaccess folgende Einträge hinzuzufügen:

RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
Leider funktioniert diese Lösung nicht bei jedem.
Redirects für carddav und caldav

Das funktioniert bei vielen aber nicht, alternativ könnt ihr auch versuchen in /etc/apache2X/sites-available/nextcloud.conf (das X steht für 2 oder 4, je nachdem welche Apache Version ihr benutzt) folgende Einträge hinzuzufügen:

Redirect 301 /.well-known/carddav https://MyServer/nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav https://MyServer/nextcloud/remote.php/dav

Die URL müsst ihr an eure eigene anpassen. Je nachdem ob ihr für Nextcloud einen vhost verwendet oder nicht, kann eine andere Lösung erforderlich sein. Im Internet und unter help.nextcloud.com findet ihr noch weitere Lösungsvorschläge.

4-Byte-Zeichen

Seit Version 15.0.6:

  • MySQL wird als Datenbank verwendet, unterstützt jedoch keine 4-Byte-Zeichen. Um beispielsweise 4-Byte-Zeichen (wie Emojis) ohne Probleme mit Dateinamen oder Kommentaren verarbeiten zu können, wird empfohlen, die 4-Byte-Unterstützung in MySQL zu aktivieren. Für weitere Details lesen Sie bitte die Dokumentationsseite hierzu.

Datenbank umstellen

  1. Verbindet euch via SSH (putty) mit eurer DiskStation.
  2. Legt eine neue Datei mit folgendem Befehl an:
    sudo vi /var/packages/MariaDB10/etc/my.cnf

    Nutzt ihr noch MariaDB5, lasst das 10 im Pfad weg.

  3. Fügt folgende Zeilen in die Datei ein:
    [mysqld]
    innodb_file_per_table=1
  4. Im Paketzentrum deaktiviert und aktiviert ihr MariaDB wieder.
  5. Im phpMyAdmin (oder alternativ über die Kommandozeile) führt ihr folgendes SQL-Statement aus:
    ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

    Heißt eure Nextcloud-Datenbank anders, verwendet den richtigen Namen statt nextcloud.

Eure Datenbank unterstützt jetzt 4Byte-Zeichen, jetzt müsst ihr noch die bestehenden Einträge in den Tabellen aktualisieren.

Tabellen reparieren

  1. In der Kommandozeile wechselt in den Ordner eurer Nextcloud-Installation damit ihr die occ-Befehle ausführen könnt.
    cd /volume1/web/nextcloud/
  2. Führt folgenden Befehl aus:
    sudo -u http php72 -d memory_limit=1024M occ config:system:set mysql.utf8mb4 --type boolean --value="true"
  3. Jetzt noch den Reperatur-Vorgang starten:
    sudo -u http php72 -d memory_limit=1024M occ maintenance:repair

    Der Vorgang kann einige Zeit dauern und sollte für jede Tabelle der Nextcloud-Datenbank folgenden Output erzeugen:

    Hier werden die Tabellen an die durchgefühten Änderungen angepasst.
    Repair-Vorgang

Die Hinweismeldung ist jetzt verschwunden.

PHP memory_limit

Seit Version 16:

Nach Update auf 16.0.x erhaltet ihr die Meldung “Das PHP Speicherlimit liegt unter dem empfohlenen Wert von 512MB.”
Diesen konnte man früher zusammen mit der maximalen Uploadgröße im Adminbereich einstellen, die Werte wurden in der .htaccess abgelegt. Die entsprechende Option ist aus dem Adminbereich und der .htaccess verschwunden. Ein manuelles Eintrage hilft nicht. Die Lösung ist aber denkbar einfach.

  • Loggt euch im DSM ein.
  • Öffnet die WebStation und geht dort auf PHP-Einstellungen.
  • Wählt das Profil aus, dass ihr für eure Nextcloud verwendet (falls ihr mehrere habt).
  • Geht auf Bearbeiten und wählt dann den Tab Kern.
  • Sucht jetzt nach “memory_limit” und tragt dort mindestens “512M” ein, noch besser ist “1G” oder “2G”, je nachdem wie viel RAM eure DS hat.
  • Sucht auch gleich nach “upload_max_filesize” und “post_max_size” und tragt dort ebenfalls “1G” ein. Diese beiden erzeugen zwar keine Meldung im Adminbereich, konnen aber ebenfalls nicht mehr dort eingestellt werden.

Fehlende Indizes

Seit Version 16:

In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausführen von “occ db:add-missing-indices” können die fehlenden Indizes manuell hinzugefügt werden, während die Instanz weiter läuft. Nachdem die Indizes hinzugefügt wurden, sind Anfragen auf die Tabellen normalerweise schneller.
Fehlender Index “twofactor_providers_uid” in der Tabelle “oc_twofactor_providers”.
Fehlender Index “version” in der Tabelle “oc_whats_new”.
Fehlender Index “cards_abid” in der Tabelle “oc_cards”.
Fehlender Index “cards_prop_abid” in der Tabelle “oc_cards_properties”.

Diese Meldung ist habt ihr eventuell schon bei einer älteren Version (ich glaube es war 13) gesehen. Hier müsst ihr einfach den erwähnten Befehl in der Kommandozeile (putty) aufrufen.

  • Verbindet euch mit putty zu eurer DiskStaion.
  • Wechselt in das Installationsverzeichnis eurer Nextcloud:
    cd /volume1/web/nextcloud
  • Gebt den Befehl ein:
    sudo -u http php72 -d memory_limit=512M occ db:add-missing-indices
  • Wartet bis der Befehl ausgeführt wurde. Ihr könnt putty danach schließen.

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:

#!/bin/bash
ncpath='/volume1/web/nextcloud'
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 /volume1/ncdata/ -type f -print0 | xargs -0 chmod 0640
find /volume1/ncdata/ -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

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.

Ähnliche Beiträge

96 thoughts on “Die eigene Cloud: Nextcloud Optimierung auf einer Synology DiskStation mit DSM 6 [Update: Mai 2019]

  1. Moin Andreas,

    erstmal vielen Dank für die top Anleitung! Auch für nicht Profis mich gut verständlich und Schritt für Schritt sauber erklärt. Nach einer ersten verpatzten Installation scheint jetzt tatsächlich (fast) alles zu laufen. Zwei Dinge haben leider nicht funktioniert:

    1. Wenn ich den Community Document Server als Root-User über die Kommandozeile installieren möchte bekomme ich die Meldung: “-ash: occ: command not found”.
    Ich vermute ich muss zum http-User wechseln? Das hat nur leider nicht geklappt, da ich das Passwort nicht besitze und auch über den Befehl “passwd http” nicht ändern kann.
    Auch der Befehl “sudo -u http php74 -d occ app:install documentserver_community” (mit und ohne “-d”) hat nicht funktioniert.

    2. Nachdem ich als root das Skript für das “zurücksetzen” der Berechtigungen ausgeführt habe, hab ich die folgenden Fehlermeldungen erhalten:
    chmod Files and Directories
    find: `/volume1/ncdata/’: No such file or directory
    chmod: missing operand after ‘0640’
    Try ‘chmod –help’ for more information.
    find: `/volume1/ncdata/’: No such file or directory
    chmod: missing operand after ‘0750’
    Try ‘chmod –help’ for more information.
    chown Directories
    chown: invalid user: ‘+x’
    chmod/chown .htaccess

    Ich habe alles 1zu1 abgetippt und mehrfach kontrolliert. Keine Ahnung, was da schief gegangen ist…

    Über eine Rückmeldung würde ich mich sehr freuen!

    1. Hallo Stephan

      1. Du musst für die occ Befehle im Nextcloud Verzeichnis sein. Du musst also vorher (als root) “cd /volume1/web/nextcloud” eingeben, dann kannst du den occ Befehl ausführen: “sudo -u http php74 occ…”

      2. “No such file or directory” sagt mir dass, entweder dein Verzeichnis “ncdata” nicht auf Volume1 angelegt wurde oder dein Datenverzeichnis für Nextcloud nicht “ncdata” heißt. Du musst alle Namen und Pfade so anpassen dass sie zu deinen Pfaden passen.

      Melde dich einfach wenn du noch weitere Probleme hast.

      Grüße
      Andreas

      1. Hallo Andreas,

        vielen, vielen Dank für die schnelle und kompetente Antwort! So hat alles funktioniert. Top!

        Ein paar kleine Problemchen gibt’s leider immer noch:
        1. Bei den Hintergrund-Aufgaben erhalte ich immer die Meldung “Einige Aufträge wurden seit Gestern nicht mehr ausgeführt. Bitte erwägen Sie die Umstellung auf System-Cron.” Allerdings funktioniert das über den Eintrag in der crontab leider nicht. Die liegt unter /etc/crontab und enthält die folgenden Einträge:

        MAILTO=””
        PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
        #minute hour mday month wday who command
        */5 * * * * php -f /volume1/web/nextcloud/cron.php
        41 2 * * 2 root /usr/syno/bin/synoschedtask –run id=3
        20 0 * * 0 root /usr/syno/bin/synoschedtask –run id=1
        0 0 * * * root /usr/syno/bin/synoschedtask –run id=4
        0 0 3 * * root /usr/syno/bin/synoschedtask –run id=2

        Wenn ich sie ausführe erhalte ich die folgenden Meldungen:
        crontab: line 4: */5: No such file or directory
        crontab: line 5: 41: command not found
        crontab: line 6: 20: command not found
        crontab: line 7: 0: command not found
        crontab: line 8: 0: command not found

        Es scheint also gar kein Crontab Kommando zu funktionieren…

        Die cron.php existiert aber unter dem Pfad mit den folgenden Berechtigungen:
        -rwxr-xr-x 1 http http 5163 Nov 15 20:53 cron.php

        Da komme ich leider nicht weiter.

        2. bekomme ich von Nextcloud die Fehlermeldung “Es wurde kein PHP Memory Cache konfiguriert. Konfigurieren Sie zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache.” und habe leider keine Ahnung, wie ich das beheben soll.

        3. verstehe ich nicht, wie ich in der Kommandozeile (Putty) zum http User wechseln kann. Hier fehlt mir anscheinend das Passwort. Mit dem Admin-Passwort verweigert er mit den Wechsel. Der Befehl “passwd http” um das Passwort neu zu vergeben bringt leider auch keinen Erfolg.

        Ich würde mich sehr freuen, wenn du da nochmal weiterhelfen kannst!

        Besten Gruß

        Stephan

        1. Hallo Stephan,

          1. Mit der crontab kenne ich mich leider nicht so aus, ich verwende den AUfgabenplaner (der ja nur die UI zur crontab ist) und führe sudo -u http php74 /var/services/web/mimir/cron.php als root aus.

          2. Dafür sollte es reichen APCu zu aktivieren, das findest du im Artikel unter dem Punkt “Memcache”.

          3. Dafür braucht du kein Passwort, du verwendest die Kommandozeile standardmäßig als dein DS-Benutzer, mit sudo -i (selbes PW wie dein DS-Admin) kannst du zum root werden. Möchtest du Befehle als anderer Nutzer ausführen machst du das mit sudo -u vor jedem Befehl der mit dem Nutzer ausgeführt werden soll, so wie das Ausführen des Nextcloud-Cron (sudo -u http php74 /var/services/web/mimir/cron.php).

          Grüße
          Andreas

  2. beim MemCache gab es ein Problem bei mir, wenn ich die von dir genannte Zeile eingefügt habe.
    In der Nextcloud Hilfe habe ich nach ein wenig suchen folgende Zeile gefunden:
    ‘memcache.local’ => ‘\OC\Memcache\APCu’,
    Also nur geringfügig anders. Damit hat es aber funktioniert

  3. riesen Dank für den echt hilfreichen Tipp für die fehlenden Indizes bei der Nextcloud DB. Hab schon viele Internetseiten nach der passenden Lösung durchsucht. Nur hier hab ich dann die Lösung gefunden, welche auch funktionierte und damit konnte ich das Problem endlich beseitigen – Vielen Dank!

  4. Im Skript für HSTS/Apache fehlt ein “N” nach env=XAUTHORIZATIO:

    SetEnvIfNoCase ^Authorization$ “(.+)” XAUTHORIZATION=$1
    RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATIO [size=150]Header always set Strict-Transport-Security “max-age=15768000″[/size]

  5. Hallo,
    ins Skript sinnvollerweise noch den Datenpfad von nextcloud als Variable einführen. Mein Skript sieht bspw. so aus:

    #!/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

    Gruß, Till

  6. Hallo @all

    nach dem Update auf die Version 19 tritt der Fehler:

    “Fehlende optionale Spalte “reference_id” in der Tabelle “oc_comments””

    Lösung:
    Gebt im Pfad eurer Nextcloud den folgenden Befehl ein:
    sudo -u http php72 -d memory_limit=512M occ db:add-missing-columns

    Beste Grüße
    Steffen

  7. Hallo. Vielen Dank auch von mir – für diese Anleitung. Hat geklappt.

    Allerdings erscheint noch eine Fehlermeldung, die hier noch nicht beschrieben ist. Ich denke, der Ursprung ist die Anpassung der MySQL.php. Konnte allerdings den Fehler nicht finden.

    Die Meldung lautet: Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Informationen befinden sich in unserer Dokumentation. (Liste der ungültigen Dateien… / Erneut analysieren…)

    Beim Anklicken des Links erscheint:

    Results
    =======
    – core
    – INVALID_HASH
    – lib/private/Setup/MySQL.php

    Hast Du allenfalls einen Tipp?

    Beste Grüsse – Erich

    1. Hallo,

      Vielen Dank für den Hinweis. Du hast 2 Möglichkeiten:
      – Du kannst die gelöschten Elemente nach der Installation wieder einfügen, also die Datei wieder in Ihren Ursprünglichen Zustand versetzen.
      – Du kannst dir die Datei aus dem Nextcloud-Zip holen und deine angepasste Datei damit Überschreiben. Du musst danach aber die Rechte richtig setzen, dazu musst du einfach nur das Script neu ausführen.

      Danach kannst du erneut Analysieren und alles sollte passen.

      Grüße
      Andreas

  8. Hallo Andreas,

    ich habe gerade das Update auf 18.0.4 gemach und bekomme die u.a. die folgenden Fehlermeldungen:

    – – Dein Web-Server ist nicht richtig eingerichtet um “/.well-known/caldav” aufzulösen.
    – – Dein Web-Server ist nicht richtig eingerichtet um “/.well-known/carddav” aufzulösen.

    => leider funktioniert die Anleitung von Dir bei mir nicht

    In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausführen von “occ db:add-missing-indices” können die fehlenden Indizes manuell hinzugefügt werden, während die Instanz weiter läuft. Nachdem die Indizes hinzugefügt wurden, sind Anfragen auf die Tabellen normalerweise schneller.
    – Fehlender Index “calendarobject_calid_index” in der Tabelle “oc_calendarobjects_props”.
    – Fehlender Index “schedulobj_principuri_index” in der Tabelle “oc_schedulingobjects”.

    => habe dafür noch keine Lösung gefunden

    Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von “occ db:convert-filecache-bigint” können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Einzelheiten findest Du auf der zugehörigen Dokumentationsseite.
    – mounts.storage_id – mounts.root_id – mounts.mount_id

    auch hier funktionieren die beigesteuerten Befehle nicht bzw. habe ich nicht das SQL KowHow um meine Daten nicht zu schrotten.

    Kannst Du mir bitte weiterhelfen????

    VG
    Steffen

    1. Hallo,

      Mit den well-known-Links scheint Synology Probleme zu haben, ich konnte den Fehler nur beheben, indem ich einen virtuellen Host für Nextcloud einrichte. Das wird sowieso empfohlen.

      Inwiefern funktioniert der Befehl nicht? Auf der Kommandozeile musst du zuerst ins Nextcloud-Verzeichnis wechseln (cd /volumeX/web/nextcloud) und dort den occ-Befehl ausführen (sudo -u http php73 occ….). Es ist notwendig den Befehl als http-User auszuführen (sudo -u http) und anstatt nur php zu verwenden musst du explizit die PHP-Version ansprechen (php73 oder php72) php nutzt automatisch die Basisversion (5.6) die die DiskStation verwendet (auch wenn du das PHP5.6 Paket nichti nstalliert hast).

      Grüße,
      Andreas

  9. Hallo Andreas,

    ich bekomme den Fehler unter NextCloud 18 hub “DSM 6.2” den Fehler->
    “Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von “occ db:convert-filecache-bigint” können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Einzelheiten findest Du auf der zugehörigen Dokumentationsseite.

    mounts.storage_id
    mounts.root_id
    mounts.mount_id”

    ..via ssh habe ich die Tabelle nach deiner Anleitung oben repariert. Aber trotzdem wird der Fehler angezeigt.
    Kannst du mir dabei helfen?

    LG

  10. Hallo Andreas,
    habe jetzt dank deiner Anleitung und viel rumgefummel jetzt Nextcloud mit iPhone anbindung etc auf meiner DS218+ am Laufen.
    Nun stellt sich die Frage der Backup Strategie. Konnte bisher den Nextcloud Ordner im web Verzeichnis und die home Ordner der DS über Hyperbackup einbinden.
    Allerdings kann ich den Nextcloud User Ordner nicht anwählen, da dieser ja vor der FileStation verborgen ist.
    Wie könnte ich das umgehen bzw. den Ordner wieder für FileStation sichtbar machen ohne die Funktion/Sicherheit zu beeinträchtigen?
    Gruß
    Titus

    1. Hallo,

      Meinst du mit dem User Ordner den Data Ordner? Auch wenn du Ihn in der File Station nicht siehst, in Hyper Backup siehst du Ihn (als Administrator) trotzdem und kannst Ihn auch sichern. Solltest du Ihn unbedingt in der File Station sehen wollen, kannst du in Systemsteuerung > gemeinsamer Ordner die Berechtigungen bearbeiten und deinem Administrator Rechte vergeben, am besten nur Lesezugriff, da sollte dann nichts passieren können.
      Vergiss auch nicht, die Datenbank zu sichern.

      LG
      Andreas

      1. Danke für deine Antwort.
        Ich meine den Data Ordner.
        Habe diesen vermutlich im Terminal erstellt. Pfad ist /volume1/nextcloud-data
        Dieser wird aber weder in FileStation noch in Hyperbackup angezeigt.
        MariaDB10 kann ich über den Reiter Anwendung auswählen.
        Wenn ich den Data Ordner nun im Terminal angelegt haben sollte. Wie könnte ich diesen wieder für die FileStation sichtbar machen?
        Gruß
        Titus

        1. Hmm, ich glaube gar nicht. DSM ist ja nur eine Anwendung die auf dem Linux-System der DS läuft. Die FileStation und Hype Backup sind nur Anwendungen in der Anwendung. Damit du Ordner dort siehst, müssen sie auch über Systemsteuerung > Gemeinsamer Ordner angelegt werden. Wenn du etwas direkt am File-System machst bekommen DSM und andere Anwendungen nur was davon mit, wenn es in einem existierenden gemeinsamen Ordner passiert.

          Ich würde den Data-Ordner umbenennen, in DSM einen neuen gemeinsamen Ordner (mit dem vorherigen Namen vom Data Ordner) anlegen, deine Dateien dann rüberkopieren und die Rechte anpassen. Dann sollten sowohl DSM als auch Nextcloud zufrieden sein.

          Grüße
          Andreas

      2. Hallo Andreas,
        habe jetzt erst deine Antwort gelesen.
        So werde ich es machen…
        Habe allerdings Sorge, dass ich mir meinne NextCloud zerschiesse.
        Wie und wo müssen denn die richtigen Zugriffsrechte gesetzt sein? Sollte ich das per Terminal machen oder in der DSM?
        Danke,

        Gruß
        Titus

        1. Also die Installation selbst kannst du dir da nicht zerschießen weil du ja den Installationsordner nicht angreifst. Von den Daten in deiner Cloud solltest du aber ein Backup machen. Ein Datenbank-Backup ist auch nicht schlecht.

          – Das Umbenennen musst du über die Kommandozeile machen, da du den Ordner ja in DSM nicht siehst.
          – Das erstellen vom neuen Ordner machst du dann in DSM.
          – Das Kopieren wieder über die Kommandozeile.
          – Zur Anpassung der Rechte führst du zuerst das Skript aus der Installationsanleitung aus. Wenn alles passt, führt du das Script aus dieser Anleitung aus. Achte darauf, dass du den richtigen Pfad für das Data-Verzeichnis einsetzt.

          Grüße

          Andreas

  11. Danke, Danke , Danke!
    Nach ein paar Fehlversuchen habe ich nun Nextcloud auf meiner DS218+ zum laufen gebracht und alle Fehler (bis auf imagick) beseitigt. Als letzten Schritt habe ich nun das Script für Rechte und Ownership (Pfade entsprechend angepasst) fehlerfrei ausgeführt.
    Alles funktionierte. Wenn ich mich jedoch abmelde kommt folgende Fehlermeldung: Your data directory is not writable
    Und das wars. Erst wenn ich alles wieder auf 777 setze funzt es wieder.
    Eine Idee?

    1. Hallo Klaus,

      Im Data-Ordner sollte 750 für Verzeichnisse und 640 für Dateien reichen. Owner muss http:http sein. Das kannst du über Putty mit ls -l /volumeX/ überprüfen.
      Ist dein Data-Verzeichnis ein gemeinsamer Ordern oder nur ein Unterordner und wird der noch von anderen Diensten der DIskStation genutzt oder greifst du sonst noch auf den Ordner zu?

      LG
      Andreas

  12. Erstmal danke fuer die tolle Anleitung!
    Nun zum Problem: Ich habe extreme Performanceprobleme mit meiner DS 918+.
    Wenn ich Synology Drive benutze, dann habe ich 120MB/s und bei Nextcloud auf der DS 918+ nur 50 MB/s. Ist das normal? Konnte nichts zu diesem Thema finden.

    LG
    Daniel

    1. Hallo,

      Testest du mit dem Sync-Client oder dem Webinterface? Hast du noch andere Anwendungen am Webserver laufen? Verwendest du Docker? PHP-Einstellungen wären auch noch eine Möglichkeit, leider ist die PHP-Version von Synology nicht immer die beste.
      Ich habe Drive und Nextcloud mal verglichen und da hatte ich keine nennenswerten Geschwindigkeitsunterschiede. Kann sich aber mit der Version geändert haben.

      LG
      Andreas

      1. Hallo Andreas,

        ich habe es sowohl mit Sync-Client, als auch Webinterface getestet. iperf sagt meine Anbindung zum NAS ist 950 Mbit/s. Ich habe gleiches verhalten von Nextcloud im Docker und Nextcloud Nativ. Beide male nur so 40-50 Mbit/s Upload zum nas im lokalen Netzwerk und bei Synology FileStation 130 Mbit/s, bei gleichen Dateien etc.

        VG
        Daniel

        1. Hallo Daniel,

          Mir zeigt der Nextcloud-Client beim Upload einer 2,5GB Datei eine Geschwindigkeit von 25-30 MB/s an, wohlgemerkt MB (also Megabyte) was 240 Mbit/s entsprechen würde.
          Schnellere Werte bekomme ich nur beim kopieren auf einen gemeinsamen Ordner der als Netzlaufwerk eingebunden ist (80 MB/s = 640 Mbit/s). Bist du dir sicher, dass die Werte die du für den NC-Client angibst in Mbit sind?

          LG
          Andreas

        2. Hallo Andreas,

          ja es sind MB/s und nicht MBit/s, allerdings habe ich ja mit Nextcloud trotzdem nur die Haelfte der Geschwindigkeit im Vergleich zu FileStation und du ja scheinbar auch. Ist das normal?

        3. Hallo Daniel,

          Was genau meinst du mit File Station? Wie ladest du die Dateien in die File Station? Mit dem Drive Client, über DSM oder als Freigabe?

          LG
          Andreas

  13. Beste Anleitung, die ich gefunden hatte! Danke dafür.

    Aber ein Problem habe ich mir eingehandelt.
    Bei Skript der die Rechte und Ownership regelt, habe ich vermutlich beim copy/paste einen Fehler gemacht. Das Sktipt konnte ich ausführen mit einer Reihen von permission denied Meldungen. Das Ergebnis ist nun allerdings eine kleine oder große Katastrophe. Ich komme weder über putty noch über web auf meine Synology drauf. Alle Rechte sind wohl entzogen worden.
    Das Login der Synology sehe ich noch. Die Anmeldung klappt nicht.
    Das Login über putty geht bis zum Passwort. Danach schließt sich das Fenster und ich bekomme keine Shell.

    Hast Du eine Idee?

    1. Hallo,

      Seltsam, sowas hab ich noch nicht gehört, kommst du noch in DSM rein?
      Wenns Probleme auf der Dateiebene gibt ist das schwierig zu beheben ohne root-Zugriff. Ich weiß auch nicht ob man das von DSM aus lösen kann. Könnt mir sonst nur noch vorstellen, das ein DSM-Update das Problem lösen könnte.

      LG
      Andreas

  14. Dank der ausführlichen Anleitungen habe ich Nextcloud auf meiner Diskstation zum laufen gebracht, die wesentlichen Sicherheits- & Einrichtungswarnungen beseitigt und habe die Cloud mittels DDNS und vHost von extern zugänglich gemacht. Vielen Dank an Andreas!

    Jedoch gibt es eine Merkwürdigkeit, d.h. das Verhalten von Nextcloud ist unterschiedlich, je nachdem ob ich mich lokal anmelde (https://diskstation/nextcloud) oder übers Internet via DDNS.

    Im ersten Fall erhalte ich die caldav/carddav-Fehlermeldungen (trotz redirect-Einträge in der .htaccess) und kann von Nextcloud keine E-mails über meinen SMTP-Server versenden (unter Grundeinstellungen/E-Mail_Server). Angemeldet über das Internet erhalte ich keine caldav/carddav-Warnungen und kann ohne Probleme E-Mail versenden.

    Kann mir jemand einen Hinweis geben, welche Einstellung ich in der Diskstation vornehmen muss, damit die Probleme bei lokalem Zugang nicht auftreten?

    NC Version: 18.0.1
    DS216+ mit DSM 6.2.2-24922 Update 4
    PHP 7.3
    Apache 2.4

    1. Hallo,

      Gut möglich, dass das mit der Domain zusammenhängt. Im Detail kenn ich mich leider nicht aus, aber soweit ich mich erinnere wird der Redirect für eine bestimmte Domain gemacht.
      Mein Tipp wäre, richte dir den DNS-Server der DS ein, dann kannst du deine Domain auch im LAN nutzen, außer es spricht etwas dagegen.

  15. Vielen Dank für das Zusammentragen der Anleitung und der vielfältigen Hinweise. Das war sehr hilfreich.

    Mir ist es gelungen, auf einer DS218+ unter PHP7.3 ImageMagick zu integrieren. Es bedarf allerdings etwas Handarbeit und dem Umgang mit der Befehlszeile, eine lesenswerte Schritt-für-Schrittanleitung findet sich unter https://mariushosting.com/how-to-add-php-imagick-extension-on-synology-nas/ am Ende der Seite.

    Beim Webupdate von 17.0.2 auf 17.0.3 hatte ich Probleme mit Timeoutmeldungen, offenbar sorgt die Kombination von nginx-Proxy, Apache 2.4 und lange laufenden PHP-Skripten für Schwierigkeiten. In der Config von nginx habe ich jedoch keine Erfahrung. Mehrfaches Anstoßen des Updates lies es letztlich durchlaufen.

  16. Der Eintrag ist zwar schon etwas älter, aber vielleicht schaut doch noch jemand vorbei 😉
    Da alles gut erklärt ist, erhoffe ich mir Hilfe bei meiner Frage.

    Meine Nextcloud (Version17) meldet, dass ich den Server so einstellen soll, dass https erforderlich ist.
    In der DSM habe ich aktuell schon angegeben, dass http Verbindungen automatisch zu https Verbindungen umgeleitet werden. Leider funktioniert das bei der Nextcloud, da ja WebStation, nicht.

    Wie kann ich das einstellen?

    1. Hallo Nils,

      Hast du auch ein SSL Zertifikat für die Domain eingerichtet unter der du Nextcloud aufrufst? Damit sollte es eigentlich getan sein. Was passiert wenn du Nextcloud über http:// aufrufst?
      Ich nutze für Nextcloud einen vhost, vielleicht hilft das zusätzlich.

      Ansonsten könnte ich mich nicht erinnern speziell für Nextcloud etwas eingerichtet zu haben.

      Grüße
      Andreas

        1. Dann funktioniert die Umleitung von http auf https nicht. Kontrollier nochmal deine Einstellungen im DSM.

  17. Wer nach der Bearbeitung der config.php einen nichtssagenden Servererror bekommt der sollte dann man den Besitzer/Gruppe der config.php überprüfen, bei mir wurde der auf Administrator geändert.

    sudo chown http:http config.php

    beseitigt das Problem dann.

    Das Problem war das ich das “sudo su-” eingegeben habe satt “sudo su -” wie es richtig wäre und habe zusätzlich das “sudo: su-: command not found” übersehen

  18. Ich betreibe eine synology DS218+ und habe die aktuellste Version DSM installiert. Gleichzeitig möchte ich mit Docker Bitwarden (Passwortmanager) selber hosten, habe aber immer wieder an der einen oder anderen Stelle Schwierigkeiten, sodass ich das ganze nie zum laufen bekomme habe. Vorallem das erzeugen der eigenen Domain in Verbindung mit SSL Lets encryt macht mir Schwierigkeiten. Gleichzeitig nutze ich einen Mac sodass ich mit dem terminal die shells “abarbeite”. Auch hier treten hin und wieder Probleme auf. Ich würde mich riesig freuen mal eine dwirklich detaillierte Beschreibung einer Bitwarden Installion (web hosting) mit Docker zu erhalten.

    Übrigens werde ich mich demnächst mal an nextcloud machen. Weiß nur noch nicht ob auf der Synology oder dem Rasperry Pi 4 der noch irgendwo bei einem Händler steht 🙂

    Großes Kompliment für diene seite.
    Grüße
    Thomy

    1. Hallo,

      Ich habe selbst kurz angefangen mich in Docker einzulesen, allerdings war mir das ganze dann doch zu komplex und meine Zeit momentan zu begrenzt um da weiter zu machen. Zumal auf meiner DS215 Docker eigentlich nicht angeboten wird.

      Danke für das Kompliment.
      Grüße
      Andreas

  19. sudo -u php72 -d memory_limit=512M occ db:add-missing-indices

    ging nicht,

    aber

    sudo -u php72 http -d memory_limit=512M occ db:add-missing-indices

    hat geholfen.

  20. …mir hat das keine Ruhe gelassen und ich habe versucht weiter zu kommen. Dabei habe ich festgestellt, dass bei der Anwendung von “occ db:convert-filecache-bigint” auf der Konsole bei mir die Fehlermeldung: “./occ db:convert-filecache-bigint
    This version of Nextcloud requires at least PHP 7.1You are currently running 5.6.11. Please update your PHP version.root@Cocker-DS:/volume1/web/CockerCloud#” ausgeworfen wird. Was mich aufhorchen lies. In den Einstellungen meiner Synology (virtualisierte DS3615xs) doch eingestellt ist, das der Apache 2.4 und PHP 7.2 laufen sollten.

    Was ist hier faul?

    Viele Grüße
    Steffen

    1. Wie rufst du den Befehl auf?
      Du musst php72 verwenden und nicht nur php also “sudo -u http php 72 occ …”
      Hast du damit Probleme, kannst du das hier probieren. Sollte aber mittleiweile auch ohne diesen Trick funktionieren.

      1. Sorry das klappt nicht – aber vielleicht stelle ich mich nur zu dämlich an.

        sudo -u http php 72 occ db:add-missing-indices => Could not open input file: 72

        1. Dein Problem ist das Leerzeichen zwischen php und 72. Du willst den Befehl in PHP ausführen. Standardmäßig erhältst du auf der DS mit ‘php’ nur Version 5.6, auch wenn du nur Version 7.2 installiert hast. Daher musst du mit ‘php72’ gezielt die PHP-Version ansprechen.

          Wenn du aber ‘php 72’, also mit Leerzeichen dazwischen schreibst, dann verwendest du wieder nur PHP 5.6 und übergibst den Parameter 72 und damit kann PHP nix anfangen.

        2. Hallo

          für alle die den Fehler auch haben, bei mir hat es mit dieser Befehlezeile geklappt:

          sudo -u http php72 occ db:add-missing-indice

          Viele Grüße

  21. Hi Andreas,

    da Nextcloud auf die Version 16 mittlerweile gewechselt hat, entstehen da wieder neue Problechens. So kann man jetzt den PHP-Cash nicht mehr so ohne weiteres einstellen und und … Dies sieht man auch bei meinem Fehlerprotokoll (siehe am Ende). Auch bin ich noch nicht weiter gekommen mit den Redirects. Kannst du dir das mal anschauen und mir weiter helfen?

    ….mein Fehlerprotokoll (es läuft PHP Vers. 7.2; Apache 2.4 auf einer Xpenology DS3615)

    Sicherheits- & Einrichtungswarnungen
    Für die Sicherheit und Performance Deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um Dir dabei zu helfen, führen wir einige automatische Prüfungen durch. Weitere Informationen kannst Du der verlinkten Dokumentation entnehmen.

    Es gibt einige Warnungen bei Deiner Systemkonfiguration.
    Die PHP-Speichergrenze liegt unterhalb des empfohlenen Wertes von 512MB.
    Dein Web-Server ist nicht richtig eingerichtet um “/.well-known/caldav” aufzulösen. Weitere Informationen findest Du in der Dokumentation.
    Dein Web-Server ist nicht richtig eingerichtet um “/.well-known/carddav” aufzulösen. Weitere Informationen findest Du in der Dokumentation.
    In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausführen von “occ db:add-missing-indices” können die fehlenden Indizes manuell hinzugefügt werden, während die Instanz weiter läuft. Nachdem die Indizes hinzugefügt wurden, sind Anfragen auf die Tabellen normalerweise schneller.
    Fehlender Index “parent_index” in der Tabelle “oc_share”.
    Fehlender Index “owner_index” in der Tabelle “oc_share”.
    Fehlender Index “initiator_index” in der Tabelle “oc_share”.
    Fehlender Index “fs_mtime” in der Tabelle “oc_filecache”.
    Fehlender Index “twofactor_providers_uid” in der Tabelle “oc_twofactor_providers”.
    Fehlender Index “version” in der Tabelle “oc_whats_new”.
    Fehlender Index “cards_abid” in der Tabelle “oc_cards”.
    Fehlender Index “cards_prop_abid” in der Tabelle “oc_cards_properties”.
    Dieser Installation fehlen einige empfohlene PHP-Module. Für bessere Leistung und bessere Kompatibilität wird dringend empfohlen, diese zu installieren.
    imagick
    Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von “occ db:convert-filecache-bigint” können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Einzelheiten findest Du auf der zugehörigen Dokumentationsseite.
    filecache.mtime
    filecache.storage_mtime
    Bitte überprüfe noch einmal die Installationsanleitungen ↗ und kontrolliere das Protokoll auf mögliche Fehler oder Warnungen.

    Überprüfe die Sicherheit Deiner Nextcloud über unseren Sicherheitsscanner ↗.

    Version
    CockerCloud 16.0.0

    Deine Version ist aktuell.

    1. Hallo,

      – Die PHP-Speichergrenze liegt unterhalb des empfohlenen Wertes von 512MB.
      Hier sollte es ausreichen in der .htacces (im Nextcloud-Installationsordner) das PHP-Memory-Limit anzuheben, ich habe hier 1G eingetragen.

      Sollte das allein nicht ausreichen, muss man eventuell auch in der php.ini etwas eintragen.

      – Dein Web-Server ist nicht richtig eingerichtet um „/.well-known/caldav“ aufzulösen. Weitere Informationen findest Du in der Dokumentation.
      Dein Web-Server ist nicht richtig eingerichtet um „/.well-known/carddav“ aufzulösen. Weitere Informationen findest Du in der Dokumentation.

      Eine mögliche Lösung steht oben im Artikel, ansonsten gibts im Nextcloud-Forum viele verschiedene Lösungsmöglichkeiten, leider scheinen hier die Lösungen nicht bei allen gleich zu funktionieren.

      – In der Datenbank fehlen einige Indizes. Auf Grund der Tatsache, dass das Hinzufügen von Indizes in großen Tabellen einige Zeit in Anspruch nehmen kann, wurden diese nicht automatisch erzeugt. Durch das Ausführen von „occ db:add-missing-indices“ können die fehlenden Indizes…

      Hier reichts aus den Befehl auszuführen, aber eben aufpassen, dass du php72 im Befehl verwendest: sudo -u http php72 occ…

      – Dieser Installation fehlen einige empfohlene PHP-Module. Für bessere Leistung und bessere Kompatibilität wird dringend empfohlen, diese zu installieren.
      imagick

      Derzeit nicht lösbar, kannst du aber auch ignorieren, im Artikel findest du die Details dazu.

      – Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von „occ db:convert-filecache-bigint“ können…

      Hier wieder den Befehl richtig ausführen.

      Ich hoffe das hilft dir weiter.

  22. Hallo, und vielen Dank für deine ausführlichen Anleitungen!
    Ich habe es damit erfolgreich geschafft, Nextcloud auf einer DS418 aufzusetzen – leider lässt die Performance selbst gegenüber den kleinsten vServern, die man sich im Internet so zusammenklicken kann, deutlich zu wünschen übrig – ist das normal, oder muss ich mir Sorgen machen? Seiten laden mehrere Sekunden (5-15 s pro Klick), der Web-basierte Updater ist aufgrund von Timeouts überhaupt nicht nutzbar, und die Dateiübertragung ist somit auch alles andere als berauschend.
    Laut Speicher-Manager sind fast alle Dateien fragmentiert – eine Defragmentierung macht das System aber scheinbar nicht. Was kann ich noch tun?

    1. Hallo,

      Seltsam, ich hab in meiner DS215+ nur 2 Kerne, deine CPU hat 4. Bei mir liefen vorallem NC13 und 14 etwas langsamer aber seit 15 läufts recht flott.
      Hast du noch andere Pakete auf deiner DS laufen?
      Was bei mir immer stark die Performance drückt, ist wenn die Medienindizierung läuft, also neue Bilder/Videos/Lieder in Ordnern hochgeladen wurden, die indiziert werden.
      Was die Timeouts beim Webupdate anbelangt, kannst du hier nachlesen wie du die wegbekommst.
      Leider brauchen Apache und PHP doch einiges an Performance, nginx soll da performanter sein, leider hab ich nginx noch nicht brauchbar zum laufen bekommen.

      LG
      Andreas

      1. Hallo Andreas,
        danke für deine Antwort. Mit dem Einschalten des Memcache hat sich das Performance-Problem einigermaßen gelöst, zumindest lädt jetzt alles etwas schneller.
        Ich habe herausgefunden, dass bei einigen Operationen die DS selbst an ihre Grenzen stößt (das Volume ist zu 100% ausgelastet), und das dann in der Folge zu Fehlern führen kann (aber immerhin nichts permanentes).

      2. Hallo,
        genau dieses Rätsels Lösung suche ich auch im Augenblick…. Ist es möglich den Apachen komplett gegen nginx als Webserver zu tauschen? Aktuell ist die NC nicht mehr erreichbar, wenn ich in der Webstation Nginx als Server festlege. Aus den 404er-Fehlermeldungen wird man leider auch nicht schlau…

        LG Thomas

        1. Hallo Thomas,

          Ja ist möglich. Dazu braucht man aber eine passende nginx Konfiguration und wie das so ist, funktioniert die Konfig die man im Internet für Nextcloud unter Nginx findet nicht auf der DS. Da muss man Werte konfigurieren, wo nicht bekannt ist wie die auf einem Synology Gerät lauten.
          Ich hab im Forum nur von einer einzigen Person gelesen, die das geschafft hat, leider war mein Versuch diese Person zu kontaktieren erfolglos. Genauso erfolglos waren andere, die versucht haben Nextcloud auf dem Syno nginx zum laufen zu bekommen.

          Aber so weit ich weiß ist nginx doch nur bei mehreren gleichzeitigen Anfragen besser als Apache. Ich weiß nicht ob Nginx eine so viel bessere Performance auf der DS bringen würde.

          LG

  23. Hallo, vielen Dank für deine Tutorials.
    Ich habe nach dem Upgrade auf V15 noch folgende Fehlermeldungen:
    “Dein Webserver ist nicht ordnungsgemäß für die Auflösung von “/ocm-provider/” eingerichtet.”
    “Dein Webserver ist nicht ordnungsgemäß für die Auflösung von “/ocs-provider/” eingerichtet.”
    Ich habe versucht in der nginx.conf Änderungen einzutragen, aber die Datei wird nach jedem Neustart neu geschrieben.
    Würe mich über mögliche Lösungen sehr freuen.

    1. Hallo,

      Erst mal die Frage, läuft Nextcloud bei dir mit Apache oder nginx?
      Sollte sie mit Apache laufen, dann musst du in die .htaccess im Nextcloud-Ordner folgendes eintragen:
      Redirect 301 /ocm-provider /nextcloud/ocm-provider
      Redirect 301 /ocs-provider /nextcloud/ocs-provider
      nextcloud gegebenenfalls mit dem Ordnernamen deiner Nextcloud-Installation ersetzen.

      Solltest du Nextcloud tatsächlich mit nginx laufen haben, würdest du dein Config mit uns teilen?
      An nginx bin ich bisher gescheitert.

      LG
      Andreas

      1. Andreas, vielen herzlichen Dank für deine Hilfe!
        Habe überall nach Lösungen gesucht, jedoch nichts gefunden.
        Ich habe NC als Virtual Host unter Apache laufen. Auf NGINX habe ich es noch nicht versucht, weil die Anleitung damals nur den VIRTUAL HOST Weg erklärt hat.
        Ich frage mich nur, warum habe ich noch kein Update, noch keine Installation von NC oder OC gehabt, die mal einfach auf Anhieb, OHNE Fehlermeldung, funktioniert hat?
        Jetzt habe ich noch den Fehler:
        “Dein Web-Server ist nicht richtig eingerichtet um “/.well-known/caldav” aufzulösen” und imagick übrig.
        Hierzu habe ich in der .htaccess folgendes drin:
        “RewriteRule ^/\.well-known/caldav /nextcloud/remote.php/dav/ [R=301,L]”
        und
        “Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav”
        Ist das falsch, oder muss es noch woanders stehen?

        Nochmals vielen Dank für deine Hilfe!

      2. Weder in der .htaccess im web, noch im nextcloud Verzeichnis lösen diese Einträge das Problem. Auch der Caldav-Eintrag, der vorher in der web-.htacces funktionierte, funktioniert in 15.0.5 nicht mehr.

      3. Ich hab die Probleme mit 15.0.5 nicht, daher ist es etwas schwierig für mich eine Lösung zu bieten.
        Was die .well-known/caldav Einträge angeht, die habe ich seit einiger Zeit in meiner .htaccess (der im Nextcloud folder).
        Ich habe die Einträge im Rewrite-Block hinzugefügt, wo schon andere RewriteRules vorhanden sind.

        RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
        RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]

  24. Hallo Andreas,
    Deine Anleitungen zu Installation, Optimierung und Update haben mir sehr geholfen. Vielen Dank dafür! :-).
    Ich synce die Synology-Nextcloud Installation zu Windows und Mac. Während man beim Mac-Agent Desktop-Benachrichtigungen einstellen kann, bietet der Windows-Agent lediglich Server-Benachrichtigungen an.
    Gibt es eine Möglichkeit auch für Windows Desktopbenachrichtigungen über z.B. neue erstellte, geändert, gelöschte Dateien, Ordner, etc. zu erhalten?

  25. Tipp zum Fehler
    nginx: [emerg] unknown directive “includeSubDomains” in /etc/nginx/conf.d/http.hsts.conf:

    Ich hatte den Text hier mit copy und paste in die Datei eingefügt:
    add_header Strict-Transport-Security „max-age=15768000; includeSubDomains; preload;“;

    Die im Deutschen üblichen Anführungsstriche („…“) mag er nicht.
    add_header Strict-Transport-Security “max-age=15768000; includeSubDomains; preload;”;

    Das ist besser

    1. vielen Dank für den Hinweis, bei mir kam die gleiche Fehlermeldung.
      Es scheint als hätte sich in deiner Antwort aber wieder der Fehler eingeschlichen, die Anführungszeichen sind wieder falsch
      (vermutlich durch Autokorrekt?) es hat mich jedoch auf die richtige Fährte gebracht 🙂

      korrekt wäre wohl:
      add_header Strict-Transport-Security “max-age=15768000; includeSubDomains; preload;“;

      (Unterschied in den ersten Anführungszeichen die oben und nicht unten sind)

      1. … und jetzt wo es hier eingetragen ist stelle ich fest, dass eine Autokorrektur der Anführungszeichen durch die Blogsoftware passiert.

        @Andreas: vielleicht kann man das ja deaktivieren um Missverständnissen vorzubeugen?

        1. Leider hab ich auf dei schnelle nichts gefunden, das liegt an der Formattierung bzw auch an der Schriftart. Ich werde weiterhin die Augen offen halten und auch eine Warnung in dne Blogtext einfügen.

  26. Hallo,
    vielen Dank erstmal für die tolle Anleitung, der Server läuft einwandfrei. Nur das Script für die Absicherung der Nutzungsrechte scheitert (kann danach Nextcloud nicht mehr aufrufen) und erhalte folgende Fehlermeldung

    The server was unable to complete your request.
    If this happens again, please send the technical details below to the server administrator.
    More details can be found in the server log.
    Technical details

    Remote Address: 192.168.178.157
    Request ID: 4VokUvtnaDfmVxaEFncq

    Wenn ich alles wieder auf 777 zurücksetze geht es wieder. Hast Du eine Idee wie ich das beseitige?

    1. Hallo,

      Also die Rechte sind eigentlich die die laut Nextcloud-Dokumentation funktionieren sollten.
      Als möglicher Fehlern würd mir der Owner einfallen, also entweder ist der Owner falsch eingestellt oder die Rechte auf einem übergeordneten Ordner passen nicht zusammen.

      Hast du deinen data-Ordner auserhalb von /web? Wenn ja, kannst du mal versuchen die Rechte für den Nextcloud Ordner in /web allein zu setzen und den /data Ordner zu lassen wie er ist.
      Bzw. generell die Rechte und Ownership für die Ordner im Nextcloud-Verzeichnis einzeln zu ändern und nach jedem Ordner nachzusehen obs noch geht und so rauszufinden wo es dann Probleme macht.

      LG

  27. Hallo Andreas!

    Ich wollte HSTS aktivieren, wie oben beschrieben und hab die entsprechende Datei “http.hsts.conf” angelegt.
    Allerdings tauchte dann das Problem auf, dass die DS den Fehler ausgab nicht mehr startbar zu sein und es war nicht mehr möglich via https (5001, Nectcloud, etc) auf die DS zuzugreifen! http 5000 ging Gott sei Dank noch!

    Nach dem Löschen der “http.hsts.conf” Datei & reboot war wieder alles beim Alten…

    LG, Stefan

    1. Hallo Stefan,

      Der Fehler tritt meist dann auf, wenn die Konfigurationsdatei einen Fehler enthält.
      Mit nginx -t kannst du die NGINX-Konfig überprüfen, da siehst du gleich ob ein Syntaxfehler drin ist.
      Eventuell gabs beim Copy-Pasten einen Fehler. Oft werden Zeichen wie ” falsch interpretiert wenn man sie in die Kommandozeile einfügt.

      LG
      Andreas

  28. Cron-Job: Einrichten
    Danke für die Anleitung. Mir war der DSM abgeraucht und ich musste nach einem reset alles neu aufsetzen. Ich habe Nextcloud 13.0.4 und DSM 6.1.7.
    Was mich viel nerven gekostet hat war, dass zwar Nextcloud nach php70 schreit, der installer aber nur mit php56 geht. Mein letztes Problem war, dass der Cron-Job nicht mehr ging. Der läuft bei mir auch noch mit php56
    sudo -u http php56 cron.php
    Dabei gab es Probleme, weil php bestimmte Module (zip, posix, gd, curl, openssl) nicht finden konnte, obwohl in der webstation alle Module ausgewählt wurden. Die Lösung habe ich von hier:
    https://blackswan.ch/archives/594
    Ich musste bei mir in der Datei /usr/local/etc/php56/php.ini (Verzeichnis bekommt man nach php56 –ini) ändern:
    extension_dir = “/volume1/@appstore/PHP5.6/usr/local/lib/php56/modules
    Und einfügen:
    extension = zip.so
    extension = gd.so
    extension = curl.so
    extension = openssl.so
    extension = posix.so

  29. Hi und erstmal danke für die Super Anleitung.
    Ich habe aktuell das Problem das ich den Datenordner umgezogen habe auf dem Synology NAS.
    Nun liegen die Daten in meinem Gemeinsamen Ordner mit dem ich arbeite.
    Ich würde der Cloud gerne “hintenrum” Dateien zuschieben. Leider macht die Cloud keinen Rescan automatisch.
    Daher wollte ich gerne den Rescan über diesen Befehl abfeuern: sudo -u http php56 occ files:scan –all -v
    Der wird mir aber mit einer Fehlermeldung quittiert.

    Hat dafür schon jemand eine Lösung?

    root@NAMEDESNAS:/volume1/web/owncloud# sudo -u http php70 occ files:scan –all -v
    An unhandled exception has been thrown:
    Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: could not find driver in /volume1/web/owncloud/lib/private/DB/Connection.php:62
    Stack trace:
    #0 /volume1/web/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(992): OC\DB\Connection->connect()
    #1 /volume1/web/owncloud/lib/private/DB/Connection.php(210): Doctrine\DBAL\Connection->executeUpdate(‘PRAGMA read_unc…’, Array, Array)
    #2 /volume1/web/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(623): OC\DB\Connection->executeUpdate(‘PRAGMA read_unc…’)
    #3 /volume1/web/owncloud/lib/private/DB/Connection.php(145): Doctrine\DBAL\Connection->setTransactionIsolation(2)
    #4 /volume1/web/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(172): OC\DB\Connection->__construct(Array, Object(Doctrine\DBAL\Driver\PDOSqlite\Driver), Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
    #5 /volume1/web/owncloud/lib/private/DB/ConnectionFactory.php(145): Doctrine\DBAL\DriverManager::getConnection(Array, Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
    #6 /volume1/web/owncloud/lib/private/Server.php(493): OC\DB\ConnectionFactory->getConnection(‘sqlite3’, Array)
    #7 /volume1/web/owncloud/lib/composer/pimple/pimple/src/Pimple/Container.php(113): OC\Server->OC\{closure}(Object(OC\Server))
    #8 /volume1/web/owncloud/lib/private/AppFramework/Utility/SimpleContainer.php(111): Pimple\Container->offsetGet(‘DatabaseConnect…’)
    #9 /volume1/web/owncloud/lib/private/ServerContainer.php(87): OC\AppFramework\Utility\SimpleContainer->query(‘DatabaseConnect…’)
    #10 /volume1/web/owncloud/lib/private/Server.php(1160): OC\ServerContainer->query(‘DatabaseConnect…’)
    #11 /volume1/web/owncloud/lib/private/Server.php(370): OC\Server->getDatabaseConnection()
    #12 /volume1/web/owncloud/lib/composer/pimple/pimple/src/Pimple/Container.php(113): OC\Server->OC\{closure}(Object(OC\Server))
    #13 /volume1/web/owncloud/lib/private/AppFramework/Utility/SimpleContainer.php(111): Pimple\Container->offsetGet(‘AppConfig’)
    #14 /volume1/web/owncloud/lib/private/ServerContainer.php(87): OC\AppFramework\Utility\SimpleContainer->query(‘AppConfig’)
    #15 /volume1/web/owncloud/lib/private/Server.php(1089): OC\ServerContainer->query(‘AppConfig’)
    #16 /volume1/web/owncloud/lib/private/Server.php(547): OC\Server->getAppConfig()
    #17 /volume1/web/owncloud/lib/composer/pimple/pimple/src/Pimple/Container.php(113): OC\Server->OC\{closure}(Object(OC\Server))
    #18 /volume1/web/owncloud/lib/private/AppFramework/Utility/SimpleContainer.php(111): Pimple\Container->offsetGet(‘AppManager’)
    #19 /volume1/web/owncloud/lib/private/ServerContainer.php(87): OC\AppFramework\Utility\SimpleContainer->query(‘AppManager’)
    #20 /volume1/web/owncloud/lib/private/Server.php(1359): OC\ServerContainer->query(‘AppManager’)
    #21 /volume1/web/owncloud/lib/private/legacy/app.php(346): OC\Server->getAppManager()
    #22 /volume1/web/owncloud/lib/private/legacy/app.php(110): OC_App::getEnabledApps()
    #23 /volume1/web/owncloud/lib/base.php(579): OC_App::loadApps(Array)
    #24 /volume1/web/owncloud/lib/base.php(998): OC::init()
    #25 /volume1/web/owncloud/console.php(64): require_once(‘/volume1/web/ow…’)
    #26 /volume1/web/owncloud/occ(11): require_once(‘/volume1/web/ow…’)
    #27 {main}PHP Fatal error: Uncaught Doctrine\DBAL\DBALException: Failed to connect to the database: An exception occured in driver: could not find driver in /volume1/web/owncloud/lib/private/DB/Connection.php:62
    Stack trace:
    #0 /volume1/web/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(992): OC\DB\Connection->connect()
    #1 /volume1/web/owncloud/lib/private/DB/Connection.php(210): Doctrine\DBAL\Connection->executeUpdate(‘PRAGMA read_unc…’, Array, Array)
    #2 /volume1/web/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(623): OC\DB\Connection->executeUpdate(‘PRAGMA read_unc…’)
    #3 /volume1/web/owncloud/lib/private/DB/Connection.php(145): Doctrine\DBAL\Connection->setTransactionIsolation(2)
    #4 /volume1/web/owncloud/lib/composer/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php(172): OC\DB\Connection->__construct(Array, Object(Doctrine\DBAL\Driver\PDOSqlite\Driver), Object(Doctrine\DBAL\Configuration), Object(Doctrine\Common\EventManager))
    #5 /volume1/web/owncloud/lib/private/DB/ConnectionFactory. in /volume1/web/owncloud/lib/private/DB/Connection.php on line 62

    DANKE!!

    1. Hallo,

      Ich seh du benutzt im rescan command PHP7 (root@NAMEDESNAS:/volume1/web/owncloud# sudo -u http php70 occ files:scan –all -v). Ich hab mitbekommen, dass die OCC commands mit PHP7 Probleme machen. Als schnelle Lösung kannst du es mit PHP 5.6 versuchen, bis es eine offizielle Lösung für PHP 7 gibt.

      Grüße,
      Andreas

      1. Hallo!

        Ich hatte genau dasselbe Problem mit Nextcloud auf Synology und hatte mir bis jetzt mit dem Workaraound cron.php mit php56 auszuführen. Allerdings geht das nicht mehr mit Upgrade auf v14 da jetzt PHP7 vorausgesetzt wird.
        Geholfen hat mir extension.ini von php56 nach php70 zu kopieren:
        sudo cp /usr/local/etc/php56/conf.d/extension.ini /usr/local/etc/php70/conf.d/

        Die anderen ini-files von php56 sollte man dann vielleicht auch gleich prüfen.

        LG, Plauderer

        1. Sehr interessant. Ich habe unter den von dir angegebenen Pfaden gar keine extension.ini.
          Das ist eine Sache die mich an Synology stört, viele Config-Pfade entsprechen nicht dem Unix/Linux-Pendant bzw. sind je nachdem wie etwas eingerichtet wurde von User zu USer unterschiedlich und viele davon werden bei einem Neustart oder Update wieder überschireben.

  30. Erstmal danke für die ganzen Anleitungen.

    Zu HSTS:
    Geht bei mir leider nicht. Ich verwendet den Apache 2.2 und PHP 5.6, wenn ich die .htaccess (web/nextcloud) bearbeiten will steht default ganz oben schon das drin:

    SetEnvIfNoCase ^Authorization$ “(.+)” XAUTHORIZATION=$1
    RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION

    SetEnvIfNoCase Authorization “(.+)” HTTP_AUTHORIZATION=$1

    Jetzt habe ich versucht das draus zu machen, also einfach die eine Zeile hinzugefügt:

    SetEnvIfNoCase ^Authorization$ “(.+)” XAUTHORIZATION=$1
    RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
    [size=150]Header always set Strict-Transport-Security “max-age=15768000″[/size]

    SetEnvIfNoCase Authorization “(.+)” HTTP_AUTHORIZATION=$1

    Die Meldung kommt in der Verwaltung immer noch.

    1. Hallo,

      Versuch mal HSTS im nginx einzuschalten. Seit DSM 6 den nginx gebracht hat wird der immer als Proxy verwendet, auch wenn du dann den Apache als Webserver benutzt. Es ist daher immer recht schwer nachzuvollziehen wo welche Konfiguration hingehört. Sollte das auch nichts helfen kannst du immer noch einen virtuellen Host einrichten und dort HSTS aktivieren.
      WIe das geht kannst du im Beitrag zum externen Zugriff auf die DS lesen.

      Grüße,
      Andreas

  31. Hallo
    danke für die Anleitung!! Alles prima soweit, aber die Skripte funktionieren bei mir leider nicht.
    Hier ein Beispiel
    *.sh: line 12: $’\r’: command not found
    chown Directories
    chown: invalid user: ‘root\r:http\r’
    chown: invalid user: ‘http\r:http\r’
    chown: invalid user: ‘http\r:http\r’
    chown: invalid user: ‘http\r:http\r’
    chown: invalid user: ‘http\r:http\r’
    Irgendwie hängt der sowohl an die Variablen als auch die User ein \r und dadurch findet er nix. Hab auf veschiedene Art und Weise versucht das Script zu erzeugen (unter Windows)
    Danke und viele Grüße Stephan

    1. Hallo,

      Leg das Script direkt auf der DiskStation an, entweder über putty und vi oder mit dem Texteditor der DiskStation. Windows und Linux haben unterschiedliche Textformatierungen und je nachdem welches Programm du unter Windows benutzt, kommen diese Formattierungen mit in den Klartext und Linux weiß damit nichts anzufangen.

      Grüße
      Andreas

  32. Hallo und erstmal vielen Dank für die genaue Anleitung, funktioniert soweit auch alles!!

    Habe aber noch 2 generelle Frage zu dem Thema:
    nach der dem EInrichten ist das Data Verzeichnis nicht mehr über die FileStation auffinbar, das ich denke ich ein Rechteproblem?

    Gibt es auch die Möglichkeit, sowohl die gemeinsamen Ordner des Synologys NAS zu nutzen und einen Hardlink in den Data Ordner zu setzen, sodass die Daten nicht doppelt gespeichert werden müssen??

    Besten Dank und nochmals Daumen Hoch für die gelungene Anleitung!

    1. Ja, das liegt an den gesetzten Rechten. Solltest du unbedingt Zugriff über die FileStation brauchen könntest du die Rechte anpassen. Sicherer ist es aber die Rechte wie angegeben zu lassen.

      Was meinst du mit Daten doppelt speichern? Um welche Daten handelt es sich und was genau willst du damit machen?
      Prinzipiell sollten die Daten nur über die Nextcloud verwaltet werden. Daten die direkt über das Filesystem gespeichert werden, werden von der Nextcloud nicht erkannt. Solltest du aber Anwendungsfälle haben wo du das brauchst, kannst du einen beliebigen Ordner/Shared Folder als externe Quelle in Nextcloud einbinden. Das geht im Nextcloud Webinterface.

      1. Hallo Andreas, danke für die schnelle Antwort!

        OK das google ich mal. Würde gern die Daten unter dem Volume lassen und die Nextcloud als Add On nutzen, da ich die die SynoCLoud Lösung nicht optimal finde, aber gern weiterhin das Active Directory nutzen möchte!
        Vielleicht kannst du auch kurz aufzeigen, wo das im Webinterface zu finden ist.

        Danke und wie gesagt Daumen hoch!!!

        1. Hallo,

          Du gehst rechts oben auf dein Profil und dort unter Apps installierst du external Storage support.
          Dannach gehst du wieder auf dein Profil und auf Verwaltung. Dort hast du links den zusätzlichen Punkt Externer Speicher. Schau ob dort das Hinzufügen von externen Speicher erlaubt ist.

          Ab jetzt musst du etwas herumprobieren, das letzte mal das ich das gemacht habe war noch unter Owncloud.
          Das Hinzufügen direkt im Adminbereich hat nicht geklappt, du kannst alternativ im Benutzerbereich (klick auf dein Profil und dann auf Persönlich) ebenfalls externen SPeicher hinzufügen, das hat dann funktioniert.
          Ist aber wie gesagt lange her und wenn du mehrere Benutzer hast dann wärs natürlich praktische den externen Speicher im Admin-Bereich hinzuzufügen.
          Ich habs damals als SMB und als WebDav getestet, ich glaube mit WebDav hats am besten funktioniert. Du musst in der DiskStation aber vorher auch einstellen, dass der Zugriff über SMB bzw. WebDav erlaubt ist.
          Wenn du auf der sicheren Seite sein willst, leg dir auf der DS einen eigenen Nutzer an, der nur auf das enstprechende Verzeichnis Zugriff hat und benutze den dann für die Authentifizierung des externen Speichers.

          Grüße
          Andreas

  33. 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”.

  34. 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?

  35. 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?

      1. Hallo,
        erstmal großes Danke an deinen Blog. Echt super Arbeit! Hat mir sehr gut geholfen mit meiner Diskstation und der Nextcloud.
        Ein Problem habe ich auch noch mit dem opcache, an welchem ich mir schon seit Wochen den Kopf zerbreche und auch keine Antworten finde.
        Ich dachte, dass mir deine Anleitung weiterhelfen kann. Tut sie auch, leider nur bedingt. Wenn ich in dem Fenster “Erweiterungen” nach dem Modul opcache suche, finde ich rein gar nichts. Auch unter dem Pfad /usr/local/etc/php56/conf.d/ , welcher auch in einem Kommentar erwähnt wurde befindet sich keine opcache.ini. Ich bin mittlerweile relativ ratlos was ich noch ausprobieren kann.
        Hast du vielleicht eine Idee?

        Ich freue mich auf eine Antwort und bedanke mich!
        Schöne Grüße
        Daniel

        Specs:
        Nextcloud 15.0.0
        PHP 7.0.3
        DSM918+

  36. 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.

  37. 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