Nextcloud auf Synology DSM 7.2 installieren
In diesem Artikel erkläre ich Euch, wie Ihr Nextcloud, in der aktuellsten Version 28 auf Eurer Synology NAS mit DSM 7.2 installieren könnt. Die Installation bietet die grösste Vielfalt an Konfigurationsmöglichkeiten, da alle Komponenten frei konfiguriert werden können, und später, falls nötig, individuel auf Eure wachsenden Bedürfnisse angepasst werden können.. Es gibt zwar eine Docker Installation für Nextcloud, ich finde aber, dass die Synology, je nach Model zu schwach dafür ist, vor allem wenn noch anderer Docker Container darauf laufen.
Die Konfiguration einer eigenen Nextcloud Instanz, welche zudem aus dem Netz, und im LAN erreichbar sein soll, benötigt einiges an Konfiguration und Einstellungen. Auch müssen die Clients, bzw Eure Smartphones und Laptops DNS seitig leicht angepasst werden, da bestimmte Router keine NAT-Reflection können und Domainanfragen aus dem LAN an Eure eigene Domain ins leere laufen. Warum das so ist, würde hier den Rahmen sprengen, mit entsprechenden Firewalls lässt sich sowas lösen, jedoch haben das nur die wenigstens. Swisscom Router können NAT-Loopback / NAT Reflection, Sunrise und UPC Router hingegen nicht. Deshalb beinhaltet diese Einrichtung auch die Nutzung eines internen eigenen DNS Servers, der dieses Problem umgeht.
Vorbereitungen um Nextcloud auf Eurer Synology mit DSM 7.2 zu installieren
Bevor wir anfangen können, kontrolliert ob die Web Station läuft bzw. installiert sind, wenn Ihr das noch nicht getan habt. Außerdem benötigt ihr SSH-Zugriff auf Eure NAS (auf Windows könnt Ihr das z.B. mit Putty tun).
Stellt sicher dass SSH unter Terminal / SNMP aktiviert ist und dass unter dem Tab Sicherheit der SSH Port 22 freigeben ist:
Installiert folgende Pakete im Paket Zentrum:
- PHP 8.0 oder höher
- Apache (2.4)
- MariaDB 10
- phpmyadmin
- DNS Server (optional)
Öffnet MariaDB 10 im Packetzentrum der Synology und setzt den Haken bei TCP/IP-Verbindung aktivieren.
DynDNS Adresse einrichten und Portweiterleitung erstellen
Als nächstes müssen wir uns eine DynDNS Domain erstellen und eine Adresse festlegen, mit die Nextcloud erreichbar sein soll. Wählt dafür einen aussagekräftigen Namen. Wie das geht, erfahrt ihr hier zum Beispiel in diesem Beitrag:
Dynamischen DNS Eintrag erstellen
Eine DynDNS Addresse lässt sich auch auf der Synology direkt erstellen. Dafür müssen die die von Synology vorgegebenen Top-Level-Domains verwendet werden.
Eine Anleitung dazu findet ihr hier.
Portweiterleitung erstellen
Damit Ihr die Nextcloud aus dem Internet erreichen könnt, muss die Anfrage direkt an Eure Synology NAS geschickt werden, und zwar an die Ports 443 und 80. Diese müssen auf die IP Adresse Eurer Synology zeigen. Wie das geht erfahrt Ihr ebenso in einer unserer Beiträge:
DNS Server erstellen (optional)
Dies dienst dazu dass eure Domain bzw. eure Nextcloud Instanz auch innerhalb eures Netzwerks erreichbar ist. Bestimmte Router generieren Probleme, falls ihr auf eine Domain zugreifen wollt, die sich im eigenen Netzwerk befindet. Im bestenfall können wir somit mit der Domain unsere Nextcloud auch im Heimnetz erreichen. In dem verlinkten Beitrag, erfahrt Ihr wie Ihr einen DNS Server erstellt:
DNS Server auf Synology NAS erstellen
Könnt ihr in der Anleitung später eurer Domain nicht aufrufen, und es kommt "Webseite nicht erreichbar", berherrscht eurer Router Hairpinning nicht, und es muss ein DNS Server betrieben werden.
Freigegebener Ordner in DSM 7.2 auf der Synology NAS erstellen
Legt einen neuen geteilten Ordner an, der als Ablageplatz für die Daten dient. Standardmäßig werden die Daten von Nextcloud im data-Ordner unter /web/Nextcloud abgelegt. Allerdings empfiehlt Nextcloud aus Gründen der Sicherheit, den Speicherort außerhalb des /web-Ordners zu positionieren. Dies erleichtert zudem eine zukünftige Aktualisierung von Nextcloud. Keine andere User sollte Zugang zu dem geteilten Ordner haben und als Administrator solltet Ihr dort nur Änderungen durchführen, die Eure Nextcloud-Installation betrifft. Solche Änderungen sollten jedoch als root über Putty durchgeführt werden, da sonst die Besitzverhältnisse geändert werden und Nextcloud keinen Zugriff mehr auf den Ordner oder die Dateien hat. Den geteilten Ordner erstellt man über DSM > Systemsteuerung > Geteilter Ordner, da DSM einen über Putty erstellten Ordner nicht erkennt und man diesen beispielsweise nicht über Hyper Backup sichern kann.
Den data-Ordner in der DS nutzen
Generell sollte nur Nextcloud Daten im data-Ordner ändern können. Würdet Ihr Dateien über die DS bzw. nicht über die Cloud hinzufügen oder Ändern würde Nextcloud das nicht mitbekommen da sie die Daten nicht lesen kann aufgrund der der Rechteverwaltung von Linux/Unix Systemen. 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.
Erstellt einen neuen Freigegebenen Order auf Eurer Synology. Nennt den Ordner z.B nextclouddata. Eine Verschlüsselung darf nicht aktiviert werden, den ansonsten kann Nextcloud die Daten nicht mehr lesen. Ein Verschlüsselung sollte nur direkt über die Nextcloud aktiviert werden. Das werden wir mal in einem weiteren Beitrag in einiger Zeit anschauen.
Verbindet euch via SSH auf Linux Rechnern, oder PuTTY für Windows mit eurer DS. Loggt euch als Administrator ein, indem ihr euer Login und euer Passwort eingebt. 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 -R http:http /volume1/nextclouddata
chmod -R 770 /volume1/nextclouddata
Nextcloud herunterladen
Ladet euch das Nextcloud Packet hier herrunter: https://nextcloud.com/install/#instructions-server
Nehmt hier das Archive und klickt auf Get Zip File, ladet es Euch auf Eure Synology herrunter und packet es auf in den Web Ordner Eurer Synology.
Danach wird das ganze Archive in einen neuen Ordner nextcloud entpackt. Entpackt den Inhalt des neu erstellten Ordners in den Basis Nextcloud Ordner. Alle einzelnen Daten müssen danach im im Pfad web/nextcloud sein!
Loggt euch nochmals mit SSH oder Putty ein und gebt als sudo folgende Befehle ein:
chown -R http:http /volume1/web/nextcloud/
chmod -R 750 /volume1/web/nextcloud/
Das setzt die Berechtigungen so, damit die Installation möglich ist, und der Webserver auf die Daten zugreifen kann.
PHP-Profil für Nextcloud erstellen
Ich empfehle die Verwendung eines virtuellen Hosts (DSM 7.1) bzw eines Webdienstes (DSM 7.2) 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. Ausserdem ist es die Vorrausetzung dafür, dass Ihr Euren Dienst aus dem Internet erreichen könnt.
Öffnet die Web Station und erstellt unter Skript-Spracheinstellungen ein neues Profil.
- Vergebt einen Namen und eine Beschreibung zum Beispiel Nextcloud PHP-Profil
- Wählt PHP 8.0, 8.1 oder 8.2 aus jenachdem was ihr installiert habt, aus.
- Aktiviert “PHP-Cache aktivieren”.
- Aktiviert “PHP open_basedir benutzerspezifisch anpassen” und tragt /tmp:/var/services/tmp:/var/services/web:/volume1/nextclouddata ein
- Geht in die Erweiterungen und aktiviert folgende Erweiterungen: bcmath, bz2, curl, ftp, gd, gmp, iconv, imagick, intl, mysqli, openssl, pdo_mysql, posix, sodium, ssh2, sysvsem, zip, zlib
- Belasst die FPM-Einstellungen so wie sie sind.
- Als nächstes müssen wir die Kerneinstellungen festlegen damit Nextcloud optimal funktionieren kann. Sucht im Suchfeld nach den angegeben Einstellungen, und passt die Einstellungen entsprechend an:
memory_limit= 1024M
upload_max_filesize= 4G (Die maximale Grösse der Dateien die hochgeladen werden können)
post_max_size= 128M
opcache.enable= 1
apc.enable_cli = 1
opcache.enable_cli= 1
opcache.interned_strings_buffer= 64
opcache.max_accelerated_files= 32531
opcache.memory_consumption= 512
opcache.save_comments= 1
opcache.revalidate_freq= 240
Klickt auf Speichern und beendet den PHP Einrichtungsassistenten.
Stellt sicher das im Reiter Webdienst beim Standardserver Apache Ausgewählt ist, und des PHP8.0 Default Profile
Webdienst erstellen
Jetzt wäre der Zeitpunkt den Webserver zu konfigurieren.
Wählt dazu in der Web Station Webdienst und geht oben auf Erstellen. Nehmt die Einstellungen wie folgt vor. Wählt als Dienst PHP8.0 oder je nachdem was ihr installiert habt, und wählt das zuvor erstellte PHP Profil aus.
Als nächstes legt weitere Einstellungen wie folgt fest. Nehmt den Apache Webserver und setzt das Timeout auf 600 Sekunden. Das stellt sicher, das längerer Installationen später nicht abbrechen.
Wählt als Dokument-Root den Nextcloud-Ordner /web/nextcloud.
Webportal erstellen
Geht dazu auf den Reiter Webportal und legt die Einstellungen wie folgt fest:
- Wählt den Dienst, den wir vorher als Webdienst konfiguriert haben, also wieder Nextcloud.
- Tragt den Hostnamen ein, unter dem Ihr Eure Nextcloud erreichen wollt. (Der Hostname muss existieren und bei DynuDNS eingetragen sein und auf Eure Öffentliche IP verweisen. Die Portweiterleitung muss auf Eure Synology zeigen.
- Wählt die Ports, für die der virtuelle Host gilt (im Normalfall 80/443).
- 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. Ein gültiges SSL Zertifikat erstellen wir nach der Installation von Nextcloud
Datenbank für Nextcloud erstellen
Verwendet aus Sicherheitsgründen einen eigenen Benutzer für die Nextcloud-Datenbank. Dieser sollte nur Zugriff auf die Nextcloud-Datenbank haben und nicht auf andere Datenbanken oder gar volle Admin-Rechte.
Öffnet phpMyAdmin auf Eurer Diskstationcund meldet Euch als root mit Eurem Synology Passwort an.
Anschliessend befinden wir uns im Datenbankmenü von phpmyadmin. Wir müssen nun einen Benutzer und eine Datenbank für unsere Nextcloud erstellen. Bitte beachtet dass alle Schritte korrekt ausgeführt werden, ansonsten bekommen wir später Probleme bei der Installation von Nextcloud.
Anschliessen legen wir einen Benutzernamen fest, z.B nextcloudadmin, wählt als nächstes beim Hostname Lokal aus und dahinter muss localhost stehen. Legt bitte ein sicheres Passwort fest, am besten mit einem Passwortgenerator. Weiter unten gebt Ihr dem Benutzer die Globalen Rechte. Es müssen alle Haken gesetzt werden. Anschliessen scrollt weiter unten und klickt auf OK. Ist auf dem Screenshot hier nicht zu sehen.
Geht als nächstes auf den Reiter Datenbank, hier erstellen wir nun eine Datenbank für unsere Nextcloud Installation. Wählt einen entsprechenden Namen, z.B nextclouddatenbank, wählt utf8_general_ci und bestätigt anschliessend mit Anlegen.
Als nächstes müssen wir die Datenbank anpassen. Geht auf Benutzerkonten, wählt Datenbank und danach unsere erstellen nextclouddatenbank. Drückt auf OK
Hier geben wir dem Benuter nextcloudadmin auf unserem localhost nun alle Berechtigungen für unsere nextclouddatenbank. Wählt hier einfach Alle auswählen, und bestätigt mit OK
Die Arbeiten in phpmyadmin sind nun abgeschlossen. Der Benutzer ist angelegt, und die Datenbank für Nextcloud entsprechen konfiguriert. Als nächstes können wir mit der Installation weiterfahren.
Installationsassistenten der Nextcloud 27 ausführen
Nun geht es darum die Nextcloud 27 auf Eurer Synology mit DSM 7.2 zu installieren. Öffnet Nextcloud im Browser. Verwendet dabei die Adresse, die ihr für den virtuellen Host angegeben habt (z.b. testcloud.yourdevice.ch), habt ihr keinen virtuellen Host konfiguriert, oder den DNS Server noch nicht entsprechend eingerichtet, verwendet die IP Adresse der Diskstation, gefolgt vom Nextcloud-Verzeichnis (z.b. 192.168.x.x/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üssen wir diese später in der config.php der Nextcloud Instanz 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.
Wir benutzten den Domain Namen den wir für unsere Synology erstellt haben. Dieser muss im DNS Server hinterlegt sein, ansonsten können wir die Nextcloud nur mit IP/nextcloud erreichen.
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 /volume1/web/nextcloud/data eingetragen, gebt den Pfad zum freigegebenen Ordner an, den ihr vorhin angelegt habt. Das wäre /volume1/nextclouddata
Im Abschnitt “Datenbank” tragt ihr den Datenbank-Benutzer sowie den Datenbank-Namen ein, die wir im vorherigen Abschnitt angelegt habt. Für die Datenbankdomain ist “localhost” voreingetragen. Falls Nextcloud beim bestätigen meckert dass die Datenbank nicht erreichbar ist, gebt localhost:3306 ein. Klickt danach auf Installieren.
Solltet Ihr plötzlich vor einem Bildschirm stehen der Euch sagt, Seite nicht auffindbar, dann schaut Euch oben den Browserlink an, es kann sein, dass Ihr falsch weiter geleitet werdet. In diesemfall setzt die IP Adresse der NAS oder Eure Domain vor den Link der Euch der Browser mit nicht erreichbar anzeigt. Danach sollte es weitergehen. Wählt im nächsten Schritt empfohlene Apps Installieren aus.
Danach sollte die Installation erfolgreich abgeschlossen sein. Fertig sind wir aber leider immer noch nicht 🙂
HTTPS Aktivieren / Cache Einstellen / Weitere Nextcloud Optimierungen
Nach Installation befindet Ihr Euch auf dem Dashboard Eurer Nextcloud. Rechts oben seht Ihr einen Buchstaben, Eures Namenskürzel, klickt darauf und geht anschliessend auf die Administratoreneinstellungen. Nextcloud wird Euch nun anzeigen was noch nicht funtkioniert. Darum kümmern wir uns jetzt. Die "/well-known Probleme verschwinden, sobald wir die Seite über https und dem korrekten Zertifikat anbrowsen.
HTTPS aktivieren / SSL Zertifikat abrufen
Damit wir die Nextcloud über eine gesicherte Verbindung über das Internet erreichen können müssen wir uns vorher uns noch ein SSL Zertifikat erstellen. Das können wir bequem über sie Diskstation erledigen. Die Vorraussetzung dafür ist, dass die Portweiterleitungen in Eurem Router korrekt eingerichtet worden sind.
Geht in die Einstellungen Euer Synology NAS, wählt das Menü Sicherheit und dann auf Zertifikat. Hier erstellen wir uns mit Hinzufügen ein neues SSL Zertifikat. Wählt den ersten Punkt und danach auf Weiter.
Wählt auf der nächsten Seite Zertifikat von LetsEncrypt abrufen aus und klickt auf weiter.
Danach wählt Ihr hier nun Euren Namen aus, den Ihr bei DynuDNS und im Webportal der Diskstation festgelegt haben. Klickt danach auf Fertig. Euer SSL Zertifikat wird nun erstellt. Solltet Ihr hier von der DS einen Fehler bekommen, habt Ihr entweder bei der Portweiterleitung einen Fehler gemacht, oder einem Tippfehler im Webportal beim Hostnamen. Überprüft Eure Einstellungen hier dann bitte nochmals genau.
Jetzt weisen wir dass Zertifikat noch unserem Webportal zu. Wählt das Zertifikat aus, und klickt auf Einstellungen. Weisst das Zertifikat Eurem WebPortal hinzu:
Bravo! Mit dem SSL Zertifikat sind wir nun auch bereits fertig! Ihr könnt nun die Seite über die Domain direkt anbrowsen und müsst nun nicht mehr die IP Adresse der Synology verwenden. Ausserdem ist die Verbindung nun direkt verschlüsselt.
Cache einstellen / Telefonregion und weitere Optimierungen
Nun kommt wieder etwas Kommandozeile zum Einsatz. Öffnet Eure Konsole und loggt Euch wieder auf der Syno via SSH ein. Erhaltet Rootrechte mit sudo -i
Wir bearbeiten nun die Konfigurationsdatei der Nextcloud. Das geht einfach mit diesem Befehl
vi /volume1/nextcloud/config/config.php
startet den Bearbeitungsmodus mit Alt+i
Wir fügen nun unsere Domain hinzu, konfigurieren einen einfachen Cache, fügen die Telefonregion hinzu. Mehr brauchen wir erstmal nicht. Tätigt die Einstellungen wie im Screenshot. Lasst alles andere wie es ist!
Testcloud Eintrag ist auf Eure Domain anzupassen
Hier die Einstellungen zum kopieren:
'memcache.local' => '\OC\Memcache\APCu',
'default_phone_region' => 'CH',
'default_locale' => 'de_CH',
Achtet auf die korrekten Einträge unter Array, wie beschrieben muss Eure Domain, und Eure IP Adresse der NAS eingetragen sein. Das unterscheidet sich, jenachdem wie Ihr die Installation von Nextcloud durchgeführt habt.
Beachtet das die Zeichenabstände und die Kommas alle da sind!
Beendet den Bearbeitungsmodus mit der ESC Taste, speichert ab indem Ihr :w eingebt und beendet anschliessend mit :q
Testet nun Eure Nextcloud, geht in die Admininstratoren-Einstellungen und ladet die Seite neu. Habt Ihr einen Serverfehler, habt Ihr was in der config.php falsch gemacht. Überprüft die Einstellungen!
Email Einstellungen
Ihr seht dass Eure Nextcloud noch meckert, dass keine Email Einstellungen hinterlegt sind. Darum kümmern wir uns jetzt. Geht in Euren Nextcloud Einstellungen auf die Grundeinstellungen, scrollt nach unten zum Email Server
Gebt hier nun einem Email-Server ein den Ihr verwendet. Das kann eine Hotmail, G-Mail (hoffentlich nicht) oder Eure bluewin/swisscom Adresse sein. Welche Server Einstellungen verwendet werden, hängt von Eurem Email-Provider ab. In der Regel findet Ihr die, wenn Ihr nach den Mail-Einstellungen Eures Providers sucht. Aktiviert SSL/TLS , gebt Eure Mail Adresse ein, danach Servername und Port und unten Haken bei Identifzierung erforderlich setzen und Zugangsdaten eingeben.
Sendet eine Testmail mit E-Mail senden. Sollte anschliessend erfolgreich dastehen, und Ihr die Email bekommen haben, funktioniert alles. Bei manchmen Providern muss SSL/TLS deaktiviert werden. Fall das auch nicht geht, versucht es mit 25 anstatt dem Port 587
Wenn das geklappt hat, sind wir nun auch endlich fertig! Ruft Eure Administratoreneinstellungen auf, und wenn Ihr alles richtig gemacht habt, dann werdet Ihr mit einem schönen grünen Haken belohnt!
Weitere Einstellungen
Damit Ihr aus dem LAN-Netzwerk via Domainname, und nicht der IP zugreifen könnt. Muss jedes Gerät, welches Nextcloud mit der Domain nutzen möchte, den DNS Server Eurer Synology verwenden. Habt Ihr den DNS Eintrag in den DHCP Einstellungen Eures Routers tätigen können, sind die manuellen Einstellungen jeder Geräte nicht notwendig. Lest dazu nochmals unseren Beitrag über die DNS Konfiguration auf einer Synology NAS.
Gebt dazu die IP Adresse der Synology auf dem jeweiligen Gerät ein, welches Nextcloud mit der Domain Nutzen soll.
Android --> WLAN Einstellungen
Linux --> WLAN Einstellungen --> IPv4 --> andere DNS-Server verwenden
Windows --> Adaptereinstellungen --> IPv4 --> Einstellungen --> DNS
Hier unten Use the Follwing DNS Server mit Eurem DNS Ersetzen, und als zweites zum Beispiel 1.1.1.1 verwenden. Bitte nehmt diese DNS Server nicht als Beispiel, ich hatte kein Windows zur Hand und hab ein Screenshot aus dem Internet geklaut. Mir würde es niemals einfallen 8.8.8.8 zu verwenden 🙂 Bitte tragt als erstes also schön die IP Adresse Eurer Synology ein.
Es gibt noch weitere Einstellungen und Optimierungen, z.B einen Redis Cache einzubauen, das wird aber in der Regel erst bei grösseren Instanzen benötigt, und verhindert das Datein überschrieben werden, wenn Änderungen daran geschehen. Somit wird verhindert dass 2 Personen, die an Freigegeben Dateien Arbeiten, irgendwas ausversehen überschreiben und die Änderungen verloren gehen, bzw die Datei unbrauchbar wird weil beim anderen Benutzer beim Speichern etwas abstürzt. Das sind aber Dinge, in denen wir uns mal in einem weiteren Beitrag kümmern können.
Mitlerweile seid Ihr bestimmt total am Ende, aber Ihr habt sicher einiges gelernt im Umgang mit Eurem Netzwerk, habt einige PHP Einstellungen kennen gelernt und habt nun stolz eine eigene Nextcloud 27 auf Eurer Synology NAS mit DSM 7.2 installieren können. Bitte beachtet, dass die Synology's nicht dafür gemacht worden sind, Nextcloud 100% fehlerfrei laufen zu lassen, deshalb kann es sein, das hin und wieder mal Fehler auftreten. Gröbere Probleme habe ich aber noch nicht entdeckt.
Ich hoffe der Beitrag hat Euch gefallen, habt Ihr fragen, stellt sie in die Kommentare!