Dedicated Server: Installation von Nextcloud
Die Anleitung wurde mit folgenden Produkten erstellt:
(Einzelheiten können sich bei Produkten anderer Anbieter unterscheiden, die Grundkonzepte bleiben in der Regel unverändert)
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.
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.
Voraussetzungen
Die folgenden Voraussetzungen werden von den Entwicklern empfohlen und basieren auf unseren eigenen Erfahrungen. Du könntest Probleme bekommen, wenn du diese Voraussetzungen nicht erfüllst.
Hardware
Komponenten | Minimum | Empfohlen |
---|---|---|
CPU | 2x 1 GHz | 4x 2+ GHz |
RAM | 512 MB | 4+ GB |
Speicher | 10 GB | 50+ GB |
Bandbreite | 100 mbit/s (up & down) | 500mbit/s (up & down) Sinnvoll, wenn mehrere User die Cloud benutzen sollen |
Software
Plattform | Optionen |
---|---|
Betriebssystem | Ubuntu (14.04, 16.04, 18.04), Debian (8,9,10), CentOS 6.5/7 |
Datenbank | MySQL oder MariaDB 5.5+ (empfohlen), SQLite (nur für Tests und Minimalinstanzen empfohlen) |
Webserver | Apache 2.4 mit mod_php oder php-fpm (empfohlen) |
PHP | 5.6, 7.0 (empfohlen), 7.1 (empfohlen), 7.2 |
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.
- Debian
- Ubuntu
- CentOS
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
Apache (Web server)
🗄️ Ubuntu 16.X/18.X/19.X:
sudo apt update && sudo apt -y upgrade
sudo apt-get -y install apache2
PHP (Hypertext Preprocessor)
🗄️ Ubuntu 16.X:
# Schritt 1: PHP 7.3 PPA hinzufügen
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
# Schritt 2: PHP 7.3 installieren
sudo apt-get update
sudo apt-get install -y 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
🗄️ Ubuntu 18.X:
# Schritt 1: PHP 7.3 PPA hinzufügen
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
# Schritt 2: PHP 7.3 installieren
sudo apt-get update
sudo apt-get install -y 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
🗄️ Ubuntu 19.X:
# Schritt 1: PHP 7.3 PPA hinzufügen
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
# Schritt 2: PHP 7.3 installieren
sudo apt-get update
sudo apt-get install -y 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
PHP-Version auf Funktionalität prüfen
php -v
Apache (Web server)
🗄️ CentOS 6:
sudo yum -y update
sudo yum -y install httpd
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo systemctl start httpd
sudo systemctl enable httpd.service
🗄️ CentOS 7:
sudo yum -y update
sudo yum -y install httpd
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo systemctl start httpd
sudo systemctl enable httpd
🗄️ CentOS 8:
sudo yum -y update
sudo yum -y install httpd
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo systemctl start httpd
sudo systemctl enable httpd
PHP (Hypertext Preprocessor)
🗄️ CentOS 6:
# Schritt 1: Yum-Repository einrichten
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# Schritt 2: PHP 7.3 installieren
yum --enablerepo=remi-php73 install php
# Schritt 3: PHP 7.3 Erweiterungen installieren
yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt
🗄️ CentOS 7:
# Schritt 1: Yum-Repository einrichten
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# Schritt 2: PHP 7.3 installieren
yum --enablerepo=remi-php73 install php
# Schritt 3: PHP 7.3 Erweiterungen installieren
yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt
🗄️ CentOS 8:
# Schritt 1: Yum-Repository einrichten
dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
# Schritt 2: PHP 7.3 installieren
dnf module reset php
dnf module enable php:remi-7.3
dnf install php
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:
- MariaDB
- MySQL
- PostgreSQL
- SQLite
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';
Ü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.
Wenn du dich für diesen Datenbanktypen entschieden hast, dann musst du folgende Schritte befolgen:
Pakete installieren:
sudo apt-get install mysql-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';
Ü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.
Wenn du dich für diesen Datenbanktypen entschieden hast, dann musst du folgende Schritte befolgen:
Pakete installieren:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
Während der Installation wird man aufgefordert, ein Root-Passwort zu setzen.
Der nächste Schritt besteht darin, eine Verbindung zum Datenbankserver herzustellen und die erforderliche Datenbank zu erstellen:
sudo -u postgres psql
CREATE DATABASE nextcloud;
Danach muss ein Benutzer angelegt werden, welcher Zugriff auf die Nextcloud DB erhält.
CREATE USER nextcloud with encrypted password 'YOUR_PASSWORD_HERE';
Überspringe 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 database mydb to myuser;
FLUSH PRIVILEGES;
Wenn du damit fertig bist, dann kannst du Strg-D drücken, um die Datenbank zu verlassen. Im Anschluss kann die PostgreSQL Datenbank entweder über den Webinstaller oder über die config.php Config bearbeitet werden.
<?php
$AUTOCONFIG = array(
"dbtype" => "pgsql",
"dbname" => "nextcloud",
"dbuser" => "username",
"dbpass" => "password",
"dbhost" => "localhost",
"dbtableprefix" => "",
);
Wenn du dich für diesen Datenbanktypen entschieden hast, dann musst du folgende Schritte befolgen:
Pakete installieren:
apt-get install sqlite3 php-sqlite3
Neue SQLite 3 Datenbank anlegen
sqlite3 DatabaseName.db
Im Anschluss kann die SQLite 3 Datenbank entweder über den Webinstaller oder über die config.php Config bearbeitet werden.
<?php
$AUTOCONFIG = array(
"dbtype" => "sqlite",
"dbname" => "nextcloud",
"dbtableprefix" => "",
);
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:
Absicherung und Sicherheit
Setup Warnungen
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: Erstzugriff (SSH)
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
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.
Mit solchen Apps ist es möglich die Nextcloud zusätzlich noch weiter nach seinen Wünschen zu individualisieren.