Das 2. große Update für DSM 7 ist da und neben einigen neuen Funktionen, wurde die WebStation überarbeitet. Daher gibt es von mir diese überarbeitete Anleitung. Die Nachfrage nach Nextcloud ist immer noch hoch. Synology bietet zwar eine eigene Cloudlösung, Synology Drive, die ist aber bei weitem nicht so umfangreich und flexibel wie Nextcloud. Sei es Kalender- und Kontaktsynchronisation oder die Apps und Weboberfläche, es gibt viele Gründe für Nextcloud auf einer DiskStation. Der Artikel erklärt Schritt für Schritt, wie ihr Nextcloud auf einem Synology NAS installiert.
Updates
– Oktober 2024: NC 29.0.8, output_buffering off (nicht 0)
– September 2024: Redis-Einrichtung aktualisiert
– August 2023: Nextcloud 27 benötigt das PHP-Modul exif
Vorbereitung
Hinweis
Tippt Befehle für die Kommandozeile immer selbst ab, kopiert Sie nicht aus dem Beitrag. Doppelte und einfache Anführungszeichen werden im Text anders Formatiert als in der Kommandozeile. Kopiert Ihr die Zeichen, übernehmt ihr die falsche Formatierung, die Zeichen werden nicht erkannt und die Befehle funktionieren nicht.
Erstellt Skripte auch immer direkt über die Kommandozeile (mit vi). Erstellt Ihr Skripte mit einem Editor auf eurem Rechner und ladet Sie auf eure DiskStation, können Steuerzeichen enthalten sein, die eine Ausführung verhindern.
Bevor wir anfangen können, kontrolliert ob die Web Station läuft bzw. installiert Sie, wenn ihr das noch nicht getan habt. Außerdem benötigt ihr SSH-Zugriff (zu finden in der Systemsteuerung unter Terminal & SNMP) auf euer NAS (z.B. mit PuTTY).
Wichtig: Nutzt ihr bisher Nginx als Webserver, müsst Ihr in der Web Station unter Webdienst > Standarddienst >Bearbeiten auf Apache HTTP Server 2.4 umstellen. Nextcloud läuft unter Nginx nicht ohne diesen vorher zu konfigurieren. Bisher ist aber keine funktionierende Konfiguration für Synology in der Community vorhanden. Ihr könnt für Nextcloud einen vhost einrichten, der den Apache nutzt, dann könne ihr den Rest eurer DS wieder auf Nginx umstellen.
Installiert folgende Pakete im Paket Zentrum:
- PHP 8.2 oder höher
- phpMyAdmin (alternativ gehts auch ohne)
- Apache (2.4)
- MariaDB 10
Öffnet MariaDB 10 und setzt den Haken bei “TCP/IP-Verbindung aktivieren”.
Freigegebener Ordner
Erstellt einen neuen freigegebenen Ordner als Speicherort für die Daten. Nextcloud speichert die Daten standardmäßig im data-Ordner unter /web/Nextcloud
. Nextcloud empfiehlt aus Sicherheitsgründen den Speicherort außerhalb des /web
Ordners anzulegen. Das erleichtert auch ein späteres Upgraden von Nextcloud. Auf den freigegebenen Ordner sollte niemand sonst Zugriff haben und auch als Administrator solltet ihr dort nur Änderungen vornehmen wenn Sie eure Nextcloud-Installation betreffen. Diese Änderungen solltet ihr dann aber über PuTTY als root machen, da sich sonst die Ownership ändert und Nextcloud nicht mehr auf den Ordner/die Dateien zugreifen kann. Erstellt den freigegebenen Ordner über DSM > Systemsteuerung > Freigegebener Ordner, erstellt ihr den Ordner über PuTTY erkennt DSM diesen nicht und ihr könnt ihn z.B. nicht über Hyper Backup sichern.
Den data-Ordner in der DiskStation nutzen
Generell sollte nur Nextcloud Daten im data-Ordner manipulieren. Würdet ihr Dateien über die DS bzw. nicht über die Cloud hinzufügen oder Ändern würde Nextcloud das nicht mitbekommen. Solltet ihr, eure Dateien oder einen bestimmten Ordner auch außerhalb von Nextcloud bearbeiten wollen, so müsst ihr diesen als externen Speicher einfügen.
Damit PHP auch auf den freigegebenen Ordner zugreifen kann, muss der Pfad in open_basedir eingetragen werden. Details dazu im Abschnitt “PHP Profil”.
Öffnet PuTTY und verbindet euch mit eurer DS. Loggt euch als Administrator ein. Um die Befehle als root auszuführen gebt sudo –i
ein und drückt (Enter). Gebt erneut euer Administratorpasswort ein. Gebt folgende zwei Befehle ein, damit Nextcloud, bzw. der User des Webservers auch auf diesen zugreifen darf:
chown -R http:http /volume1/nextcloudData chmod -R 777 /volume1/nextcloudData
PHP-Profil
Virtueller Host
Ich empfehle die Verwendung eines virtuellen Hosts für eure Cloud. Nextcloud lässt sich dadurch besser absichern, macht hinterher weniger Probleme und außerdem könnt ihr dann ein individuelles PHP-Profil verwenden. Ohne virtuellen Host verwenden alle Webseiten und -anwendungen den selben Webserver und das selbe PHP-Profil, das kann zu Konflikten in der Konfiguration führen. Mehr dazu, weiter unten.
Öffnet die Web Station und erstellt unter Skript-Spracheinstellungen ein neues Profil.
- Vergebt einen Namen und eine Beschreibung.
- Wählt PHP 8.2 (oder höher) aus.
- Aktiviert “PHP-Cache aktivieren”.
- Wählt unter “PHP open_basedir benutzerspezifisch anpassen” “Benutzerdefiniert”und tragt
/tmp:/var/services/tmp:/var/services/web
ein. Fügt jetzt noch den Pfad zum gemeinsamen Ordner ein, den ihr vorhin angelegt habt (vergesst den : nicht). Das ganze könnte dann so aussehen:/tmp:/var/services/tmp:/var/services/web:/volume1/nextcloudData
- Aktiviert folgende Erweiterungen: bcmath, bz2, curl, exif, ftp, gd, gmp, iconv, imagick, intl, mysqli, openssl, pdo_mysql, posix, sodium, ssh2, sysvsem, zip, zlib
- Die FPM-Einstellungen könnt ihr belassen. Im nächsten Schritt können die PHP-Variablen angepasst werden. Sucht zuerst nach
memory_limit
und tragt hier den Arbeitsspeicher ein, den ihr Nextcloud zur Verfügung stellen wollt. Derzeit werden mindesten 2GB gefordert. Je nach verfügbaren RAM auf eurem NAS könnt ihr natürlich auch mehr zuweisen. Der zugewiesene Speicher ist nicht automatisch belegt, ihr legt hier nur das Limit fest, dass Nextcloud maximal belegen darf. Sucht dann noch die Variablenpost_max_size
undupload_max_filesize
und tragt dort einen hohen Wert (z.B:16G
) ein. Dabei handelt es sich nicht um Arbeitsspeicher, sondern um die Dateigröße, die ihr auf einmal hochladen könnt. Den Unterschied zwischen den beiden Variablen verrät euch Google, in den meisten Fällen reicht aber der selbe Wert bei beiden Variablen. Für den Upload großer Datenmengen verwendet man sowieso selten das Webinterface. - Ab Nextcloud 29.0.8 muss
output_buffering
deaktiviert sein. Sucht man die Variable ist sie bereits auf 0 gesetzt, allerdings muss sie den Wertoff
haben. - Schließt den Dialog ab.
Installation
Ladet die neueste Version von Nextcloud als .zip oder .tar hier herunter (unter Community Projects > Archive > Get ZIP file). Ladet das zip-File auf eure DiskStation hoch und extrahiere es in den /web
Ordner.
Tipp
Um die Sicherheit zu erhöhen, könnt ihr den Nextcloud-Ordner umbenennen. Das Verhindert, dass er von Crawlern gefunden wird, die Web-Roots nach Standardbezeichnungen durchsuchen.
Jetzt können wir den virtuellen Host anlegen. Geht dazu in der Web Station in den Bereich Webdienst und erstellt einen neuen Eintrag. Wählt “Webseite für native Skript-Sprachen” und in den Dropdowns stellt ihr das installierte PHP-Paket (8.2) und das weiter oben erstellte PHP-Profil aus. Im nächsten Schritt sind folgende Angaben erforderlich:
- Vergebt einen beliebigen Namen (nur Kleinbuchstaben, Zahlen, – und _ )und eine Beschreibung.
- Wählt als Dokument-Root den Nextcloud-Ordner (
/web/nextcloud
). - Wählt als HTTP-Backend-Server Apache 2.4.
- Erhöht alle drei Timeouts auf mindestens 600, besser 3600. (Ja die Werte bewirken jetzt tatsächlich etwas, kein Hacks in Config-Dateien mehr)
- Wählt die Ports, für die der virtuelle Host gilt (im Normalfall 80/443).
Schließt den Dialog ab. Könnt ihr keinen vHost verwenden, müsst ihr den Standarddienst bearbeiten und dort den HTTP-Backend-Server von Nginx auf Apache 2.4 ändern und das zuvor erstellte PHP-Profil auswählen.
Wechselt in den Beriech Webportal. Erstellt auch hier einen neuen Eintrag mit folgenden Angaben:
- Wählt “Webdienstprotal”.
- Als Dienst wählt ihr den zuvor unter Webdienst erstellten Eintrag.
- Tragt den Hostnamen ein, unter dem ihr eure Nextcloud erreichen wollt. (Der Hostname muss existieren und auf eure DiskStation verweisen, mehr dazu in diesem Artikel.)
- Aktiviert unbedingt “HSTS”, das sorgt dafür, dass alle http-Zugriffe auf eure Cloud auf https umgeleitet werden. Dafür ist aber ein gültiges SSL-Zertifikat notwendig, das für die verwendete Domain ausgestellt wurde. Auch dazu findet Ihr eine Anleitung im vorhin verlinkten Artikel.
Ändert jetzt die Rechte des Nextcloud-Ordners. Gebt dazu folgende Befehle in der Kommandozeile ein:
#!/bin/bash chown -R http:http /volume1/web/nextcloud/ chmod -R 777 /volume1/web/nextcloud/
Hinweis
Die Rechte sind nur für die Installation gedacht, für einen sicheren Betrieb sollten die Rechte so strikt wie möglich gehalten werden. Lest dazu hier nach wie ihr die Rechte nach der Installation anpasst.
Installationsassistenten ausführen
Öffnet Nextcloud im Browser. Verwendet dabei unbedingt die Adresse, die ihr für den virtuellen Host angegeben habt (z.b. cloud.meinedomain.com), habt ihr keinen virtuellen Host konfiguriert verwendet die IP, den Namen der DiskStation oder eine Domain die auf die DiskStation zeigt, gefolgt vom Nextcloud-Verzeichnis (z.b. mynas.synology.me/Nextcloud) Die Adresse die Ihr hier benutzt wird während der Installation als vertrauenswürdige Domain eingetragen. Wollt ihr Nextcloud von anderen Domains aus erlauben müsst ihr diese später in der config.php eintragen. Das ist der Fall wenn ihr z.B. die Cloud später über eine eigene Domain bzw. DynDNS erreichen wollt, aber bei der Installation den lokalen Namen oder die lokale IP der DiskStation benutzt.
Gebt einen Benutzernamen und ein Passwort für den Nextcloud-Admin ein (der NC-Admin hat nichts mit dem Admin der DiskStation zu tun). Unter Speicher & Datenbank > Datenverzeichnis ist standardmäßig /volumeX/web/nextcloud/data
eingetragen, gebt den Pfad zum freigegebenen Ordner an, den ihr vorhin angelegt habt.
Im letzten Abschnitt tragt ihr den root (oder anderen User der Benutzer und Datenbanken anlegen darf) samt Passwort ein. Der Assistent erstellt einen eigenen User samt Passwort für den Betrieb, die hier angegebenen Daten werden nicht gespeichert. Vergebt noch einen Datenbank-Namen. Für die Datenbankdomain ist “localhost” voreingetragen, ihr müsst noch den Port ergänzen, MariaDB hat standardmäßig 3306. Den Port könnt ihr in MariaDB 10 ändern.
Klickt den Button “Installieren” um das Setup abzuschließen. Leht euch jetzt zurück und wartet bis die Installation abgeschlossen ist.
Ihr habt noch die Möglichkeit die empfohlenen Apps zu installieren. Überspringt den Schritt und installiert benötigte Apps lieber per Hand. Nicht alle Apps sind auf jeder DiskStation lauffähig und mit Office und Talk werden teilweise sehr große Apps installiert die ihr eventuell gar nicht benötigt oder nutzen könnt.
OnlyOffice aktivieren
Mittlerweile wird LibreOffice für die integrierte Office-Lösung verwendet. Da es damals unter der integrierten OnlyOffice-Version massive Probleme gab, bin ich auf Docker ausgewichen. Die integrierte Version scheint zwar jetzt stabil und ohne kritische Fehler zu sein, wie gut sie ist, kann ich selbst aber nicht sagen, da ich weiterhin LibreOffice via Docker verwende.
Alles zum Thema Nextcloud Office findet ihr hier.
Nextcloud optimieren
Wichtig
Nextcloud ist noch nicht voll funktionsfähig. Einige der nachfolgenden Schritte sind für einen fehlerfreien Betrieb und für ein funktionierendes Aktualisieren der Cloud notwendig und natürlich für einen sicheren Betrieb.
Nach der Installation sind einige Anpassungen der Einstellungen notwendig. Einige davon werden euch sogar von eurer Nextcloud vorgeschlagen. Ihr findet diese Fehler- und Hinweismeldungen im Menü unter Administratoreinstellungen > Übersicht > Sicherheits- und Einstellungswarnungen. Da sich die DiskStation nicht immer wie ein normaler Linux-Server verhält, gilt es herauszufinden wo die Konfigurationsänderungen wirksam vorgenommen werden können und welche zusätzlichen Schritte erforderlich sind.
Auf den Pfad achten
Achtet darauf, eventuelle Pfadangaben anzupassen, sollte euer /web-Verzeichnis auf einem anderen Volume liegen als hier angegeben oder das Installationsverzeichnis nicht “Nextcloud” heißen.
Wichtig
Nehmt Änderungen an den hier genannten Dateien immer über die Kommandozeile als root (sudo -i) vor und nie über den Texteditor der DiskStation. Im Gegensatz zur Kommandozeile ändert der Texteditor den Owner und die Rechte.
PHP-Memory-Cache aktivieren
Der Memory-Cache verbessert die Leistung eurer Cloud. Seid ihr meiner Installationsanleitung gefolgt, habt ihr ihn bereits aktiviert und müsst ihn nur noch in der Nextcloud-Konfiguration eintragen. Habt ihr den Cache nicht aktiviert, könnt ihr das nachholen, indem ihr im PHP-Profil den Haken bei “PHP-Cache aktivieren” setzt.
Um den Cache in die Nextcloud-Konfiguration einzutragen, öffnet mit PuTTy die Datei /web/Nextcloud/Config/config.php
und fügt am Ende der Datei (noch vor der schließenden Klammer) folgende Zeile ein:
'memcache.local' => '\OC\Memcache\APCu',
Achtung
Tippt Eingaben lieber per Hand ein, als sie von Webseiten zu kopieren. Fügt man einfache oder doppelte Anführungszeichen in den Texteditor der Kommandozeile ein, kann es vorkommen, dass diese Zeichen nicht richtig kodiert werden und nicht als solche erkannt werden. Die Konfiguration wird dann nicht geladen.
Außerdem kann es vorkommen, dass auch ich mich mal vertippe. Das gemeine, wenn man sich bei der Cache-Config vertippt, gibt’s keine Fehlermeldung. Nextcloud läuft aber nur eben ohne Cache.
Speichert und schließt die Datei.
Redis aktivieren
Redis verbesser das File Locking und kann als distributed Cache verwendet werden. Um Redis verwenden zu können, müsst ihr das Paket “Redis” auf eurer DiskStation installieren. Ihr findet es in der Community-Paketquelle.
Ganz ohne Workaround geht es leider auch unter DSM 7.2 nicht. Den Redis-Server habt ihr jetzt, allerdings braucht ihr auch den Redis-Client als PHP-Modul. Redis wird zwar mit den Synology-PHP-Paketen mit ausgeliefert, aber in der WebStation könnt ihr Redis nicht aktivieren. Das müsst ihr teilweise über die Kommandoziele erledigen.
Die erste Änderung gilt für Redis im Webserver, ohne diese Änderung erhaltet ihr einen “Internal Server Error”. Öffnet die Datei /volume1/@appstore/PHP8.2/misc/extension_list.json
(bzw. die PHP-Version die ihr nutzt) und fügt dort zwischen dem Eintrag für posix
und shmop
folgende Zeilen hinzu:
"redis": { "enable_default": true, "desc": "The phpredis extension provides an API for communicating with the Redis key-value store." },
Achtet auf die richtige Position:
Das tolle, Ihr könnt Redis jetzt in der GUI in den PHP-Profileinstellungen aktivieren. Das müsst ihr auch für das PHP-Profil für Nextcloud machen.
ACHTUNG – Paket Updates
Die Änderung in der extension_list.json wird bei einem Update des PHP-Pakets überschrieben. Der Eintrag in der GUI und der daraus resultierenden PHP-Konfigurationsdatei bleibt anscheinend bestehen und Redis funktioniert weiter. Sobald das PHP-Profil aber erneut gespeichert wird, ist Redis dahin. Nach dem PHP-Update also gleich wieder den Eintrag hinzufügen.
Cache auf der Kommandozeile aktivieren
Ähnliches müsst ihr in der Konfiguration für die CLI-Version von PHP machen, da sonst der Cron nicht läuft.
Ihr habt bereits den PHP-Cache aktiviert, der gilt allerdings nur serverseitig, also wenn PHP vom Webserver aufgerufen wird. Damit ihr die Hintergrundaufgaben der Cloud per Cron aufrufen könnt (siehe unten) und Nextclouds Kommandozeilenbefehle (occ-Commands, werden für das Updaten der Cloud benötigt) ausführen könnt, müsst ihr den Cache auch auf der Kommandozeile aktiveren. Das geht auf der DiskStation – wie so vieles – nicht wie auf einem gewöhnlichen Linux-Server, bzw. nicht da wo man es erwarten könnte.
Erstellt über die Kommandozeile (z.B. mit PuTTY) die Datei /usr/local/etc/php82/cli/conf.d/user_settings.ini
und fügt dort folgenden Inhalt ein:
extension = apcu.so extension = redis.so [apc] apc.shm_size = 512M apc.enable_cli = 1
Speichert und schließt die Datei. Jetzt müsst ihr noch die Rechte anpassen:
chmod -R 644 /usr/local/etc/php82/cli/conf.d/user_settings.ini
Danke Guido
Meine Lösung hat gerade bis zum Neustart gehalten. Danke an Guido für eine alternative und länger anhaltende Lösung. Die CLI-Config übersteht auch ein DSM-Update.
Öffnet die Datei /web/Nextcloud/Config/config.php
in PuTTY und tragt folgende Zeilen ein (am besten unterhalb von 'memcache.local' ...
):
'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array ( ‘host’ => ‘localhost’, 'port' => '6379', ‘timeout’ => 0.0, ‘password’ => ”, ‘dbindex’ => 0, ),
Speichert und schließt die Datei. Jetzt müsst ihr den Webserver neu starten, das ist etwas umständlich, ihr könnt die DiskStation neu starten oder über den Aufgabenplaner eine Start- und eine Stop-Aufgabe für den Apache einrichten. Als letzte Alternative könnt ihr in einem vHost die PHP-Version ändern, auch das führt zu einem Neustart des Apache.
Hintergrundaufgaben per Cron
Nextcloud erledigt viele Aufgaben über Hintergrundprozesse, diese müssen aber auch ausgeführt werden. Standardmäßig passiert das beim Laden einer Seite, sprich, wenn jemand das Webinterface öffnet. Tut das aber niemand, werden die Hintergrundprozesse nicht ausgeführt. Besser ist es, diese regelmäßig von eurer DiskStation ausführen zu lassen. Dazu verwenden wir den Aufgabenplaner. Öffnet in DSM die Systemsteuerung und dort den Aufgabenplaner. Legt eine neue Aufgabe (Erstellen > Geplante Aufgabe > Benutzerdefiniertes Skript) an.
- Vergebt einen Namen.
- Belasst den Benutzer root.
- Unter Zeitplan legt ihr fest, dass die Aufgabe täglich alle 5 Minuten ausgeführt werden soll.
- Es ist hilfreich sich per E-Mail benachrichtigen zu lassen (“Ausführungsdetails per E-Mail senden”) wenn die Aufgabe nicht richtig ausgeführt werden konnte (“Ausführungsdetails senden, wenn das Skript unnormal beendet wird”).
- Unter “Benutzerdefiniertes Skript” tragt ihr folgende Zeile ein:
sudo -u http php82 /var/services/web/nextcloud/cron.php
Bestätigt die neue Aufgabe mit Klick auf OK.
Öffnet jetzt im Nextcloud-Webinterface Einstellungen > Grundeinstellungen > Hintergrund-Aufgaben und aktiviert die Option Cron. Wartet jetzt etwas mehr als 5 Minuten und ladet die Seite neu. Der Punkt neben der Überschrift muss grün sein und die letzte Ausführung weniger als 5 Minuten her sein.
HSTS aktivieren/https-Umleitung
Habt ihr für die Installation meine Anleitung benutzt und habt euch an meine Empfehlung gehalten für Nextcloud einen eigenen virtuellen Host einzurichten, solltet ihr diese Meldung gar nicht erst erhalten. Falls doch, kontrolliert, ob ihr HSTS aktiviert habt. Falls ihr keinen virtuellen Host angelegt habt, könnt ihr jetzt einen anlegen (siehe oben).
Wollt, oder könnt ihr keinen virtuellen Host verwenden, könnt ihr HSTS auch global auf eurem Webserver aktivieren. Legt in PuTTY als root die Datei /etc/nginx/conf.d/http.hsts.conf
an und fügt folgende Zeile ein:
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
Wichtig
Legt neue Dateien immer über die Kommandozeile an. Erstellt diese niemals auf eurem Rechner und ladet sie dann hoch. Hierbei passt meist die Kodierung der Textdatei nicht und das Skript kann nicht ausgeführt oder die Konfiguration nicht gelesen werden.
Speichert und schließt die Datei und startet anschließend Nginx neu (synosystemctl -restart nginx
).
Proxy
Warum Nginx konfigurieren, wenn Nextcloud unter Apache läuft? Nginx ist auf Synology NAS-Geräten als Proxy vorgeschaltet. Auch wenn ihr den Apache als Webserver nutzt, werden alle Anfragen immer durch den Nginx laufen, daher reicht die Aktivierung von HSTS hier aus.
Open_basedir-Ergänzungen
Öffnet das PHP-Profil für Nextcloud und fügt unter “PHP open_basedir benutzerspezifisch anpassen” die Pfade /dev/urandom
, /proc/meminfo
, /proc/cpuinfo
, /proc/uptime
und /sys/class/net/eth0 hinzu (vergesst den Doppelpunkt zum Trennen einzelner Pfade nicht).
Standard-Telefonregion festlegen
Öffnet einfach eure Nextcloud-Config und fügt in den geschwungenen Klammern folgenden Eintrag hinzu:
'default_phone_region' => 'AT',
Ersetzt AT durch DE, CH oder einen anderen, von euch gewünschten ISO-Ländercode.
E-Mail-Serverkonfiguration
Damit ihr gewisse Funktionen von Nextcloud verwenden könnt, müsst ihr eine E-Mail-Adresse konfigurieren. Wechselt dazu in die Grundeinstellungen und hinterlegt dort unter E-Mail-Server die Einstellungen eures Mail-Kontos.
Rechte anpassen
Während der Installation wurden die Rechte für den Nextcloud-Ordner und das Datenverzeichnis nur sehr locker gesetzt. Das ist während der Installation auch notwendig. Für den Betrieb sollten die Rechte aus Sicherheitsgründen aber so strikt wie Möglich gesetzt werden. Da ihr für ein Update die Rechte wieder lockern müsst, ist es ratsam, die Rechte über Skripte anzupassen. Legt also mit PuTTY auf eurer DiskStation eine Datei mit Endung .sh an. Fügt dann folgenden Code ein:
#!/bin/bash ncpath='/volume1/web/nextcloud' ncdatapath='/volume1/nextcloudData' htuser='http' htgroup='http' rootuser='root' printf "chmod Files and Directories\n" find ${ncpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ncpath}/ -type d -print0 | xargs -0 chmod 0750 find ${ncdatapath} -type f -print0 | xargs -0 chmod 0640 find ${ncdatapath} -type d -print0 | xargs -0 chmod 0750 printf "chown Directories\n" chown -R ${rootuser}:${htgroup} ${ncpath}/ chown -R ${htuser}:${htgroup} ${ncpath}/apps/ chown -R ${htuser}:${htgroup} ${ncpath}/config/ chown -R ${htuser}:${htgroup} ${ncpath}/themes/ chown -R ${htuser}:${htgroup} ${ncpath}/updater/ chmod +x ${ncpath}/occ printf "chmod/chown .htaccess\n" if [ -f ${ncpath}/.htaccess ] then chmod 0644 ${ncpath}/.htaccess chown ${htuser}:${htgroup} ${ncpath}/.htaccess fi chown ${htuser}:${htgroup} ${ncpath}/.user.ini
Achtet bitte wieder auf die einfachen und doppelten Anführungszeichen. Ihr könnt das Skript jetzt mit folgendem Befehl ausführen:
sh /volumeX/Pfad/zum/Script/Betriebsberechtigungen.sh
Probleme, die sich nicht oder nur eingeschränkt beheben lassen
Bisher konnten die Sicherheitswarnungen und Betriebsempfehlungen mit relativ wenig Aufwand beseitigt werden. Jetzt kommen wir aber zum unangenehmen Teil. Es gibt Meldungen, die sich auf der DiskStation derzeit nicht oder nur bedingt beheben lassen.
CalDAV- und CardDAV-URLs
Die Meldung “Ihr Webserver ist nicht richtig konfiguriert um “./well-known/caldav” (bzw. ./well-known/carddav) aufzulösen.” Erscheint nur dann, wenn ihr für Nextcloud keinen virtuellen Host konfiguriert habt. Da die, von Nextcloud vorgegebenen, Standardwerte für die URLs vom Document-Root ausgehen, Nextcloud aber in einem Unterverzeichnis liegt. Habt ihr einen virtuellen Host angelegt, ist für diesen das Unterverzeichnis der Root-Ordner und somit alles in Ordnung. Normalerweise ließe sich das Problem auf viele verschiedene Weisen lösen, indem die URL einfach um den Unterordner ergänzt wird. Aus bisher nicht bekannten Gründen funktioniert das aber auf den NAS-Geräten von Synology nicht,, bzw. um präziser zu sein, nicht bei allen Anwendern. Es gibt für das Problem mehrere Lösungen aber diese funktionierten nicht immer bei allen. Fragt die Suchmaschine eurer Wahl nach den Lösungen und probiert sie durch. Wenn das nicht klappt, bleibt euch also nur, einen virtuellen Host für Nextcloud einzurichten, oder Nextcloud direkt im Document-Root (/web) zu installieren. Ersteres bedeutet, ihr braucht einen Host (Subdomain) allein für Nextcloud, zweiteres bedeutet ihr könnt keine andere Webseite im Dokument-Root betreiben.
Fazit
Habt ihr alle Meldungen beseitigt (sofern sie sich beseitigen lassen) und habt ihr die Rechte angepasst, steht dem Betrieb eurer eigenen Cloud nichts mehr im Wege. Zumindest bis zum nächsten Update. Denn dann warten vermutlich neue Meldungen darauf von euch beseitigt zu werden.
Der Entwicklungszyklus von Nextcloud ist recht kurz und neben den regelmäßigen Updates, warten zwei Mal in Jahr neue Hauptversionen darauf installiert zu werden. Die Meldungen, die ihr in der Übersicht von Nextcloud erhaltet, hängen stark davon ab, welche Version ihr Installiert, ob ihr ein Update durchführt und welche Versionen ihr dabei ausgelassen habt und vorallem davon, wie euer Webserver bereits konfiguriert ist. Es kann daher gut sein, dass ihr Meldungen sehr, die mir noch nicht untergekommen sind. Sollte das der Fall sein, werdet ihr entweder in der Vorgängerversion dieses Artikels fündig oder ihr hinterlasst mir einen Kommentar.
Jetzt könnt ihr Nextcloud direkt im Browser nutzen, oder ihr ladet euch den Client herunter. Der Client funktioniert ganz ähnlich wie der von Dropbox. Ihr könnt eure gesamte Cloud mit eurem Rechner synchronisieren oder aber nur einzelne Ordner. Das synchronisieren einzelner Ordner ist auch dann ganz hilfreich wenn ihr schon eine bestehende Ordnerstruktur für eure Daten (Bilder, Videos, Datein, etc.) – z.B. auf verschiedenen Laufwerken – habt und ihr diese beibehalten wollt. Der Client ermöglicht auch die Verwendung mehrerer Nextcloud-Instanzen. Die Client-App für Smartphones bietet auch die Option Bilder automatisch hochzuladen. Die Daten selbst werden nicht alle auf das Smartphone heruntergeladen, erst wenn ihr einzelne Dateien über die App abruft.
Möchtet Ihr noch detailliertere Schritt-Für-Schritt-Anleitungen für euer Synology NAS, mit viel mehr Hintergrundinformationen, Tipps und Tricks? Dann holt euch mein Wissen als als umfassendes Praxis-Handbuch. Mehr Infos findet ihr in keinem Buch zu Synology und alles in der von mir gewohnten Qualität.
Die dritte Auflage enthält Aktualisierungen zu DSM 7.1 und den Updates von WebStation, Surveillance Station und Synology Photos.
Das Buch direkt beim Verlag
Das Buch auf Amazon
Hallo Andreas,
zur Info mit der REDIS Version 7.2.1 auf DSM 7.2-64570 Update 3 kommt noch die Angabe vom User ‘default” mit dazu
ob die timeout jeweils auf 1.5 oder auf 0.0 gestellt werden spiel in meinem Fall keine Rolle.
‘memcache.local’ => ‘\OC\Memcache\APCu’,
‘memcache.locking’ => ‘\OC\Memcache\Redis’,
‘memcache.distributed’ => ‘\OC\Memcache\Redis’,
‘redis’ => [
‘host’ => ‘localhost’,
‘user’ => ‘default’,
‘password’ => ‘foobared’,
‘dbindex’ => 0,
‘timeout’ => 1.5,
‘read_timeout’ => 1.5,
],
gruß Alex
Im aktuellen Zustand kommt leider immer die folgende Meldung:
“Der „X-Frame-Options“-HTTP-Header ist nicht so konfiguriert, dass er „SAMEORIGIN“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.”
Theoretisch wäre das wohl durch einen Eintrag in der http.d vom Apache zu klären (Header always append X-Frame-Options SAMEORIGIN), diese finde ich aber leider nicht unter DSM 7.2
Gibt es da schon irgendeine Idee oder einen Lösungsansatz? Auf die Art möchte ich den Server nur äußerst ungern offen lassen…
Danke schonmal,
Matthias
Hallo Matthias,
Ich glaube das ist mir noch nicht untergekommen, oder ich erinnere mich nicht daran.
Grundsätzlich sollte das eigentlich an sein, Ich habe in der .htaccess Header always set X-Frame-Options “SAMEORIGIN” stehen.
Möglicherweise pfuscht hier Nginx hinein und man müsste den header in der Nginx konfig anpassen.
Die Lösungen bzw. Ursachen die ich sonst so gefunden habe, sind nicht ganz eindeutig. Am besten du probierst die Vorschläge durch, die Google ausspuckt.
Grüße,
Andreas
Hallo Andreas,
das wiederum habe ich zuerst getan – leider ohne Erfolg. Ich finde die passende Konfigurationsdatei nicht und bin scheinbar it-seitig noch etwas zu unbedarft – selbst das NAS in Werkseinstellungen zu versetzen und die komplette Konfiguration neu vorzunehmen hat keine Besserung gebracht, aber zumindest eine vorangegangene Fehlkonfiguration ist hierdurch als Ursache zunächst ausgeschlossen. Zeitgleich habe ich im Netz keine auch nur halbwegs aktuelle Konfigurationslösung gefunden, welche die X-Frame-Option “SAMEORIGIN” wieder ins System bringt…
Verwendest du einen virtuellen Host für Nextcloud?
Zur Ergänzung: Seit dem Update des NAS tritt die Problematik nicht mehr auf 🙂
Hallo Andreas,
ja ich verwende einen virtuellen Host, derzeit habe ich aber erst einmal (zumindest vorläufig) von der Installation der Nextcloud abgesehen, da ich diese von außen erreichbar brauche und diese Problematik m.E. den Server angreifbar macht. Wollte es aber von Zeit zu Zeit immer wieder testen.
Danke und Gruß
Matthias
Guten Tag zusammen,
wer Redis auf der DS auf das neue Paket 7.2.1 updatet wird evtl., wie ich, mit einer nicht mehr funktionierenden Nextcloud bedient.
Fehler bei Ausführung eines occ Befehls:
“An unhandled exception has been thrown:
RedisException: NOAUTH Authentication required. in /volume1/web/xcloud/lib/private/Memcache/Redis.php:72
Stack trace: …………..”
Diesmal liegt der Haken in einer neuen redis.conf.
Dort ist per default ein password für den Zugriff gesetzt.
Die redis.conf liegt unter: /volume1/@appdata/redis/redis.conf
dort steht unter ganz viel ….. ################################## SECURITY ###################################:
…..
requirepass foobared
foobared ist das default redis password.
In die Nextcloud config muss also für Redis jetzt auch ein password gesetzt werden:
‘memcache.dsitributed’ => ‘\\OC\\Memcache\\Redis’,
‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’,
‘redis’ =>
array (
‘host’ =>’localhost’,
‘port’ => 6379,
‘timeout’ => 0.0,
‘password’ => ‘foobared’,
‘dbindex’ => 0,
),
Vermutlich noch besser ist gleich in beiden Dateien das password mit putty oder vi in ein eigenes password zu ändern.
Vielleicht erspart der Hinwies Einigen von euch eine lange Suche.
Grüße, Torsten
P.S. Hat jemand heic-Vorschaubilder in einer Nextcloud?
Ich konnte das Thema bisher noch nicht lösen s.u.
Hallo Torsten,
Danke für den Hinweis. Das Redis-Update wurde bei mir anscheinend noch nicht ausgerollt.
Ich werde den Artikel demnächst aktualisieren.
Preview-Generation nutz ich nicht mehr. Da ich meine Bilder fast alle in einem externen Storage liegen habe. NCs Gallery App war früher recht unbrauchbar und die neue Version zeigt keine Bilder/Ordner aus dem external Storage an. Daher nutze ich dafür Synology Photos. Da ist auch die Mobile-Experience besser als mit Nextcloud.
Grüße,
Andreas
Hallo Andreas,
besten Dank für die Rückmeldung zu dem Thema preview-generator. So schön wie nextcloud läuft, ist das Thema Fotoverwaltung, idealerweise tagging noch ungelöst. Synology Photos ist das wirklich besser. Die memories-app kann zwar mittlerweile wirklich mehr, aber die doch recht maue performance und die fehlenden heic-previews lassen die Fotoverwaltung via nextcloud für uns eigentlich raus fallen- aber vielleicht tut sich da ja was.
Bisher hat mich bei der Parallelnutzung von Synology Photos immer der höhere Administrationsaufwand für die Einrichtung doppelter user für nextcloud und photos bzw. filestation geschreckt. Auch ein Ablageort der Fotos zusammen mit anderen Projektdateien fände ich sympathischer. Toll fände ich ein tagging via exif was das Schlagwort wirklich mit der Datei verbindet und nicht nur mit einer Datenbank. Das lässt sich zwar tatsächlich z.B. mit hazel ganz schön automatisieren, da ist man aber wieder bei Projektordnern für verschiedene Fotos…
Bindest du Synology Photos immer noch als external Storage wie vor Längerem mit Photostation in DSM6 beschrieben ein – upload via nextcloud?
Grüße,
Torsten
Hallo Torsten,
Ja ich fahr damit immer noch recht gut. Anfangs habe ich Synology Photos nur selbst genutzt und die Bilder über Nextcloud mit anderen geshared. Aber weil eben die Performance so schlecht war und es mit dem sharen von external storage immer wieder Probleme gab hab ich auch das nach Photos verlagert. Sicherung der Smartphone Fotos läuft über den Uplader der NC-App aber eben auch in den external storage. Man kann übrigens nicht nur /photos einbinden, man kann auch den privaten Fotoordner aus /homes einbinden sofern man den nutzen möchte. Wobei die Rechteverwaltung von Photos ja schon recht gut ist.
Hallo Torsten,
danke für Deine Hinweise – so konnte ich endlich die redis.conf finden und ein eigenes (sicheres 😉) password definieren 😁.
“It’s not that I’m paranoid. It’s just like the way it is!”
Servus Andreas,
ich nutze Deine tollen Anleitungen schon seid Jahren – ohne Dich hatte ich wahrscheinlich meine Nextcloud nie ans Laufen gebracht: vielen Dank für die tolle Unterstützung :-).
Ich habe mich bislang nicht an die Installation von “redis” getraut: in den Community-Packages steht es wäre von https://github.com/hgy59 und die Anzahl der Downloads wäre NULL! Das klingt mir als jemand für den Orwell’s 1984 mal in der Zukunft lag, nicht sehr vertrauenswürdig. Kennst Du noch andere Quellen für redis? Vielleicht habe ich auch nur die falsche Quelle verwendet (https://packages.synocommunity.com/).
Danke und Grüße
Jörg
Hallo Jörg,
Downloadzähler ist tatsächlich 0, eventuell etwas falsch verlinkt? Aber ich nutze das Paket und viele andere in der Community auch.
Kaputt, machen kann man mit redis eigentlich nicht viel, wenn die Config nicht passt, dann läuft NC nicht, das merkt man recht schnell, wenn mans falsch konfiguriert läuft Redis nicht, aber wenn man sich nicht gerade vertippt, so wie ich, kann nicht viel schiefgehen.
Grüße
Andreas
Hallo,
danke für den großartigen Artikel. Ich spiele schon eine Weile mit dem Gedanken, Nextcloud auf meinem NAS (Synology DS215j) zu installieren.
Ich befürchte nur, dass mein NAS etwas schwachbrüstig für diese Anforderung ist, zumal auch oben im Artikel steht, dass 2GB Arbeitsspeicher empfohlen sind. Das NAS hat nur 512MB. Das DSM 7.2 läuft einwandfrei auf dem Gerät.
Ich möchte Nextcloud nur zur Dateisynchronisierung und zur Synchronisierung von Adressen verwenden.
Meine Frage also: Reicht mein NAS aus, oder wird doch ein performanteres Gerät empfohlen.
Schöne Grüße
Helmut
Hallo Andreas,
vielen Dank für die tolle Anleitung 🙂 Habe es sogar mal geschafft es testweise zu installieren. Nun wollte ich es erneut installieren, erhalte aber (mitten beim Umsetzen der Optimierungen) folgenden Fehler (die Problematik der Hochkommas habe ich beachtet): “Die erforderliche passwordsalt Konfigurationsvariable ist in der config.php nicht konfiguriert.” Google hat mir leider nicht wirklich geholfen 🙁 In der Doku steht eher, dass man passwordsalt Variable nicht verwenden sollte…
Auch ein Entfernen der Optimierungen hat nicht mehr geholfen. Wo finde ich eigentlich die log-Files von nextcloud?
Habt ihr eine Idee?
Vielen Dank & Lieber Gruss,
Matthias
Habe den Fehler (und die log files) doch noch gefunden. Ich hatte vergessen den Datenpfad ins PHP Profil einzutragen. Nun läuft die Cloud 🙂
Hallo Andreas!
mir ist aufgefallen, dass beim Codefeld für den Eintrag von Redis in die /web/Nextcloud/Config/config.php einige ‘-Zeichen falsch sind.
Auch denke ich, dass es die 1. Zeile nicht braucht…
Aber im Screenshot passt’s.
LG, Stefan
Hallo Stefan,
Wordpress macht immer mal wieder Probleme mit den Anführungszeichen, daher auch der Hinweis von mir den Text abzutippen und nicht zu kopieren.
Ja, mit dem gewöhnlichen Nextcloud Setup ist das eigentlich nicht notwendig, schadet aber auch nicht.
Grüße
Andreas
Hallo Andreas,
noch einmal ein großes Dankeschön für deine ganze Arbeit. Ohne dich würde meine Nextcloud bestimmt nicht existieren. Habe gerade das Update von DSM 6.2 auf 7 durchgeführt und dank deiner Anleitung auch nur zu Beginn ein paar kleine Problem gehabt.
Jetzt läuft aber alles wieder und ich hoffe die Aktualisierung auf PHP8.2 hilft meiner kleinen DS220j ein wenig bei der Arbeitsbewältigung.
Eine Sache die mir aufgefallen ist. Beim Ausprobieren der occ Befehle über die Konsole bekam ich trotz der Einstellung der FPM Werte in den Skript-Spracheinstellungen immer noch die Fehlermeldung:
The current PHP memory limit is below the recommended value of 512MB.
Ich habe daher die Einstellungen manuell in der Datei /usr/local/etc/php82/cli/php.ini nachgepflegt und das scheint das Problem jetzt erst einmal beseitigt zu haben.
Also nochmal vielen Dank und Alles Gute für dich.
Gruß
Andreas
Moin,
besten Dank für die Anleitung. Soweit läuft fast alles, allerdings scheine ich etwas Probleme mit php Modulen zu haben, kann das sein?
Der Cron Job läuft nur, wenn ich ihn manuell starte, wird nicht über die Aufgabe ausgeführt, wie es eigentlich sein soll.
Meine Dateien werden nicht initialisiert, hatte das nun manuell versucht mit: sudo -u http php occ files:scan –all
Dabei kam folgendes:
An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /volume1/web/nextcloud/lib/private/DB/Connection.php:140
Stack trace:
#0 /volume1/web/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1531): OC\DB\Connection->connect()
#1 /volume1/web/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1029): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /volume1/web/nextcloud/lib/private/DB/Connection.php(262): Doctrine\DBAL\Connection->executeQuery(‘SELECT * FROM `…’, Array, Array, NULL)
#3 /volume1/web/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(345): OC\DB\Connection->executeQuery(‘SELECT * FROM `…’, Array, Array)
#4 /volume1/web/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /volume1/web/nextcloud/lib/private/AppConfig.php(418): OC\DB\QueryBuilder\QueryBuilder->execute()
…
#39 …
Müssen die php module noch einmal installiert werden? Bin etwas ratlos und wäre für eure Hilfe dankbar.
Grüße
Hannes
Hallo noch einmal,
war einzig das Problem des nicht ausgeführten Cron Jobs. Das Problem gab es schon vorher bei der Version 21, was auch bei dir auf der Seite in einem anderen Blog gut beschrieben wird.
Allerdings hat mich erst der Kommentar eines Nutzers auf die Lösung gebracht. Warum auch immer, wird bei mir der Befehl nur mit dem Zusatz apc.enable=1 ausgeführt, obwohl das bereits in /usr/local/etc/php82/cli/conf.d/user_settings.ini hinterlegt ist.
sudo -u http php82 -f /volume1/web/nextcloud/cron.php -d apc.enable_cli=1
Besten Dank nochmal für die ausführlichen Anleitungen und vielen Kommentare.
Moin, ich hoffe ihr könnt mir auch helfen.
Nextcloud läuft über die Webstation und einem eigenen PORT und DynDNS, also meiner eigenen Domain.
Der Cron-Job macht was er soll und läuft, aber wenn ich die Zeile #’memcache.distributed’ => ‘\OC\Memcache\Redis’, auskommentiere, bekomme ich immer ein:
Internal Server Error
The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.
Und im log steht:
Fehler core RedisException: Redis server went away
Fatal no app in context RedisException: Connection refused
meine Einstellungen:
‘memcache.local’ => ‘\\OC\\Memcache\\APCu’,
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’,
‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’,
‘redis’ =>
array (
‘host’ => ‘localhost’,
‘port’ => ‘6379’,
‘timeout’ => ‘0’,
‘dbindex’ => ‘0’,
Auch mit ‘host’ => ‘192.168.188.24’, funktionierte es nicht.
/volume1/@appstore/PHP8.2/misc/php-fpm.ini :
[Redis]
extension = redis.so
Und in /usr/local/etc/php82/cli/conf.d/user_settings.ini :
extension = apcu.so
extension = redis.so
[apc]
apc.shm_size = 512M
apc.enable_cli = 1
Was mache ich nur falsch. Habe ich die Rechte in Ordnern falsch gesetzt?
Hallo Hoschie,
ich hatte heute das gleiche Problem.
Nachdem ich auch ein “Refused” im Log hatte dachte ich zuerst an ein Firewall oder Port Problem. netstat -an | grep 6379 lieferte ein “hörenden” Redis Server…
Dann habe ich das config.php auf https://onlinetools.com/ascii/validate-ascii geprüft und habe unzählige Hochkommas entdeckt, welche auch hier in der Anleitung ‘gemischt’ sind -> nachdem ich alle ’ mit ‘ getauscht hatte -> ASCII war fehlerfrei -> hat es nach einem Neustart des Apache auch wieder mit der Nextcloud geklappt. Alles Grün!
Hoffe es hilft auch dir 🙂
Gruss
Dr. Watson
Danke dir. Aber “leider” hat die seite onlinetools gesagt, es icht alles richtig. HEUL!!
Wenn ich unter putty netstat -an | grep 6379 eingebe, kommt nichts. Was muß ich denn da noch “ranhängen”?
Schade hats nicht gehilft 🙁
Anhängen musst du eigentlich nichts – so siehts bei mir aus:
root@DS220:~# netstat -an | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6379 127.0.0.1:50220 ESTABLISHED
tcp 0 0 127.0.0.1:50220 127.0.0.1:6379 ESTABLISHED
tcp 0 0 127.0.0.1:53078 127.0.0.1:6379 ESTABLISHED
tcp 0 0 127.0.0.1:6379 127.0.0.1:59304 ESTABLISHED
tcp 0 0 127.0.0.1:59304 127.0.0.1:6379 ESTABLISHED
tcp 0 0 127.0.0.1:6379 127.0.0.1:53078 ESTABLISHED
tcp6 0 0 ::1:6379 :::* LISTEN
Bei dir deutet es darauf hin, dass dein Redis Server nicht läuft – stoppen und starten hast du sicher schon versucht oder?
Meine config.php sieht so aus:
‘memcache.local’ => ‘\\OC\\Memcache\\APCu’,
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’,
‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’,
‘Redis’ =>
array (
‘host’ => ‘localhost’,
‘port’ => ‘6379’,
‘timeout’ => 0.0,
‘password’ => ”,
‘dbindex’ => 0,
),
);
Alles mit senkrechten Hochkommas ASC(039) und nicht ASC(8217) gemäss https://www.branah.com/ascii-converter
Nun bekomme ich nach deinem Befehl:
unix 2 [ ACC ] STREAM LISTENING 63791 /tmp/usb-copy-socket
und 6379 ist ROT.
‘memcache.dsitributed’ => ‘\\OC\\Memcache\\Redis’,
ist bei mir aber noch auskommentiert.
“Bei dir deutet es darauf hin, dass dein Redis Server nicht läuft – stoppen und starten hast du sicher schon versucht oder?”
Ich habe immer die DS neugestartet. Das wäre doch umständlich, aber doch auch ok, um den Redis Server neuzustarten?
Unter den Installierten Paketen könntest du sonst das Paket stoppen -> dann den Test mit netstat -an | grep 6379 machen und mehr sehen und dann den Dienst starten und Test wiederholen uind dann sollte wieder ein kommen…
Alternativ geht auch :
root@DS220:/volume1/web/nextcloud/config# curl -kvv http://127.0.0.1:6379
> GET / HTTP/1.1
> Host: 127.0.0.1:6379
> User-Agent: curl/7.86.0
> Accept: */*
>
* Empty reply from server
curl: (52) Empty reply from server
Ah, ich habe kein Paket mit Redis, denn ich hatte gelesen, dass die DSM 7.2 diesen schon hat und nicht extra installiert werden muß.
Nun habe ich folgendes eingeben:
mein_root:/volume1/web/nextcloud_21/config# curl -kvv http://127.0.0.1:6379
* Failed to connect to 127.0.0.1 port 6379 after 0 ms: Error
curl: (7) Failed to connect to 127.0.0.1 port 6379 after 0 ms: Error
und
mein.root# systemctl status | grep redis
│ └─26947 grep –color=auto redis
│ └─pkg-synologydrive-redis.service
│ └─18465 /var/packages/SynologyDrive/target/usr/bin/redis-server unixsocket:/run/SynologyDrive/redis.sock
│ │ └─8540 /usr/bin/redis-server unixsocket:/run/synocached.sock
und
mein.root# redis-server –version
Redis server v=6.2.7 sha=0ffc3f13:0 malloc=jemalloc-5.1.0 bits=64 build=3708b56ae36b1c63
Hallo Hoschie,
Synology installiert einen eigenen Redis Server in einer veralteten Version 6.x mit für ihre eigene Synology Drive Station. Wenn du die redis config Datei dazu findest kannst du versuchen die Berechtigungen anzupassen. Aus zwei Gründen kann Ich dir aber davon abraten:
Wenn man gedanklich durch geht, dass Synology die Berechtigung für die lokale Installation sehr restriktiv auf die Drive Station abgestimmt hat, ist ein weiteres öffnen der Berechtigungen eventuell ein hohes Sicherheitsrisiko nach außen. Desweiteren ist die fixe redis version auf deine lokale Systemumgebung abgestimmt. Eine weitere App über den selben redis Prozess darauf laufen zu lassen könnte eventuell in bestimmten Situationen zu Problemen mit anderen Anwendungen auf der Synology führen.
Zwei redis Versionen unter der selben Portnummer gleichzeitig wäre aber auch verkehrt (und geht vermutlich auch nicht). Ich habe die Config Datei des Paketes aus der Synocommunity für mich angepasst und die Portnummer geändert sowie ein Passwort vergeben. (Achtung bei Sonderzeichen – diese werden oft falsch interpretiert und funktionieren dann nicht)
Achja Achtung bei deiner Zeile:
‘memcache.dsitributed’ => ‘\\OC\\Memcache\\Redis’,
das hat Andreas auch schon mal erwähnt, dass sich hier ein Fehler eingeschlichen hatte. Einfach in das hier ändern:
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’,
Habt alle Dank. Es hat funktioniert. Ich habe nun Redis aus der Synocommunity installiert und .dsitributed fehlerfrei geschrieben und nun scheint es zu funktionieren. Ich bekomme keine Fehlermeldung mehr. In der Config Datei des Paketes habe ich aber nichts geändert. Ich wüßte auch nicht wo. Habe die Config von Nextcloud nur so ausgefüllt wie oben.
Eine Frage habe ich aber noch zur “Rechte anpassen” von oben:
ncdatapath=’/volume1/nextcloudData’
Dies Verz. habe ich nicht, ist damit das nextcloud/data gemeint?
Freut mich das es jetzt funktioniert.
Zum data-Ordner: recht weit oben in der Anleitung habe ich geschrieben, dass es ein Sicherheitsrisiko darstellt, den Standard-Ordner /nextcloud/data/ zu verwenden und dass auch Nextcloud selbst empfiehlt einen eigenen Ordner außerhalb des WebServers anzulegen.
Grüße
Andreas
Andreas: Aufgabe erstellen, so sieht deine Befehlszeile aus. sudo -y http php73 /var/services/web/nextcloud/cron.php. Kann ich anstatt php73 – auch das neue php82 in der Befehlszeile einbauen?
Hallo Pablo,
natürlich, der Screenshot im Artikel ist schon etwas älter. Aber in der Beschreibung vom mir habe ich bereits PHP 8.2 in Verwendung.
Grüße
Andreas
Andreas – vielen Dank – werde PHP 8.2 – in die Befehlszeile einbauen.
Seit dem Update auf Nextcloud 27.01. habe ich folgenden Fehler:
Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern, richte bitte, sofern verfügbar, Memcache ein. Weitere Informationen findest du in der Dokumentation ↗.
Da ich mit vhost arbeite, glaube ich, dass das Problem in /var/packages/WebStation/etc/php_profile/xxx/conf.d/user_settings.ini liegt.
Wenn ich dort extension = redis.so hinzufüge, ist der Eintrag flüchtig. Heiß nach Neustart des Webservers fehlt der wieder.
Bin die Anleitung jetzt mehrfach durchgegangen, finde aber den Fehler nicht.
‘memcache.local’ => ‘\\OC\\Memcache\\APCu’,
‘memcache.dsitributed’ => ‘\\OC\\Memcache\\Redis’,
‘memcache.locking’ => ‘\OC\Memcache\Redis’,
‘redis’ =>
array (
‘host’ => ‘localhost’,
‘port’ => ‘6379’,
‘timeout’ => ‘0.0’,
‘dbindex’ => ‘0’,
),
Für einen Tip wäre ich dankbar
Hallo Michel,
Du hast natürlich recht, ich hab sowas sogar befürchtet, allerdings hatte ich keinen Fehler nach einem Neustart. Das ganze lag daran, dass ich zuerst memcache.locking und dann memcache.distributed in meiner conf stehen hatte. Warum das einen Unterschied macht, kann ich nicht sagen. Glücklicherweise hat Guido einige Kommentare weiter unten eine stabilere Lösung präsentiert. Ich vermute mal die hält zumindest bis zum nächsten DSM- bzw. PHP-Paket-Update.
Lösung werde ich natürlich auch im Artikel nachbessern.
Grüße
Andreas
Hallo Michel,
das Problem hatte ich auch bei NC 26. Für mich hat aber die Lösung von Guido 17.07.2023 s.u. auch beim v-host funktioniert.
Ich habe
/@appstore/PHP8.2/misc/php-fpm.ini
und
/usr/local/etc/php82/cli/conf.d/user_settings.ini
wie unten beschrieben ergänzt und dann lief redis auch auf dem vhost.
Grüße Torsten
Hallo Andreas,
vielen Dank für die Anleitungen. Diese haben schon vielfach geholfen. Habe mich auch schon mit dem Kauf deines Buches hierzu bedankt. Lande dann aber doch immer wieder im blog.
Ein Problem treibt mit immer wieder um und ich bekomme es nicht gelöst. Ich hätte gerne heic-support bzw. heic-previews in der nextcloud. Vermutlich liefert Synology diesen aber nur mit den Advanced Media Extensions. Ich vermute, dass die web station mit ihrer php imagick-Erweiterung darauf keinen Zugriff hat. Da hilft auch der Eintrag für heic-preview in der nextcloud-config nicht:
‘enabledPreviewProviders’ => [
‘OC\Preview\PNG’,
‘OC\Preview\JPEG’,
‘OC\Preview\GIF’,
‘OC\Preview\BMP’,
‘OC\Preview\XBitmap’,
‘OC\Preview\HEIC’,
‘OC\Preview\PDF’,
‘OC\Preview\MP3’,
‘OC\Preview\TXT’,
‘OC\Preview\MarkDown’,
‘OC\Preview\OpenDocument’,
‘OC\Preview\Krita’,
],
Hast du eine Erklärung bzw. funktioniert das bei jemanden?
Beste Grüße,
Torsten
P.S.: Nextcloud 26, DSM 7.2, php 8.2
Hallo Andreas,
ist die Zeile
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’,
in der config.php wichtig?
Da ich nach der Installation von Nextcloud 27 die Einrichtungswarnung, dass Filelocking nicht möglich ist, bekommen habe, habe ich nach deiner Anleitung Redis installiert und die angegebenen Änderungen durchgeführt. Daraufhin ließ sich Nextcloud nicht mehr starten. Es wurde ein Internal Server Error angezeigt. Erst durch das Auskommentieren der oben genannten Zeile ließ sich Nextcloud wieder starten und zeigte einen grünen Haken bei der Sicherheits- und Einrichtungsprüfung. Natürlich freue ich mich darüber, bin aber unsicher, ob die fehlende Zeile nicht doch das Filelocking verhindert.
Ansonsten war deine Anleitung – wie immer – genau richtig für mich, der nur wenige Kenntnisse über Linux- bzw. DSM-Hintergründe hat. Vielen Dank.
Herzliche Grüße
Helmut
Zu früh gefreut! Trotz grünem Haken konte ich keine Dateien mehr up- noch downloaden. Erst nachdem ich die komplette Ergänzung in der config.php auskommentiert habe, lief die Nextcloud wieder rund. Habe ich etwas übersehen? Eigentlich habe ich die Anleitung Schritt für Schritt so, wie geschreiben, nachvollzogen.
Hallo Helmut,
dieser Fehler hat mich anfangs in den Wahnsinn getrieben. Du bist also nicht allein. Allerdings ist die Lösung des Problems bei internal server error nicht immer die Gleiche.
Wenn du durch auskommentieren wieder Zugriff auf die Cloud hast, dann bedeutet dies, dass Nextcloud irgendwie nicht korrekt mit redis kommunizieren kann und das ist in der Tat unkomfortabel. Man merkt dies aber leider erst sehr spät wenn für local caching APCu nutzt denn dann wird redis von der Nextcloud ignoriert.
Zuerst würde ich einmal folgendes in der config.php probieren, da redis in der Standardkonfiguration nur Verbindungen über “127.0.0.1” “localhost” und “-::1” Verbindungen zu lässt:
array
(
‘host’ => ‘localhost’,
‘port’ => ‘6379’,
‘timeout’ => ‘0’,
‘dbindex’ => ‘0’,
),
Klappt das nicht kann man jetzt die redis.conf Datei bearbeiten und nach der Zeile “bind IP ADRESSE” suchen. Dort steht drin welche Adresse redis zum Kommunizieren zu lässt. Ich habe das folgendermaßen gemacht. Das Paket SynoCLI aus der Synocommunity installiert. Dann im Terminal “htop” eingeben. “F4” drücken. “redis” eingeben und “Eingabetaste”. Jetzt solltest du alle auf der Syno laufenden redis Prozesse mit Startparameter sehen. In dem Startparameter siehst du den Pfad der “redis.conf” Datei die verwendet wird diesen notieren oder kopieren. Mit “F10” htop beenden. Dann “nano ‘Pfad zur redis.conf Datei’ “. STRG+W drücken und “bind 127” eingeben und mit “Eingabetaste” bestätigen. Der Cursor springt jetzt in der Datei zu der bind Zeile. Dort kannst du IP Adressen angeben die von redis akzeptiert werden sollen. Am besten suchst du auch noch “requirepass” und legst ein sehr langes passwort fest dass dann in die config.php kommt. Jetzt mit “STRG+X” und “y” sowie “Eingabetaste” speichern. Sollte es immer noch nicht klappen suche noch nach der Zeile “protected-mode yes” und versuche ob es mit “protected-mode no” funktioniert. Diese Funktion sollte man dann aber mit mehr Fehlersuche wieder ausschalten wenn man kann oder ein sehr starkes Passwort für redis nutzen.
Klappt es also immer noch nicht suchst du
Hallo Helmut,
Ich habe meine funktionierende Config nochmal geprüft und da gibts tatsächlich eine kleine Abweichung. Mein Cache-Block sieht so aus:
‘memcache.local’ => ‘\\OC\\Memcache\\APCu’,
‘memcache.dsitributed’ => ‘\\OC\\Memcache\\Redis’,
‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’,
‘redis’ =>
array (
‘host’ => ‘localhost’,
‘port’ => 6379,
‘timeout’ => 0.0,
‘password’ => ”,
‘dbindex’ => 0,
),
Ich wäre dir sehr verbunden, wenn du das mal testen könntest und mir bescheid gibst.
Beste Grüße
Andreas
Danke Andreas,
die Änderungen in deinem Cache-Block haben mir geholfen. Jetzt funktioniert Nextcloud wieder ohne Fehlermeldung. Auch alle Up- und Downloadprobleme, die ich zwischenzeitig hatte, sind nicht mehr aufgetreten. Selbst den grünen Haken bei der Sicherheits- und Einrichtungsprüfung gibt es.
Viele Grüße
Helmut
Ich habe den hinweis bekommen, dass ich eine typo hab dsitributed statt distributed, schaut ganz so aus als hätte ich schon länger kein redis laufen. Ein beheben des typos führt auch bei mir zu einem server error.
Moin,
ich saß auch ne Weile an diesem Problem und musste noch in anderen Dateien Änderungen durchführen. Möglicherweise hilft es dem einen oder anderen. 🙂
Ich habe den Cache-Block wie folgt bei mir:
‘memcache.local’ => ‘\\OC\\Memcache\\APCu’,
‘memcache.distributed’ => ‘\\OC\\Memcache\\Redis’,
‘memcache.locking’ => ‘\\OC\\Memcache\\Redis’,
‘redis’ =>
array
(
‘host’ => ‘localhost’,
‘port’ => ‘6379’,
‘timeout’ => ‘0’,
‘dbindex’ => ‘0’,
),
Desweiteren musste ich noch in der Datei /volume1/@appstore/PHP8.2/misc/php-fpm.ini folgendes ergänzen:
[Redis]
extension = redis.so
Und in /usr/local/etc/php82/cli/conf.d/user_settings.ini habe ich noch folgende Settings gesetzt (memory_limit und shm_size sind hier natürlich eigene Werte):
extension = apcu.so
extension = imagick.so
extension = redis.so
[apc]
apc.shm_size = 512M
apc.enable_cli = 1
[core]
memory_limit = 1024M
Ich hoffe das sind alle Orte, die ich angepasst hatte. Manchmal fummelt man ja so viel herum, dass man nicht mehr weiß, was es letztendlich gebracht hat und was nicht. Aber ohne die Änderung in der php-fpm.ini ging es definitiv nicht!
Auch noch zu erwähnen ist, dass ich jedes Mal die PHP Version für das Nextcloud PHP-Profil geschwenkt habe (Wechsel von PHP 8.0 -> dann Einstellungen für PHP 8.2 gesetzt -> Schwenk zurück auf PHP 8.2), damit die von mir getätigten Einstellungen auch “gefruchtet” haben. Sicher gibt es da auch elegantere Wege (aber ich wollte den noch uneleganteren Weg des Syno-Neustarts vermeiden)
Hallo Guido,/conf.d/user_settings.ini (mit vHost) gemacht.
Ich bin gestern Abend auch auf die Lösung gekommen.
Allerdings hab ich die Änderungen in den Dateien /usr/local/etc/phpXX/conf.d/user_settings.ini (ohne vHost) bzw. /var/packages/WebStation/etc/php_profile/
LG
Andreas
Hallo Helmut,
Ich hab das Problem jetzt gelöst und im Beitrag oben ergänzt.
LG
Andreas
Hallo Andreas,
es geht noch etwas einfacher und sicherer was Nextcloud bei der Installation zusammen mit MariaDB betrifft. Ich nutze den unixsocket/Domain-Socket /run/mysqld/mysqld.sock der auch beim Öffnen von MariaDB in der Syno angezeigt wird statt einer TCP Verbindung mit Port. Das ist schneller und benötigt keinen Haken bei MariaDB (TCP Verbindung aktivieren kann dann aus bleiben)
Dazu muss man einfach bei der Installation localhost eintragen ohne Portnummer.
Bin mir gerade nicht sicher ob man dazu das open_basedir um :/run/mysqld erweitern muss, läuft bei mir aber super so.
Grüße
DSMTuxUser
Hallo,
Danke für den Tipp, ich werd das bei Zeiten mal testen und im Artikel ausbessern.
Grüße
Andreas
Hallo Andreas,
wow das ging fix. Dank deiner Anleitung habe ich die Nextcloud und die Onwcloud per IPv6 zum Laufen gebracht. Zuerst habe ich die Nextcloud exakt nach deiner Anleitung aufgesetzt, dann das Setup auf die ownCloud übertragen und alles neu verknüpft mit den Zertifikaten. Jetzt kommen noch die Optimierungen. Ich will alles noch auf Unixsocket umstellen sowie Redis gleich als Session Handler haben. 🙂
Good Job Andreas :clap
Grüße
DSMTuxUser
Das ABER bei OnlyOffice und mobile Endgeräte…
Für iOS und Android jedenfalls, gibt es die App OnlyOffice Documents, mit der sich Office Dokumente an mobilen Endgeräten sehr gut bearbeiten lassen.
Bei mir in der Kombination mit Docker funktioniert das einwandfrei.
Hallo Ronny,
Aber du hast eine extra App dafür, Sinn wäre es ja, die Dokumente direkt in der Cloud bzw. im Browser zu bearbeiten. Bei Collabora geht das, auch bei Nextclouds Version von OnlyOffice, denn dort wurde die Sperre für Mobilgeräte herausgenommen.
Aber natürlich, wenn man OnlyOffice gegenüber Collabora bevorzugt ist der Umweg über die App eine Alternative.
Grüße,
Andreas