Nextcloud 14 auf Ubuntu 18.04 LTS Server installieren – Schritt für Schritt

31 Kommentare Autor: Jürgen (jdo)

Ein Bekannter hätte gerne für seinen kleinen Betrieb mit mehreren Außenstellen eine Cloud-Lösung. Also habe ich ihm meine Nextcloud gezeigt und eben demonstriert, was sich damit anstellen lässt. Das hat ihm sehr gut gefallen und er hat sich für so eine Nextcloud-Installation entschieden. Sie liegt wie meine auf einem VPS von Contabo. Da ich die Gelegenheit hatte, die Installation von Grund auf durchzuführen, kann ich Schritt für Schritt beschreiben, wie sich Nextcloud 14 auf Ubuntu 18.04 Server installieren lässt. Eine Einrichtung unter Debian oder einem Raspberry Pi sollte relativ ähnlich funktionieren.

Hinweis: Die Installationsanleitung funktioniert für Nextcloud 15 auch noch, habe ich selbst ausprobiert!

Als Webserver habe ich ich für Apache entschieden. Das hat den einfachen Grund, dass ich mich damit besser auskenne als mit Nginx und soll das Konkurrenzprodukt keinesfalls schmälern. Da es aber eine produktive Nextcloud wird, will ich die Komponenten einsetzen, mit denen ich die meiste Erfahrung habe. Außerdem führen viele Wege nach Rom und ich beschreibe einfach, wie ich das System zum Laufen gebracht habe. Findest Du eine effizientere Methode, ist das schön. Aber die Schritt-für-Schritt-Anleitung, wie Du Nextcloud 14 auf Ubuntu Server 18.04 LTS Server installierst, möchte ich so verständlich wie möglich halten. So, nun ist das auch geklärt.

Ich gehe davon aus, dass bereits eine Domain oder Subdomain existiert, die auf den VPS von Contabo zeigt. In meinem Beispiel hier benutze ich die Beispiel-Domain: nextcloud.example.org steht stellvertretend für die eigentliche Domain. Ersetze sie mit der Domain oder Subdomain, mit der Du Deine Nextcloud erreichen willst!

Folgst Du meiner Anleitung Schritt für Schritt, hast Du am Ende eine dezent getunte Nextcloud 14 auf Deinem eigenen Ubuntu 18.04 LTS Server. Die private Cloud ist via HTTPS erreichbar und das Zertifikat erneuert sich mittels Let’s Encrypt selbst. Die VPS bei Contabo fangen übrigens bei 3,99 pro Monat an und da hast Du schon 300 GByte Platz.

Hinweis: Wie Du Collabora Online (CODE) via Docker installierst und in der Nextcloud einbindest, findest Du in einem separaten Beitrag.

root oder sudo

Die meisten hier beschriebenen Befehle musst Du mit sudo ausführen, wenn Du als administrativer Benutzer angemeldet bist. Für die Einrichtung habe ich mir die Tipperei gespart, mich selbst via

sudo su

zu root gemacht und konnte die Befehle ohne sudo ausführen. Ich arbeite eigentlich auch lieber mit sudo, aber wenn es so viel ist …

Nebenbei bemerkt: Das Upgrade von 13 auf Nextcloud 14.0.1 hat bei mir auch tadellos funktioniert.

Den Server bei Contabo absichern

Der Server wurde mit Ubuntu 18.04 LTS Bionic Beaver Server vorbestellt. Der erste Schritt war natürlich, den Server abzusichern. Es wurden im Grunde genommen die gleichen Schritt wie bei meinem eigenen Server durchgeführt, die in diesem Beitrag beschrieben sind. Damit darf sich root nicht mehr via SSH anmelden und fail2ban läuft auch. Das hat nicht zwingend etwas mit der Installation von Nextcloud 14 auf Ubuntu 18.04 Server etwas zu tun, aber es gehört eben auch dazu.

Für Nextcloud notwendige Pakete installieren

Ubuntu 18.04 LTS Server bei Contabo ist mehr oder weniger blank und das ist auch in Ordnung so. Lieber Pakete nachinstallieren, als einen Tag lang ausmisten müssen. Allerdings brauchen wir diverse Pakete, damit die Nextcloud 14 läuft. Das sind Datenbank, Webserver und diverse PHP-Pakete. Installieren wir zunächst die grundlegenden Pakete (wir brauchen später noch einige andere Pakete, aber der Reihe nach):

apt install apache2 mariadb-server libapache2-mod-php php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip

Hinweis: Folgst Du anderen Anleitungen für zum Beispiel Ubuntu 16.04, dann wird die Installation des Pakets php-mcrypt empfohlen. Das Paket wurde in PHP 7.2 entfernt und wir brauchen es auch nicht mehr.

Das System löst die Abhängigkeiten auf und es wird erst einmal eine fröhliche Installations-Orgie gestartet. Die Geschichte dauert ein paar Minuten.

Grundpakete installieren: Webserver Apache, Datenbank MariaDB und PHP-Pakete

Grundpakete installieren: Webserver Apache, Datenbank MariaDB und PHP-Pakete

Ist die Installation abgeschlossen, kannst Du testen, ob Apache funktioniert. Gibst Du in Deinem Browser nextcloud.example.org ein, erscheint die Standardseite von Apache.

Apache funkktioniert schon mal

Apache funktioniert schon mal

Mod_rewrite brauchen wir auf jeden Fall und deswegen aktivieren wir es gleich:

a2enmod rewrite

Im Anschluss starten wir Apache neu:

systemctl restart apache2

Tipp: Willst Du aus welchen Gründen auch immer eine CIFS/SMB-Freigabe als externes Storage einbinden, muss das Paket smbclient auf dem Server installiert sein!

Verzeichnis für Nextcloud anlegen

Für die Nextcloud lege ich ein Verzeichnis unter /var/www mit dem kreativen Namen nextcloud an:

mkdir /var/www/nextcloud

Die Rechte geben wir im Anschluss gleich dem Benutzer des Webservers, damit wir das nicht vergessen und es zu komischen Fehlern kommt

chown -R www-data.www-data /var/www/nextcloud/

Virtuellen Host anlegen

Nun konfigurieren wir einen virtuellen Host für Apache, der nextcloud.example.org auf das Verzeichnis /var/www/nextcloud verweist. Erstelle die Datei /etc/apache2/sites-available/nextcloud.conf und kopiere folgenden Inhalt hinein:

<VirtualHost *:80>
    ServerAdmin admin@example.org
    ServerName nextcloud.example.org
    DocumentRoot /var/www/nextcloud/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory /var/www/nextcloud>
          Options Indexes FollowSymLinks MultiViews
          AllowOverride All
          Require all granted
        </Directory>
</VirtualHost>

Den virtuellen Host aktivieren wir nun:

a2ensite nextcloud

und laden im Anschluss die Konfiguration neu:

systemctl reload apache2

Ab sofort ist Deine Domain erreichbar und serviert alles, was sich im Verzeichnis /var/www/nextcloud befindet. Probiere es aus und lege eine einfache index.html an.

HTTPS via Let’s Encrypt aktivieren

Nun wird es spannend. Derzeit ist unsere nextcloud.example.org nur unverschlüsselt via HTTP erreichbar. Wir wollen aber das verschlüsselte HTTPS benutzen und verwenden dazu das kostenlose Let’s Encrypt. Dafür setzen wir einen aktuellen certbot ein, der aus einem PPA kommt. bevor wir das PPA aber bequem hinzufügen können, müssen wir das Paket software-properties-common installieren.

apt install software-properties-common

Danach folgt:

add-apt-repository ppa:certbot/certbot

Im Anschluss installieren wir den certbot.

apt update
apt install python-certbot-apache

Du musst bestätigen, dass das System einige Pakete installiert.

certbot aus dem PPA installieren

certbot aus dem PPA installieren

certbot benutzen

Ist die Installation abgeschlossen, lassen wir uns ein SSL-Zertifikat für unsere Domain ausstellen:

certbot --apache -d nextcloud.example.org

Du wirst nach einer E-Mail-Adresse gefragt, an die wichtige Benachrichtigungen geschickt werden. Danach musst Du die allgemeinen Geschäftsbedingungen mit A akzeptieren. Danach kannst Du Dich noch entscheiden, ob Dir die EFF (Electronic frontier Foundation) Informationen an die gerade eben hinterlegte E-Mail-Adresse schicken darf. Interessiert Dich Datenschutz rund um das Web und so technischer Schnickschnack, ist das auf jeden Fall einer der besseren Newsletter.

Sind alle Fragen beantwortet, wird ein Zertifikat beantragt und ausgestellt. Das dauert ein paar Sekunden und Du musst nichts weiter machen. Pass bei der nächsten Frage aber gut auf!

Zertifikat wird beantragt und ausgestellt

Zertifikat wird beantragt und ausgestellt

Sobald das Zertifikat ausgestellt ist, wirst Du gefragt, ob Du

  1. Keine Umleitung wünscht und die Webserver-Konfiguration wird nicht angepasst
  2. Umleiten möchtest und alle Anfragen werden sofort auf HTTPS umgeleitet

Du kannst das natürlich später manuell auch selbst machen, aber ich habe mich gleich für 2 entschieden – das spart Arbeit.

Ich überlasse certobo die Konfiguration der Umleitung auf HTTPS

Ich überlasse certobo die Konfiguration der Umleitung auf HTTPS

Öffnest Du nun nextcloud.example.org in Deinem Browser, wirst Du sofort auf https://nextcloud.example.org umgeleitet und bekommst das schöne grüne Schloss.

Die Umleitung auf HTTPS funktioniert

Die Umleitung auf HTTPS funktioniert

Das gerade eben installierte Zertifikat ist 90 Tage lang gültig und wird automatisch erneuert. Der von uns installierte certbot hat für die Erneuerung der Zertifikate selbst einen Cronjob im Verzeichnis /etc/cron.d/ mit Namen certbot angelegt – falls es Dich interessiert.

Datenbank uns DB-User anlegen

Bevor wir uns um die Nextcloud an sich kümmern, konfigurieren wir noch die Datenbank. Öffnen wir zunächst die Eingabeaufforderung von MariaDB:

mysql

Das sollte dann in etwa so aussehen:

MariaDB - Eingabeaufforderung

MariaDB – Eingabeaufforderung

Aus Sicherheitsgründen könntest Du der Datenbank einen kryptischen Namen geben. Betreibst Du mehr Datenbanken auf dem Server, sind sprechende Namen übersichtlicher. Für das Beispiel nenne ich sie einfach nextcloud.

CREATE DATABASE nextcloud;

Danach legen wir einen Anwender an, weil sich eine Verbindung mit root nicht schickt:

CREATE USER 'DEIN-DB-USER' IDENTIFIED BY 'DEIN-PASSWORT';

Verwende ruhig einen etwas kryptischen Namen für DEIN-DB-USER und DEIN-PASSWORT sollte natürlich eher stark sein.

Wichtig: Hast Du beim MySQL-Passwort ein Sonderzeichen verwendet, kannst Du Deine Nextcloud möglicherweise nicht einrichten. Danke an den Kommentator für den Hinweis. Einfach im Hinterkopf behalten, dass hier eine mögliche Fehlerquelle ist!

Danach gestattest Du Deinem Anwender Zugriff auf die Datenbanken. Das @localhost sorgt dafür, dass er Anwender nur vom lokalen Server aus zugreifen darf. Das reicht auch und ist am sichersten.

GRANT ALL PRIVILEGES ON *.* TO 'DEIN-DB-USER'@localhost IDENTIFIED BY 'DEIN-PASSWORT';

Zum Schluss machst Du die Änderungen noch wirksam:

FLUSH PRIVILEGES;

Nun darfst Du die Eingabeaufforderung von MariaDB verlassen:

exit

Das sollte es für die Datenbank gewesen sein.

Tipp: Sollte es bei der Einrichtung einen Datenbankfehler geben (Access denied), dann lies diesen Artikel unter der Überschrift kleines Datenbank-Problem durch.

was ist mit phpMyAdmin?

Ja, ich hätte phpMyAdmin installieren können. Allerdings ist das eine potenzielle Security-Lücke. Wenn Du das tust, rate ich Dir, phpMyAdmin bei Bedarf zu aktivieren und wenn Du es nicht mehr brauchst, deaktiviere es wieder. Der Workflow würde wie folgt aussehen:

a2enconf phpmyadmin.conf
systemctl restart apache2

phpMyAdmin benutzen – per Standard ist das keine HTTPS-Verbindung und wieder deaktivieren. Also bitte gut aufpassen oder erst gar nicht benutzen.

a2disconf phpmyadmin.conf
systemctl restart apache2

Nextcloud 14 auf Ubuntu 18.04 LTS Server installieren

Nun kommt der Moment, auf den Du schon sehnlichst gewartet hast. Wie installieren nun die Nextcloud 14 auf Ubuntu 18.04 LTS Server. Begieb Dich in das Verzeichnis /var/www:

cd /var/www

und schnappe Dir die aktuelle Version der Nextcloud, in meinem Fall 14.0.0 (Du findest den richtigen Link im Download-Bereich der Projektseite):

wget -c https://download.nextcloud.com/server/releases/nextcloud-14.0.0.tar.bz2

Danach entpackst Du das Archiv. Unser Verzeichnis /var/www/nextcloud/ wird mit dem nachfolgenden Befehl überschrieben! Stelle am besten sicher, dass es leer ist!

tar xjvf nextcloud-14.0.0.tar.bz2

Nun setzen wir die Berechtigungen noch einmal, wie wir das weiter oben schon getan haben:

chown -R www-data.www-data /var/www/nextcloud/

So muss das im Anschluss aussehen:

Die Dateien dem Webserver überschreiben

Die Dateien dem Webserver überschreiben

Nextcloud 14 unter Ubuntu 18.04 LTS Server einrichten

Nun darfst Du endlich Deine Nextcloud 14 einrichten. Rufst Du Deine Domain nextcloud.example.org auf, sollte Dich der Konfigurations-Assistent begrüßen. Gehen wir die Felder einzeln durch:

  • In das erste Feld kommt der Name des Nextcloud-Administrators. Den darfst Du selbst bestimmen und vielleicht nennst Du in nicht Admin. Sei der Security zuliebe etwas kreativ.
  • Darunter vergibst Du ein Passwort und ein möglichst starkes. Ich benutze für alle Konten unterschiedliche Passwörter und verwalte sie mit KeePassXC.
  • Den Pfad für die Daten kannst Du so lassen.
  • Die Konfiguration für die Datenbank weißt Du bereits. Das sind: DEIN-DB-USER, DEIN-PASSWORT, nextcloud (Name der Datenbank) und localhost.
Schließe die Konfiguration der Nextcloud 14 unter Ubuntu 18.04 LTS Server ab

Schließe die Konfiguration der Nextcloud 14 unter Ubuntu 18.04 LTS Server ab

Klicke jetzt auf Installation abschließen. Die Einrichtung kann ein paar Sekunden dauern. Ist sie erfolgreich, wirst Du von der Nextcloud 14 freundlich begrüßt.

So grüßt Dich die Nextcloud 14

Nextcloud 14 begrüßt Dich freundlich

Erste administrative Schritte mit der Nextcloud 14

Die Nextcloud 14 läuft nun auf Ubuntu 18.04 LTS Server, aber wir sind noch lange nicht fertig. Wenn wir schon einen eigenen Server haben, nutzen wir ihn auch bestmöglich aus. Öffne die Einstellungen und klicke dann in der linken Spalte auf Übersicht.

Einstellungen öffnen

Einstellungen öffnen

Hier springen uns allerlei Sicherheits- und Einrichtungswarnungen entgegen, die wir nun Stück für Stück ausmerzen. Keine Panik, das ist alles halb so wild.

Sicherheits- und Einrichtungswarnungen

Sicherheits- und Einrichtungswarnungen

Die Verwendung des eingebauten PHP-Mailers wird nicht länger unterstützt. Bitte aktualisiere die E-Mail-Server-Einstellungen

Die erste Warnung lässt sich sehr einfach beheben. Klicke einfach auf Grundeinstellungen und dort kannst Du den E-Mail-Server konfigurieren. Im Endeffekt ist das äquivalent zum Postausgangsserver via SMTP, den Du vielleicht auch bei Thunderbird benutzt.

Der E-Mail-Server ist schnell konfiguriert

Der E-Mail-Server ist schnell konfiguriert

Hast Du beim Admin in den persönlichen Einstellungen schon eine E-Mail-Adresse hinterlegt, kannst Du Dir nun ein Test-E-Mail schicken. Das funktioniert wunderbar.

Das Test-E-Mail ist angekommen

Das Test-E-Mail ist angekommen

Damit haben wir bereits eine Warnung weniger.

Tipp: Diese Daten hinterlegt die Nextcloud auch in der Konfigurationsdatei config.php, falls Du den E-Mail-Server auch relativ via Kommandozeile anpassen.

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 den Sicherheitshinweisen erläutert ist.

Um diese Warnung auszubessern, müssen wir zurück auf die Konsole. Zunächst einmal müssen wir mod_headers für Apache aktivieren und den Webserver im Anschluss neu starten.

a2enmod headers

Im Anschluss fügen wir in unserer Konfigurationsdatei für den virtuellen Host, die von Let’s Encrypt erstellt wurde, ein paar Zeilen ein. Bearbeite:

/etc/apache2/sites-available/nextcloud-le-ssl.conf

und füge unter ServerName nextcloud.example.org diese Zeilen ein.

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>

Das sieht dann so aus:

HTTP Strict Transport Security aktivieren

HTTP Strict Transport Security aktivieren

Nun startest Du Apache neu:

systemctl restart apache2

Ab diesem Zeitpunkt sind die orangen und kritischeren Warnung aus der Welt geschafft. Herzlichen Glückwunsch!

Es wurde kein PHP-Memory-Cache konfiguriert. Zur Erhöhung der Leistungsfähigkeit kann ein Memory-Cache konfiguriert werden. Weitere Informationen finden Sie in der Dokumentation.

Das Caching musst Du nicht konfigurieren und ich weiß ehrlich gesagt nicht, ob es bei einer relativ kleinen Installation einen großen Unterschied macht. Auf jeden Fall lässt sich damit die Performance des Servers beschleunigen, weil häufig benutzte Objekte im Cache vorgehalten werden.

Wie viel es bringt, ist aber egal. Wir haben die Ressourcen auf dem Server und werden es auch aktivieren – weil wir können!

Für kleine Unternehmen oder Organisationen und Einzelserver empfehlen die Entwickler in der Dokumentation APCu für das lokale Caching und Redis für das Sperren der Dateien. Genau das machen wir auch und installieren zunächst ein paar Pakete:

apt install php-memcached memcached php-apcu redis-server php-redis

Im Anschluss starten wir Apache neu und prüfen, ob memcached auch läuft.

systemctl restart apache2
ps ax | grep memcached

Du solltest eine Ausgabe in der Art bekommen:

memcached läuft

memcached läuft

Das Gleiche kannst Du auch noch mal mit redis statt memcached ausführen.

Nun spendierst Du der Konfigurationsdatei von Nextcloud 14 (/var/www/nextcloud/config/config.php) ein paar zusätzliche Parameter.

'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
  'host' => 'localhost',
  'port' => 6379,
),
'memcache.distributed' => '\\OC\\Memcache\\Memcached',
'memcached_servers' =>
array (
  0 =>
  array (
    0 => 'localhost',
    1 => 11211,
  ),
),

Hier nochmal als Grafik:

Damit ist die Caching-Warnung erledigt

Damit ist die Caching-Warnung erledigt

Tipp: Bei mir hat Redis schon mal durchgedreht und hat Sperren nicht mehr freigegeben. In meinem Fall hat nur eine Rosskur auf der Kommandozeile geholfen. Mit

redis-cli flushdb

entfernst Du Daten aus der momentanen Datenbank der Verbindung

redis-cli flushall

Entfernt Daten aus allen Datenbanken. Hat bei mir damals geholfen, kann man sich merken.

Der PHP-OPcache ist nicht richtig konfiguriert. Für eine bessere Leistung empfiehlt es sich folgende Einstellungen in der php.ini vorzunehmen

Diese Warnung bekommen wir in den Griff, indem wir die Datei /etc/php/7.2/apache2/php.ini modifizieren. Suche hier nach dem Eintrag [opcache] und darunter fügst Du folgende Zeilen ein:

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

Wieder die entsprechende Grafik dazu:

opcache in der Datei php.ini

opcache in der Datei php.ini

Damit die Änderungen wirksam werden, ist wieder ein Neustart von Apache notwendig:

systemctl restart apache2

Der “Referrer-Policy” HTTP-Header ist nicht gesetzt auf “no-referrer”, “no-referrer-when-downgrade”, “strict-origin” oder “strict-origin-when-cross-origin”. Dadurch können Verweis-Informationen preisgegeben werden. Siehe die W3C-Empfehlung

Der Fehler lässt sich sehr einfach beseitigen. Öffne wiederum die Datei

/etc/apache2/sites-available/nextcloud-le-ssl.conf

und in der Sektion mit IfModule mod_headers.c fügst Du die nachfolgende Zeile ein:

Header set Referrer-Policy "no-referrer-when-downgrade"

Danach sieht die Datei so aus:

Referrer Policy konfigurieren

Referrer Policy konfigurieren

und ein Neustart von Apache schließt die konfiguration ab:

systemctl restart apache2

Rufst Du nun Deine Übersicht in der nextcloud 14 unter Ubuntu 18.04 LTS Server abermals auf, passiert etwas Wunderbares. Es gibt überhaupt keine Warnungen mehr, wir haben sie alle vertrieben!

Nextcloud 14 und alle Warnungen sind weg!

Nextcloud 14 und alle Warnungen sind weg!

Bigint bei Nextcloud 15

Bei Nextcloud 15 gab es noch eine Meldung, dass nach Bigint konvertiert werden muss. Befindest Du Dich im Verzeichnis /var/www/nextcloud, dann führe den nachfolgenden Befehl aus. Die Instanz muss dafür offline sein! In diesem Beitrag mehr dazu:

sudo -u www-data php occ db:convert-filecache-bigint

Ein bisschen Performance Tuning

Alle Warnung sind weg! Das ist toll, aber ganz fertig sind wir immer noch nicht. Keine Panik, es ist nicht mehr viel und Deine Nextcloud 14 wird unter Ubuntu 18.04 LTS Server schnurren wie ein zufriedenes Kätzchen hinterm Kachelofen im Winter.

Cronjob anlegen

Die Nextcloud führt gewisse Hintergrundaufgaben durch. Per Standard geschieht das bei jedem Seitenaufruf via AJAX. Das ist allerdings nicht notwendig und lässt sich besser lösen, vor allen Dingen wenn Du die Hoheitsrechte über den Server hast.

Hintergrundaufgaben per Standard via AJAX

Hintergrundaufgaben per Standard via AJAX

Ein Webcron wäre schon die bessere Lösung, dazu müsstest Du aber einen externen Dienst anweisen, die URL https://nexctloud.example.org/cron.php alle 15 Minuten aufzurufen. Das ginge mit unserem Server und einem Tool wie curl auch, aber noch besser ist die dritte Option.

Da wir einen Linux Server, in diesem Fall Ubuntu 18.04 LTS, für unsere Nextcloud 14 haben, nutzen wir den Cron des Systems. Du könntest systemd für die Aufgabe nehmen, aber in dem Fall bin ich wirklich altmodisch. Beachte aber, dass der Nutzer www-data den Cronjob ausführen muss. Öffne zunächst die Crontab von www-data:

crontab -u www-data -e

Hier fügst Du diese Zeile ein:

*/15 * * * * php -f /var/www/nextcloud/cron.php

Ober die Hintergrundaufgaben laufen oder nicht kannst Du überprüfen, indem Du das Kleingedruckte neben Hintergrund-Aufgaben liest. Dort steht, wann der Cronjob das letzte Mal ausgeführt, beziehungsweise cron.php aufgerufen wurde.

Nun kümmert sich der Cron-daemon des Systems um die Hintergrund-Aufgaben und die einzelnen Aufrufe der Seite werden nicht mehr länger damit belästigt.

Viele Bilder und Vorschau via Cronjob erstellen lassen

Dieser Performance-Tipp ist eigentlich nur dann relevant, wenn Du mit vielen Bildern hantierst. Die App Gallery ist per Standard installiert und auch aktiviert. Das System erstellt Vorschaubilder immer dann, wenn sie verlangt werden. Das kann sehr zäh sein und belastet das System außerdem.

In den Apps findest Du ein Programm, das sich Preview Generator nennt. Damit kannst Du die Vorschaubilder via Cronjob erzeugen lassen. Sollte eine Vorschau noch nicht erstellt sein, wird sie On-the-Fly generiert. Lade die App Preview Generator herunter und aktiviere sie.

Preview Generator - Vorschaubilder per Cronjob erzeugen

Preview Generator – Vorschaubilder per Cronjob erzeugen

Öffne wieder die Crontab von www-data:

crontab -u www-data -e

und dann fügst Du diesen Cronjob ein):

*/15 * * * * php /var/www/nextcloud/occ preview:pre-generate

Ich lasse ihn auch all 15 Minuten laufen, vielleicht musst Du ein bisschen mit den Zeiten spielen.

Sicherheitsscanner

Wir können zum Spaß unsere Nextcloud 14 unter Ubuntu 18.04 LTS Server durch den Sicherheitsscanner der Nextcloud schicken. Natürlich ist die Prüfung relativ einfach, aber so ein A+ tut trotzdem ganz gut – das entspricht nämlich einem 1 mit Sternchen!

Ein A+ im Sicherheitsscanner

Ein A+ im Sicherheitsscanner

Folgst Du meiner Anleitung, hast Du eine Installation von Nextcloud 14 auf Ubuntu 18.04 LTS Server, die auch ganz gut optimiert ist. Natürlich hat jede Firma eigene Anforderungen aber ich denke, dass Du auf dieser Grundlage gut aufbauen kannst.

Warum fiel die Entscheidung auf die Nextcloud?

Natürlich weil ich es empfohlen habe! 🙂 Spaß beiseite. Bisher gab es ein NAS, das an der Internetleitung im Hauptbüro hing. Auch die Außendienstmitarbeiter haben via OpenVPN auf die Daten zugegriffen. Das hat eigentlich ganz gut geklappt, aber das NAS kommt in die Jahre. Eine Neuanschaffung steht ins Haus und die kostet auch alle paar Jahre etwas. Hinzu kommt noch: hat die Internetleitung Husten, sind davon alle Zweigstellen betroffen.

Da die vor allen Dingen die Downstreams überall relativ schnell sind, liegt es nahe, das Storage in ein Data Center zu legen. Nun gibt es einige Optionen. Dropbox scheidet für mich völlig aus. Eine Online-Festplatte ginge, aber nachdem ich die Nextcloud demonstrierte, gab es gleich noch ein paar Funktionen, die in Zukunft möglicherweise nützlich sind. Gemeinsame Kalender und Kontakte, Versionierung und so weiter. Nur die End-to-End-Verschlüsselung können wir noch nicht nutzen, weil sie einfach noch nicht reif für die große Bühne ist und außerdem die Versionierung abschießt.

Open Source und freie Software haben übrigens auch zur Entscheidung beigetragen. Gibt man Leuten die Wahl, dann gefällt Ihnen der Gedanke schon, nicht in einem Goldenen Käfig sitzen zu müssen. So eine private Cloud hat schon seinen Reiz, auch wenn sie auf einem Fremdrechner installiert ist.

Auf jeden Fall fangen wir mit einer produktiven Nextcloud 14 an und ich habe dem Chef noch eine Test-Instanz einer Nextcloud aufgesetzt, für die er Administrationsrechte hat. Auf diese Weise kann er Apps aktivieren und deaktivieren, Dinge ausprobieren und so weiter. Sollte ihm eine Funktion gefallen, dann sehen wir zu, dass wir sie in die produktive Nextcloud übernehmen. Das ist ein ganz guter Kompromiss.

Das Backup läuft ähnlich wie bei meinem Contabo Server. Was wir mit der Security machen, müssen wir noch ausprobieren. Möglicherweise aktivieren wir neben der Erkennung für die Ransomware auch einen Virenscanner.

Nette Pi-Konstellation

Suchst Du ein VPN für den Raspberry Pi? NordVPN* bietet einen Client, der mit Raspberry Pi OS (32-Bit / 64-Bit) und Ubuntu für Raspberry Pi (64-Bit) funktioniert.




 Alle Kommentare als Feed abonnieren

31 Kommentare zu “Nextcloud 14 auf Ubuntu 18.04 LTS Server installieren – Schritt für Schritt”

  1. Jürgen says:

    Herzlichen Dank für diese sehr ausführliche Anleitung.
    Nur als Tipp: Keine Sonderzeichen beim mysql-Passwort, sonst kommt man über die Login-Seite von Nextcloud nicht hinaus.
    Sonst alles perfekt erklärt.
    VG Jürgen

    • jdo says:

      Könntest Du das näher erklären? Sonderzeichen sind in MySQL-Passwörtern eigentlich schon erlaubt. Mich würde interessieren, was da schief gelaufen ist. Danke!

  2. Jürgen says:

    Ja, in MySQL selbst ist das kein Problem.
    Ich hatte ein '#' im Passwort und bekam eine Fehlermeldung bei der ersten Anmeldung wo man den Admin + Passwort und die MySQL Datenbankdaten eingibt. Erst als ich die Datenbank neu ohne Sonderzeichen im Passwort angelegt hatte ging es weiter. Ich hatte die Fehlermeldung in Google eingegeben, schon der erste Eintrag wies auf das Sonderzeichen hin.

    • jdo says:

      Danke für den Hinweis. Ich nehme das oben in der Anleitung noch auf und verweise auf Deinen Tipp!

  3. Benny says:

    Super Anleitung... Erspart tatsächlich eine Menge Zeit bei der Installation...
    Muchas Gracias! TOP!

  4. Mike says:

    Klasse Anleitung. Leider hänge ich am Nextcloud Assistent. Nach Eingabe der Daten bekomme ich die Fehlermeldung
    "Error while trying to create admin user: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [1044] Access denied for user 'mein user'@'localhost' to database 'nextcloud'"
    Keine Sonderzeichen in den PWern.

  5. Mike says:

    Jetzt passt es. Vielen Dank. Nochmal ein großes Lob für die hervorragende Anleitung, auch der Tip mit Contabo war gut.

    In eigener Sache: Nachdem ich mit Cryprowährung nichts zu tun habe und PayPal grundsätzlich ablehne, mach doch einen Vorschlag als alternative "Getränkespende".

  6. imbecile says:

    Bitte redis absichern. Wie steht auf der homepage von redis

    • jdo says:

      Bei meiner Standardinstallation ist in der Konfigurationsdatei (/etc/redis/redis.conf) bind 127.0.0.1 hinterlegt. Wenn ich mich nicht irre, ist das ausreichend abgesichert, da nur auf der internen Netzwerkschnittstelle gehorcht wird.

      Ubuntu 18.04 liefert redis 4 per Standard aus und ab Version 3.2 wird das Programm in einem protected-Modus ausgeführt, um die Security zu verbessern. Von daher bin ich mir nun nicht ganz sicher, was Du damit meinst.

      Eine Überprüfung mit netstat zeigt mir ebenfalls, dass redis nur via 127.0.0.1 horcht.

  7. Christian Depunkt says:

    Hi, eine Super Anleitung vielen Dank dafür. Allerdings habe ich ein Problem mit der Weiterleitung der Domain mit "Lets Encrypt": ich betreibe Nextcloud auf einem Server der bei mir im Wohnzimmer unter dem Schreibtisch steht (angebunden über Fritzbox mit "selfhost" an das Internet. In deiner Anleitung wird ja jeder Aufruf der Nextcloud Installation auf die Domain in https umgeleitet. wenn ich also jetzt im Browser z. B. 192.168.1.96 (interne Adresse des Servers auf dem Nextcloud läuft) eingebe, werde ich direkt auf die externe Domain z. B. meinedomain.de umgeleitet was ich "etwas" merkwürdig finde. Gibt's da was wie das verhindert werden kann?

    Besten Dank schon mal für eine Antwort.

    • jdo says:

      Das klingt nach einer DNS-Sache, die in der FritzBox! abläuft. Ich kenne die neuen FritzBoxen leider nicht. Aber ich würde Mal in der FritzBox! gucken, ob es da so eine Funktion gibt.

      Was kommt den bei einem Aufruf des Befehls dig auf meinedomain.de heraus? Aus der Ferne ist das Problem etwas schwer zu analysieren.

      Stört es denn, wenn gleich auf die von außen erreichbare Domain umgeleitet wird? Mir wäre das Recht, weil ich den Client dann nur mit dieser Domain konfigurieren müsste und hätte sowohl intern als auch extern den gleichen Zugriff.

  8. Christian Depunkt says:

    Hi,

    sorry deine Antwort nicht gesehen. Als erstes eine Verständnisfrage: wenn ich vom Wohnzimmer mit der Nextcloud app auf die Daten zugreife (z. B. Upload von Dateien) dann werden die Daten doch "einmal um die Welt" geschickt oder habe ich da einen Denkfehler? "dig" ergibt das hier:
    christian@Homeserver:~$ dig meinedomain.de

    ; <> DiG 9.11.3-1ubuntu1.5-Ubuntu <> meinedomain.de
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53070
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 65494
    ;; QUESTION SECTION:
    ;meinedomain.de. IN A

    ;; ANSWER SECTION:
    cale-bs.de. 43 IN A 79.193.xxx.xxx

    ;; Query time: 1 msec
    ;; SERVER: 127.0.0.53#53(127.0.0.53)
    ;; WHEN: Thu Mar 07 15:54:30 CET 2019
    ;; MSG SIZE rcvd: 55
    mir wäre es lieber, wenn ich von daheim aus auch intern auf nextcloud zugreifen könnte. Was mir auch aufgefallen ist: gebe ich die interne IP des Servers im Browser ein, also z.B. 192.168.1.56 dann lande ich auf der Standardseite vom Ubuntu Apache Server. Gebe ich die IP Adresse mit dem Zusatz /nextcloud an dann kommt direkt "404".

    • jdo says:

      Genau so wie Du das machen willst, habe ich das auch. Das klappt auch bei mir.

      Die Daten werden dann nicht um den Erdball geschickt, wenn die interne DNS-Auflösung auf die interne IP-Adresse zeigt. Also wenn Dein LAN als meinedomain.de angesehen wird. Kommst Du von intern, landest Du auf Deinem Server, kommst Du von extern, sollte Dich der Router auf Deinen Server weiterleiten. Ich habe das mit einer DynDNS-Adresse so gemacht und im Pi-hole die DynDNS-Adresse unter DNS im Abschnitt Use Conditional Forwarding als Local Domain Name hinterlegt.

      Du bekommst bei Deinem Apache und /nextcloud höchstwahrscheinlich einen 404-Fehler, weil die Standard-Konfiguration auf /var/www/html zeigt. In Deinem Fall versucht der Sever /var/www/html/nextcloud zu finden und den Ordner gibt es nicht? Im Idealfall legst Du einen VirtualHost für die Nextcloud an, der dann auf den korrekten Ordner zeigt.

  9. Christian says:

    Ah ok, dann kann ich es eigtl. so lassen wie es ist (Never Change a running System oder so 🙂 ) meine dyndns Adresse beziehe ich über selfhost und ist in der Fritzbox hinterlegt, sollte eigentl. keinen Unterschied machen ob die Dyndns Adresse in der Fritzbox oder im Pihole (den ich auch habe) abgelegt ist. da die DNS Server Adressen in der Fritzbox auf den Pihole "umgebogen" sind. Und Tatsache, nextcloud liegt im Ordner /var/WWW/nextcloud. Hm, das mit Virtual host ist auch eine Idee. Da muss sich mich erstmal belesen, wie das geht. Da ich davon Null Ahnung habe.

    • jdo says:

      Das sage ich auch immer: Provisorien halten am längsten und never change a running system! 🙂

  10. dirk says:

    erstmal danke für die anleitung, die ist super! ich hab jetzt allerdings das problem, das ich meine zertifikate über letscrypt nicht erneuern kann. ob das an dem http-to-https redirect liegt?

    weil es ein bisl länger ist, habe ich es mal hier hinterlegt:
    https://pastebin.com/mHSdDqV5

    ne idee woran es liegen könnte?

    • jdo says:

      Das kann gut sein und ich hatte ein ähnliches Problem mit meinem alten DDNS-Anbieter. Bei DuckDNS kann ich zum Beispiel DNS TXT Records hinterlegen und damit lassen sich auch meine Zertifikate wieder erneuern. Ich habe das in der Mitte dieses Beitrags beschrieben - vielleicht hilft es ja.

      Ist Deine Nextcloud hinter einem DDNS?

      Hier findest Du die verschiedenen "Challenge"-Typen, die Let's Encrypt unterstützt.

  11. Timo says:

    Danke für die tolle Anleitung.
    Habe aber nach der Installation mit Nextcloud 16 jetzt die Fehlermeldung wenn ich meine Domain im Browser aufrufe:

    Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht usw.

    Laut meiner Recherche sollte man im Apache AllowOverride von non auf All ändern.

    Options +FollowSymlinks
    AllowOverride All

    Hat bei mir nicht geholfen der Fehler bleibt. Was könnte hier das Problem sein??

    Gruß Timo

    • jdo says:

      Hi,

      die Information ist etwas dürftig. Wo genau steht denn das AllowOverride All? Oder wie sieht die Apache-Konfigurationsdatei aus?

      Möglicherweise dumme Frage, aber mod_rewrite ist schon aktiviert und Apache danach neu gestartet?

      Viele Grüße

  12. Tobias says:

    Ich persönlich bevorzuge allgemein Docker, die installation ist einfacher und sauber getrennt. Dazu kommt noch der MariaDB Docker und Fertig.

    MFG

  13. Flex says:

    Hallo. Super Anleitung. Mich interessiert exakt dieser Punkt hier "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 den Sicherheitshinweisen erläutert ist."

    Wie diese Meldung behoben wird, ist ja beschrieben. Aber was hat es genau damit auf sich. Ich habe das gelesen, aber nicht verstanden. Kannst du bitte mal erklären, was da ganu gemacht wird. Und was sind vorallem die möglichen Nachteile, wenn man das gemacht hat. Da wird ja oft davor gewarnt, dass ein "zurück" nur schwer möglich ist, wenn man mal den STS gesetzt hat.

    • jdo says:

      Sehr vereinfacht gesagt weist diese Webserver Direktive den Browser an, nur eine HTTPS-Verbindung zu benutzen. Nichts in der Domain kann via HTTP geladen werden.

  14. Flex says:

    Vielen Dank für die Antwort. Gilt das dann nur für die Subdomain, wenn ich eine solche verwende oder ist die gesamte Domain betroffen. Angenommen eine Webseite läuft über http auf "meineseite.de" und ich verwende für nextcloud nun "cloud.meineseite.de" und setze dies auf STS, dann wird nur "cloud.meineseite.de" mit HTTPS geladen und man kann noch ganz normal über http auf "meinewebseite.de" zugreifen. Habe ich das so richtig verstanden?

    • jdo says:

      Das ist richtig, weil Du die Einstellung in der Konfigurationsdatei für die Subdomain im Apache hinterlegst.

  15. Flex says:

    Danke für die Rückmeldung. Noch eine letzte Frage. Du schreibst, mann soll das unter die Zeile "ServerName nextcloud.example.org" einfügen. Ich habe jetzt noch eine Zeile mit ServerAlias http://www.nextcloud.example.org. Soll man das dann besser hier runter einfügen oder doch zwingend unter ServerName? Oder ist das egal? Frage nur nochmal, weil du es so ausdrück erwähnt hast, dass es unter ServerName soll.

    • jdo says:

      Solltest Du unter den Alias auch schreiben können. Einfach ausprobieren und wenn es nicht funktioniert - umstellen...

  16. Flex says:

    Das http:// soll weg in dem Posting oben, das hat er automatisch gemacht.

  17. Frank I. says:

    Warum muss man da nextcloud.example.org angeben? Ich hätte das lieber auf meine eigene Domain legen.

    • jdo says:

      example.org ist eine Domain, die speziell als Platzhalter genutzt werden darf. Natürlich ersetzt Du das mit Deiner eigenen Domain.