Nextcloud Installation auf Synology

()

Nextcloud Installation und Bereitstellung auf Synology DiskStation.

Mit der Synology Diskstation kommen viele Pakete vorinstalliert, weitere zusätzliche Pakete können aus dem DSM Paket Manager installiert werden. Möchte man Nextcloud auf der Synology NAS haben, muss man derzeit noch manuell vorgehen. Hier wird beschrieben wie auf einer DS215 mit DSM 6 in wenigen schritten das Open Source Paket, Nextcloud 12 installiert werden kann. Das vorgehen sollte mit jeder Synology DS oder RS möglich sein.

So wird’s gemacht

Pre-Installation
Installation
CalDAV Integration
Absicherung und Konfiguration

Zur Vorbereitung sind einige Dienstpakete wie gewohnt aus dem DSM Paket-Zentrum zu installieren.

Synology DSM Paket-Zentrum

Pre-Installation

Die Pakete PHP 5.6 und PHP 7.0, Apache 2.4, phpMyAdmin, MariaDB und Web Station werden installiert.

Es wird der Terminal Zugang zur Synology DS benötigt, wie der SSH Daemon aktiviert wird, steht im Beitrag hier.

Um sich mit PuTTY gleich als root bei der Diskstation einloggen zu können, braucht es folgenden Befehl um root Zugang zu aktivieren. Oder man führt jeweils sudo aus.

$ sudo synouser -setpw root passwort

Download von Nextcloud und entpacken des ZIP-Archives mit anschließender Besitzer und rechte Vergabe. Die Document_Root ist hier /volume1/web/nextcloud.

$ cd /volume1/web
$ curl -O https://download.nextcloud.com/server/releases/latest.zip
7z x latest.zip
$ chown -R http:http nextcloud
$ chmod -R 0777 nextcloud

Es muss ein MySQL root-Passwort vergeben werden.

$ mysql -u root -ppassword
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

Das MySQL-root Passwort kann natürlich auch aus dem DSM geändert werden.

MariaDB Passwort zurücksetzen

Nun wird die DSM Web Station geöffnet um die Webserver Konfiguration und ein Virtueller Host zu erstellen.

Synology DSM Web Station

Web Station Allgemeine Einstellungen

Synology Web Station Allgemeine Einstellungen

Web Station PHP-Einstellungen. Im Feld PHP open_basedir muss none stehen.

Synology DSM Web Station PHP-Einstellungen

Web Station Virtueller Host erstellen.

Installation

Nun kann im Bowser die URL geöffnet werden https://ip_adresse_od_hostname/nextcloud

Nextcloud Administrator-Konto anlegen

Das Administrator-Konto kann ein beliebiger Name sein, dieser steht nicht im Zusammenhang mit den Synology Benutzer. Es wird MySQL/MariaDB gewählt, das MySQL-root Kennwort ist das zuvor vergebene Passwort.

Nach ca. 2 min. ist die Installation abschlossen und es erscheint die Intro-Seite.

Soll nun unsere eigene Nextcloud aus dem Internet erreichbar sein, muss eine statische NAT Port Weiterleitung zur internen Synology Diskstation auf der Firewall gemacht werden. Ferner muss die unter nextcloud/config liegende Datei config.php angepasst werden. Im array wird eine weitere Zeile mit unserem FQDN hinzugefügt, dieser zuvor in der DNS Zone foo.io eingetragen wurde.

<?php
$CONFIG = array (
  'instanceid' => 'lckfp7we8ddv',
  'passwordsalt' => '&9p40M+uM3cZBPrWKwV)EEwSoPtvJ',
  'secret' => 'klkajd8&DF3A.$=o?pqHAR4@+LXD6n-LaQhbfgt&/H',
  'trusted_domains' =>
  array (
    0 => '123.123.123.123',
    1 => 'nextcloud.foo.io',
  ),
  'datadirectory' => '/volume1/web/nextcloud/data',
  'overwrite.cli.url' => 'https://123.123.123.123/nextcloud',
  'dbtype' => 'mysql',
  'version' => '13.0.0.14',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'oc_admin',
  'dbpassword' => 'LeG2iRzcvc1XT8mpoGntS18GeYXGi3',
  'installed' => true,
  'mail_smtpmode' => 'smtp',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_from_address' => 'noreply',
  'mail_domain' => 'foo.io',
  'mail_smtphost' => 'smtp.mailer.io',
  'mail_smtpport' => '25',
  'maintenance' => false,
);

CalDAV Integration

Mit CalDAV Synchronizer for Outlook ist es möglich den Outlook Kalender, das Adressbuch und die Aufgaben einfach zu synchronisieren, damit ist jeder Desktop und Mobile Client über die private Nextcloud integriert.

Das freie Outlook Plugin von der Fachhochschule Technikum Wien, das zwischen Outlook und CalDAV Server synchronisiert, unterstützt die Outlook-Versionen 2019, 2016, 2013, 2010 und 2007. Der Download gibt es auf Github und bei Sourceforge.

Absicherung und Konfiguration

Zur Absicherung der Synology DS die aus dem Internet erreichbar ist, sollten die Zugriffsrechte eingeschränkt werden, mit folgendem chmod command:

$ cd /volume1/web
$ chmod -R o-w nextcloud

Desweiteren sollte HTTPS verwendet werden, Nextcloud empfiehlt folgende Einstellung an der Apache Webserver Konfiguration vorzunehmen:

$ vi /usr/local/etc/apache24/sites-enabled/httpd-vhost.conf

Hierdurch wird der Aufruf der Webseite von http auf https (SSL) umgeleitet, in der Virtuellen Host Konfiguration unter ServerName hinzufügen:

<VirtualHost *:80 *:443>
   ServerName nextcloud.foo.io
   Redirect permanent / https://nextcloud.foo.io/
</VirtualHost>

Damit beim versuch eine HTTP Verbindung aufzubauen diese abgewiesen wird, kann das Module mod_headers.c hinzugefügt  werden.

<VirtualHost *:80 *:443>
    ServerName nextcloud
    SetEnv HOST nextcloud
    DocumentRoot "/volume1/web/nextcloud"
    <IfModule dir_module>
        DirectoryIndex  index.html index.htm index.cgi index.php index.php5
    </IfModule>
    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>
    <Directory "/volume1/web/nextcloud">
        Options MultiViews FollowSymLinks ExecCGI
        AllowOverride All
        <IfModule authz_core_module>
            Require all granted
        </IfModule>
    </Directory>
</VirtualHost>

Den Suchmachinen Crawler soll mitgeteilt werden, das unsere Nextcloud Webseite nicht indiziert werden soll. Die Textdatei robots.txt kommt dabei in die Document Root, im Verzeichnis /volume1/web/nextcloud zu stehen.

cat << EOF > robots.txt
User-agent: *
Disallow: /
EOF

Mit  Copy  Paste die Textdatei robots.txt erstellen.

Zur Performance Optimierung kann der PHP opcache konfiguriert werden. Die Werte wie folgt in die PHP Konfiguration user-settungs.ini hinzufügen:

cat << EOF >> /volume1/@appstore/PHP5.6/usr/local/etc/php56/conf.d/user-settings.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
EOF

Durch   Copy Paste in der Datei user-settings.ini anfügen.

Nun muss die Synology DS nur noch neu gestartet werden damit die Konfiguration aktiv ist.

Anhang

Mit Apache 2.4 und PHP 7 läuft Nextcloud einiges performanter, daher empfiehlt sich die Web Station für den Virtual Host von Nextcloud mit den aktuellen Web Services zu betreiben.

Synology Virtual Host für Nextcloud

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung / 5. Anzahl Bewertungen:

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

19 Gedanken zu „Nextcloud Installation auf Synology“

  1. Bei mir meldet Nextcloud Hub (18.0) einige fehlende Module wie bspw. imagick in PHP 7.3, die ich zusätzlich installieren müsste, weil Synology diese nicht bereit stellt. Nun überlege ich alternativ eine Installation via Docker vorzunehmen. Wäre das die einfachere und bessere Variante?

    1. Besser nicht, aber einfacher, es gibt ein container:
      docker pull nextcloud
      Mit suchen nach synology docker open rechts hier im blog gelangst du zum entsprechenden post.

  2. Hallo,

    vielen Dank für die tolle Anleitung. Hat soweit auch gut geklappt, allerdings kommt bei mir eine 504 Timeout Meldung.
    Scheinbar läuft die Installation aber im Hintergrund weiter.

    Ich habe festgestellt, dass man nach ein paar Minuten – trotz 504 Meldung – in der config.php einfach die Zeile:
    'installed' => true,
    eintragen kann, danach dann die Seite nur noch aktualisieren muss und es folgt die normale Login-Seite.

    Vielleicht wars ja auch nur Glück, aber es hat bei mir geklappt. :)

    Cheers
    Ralf

  3. Salü Don,
    ich habe ein Problem beim Anpassen der Apache Config. Nach jedem Neustart der Diskstation ist das File wieder im Originalzustand. Somit bleibt die Fehlermeldung „Der „Strict-Transport-Security“ HTTP-Header ist nicht auf mindestens „15552000“ Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren Sicherheitshinweisen erläutert ist.“ bestehen. Die Apache Config beginnt bei mir so: “
    ServerName nextcloud
    SetEnv HOST nextcloud
    DocumentRoot „/volume2/web/nextcloud“

    DirectoryIndex index.html index.htm index.cgi index.php index.php5

    Options MultiViews FollowSymLinks ExecCGI
    AllowOverride All
    .
    .
    .
    .“ Jetzt weiss ich nicht, wo ich die Ergänzungen hinschreiben soll – also in welche zeile? Weisst du da weiter?
    LG Christoph – DS918+, DSM 6.1.4-15217 Update 5

    1. Sorry da fehlt etwas im code – nun der originale:

      ServerName nextcloud
      SetEnv HOST nextcloud
      DocumentRoot „/volume2/web/nextcloud“

      DirectoryIndex index.html index.htm index.cgi index.php index.php5

      Options MultiViews FollowSymLinks ExecCGI
      AllowOverride All

      Require all granted

      SetHandler „proxy:unix:/run/php-fpm/php56-fpm.sock|fcgi://localhost“

      ErrorDocument 400 /_webstation_/400.html
      ErrorDocument 401 /_webstation_/401.html
      ErrorDocument 402 /_webstation_/402.html
      ErrorDocument 403 /_webstation_/403.html
      ErrorDocument 404 /_webstation_/404.html
      ErrorDocument 405 /_webstation_/405.html
      ErrorDocument 406 /_webstation_/406.html
      ErrorDocument 407 /_webstation_/407.html
      ErrorDocument 408 /_webstation_/408.html
      ErrorDocument 500 /_webstation_/500.html
      ErrorDocument 501 /_webstation_/501.html
      ErrorDocument 502 /_webstation_/502.html
      ErrorDocument 503 /_webstation_/503.html
      ErrorDocument 504 /_webstation_/504.html
      ErrorDocument 505 /_webstation_/505.html

          1. Habe auch ein DSM 6.1.4-15217 Update 5, allerdings auf einer RS816 mit Web Station Paket 2.0.1-0111 und Apache 2.4 2.4.29-0011 und nextcloud 12.0.4. Allerdings habe ich das Problem mit HSTS nicht und was ich auch einstelle bekomme es auch nicht.

            Wenn man sich auf der Kommandozeile mit netstat die offenen Ports ansieht, stellt man fest, dass überall der nginx zuständig ist. Es scheint, als läuft der httpd24 nur auf localhost:915 und gar nicht so, wie es die sites-enabled/httpd-vhost.conf vorsieht. Und auch bei mir sind jegliche Änderungen in sites-enabled/ nutzlos, jeder Neustart des Apache 2.4 über die GUI (package stop/start oder DSM reboot) schreibt die httpd_vhost.conf wieder so mit defaults wie im GUI der Web Station initial erzeugt.

            Ich habe ganz stark das Gefühl, dass sämtliche Doku/Infos, die man findet wie man die Web Station auf der Kommandozeile beeinflussen kann, obsolet sind – leider.

  4. Vielen Dank für die sehr gute Anleitung. Leider scheitere ich beim Setup mit folgender Fehlermeldung:

    Error while trying to create admin user: Failed to connect to the database: An exception occured in driver:
    SQLSTATE[HY000][2002] No such file or directory

    Hast Du eine Idee, wie man diesem Fehler auf die Spur kommen kann?

    Viele Grüße
    Thomas

          1. Statt „localhost“ für die MariaDB 10 folgende Werte für Server-Adresse und Port angeben:
            127.0.0.1:3307

            In cofig.php treten diese Werte dann unter ‚dbhost‘ auf.

            Ich hoffe, das hilft euch.

          2. Danke Thomas, das hat geholfen!

            Nextcloud läuft jetzt auf meiner Diskstation mit DSM 6.1.3-15152 Update 4, Apache HTTP Server 2.2, PHP 5.6, MariaDB 10 und phpMyAdmin. Hoffentlich hilft es auch noch weiteren Leuten.

  5. Danke für diese Anleitung. Habe aber noch eine Frage zu den Rechten. Diese werden in dieser Anleitung bei der Installationsvorbereitung durchweg auf 0777 gesetzt. Die Installationsroutine scheint das jedoch zum Abschluß der Installation nicht zu ändern. Kannst Du zu diesem Thema noch ein paar Sätze schreiben ? Danke im Voraus.

Schreibe einen Kommentar

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