Zum Hauptinhalt springen

Installation von Nextcloud

Einführung

Nextcloud ist eine Open-Source-Cloud-Lösung und Abspaltung von Owncloud, die 2016 vom ehemaligen Owncloud-Gründer Frank Kalitschek aufgrund unterschiedlicher Auffassungen ins Leben gerufen wurde.

image

Um eine optimale Leistung, Stabilität und Funktionalität zu gewährleisten, wird für den Betrieb eines Nextcloud-Servers die folgende Einrichtung empfohlen. Der Nextcloud-Server ist nicht mit Windows und MacOS kompatibel. Zumindest nicht ohne weitere Virtualisierung oder ähnlichen Workarounds.

Systemvoraussetzungen


Hardware

ComponentsMinimumRecommended
CPU2x 1 GHz4x 2+ GHz
RAM512 MB4+ GB
Disc10 GB50+ GB
Bandwidth100 mbit/s (up & down)500mbit/s (up & down) Sinnvoll, wenn mehrere User die Cloud benutzen sollen

Software

PlatformOptions
Operating SystemUbuntu (14.04, 16.04, 18.04), Debian(8,9,10), CentOS 6.5/7
DatabaseMySQL or MariaDB 5.5+ (recommended), SQLite (only recommended for testing and minimal-instances)
Web serverApache 2.4 with mod_php or php-fpm (recommended)
PHP5.6, 7.0 (recommended), 7.1 (recommended), 7.2
info

Die Anforderungen wurden aus unseren eigenen Erfahrungen und den Informationen der Entwickler zusammengestellt.

Vorbereitung

Damit die Cloud auf einem Linux-Server installiert werden kann, muss eine Verbindung über einen SSH-Client hergestellt werden. Wenn du dir nicht sicher bist, wie man SSH benutzt, findest du hier eine Anleitung dazu: Erstzugriff (SSH)

Sobald die Verbindung hergestellt wurde, ist es möglich, mit der Installation der notwendigen Pakete zu beginnen, welche für die eigentliche Installation von Nextcloud erforderlich sind. Dazu gehört zum einen die Installation eines Webservers als auch PHP.


Apache (Web server)

🗄️ Debian 8/9/10:

sudo apt update && sudo apt -y upgrade
sudo apt -y install apache2

PHP (Hypertext Preprocessor)

🗄️ Debian 8:

# Schritt 1: Hinzufügen des PHP 7.3 PPA Repository
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.3.list

# Schritt 2: PHP 7.3 installieren
sudo apt -y install php7.3

# Schritt 3: PHP 7.3 Erweiterungen installieren
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json

🗄️ Debian 9:

# Schritt 1: Hinzufügen des PHP 7.3 PPA Repository
sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.3.list

# Schritt 2: PHP 7.3 installieren
sudo apt -y install php7.3

# Schritt 3: PHP 7.3 Erweiterungen installieren
sudo apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json

🗄️ Debian 10:

# Schritt 1: PHP 7.3 installieren
sudo apt -y install php php-common

# Schritt 2: PHP 7.3 Erweiterungen installieren
sudo apt -y install php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

PHP-Version auf Funktionalität prüfen

php -v

Als Nächstes wird ein Datenbank Typ benötigt um die relevanten Informationen abspeichern zu können. Dabei gibt es mehrere Optionen:


Wenn du dich für diesen Datenbanktypen entschieden hast, dann musst du folgende Schritte befolgen:

Pakete installieren:

sudo apt-get install mariadb-server php-mysql

Während der Installation wird man aufgefordert, ein Root-Passwort zu setzen. Wenn keine Aufforderung zur Auswahl eines Passworts kommt, ist das Standardpasswort leer. Dies ist unsicher und sollte daher unmittelbar danach geändert werden!

Der nächste Schritt besteht darin, eine Verbindung zum Datenbankserver herzustellen und die erforderliche Datenbank zu erstellen:

mysql -u root -p
CREATE DATABASE nextcloud;

Danach muss ein Benutzer angelegt werden, welcher Zugriff auf die Nextcloud DB erhält.

CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE';
info

Überspringen diesen Schritt nicht, indem der Benutzer root verwendet wird. Dies ist nicht sicher und gefährdet deine Daten!

Der letzte Schritt ist die Vergabe der Berechtigungen für den neuen Benutzer:

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost';
FLUSH PRIVILEGES;

Wenn du damit fertig bist, dann kannst du Strg-D drücken, um die Datenbank zu verlassen um mit den weiteren Schritten fortzufahren.

Installation

Nun kann die eigentliche Installation von Nextcloud gestartet werden. Die Software muss heruntergeladen und entpackt werden:

cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip
apt-get install unzip
unzip latest.zip
chown -R www-data:www-data nextcloud
rm latest.zip

Wenn dieser Schritt abgeschlossen ist, dann ist es an der Zeit das Installationsscript auszuführen. Der Zugriff erfolgt über den Browser mit folgender Adresse:

Es erscheint die Konfiguration des Installationsscipt, in der ein Root-Benutzer angelegt und die Datenbankinformationen definiert werden:

image

image

Absicherung und Sicherheit

Setup Warnungen

image

Daten-Verzeichnis

Es wird dringend empfohlen, das Datenverzeichnis außerhalb des Web-Stammverzeichnisses zu platzieren (d.h. außerhalb von /var/www). Am einfachsten ist es, dies bei einer Neuinstallation zu tun. Das Verzeichnis kann im Setup definiert werden. Allerdings muss das Verzeichnis zuerst erstellt und die entsprechenden Rechte gesetzt werden. Die Daten könnten z.B. in einem Verzeichnis mit dem Namen Cloud im Home-Verzeichnis gespeichert werden.

mkdir /home/cloud/
chown -R www-data:www-data /home/cloud/

HTTPS via SSL-Zertifikat (Let's Encrypt)

Eine gute Cloud sollte nur über eine SSL-Verschlüsselung zugänglich sein. Ohne eine SSL-Verschlüsselung werden die Daten und Informationen im Klartext übertragen. Solche Informationen können ohne Verschlüsselung schnell und einfach abgefangen und gelesen werden.

<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/var/www/nextcloud"
ServerName domain.tld

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any

</Directory>

SSLCertificateFile /etc/letsencrypt/live/domain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.tld/privkey.pem
</VirtualHost>
</IfModule>

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

Darüber hinaus sollte der gesamte HTTP-Verkehr unter Verwendung einer permanenten Umleitung mit Statuscode 301 auf HTTPS umgeleitet werden. Dies kann unter Verwendung des Apache mit einer Konfiguration wie der folgenden Apache-VirtualHosts-Konfiguration erreicht werden:

<VirtualHost *:80>
ServerName domain.tld
Redirect permanent / https://domain.tld/
</VirtualHost>

Wenn du dir nicht sicher bist, wie du ein SSL-Zertifikat generieren kannst, dann findest du hier eine Anleitung dazu: Placeholder

Nextcloud verwalten

Der Zugriff auf die Nextcloud ist sowohl über den Browser, als auch über das Smartphone und den Computer per App möglich. Die Downloadquellen sind hier zu finden: https://nextcloud.com/install/#install-clients

image

Unter den Einstellungen können auch nach der Einrichtung noch einige Optionen angepasst und wichtige Informationen wie Logs, Aktivitäten eingesehen werden. Dazu gehören unter anderem zusätzliche Sicherheitseinstellungen (Zwei-Faktor-Authentifizierung, Verschlüsselung, ... ), Designeinstellungen (Logo, Farbe, Slogan, Header), Zugriffseinstellungen und vieles mehr.

Apps

Zusätzlich gibt es auch die Möglichkeit neben den Standard Apps noch weitere Apps zu installieren. Diese können über den Menüpunkt Apps eingesehen werden.

image

Mit solchen Apps ist es möglich die Nextcloud zusätzlich noch weiter nach seinen Wünschen zu individualisieren.