Nextcloud Installation auf einer Synology DiskStation mit DSM 7.0

Das neue DSM 7 ist da und auch hier ist die Nachfrage nach Nextcloud wieder sehr 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.

Vorbereitung

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 Allgemeine Einstellungen > HTTP-Backend-Server 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 7.4
  • phpMyAdmin (wird nur benötigt falls es Probleme mit der Datenbank gibt) (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.

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 2 Befehle ein, damit Nextcloud, bzw. der User des Webservers auch auf diesen zugreifen darf:

chown http:http /volume1/nextcloudData
chmod -R 777 /volume1/nextcloudData

PHP-Profil

Öffnet die Web Station und erstellt unter Skript-Spracheinstellungen ein neues Profil.

  1. Vergebt einen Namen und eine Beschreibung.
  2. Wählt PHP 7.4 aus.
  3. Aktiviert “PHP-Cache aktivieren”.
  4. Aktiviert “PHP open_basedir benutzerspezifisch anpassen” 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
  5. Aktiviert folgende Erweiterungen: bcmath, bz2, curl, ftp, gd, gmp, iconv, imagick, intl, mysqli, openssl, pdo_mysql, posix, sodium, ssh2, zip, zlib

Webserver-Timeout

Synology hat in DSM 7 ein allgemeines Timeout für den Nginx als Proxy-Server (der ist immer vorgeschaltet, auch wenn ihr Apache als Webserver nutzt) festgelegt. Das Timeout gilt allerdings nicht mehr, sobald man einen virtuellen Host verwendet. Wer meine bisherigen Anleitungen zu Nextcloud auf der Synology Diskstation kennt, der weiß, wo sich unter DSM 6 das Timeout setzen ließ. Das klappt aber unter DSM 7 nicht, da der Eintrag mit dem von Synology in Konflikt gerät.

  1. Verbindet euch per SSH (z.B. PuTTY) mit eurem NAS. Führt die Änderungen als root durch.
  2. Öffnet die Datei /var/packages/WebStation/target/misc/VirtualHost-nginx-mustache im Editor.
vi /var/packages/WebStation/target/misc/VirtualHost-nginx-mustache
  1. Fügt die Zeile proxy_read_timeout 3600s; im Block für Apache 2.2 bzw. Apache 2.4 unter include proxy.conf; ein. Führt die Änderung in jenem Block durch, der zur verwendeten Apache-Version passt. Ihr könnt die Zeile aber auch in beiden Blöcken einfügen.
  2. Speichert und schließt die Datei.
  3. Testet zuerst die Nginx-Konfiguration, startet dann den Nginx neu, wenn der Test positiv ausfällt und testet die Konfig danach erneut:
nginx -t
synosystemctl restart nginx
nginx -t
Proxy-Timeout für vHosts erhöhen
Proxy-Timeout für vHosts erhöhen

Das Timeout für den Proxy ist jetzt auch unter Verwendung von virtuellen Hosts erhöht. Jetzt kann es aber immer noch am Apache zum Timeout kommen. Das lässt sich, wie auch schon unter DSM 6 beheben:

  1. Erstellt (als root) die Datei /usr/local/etc/apache2X/sites-enabled/user.conf
vi /usr/local/etc/apache24/sites-enabled/user.conf
  1. Fügt die beiden Zeilen TimeOut 3600 und ProxyTimeout 3600 ein.
  2. Speichert und schließt die Datei.
  3. Startet den Apache neu.

Installation

Ladet die neueste Version von Nextcloud als .zip oder .tar hier herunter. Ladet das zip-File auf eure DiskStation hoch und extrahiere es in den /web Ordner.

Jetzt wäre der richtige Zeitpunkt den virtuellen Host anzulegen. Ihr könnt den vHost aber auch nach der Installation anlegen.
Wählt dazu in der Web Station Webdienstportal und legt mit Erstellen > Dienstportal > Virtueller Host einen neuen Eintrag an.

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

Ändert die Rechte des Nextcloud-Ordners. Erstellt dazu am besten ein Script (Textdatei mit .sh Endung) mit folgendem Inhalt irgendwo auf der DiskStation:

#!/bin/bash
chown -R http:http /volume1/web/Nextcloud/
chmod -R 777 /volume1/web/Nextcloud/

Um das Script als root auszuführen gebt sudo –i ein und drückt Enter. Gebt erneut euer Administratorpasswort ein. Führt das Script nun mit sh /volume1/PfadZumScript/Installationsberechtigung.sh aus. Anstelle des Scripts könnt ihr auch Zeile für Zeile in die Shell eingeben, das ist aber mühsam, da ihr die Rechte bei jedem Update wieder ändern müsst.

Fehlerhafte Datenbankabfrage

Das Setup von Nextcloud erzeugt automatisch Datenbank inklusive Tabellen und einem eigenen Nutzer. Dabei wird eine Syntax genutzt, die Probleme bei Synologys Version von MariaDB 10 verursacht. Damit die Installation richtig durchgeführt werden kann, müssen die problematischen Zeilen angepasst werden:

  1. Öffnet (mit PuTTY) die Datei /volumeX/web/Nextcloud/lib/private/Setup/MySQL.php
  2. Scrollt fast bis zum Ende und sucht folgende Zeile:
$this->dbPassword = $this->random->generate(30, ISecureRandom::CHAR_DIGITS . ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER);
  1. Entfernt “, ISecureRandom::CHAR_DIGITS . ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER“, das Ergebnis sieht dann so aus:
$this->dbPassword = $this->random->generate(30);
  1. Speichert und schließt die Datei.

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

Nextclud Hub Installation im Browser
Nextclud Hub Installation im Browser

Den Fehler könnt ihr einfach ignorieren, ihr seht ihn nur, wenn eure DiskStation keine 64bit-CPU aufweist. 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 Abschnitt “Datenbank” gebt Ihr den root-Benutzer von MariaDB und das Passwort an. Alternativ funktioniert jeder User, der das Recht hat, Datenbanken anzulegen. Der Benutzer wird nur für die Installation verwendet. Es wird ein eigener Benutzer angelegt, den Nextcloud für den Betrieb verwendet. Vergebt noch einen Namen für die Datenbank. Für die Datenbankdomain ist localhost voreingetragen, ihr müsst noch den Port ergänzen. MariaDB 10 hat in DSM 7 den Port 3306 und nicht wie früher 3307. Den Port könnt ihr in MariaDB 10 ändern.

Datenbankdetails
Datenbankdetails

Neu seit Nextcloud 18 ist die Option, empfohlene Apps zu installieren. Wollt Ihr die integrierte Collaboration-Lösung OnlyOffice nutzen, muss das die gleichnamige App installiert sein. Ihr könnt die Apps an dieser Stelle aber auslassen und OnlyOffice nachträglich installieren. Das macht Sinn, vorallem da ihr Talk und OnlyOffice nur auf DiskStations mit x86-CPU nutzen könnt. Die Apps sind sehr groß, braucht Ihr Sie nicht, spart euch den Speicherplatz und die Zeit und Installiert z.B. Calendar und Contacts im Anschluss selbst.

Empfohlene Apps
Empfohlene Apps

Klickt den Button “Installation abschließen” um das Setup abzuschließen. Nach einigen Augenblicken ist die Installation abgeschlossen und ihr solltet das Webinterface sehen.

Willkommenstour im Webinterface
Willkommenstour im Webinterface

Fehler vorbeugen

Vor der Installation musste das Installtionsscript für die Datenbank angepasst werden. Nextcloud prüft aber alle Dateien die zur Nextcloud-Installation gehören auf Veränderungen und gibt eine Warnmeldung aus. Das könnte auch beim Update stören. Öffnet also nochmals die Datei /volumeX/Nextcloud/lib/private/Setup/MySQL.php und macht die Änderungen rückgängig. Fügt dazu wieder die entfernten Befehlssegmente ein. Alternativ könnt ihr auch die Datei aus dem Nextcloud-Zip nehmen und rüberkopieren. Passt aber dann die Rechte wieder an.

OnlyOffice aktivieren

So viel zu “integriert”, selbst wenn ihr OnlyOffice bei der Einrichtung mitinstalliert habt, läuft noch gar nichts. Trotzdem ist die Integration ein Schritt nach vorne. Bisher musste OnlyOffice in einem Docker-Container aufgesetzt werden und Docker auf der DiskStation ist kein Spaß (die Synology-Version von Docker funktioniert wieder mal anders als die offizielle Version). Die integrierte Version von OnlyOffice macht Docker überflüssig. Das ändert aber nichts daran, das OnlyOffice immer noch eine x86-CPU voraussetzt. Ist in eurem NAS eine ARM-CPU verbaut, könnt ihr den Abschnitt überspringen.

Von offizieller Stelle nicht dokumentiert, muss noch eine weitere App installiert werden. Öffnet den Appstore indem ihr im Webinterface rechts, oben auf euren Account klickt und dort + Apps auswählt.

Einige Menüs sind versteckt
Einige Menüs sind versteckt

Wenn Ihr die empfohlenen Apps nicht installiert habt: Sucht nach die App ONLYOFFIC. Ihr findet sie im Bereicht “Büro & Text”. Ladet die App herunter und aktiviert sie. Sucht dann die App Community Document Server, ebenfalls unter “Büro & Text”. Ladet die App herunter und aktiviert sie.

Die App ONLYOFFICE
Die App ONLYOFFICE
Die App Community Document Server
Die App Community Document Server

Synology macht hier wieder mal Probleme. Eine Datei fehlt, aber mit ein paar extra Schritten bekommen wir auch das in den Griff.

  1. Ladet libstdc++6 für Debian hier herunter.
  2. Entpackt folgende Datei: data.tar\.\usr\lib\x86_64-linux-gnu\libstdc++.so.6.0.25
  3. Benennt die Datei in libstdc++.so.6 um.
  1. Ladet die Datei auf eure DiskStation.
  2. Kopiert die Datei mit PuTTY:
cp <PfadZurDatei> /volume1/web/nextcloud/apps/documentserver_community/3rdparty/onlyoffice/documentserver/server/FileConverter/bin
  1. Passt die Rechte und den Besitzer der Datei an. Der Besitzer muss http http sein. Nutzt die bei “Installation” angegebenen Befehle.
  1. Geht jetzt in den Adminbereich: Rechts, oben auf den Account klicken und Einstellungen. Im Navigationsbereich könnt ihr ONLYOFFICE auswählen. Kontrolliert ob die Einstellungen vorhanden sind. Unter “Serviceadresse der Dokumentenbearbeitung” muss die URL eurer Nextcloud eingetragen sein. Verwendet ihr https – was ich dringend empfehle – muss die URL der Domain entsprechen, auf die das SSL-Zertifikat ausgestellt ist.
Ist die URL eingetragen ist OnlyOffice einsatzbereit
Ist die URL eingetragen ist OnlyOffice einsatzbereit

Das war’s. Klickt ihr jetzt im Bereich “Dateien” auf ein Dokument öffnet sich OnlyOffice und ihr könnt es im Browser bearbeiten. Erscheint nur die Auswahl für einen Download, ist OnlyOffice nicht aktiv. Erscheint “Community document server is not supported for this instance, please setup and configure an external document server”, dann müsst ihr im Log nach der genauen Fehlermeldung suchen. Dazu müsst ihr im Adminbereich auf “Protokollierung” gehen. Steht dort “OCA\DocumentServer\Document\DocumentConversionException: sh: ./x2t: cannot execute binary file: Exec format error” dann hat eure DiskStation eine ARM-CPU und auf der läuft OnlyOffice nicht.

Nächste Schritte

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.

Warnungen im Adminbereich
Warnungen im Adminbereich

Im Adminbereich unter Übersicht werden mit ziemlicher Wahrscheinlichkeit einige Fehler angezeigt werden. Wie ihr Nextcloud optimiert und für den tatsächlichen Einsatz konfiguriert erfahrt ihr dann beim nächsten mal.

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 neue Auflage zu DSM 7 ist komplett überarbeitet.

Das Buch direkt beim Verlag

Related Posts

One thought on “Nextcloud Installation auf einer Synology DiskStation mit DSM 7.0

  1. Alternative zur obigen Anleitung:

    Ich betreibe seit 2-3 Jahren eine Nextcloud auf einer Synology 218+ über Docker. Ich habe mich dazu einfach über SSH in das Admin-Konto eingeloggt, eine `docker-compose.yml` mit folgendem Inhalt erstellt und abschließend alles per docker-compose (`sudo docker-compose pull` und `sudo docker-compose up -d`) gestartet – eigentlich super simpel. Alle Einstellungen findet man am jeweiligen Image auf Docker-Hub. Grundsätzlich sollte man das auch über die Docker-Oberfläche in DSM einrichten können.

    Den Dynamic DNS Name habe ich direkt im DSM eingebunden und dort auch konfiguriert, sodass Let’s Encrypt Zertifikate (HTTPS) dafür bezogen werden. Ich selbst nutze spdns.de

    Vorteile:
    * Man spart sich die umfangreiche Konfiguration in DSM
    * Man ist mit einer deutlich aktuelleren Version der Datenbank, von PHP und des Webservers unterwegs, als Synology diese anbietet
    * Keine Sicherheits- & Einrichtungswarnungen seitens Nextcloud
    * Das Nextcloud-Image integriert fast alles Wünschenswerte, wie CRON und OPCache

    Nachteile:
    * Man sollte ssh, docker und docker-compose bedienen können
    * Für Updates muss man sich über ssh einloggen, ggf. die `docker-compose.yml` Datei über vim editieren und docker-compose bedienen
    * ich bin mir nicht sicher, ob ein Backup der Diskstation die Docker Volumes sichert
    * Die von mir genutzten Images setzen eine X86 basierte Diskstation voraus. Für ARM basierte Diskstations müsste man andere Images suchen & verwenden

    docker-compose.yml:
    “`
    version: ‘2’

    services:

    nextcloud:
    image: hoellen/nextcloud:22.2
    restart: unless-stopped
    environment:
    – UID=1000
    – GID=1000
    – TZ=Europe/Berlin
    – DOMAIN=
    – DB_TYPE=mysql
    – DB_NAME=nextcloud
    – DB_USER=nextcloud
    – DB_PASSWORD=
    – DB_HOST=db
    volumes:
    – data:/data
    – config:/config
    – apps:/apps2
    – themes:/nextcloud/themes
    ports:
    – 8080:8888
    networks:
    – nextcloud
    depends_on:
    – db

    db:
    image: mariadb:10.7
    restart: unless-stopped
    #cotainer_name: nextcloud_db
    volumes:
    – db:/var/lib/mysql
    environment:
    – MYSQL_ROOT_PASSWORD=
    – MYSQL_DATABASE=nextcloud
    – MYSQL_USER=nextcloud
    – MYSQL_PASSWORD=
    networks:
    – nextcloud

    networks:
    nextcloud: {}

    volumes:
    apps:
    config:
    data:
    themes:
    db:
    “`

Schreibe einen Kommentar

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