Nextcloud auf Debian 12 installieren

Nextcloud ist eine Open-Source-Software zur Erstellung von öffentlichen und privaten Dateispeichern. Sie ermöglicht es dir, selbst gehostete Dienste wie Dropbox, Google Drive oder Mega.nz zu erstellen. Ursprünglich wurde sie von dem ursprünglichen Owncloud-Entwickler Frank Karlitschek entwickelt. Im Jahr 2016 hat er das Owncloud-Projekt geforkt und ein neues Projekt mit dem Namen „Nextcloud“ erstellt.

Mittlerweile wächst das Nextcloud-Projekt rasant und ist mehr als nur eine Filehosting-Software. Es ist eher eine Plattform für die Synchronisierung von Dateien und die Zusammenarbeit von Inhalten. Dank zahlreicher Plugins ist Nextcloud zu einer leistungsstarken Software für die Zusammenarbeit geworden. Du kannst Plugins für Projektmanagement, Videokonferenzen, gemeinsame Bearbeitung, Notizen, E-Mail-Client usw. installieren.

Diese Anleitung zeigt dir, wie du Nextcloud auf einem Debian 12 Server installierst. Du wirst Nextcloud mit Apache2 Webserver, MariaDB Server und PHP 8.2 installieren. Außerdem sicherst du deine Installation mit UFW (Uncomplicated Firewall) und SSL/TLS-Zertifikaten von Letsencrypt ab.

Voraussetzungen

Um diesen Leitfaden zu vervollständigen, musst du Folgendes vorweisen können:

  • Einen Debian 12-Server mit mindestens 4 GB Arbeitsspeicher und 2 CPUs.
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten.
  • Einen Domainnamen, der auf die IP-Adresse des Servers zeigt.

Installation des Apache2 Webservers

Im ersten Schritt installierst du den Apache2-Webserver, der für den Betrieb von Nextcloud verwendet wird.

Aktualisiere zunächst deinen Debian-Paketindex mit dem Befehl apt update (siehe unten). Wenn du damit fertig bist, erhältst du die neuesten Paketinformationen, mit denen du die neueste Version der Pakete installieren kannst.

sudo apt update

Gib nun den folgenden apt install Befehl ein, um den Apache Webserver zu installieren. Gib zur Bestätigung y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER, um mit der Installation fortzufahren.

sudo apt install apache2

apache2 installieren

Nachdem Apache2 installiert ist, führe die folgenden systemctl-Befehle aus, um den Status des apche2-Dienstes zu überprüfen.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Die Ausgabe enabled sollte anzeigen, dass der apache2-Dienst beim Systemstart automatisch gestartet wird. Und der Status active (läuft) bestätigt, dass der apache2-Dienst läuft.

Apache2-Dienst überprüfen

UFW installieren

Nachdem Apache2 installiert ist, installierst du die UFW (Uncomplicated Firewall) und öffnest die Ports für OpenSSH, HTTP und HTTPS. Du richtest UFW als Standard-Firewall auf deinem Debian-Server ein.

Installiere das ufw-Paket auf deinem Debian-Server mit dem Befehl apt install (siehe unten). Gib y ein, um die Installation zu bestätigen und drücke ENTER, um fortzufahren.

sudo apt install ufw

ufw installieren

Nachdem ufw installiert ist, führe die folgenden ufw-Befehle aus, um den ssh-Dienst zuzulassen und ufw zu aktivieren.

sudo ufw allow OpenSSH
sudo ufw enable

Gib y ein, wenn du aufgefordert wirst, den ufw-Dienst zu starten und zu aktivieren. Wenn du erfolgreich bist, solltest du die Ausgabe„Firewall ist aktiv und wird beim Systemstart aktiviert“ erhalten.

start enable ufw

Wenn die ufw läuft, solltest du die beiden HTTP- und HTTPS-Ports hinzufügen, die der Apache2-Webserver verwenden soll.

Führe den unten stehenden ufw-Befehl aus, um die Liste der in der ufw verfügbaren Anwendungsprofile zu erhalten. Du solltest Profile wie OpenSSH für den ssh-Dienst und WWW Full für den Apache2-Webserver sehen, beides HTTP- und HTTPS-Protokolle.

sudo ufw app list

Führe nun den folgenden Befehl aus, um das Profil WWW Full hinzuzufügen und zu aktivieren und lade ufw neu, um die Änderungen zu übernehmen.

sudo ufw allow "WWW Full"
sudo ufw reload

Führe abschließend den Befehl ufw status aus, um die aktivierten Regeln in ufw zu überprüfen. Vergewissere dich, dass das Profil WWW Full aktiviert ist, was bedeutet, dass sowohl HTTP- als auch HTTPS-Ports geöffnet sind.

sudo ufw status

WWW Full zulassen und ufw verifizieren

PHP 8.2 installieren

Das neueste Debian 12 Bookwork wird standardmäßig mit PHP 8.2-Paketen ausgeliefert, der PHP-Version, die für die Installation von Nextcloud empfohlen wird. Jetzt installierst du die PHP 8.2 Pakete und konfigurierst PHP für die Nextcloud-Installation. Außerdem aktivierst du den PHP Opcache, der als Speicher-Cache für Nextcloud verwendet wird.

Führe den Befehl apt install aus, um PHP-Pakete auf deinem Debian-System zu installieren. Der Befehl installiert PHP und einige Erweiterungen, die von Nextcloud benötigt werden, wie GD, MySQL, Imagick, pear und apcu. Auf der Seite mit den Nextcloud-Serveranforderungen findest du eine vollständige Liste der benötigten Pakete.

sudo apt install -y php php-curl php-cli php-mysql php-gd php-common php-xml php-json php-intl php-pear php-imagick php-dev php-common php-mbstring php-zip php-soap php-bz2 php-bcmath php-gmp php-apcu libmagickcore-dev

Gib y ein, um die Installation zu bestätigen, und drücke dann ENTER, um fortzufahren.

php 8.2 installieren

Nachdem PHP installiert ist, überprüfe die PHP-Version und die aktivierten PHP-Erweiterungen mit dem folgenden Befehl.

php --version
php -m

Du solltest sehen, dass PHP 8.2 installiert ist und Erweiterungen wie GD, MySQL, Imagick, xml und zip aktiviert sind.

php prüfen

Als Nächstes öffnest du die PHP-Konfigurationsdatei /etc/php/8.2/apache2/php.ini mit dem Befehl nano editor.

sudo nano /etc/php/8.2/apache2/php.ini

Entferne die Markierung des Parameters date.timezone und gib die richtige Zeitzone für PHP ein.

date.timezone = Europe/Amsterdam

Erhöhe den Standardwert der Parameter memory_limit, upload_max_filesize, post_max_size und max_execution_time. Ändere die Werte nach Bedarf.

memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M 
max_execution_time = 300

Aktiviere file_uploads und allow_url_fopen, indem du den Standardwert auf On änderst.

file_uploads = On
allow_url_fopen = On

Deaktiviere die Parameter display_errors und output_buffering, indem du den Standardwert auf Off änderst.

display_errors = Off
output_buffering = Off

Dekommentiere den Parameter zend_extension und ändere den Wert in opcache. Dadurch wird PHP OPcache aktiviert, das für Nextcloud benötigt wird.

zend_extension=opcache

Füge die folgenden Zeilen in den Abschnitt [opcache] ein. Die OPCache-Konfiguration wird von Nextcloud empfohlen.

opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1

Speichere die Datei und schließe den Editor, wenn du fertig bist.

Gib abschließend den Befehl systemctl ein, um den apache2-Dienst neu zu starten. Jedes Mal, wenn du Änderungen an der PHP-Konfiguration vornimmst, musst du den apache2-Dienst neu starten, damit die vorgenommenen Änderungen übernommen werden.

sudo systemctl restart apache2

Installation von MariaDB Server

Nachdem du den Apache2-Webserver und PHP 8.2 installiert hast, installierst du den MariaDB-Server, der als Datenbank für Nextcloud verwendet wird, und konfigurierst das MariaDB-Root-Passwort mit dem Dienstprogramm mariadb-secure-installation.

Installiere den MariaDB-Server mit dem Befehl apt install (siehe unten). Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um mit der Installation fortzufahren.

sudo apt install mariadb-server

mariadb installieren

Sobald MariaDB installiert ist, gibst du die folgenden systemctl-Befehle ein, um den mariadb-Dienst zu überprüfen.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Die Ausgabe enabled zeigt an, dass der mariadb-Dienst beim Systemstart automatisch ausgeführt wird. Und die Ausgabe active (running) sollte anzeigen, dass der mariadb-Dienst ausgeführt wird.

mariadb prüfen

Jetzt, wo der MariaDB-Server läuft, solltest du die MariaDB-Installation mit dem Dienstprogramm mariadb-secure-installation sichern. Der Befehl mariadb-secure-installation hilft dir dabei, das MariaDB-Root-Passwort und die Authentifizierung einzurichten und den standardmäßigen anonymen Benutzer default database test zu entfernen.

Führe den Befehl mariadb-secure-installation aus, um deinen MariaDB-Server zu sichern.

sudo mariadb-secure-installation

Während des Vorgangs solltest du Y eingeben, um zuzustimmen und die Konfiguration auf MariaDB anzuwenden, oder n eingeben, um nicht zuzustimmen und die Konfiguration als Standard zu belassen. Im Folgenden findest du einige MariaDB-Konfigurationen, nach denen du gefragt wirst:

  • Drücke ENTER, wenn du nach dem MariaDB Root-Passwort gefragt wirst.
  • Gib n ein, wenn du nach der Authentifizierungsmethode unix_socket gefragt wirst.
  • Gib Y ein, um ein neues Passwort für den MariaDB-Root-Benutzer einzurichten. Gib dann das neue Passwort ein und wiederhole den Vorgang.
  • Gib Y ein, um den anonymen Standardbenutzer von MariaDB zu entfernen.
  • Gib dann erneut Y ein, um die Fernanmeldung für den MariaDB Root-Benutzer zu deaktivieren.
  • Gib Y ein, um den standardmäßigen Datenbanktest aus MariaDB zu entfernen.
  • Gib abschließend erneut Y ein, um die Tabellenberechtigungen neu zu laden und die Änderungen zu übernehmen.

Damit ist der MariaDB-Server installiert und gesichert.

Datenbank und Benutzer anlegen

Nach der Installation des MariaDB-Servers musst du nun eine neue Datenbank und einen neuen Benutzer für Nextcloud erstellen. Dazu musst du dich über den mariadb-Client beim MariaDB-Server anmelden.

Melde dich mit dem unten stehenden Befehl mariadb client beim MariaDB-Server an. Gib das MariaDB Root-Passwort ein, wenn du dazu aufgefordert wirst.

sudo mariadb -u root -p

Sobald du bei MariaDB eingeloggt bist, führe die folgenden Abfragen aus, um eine neue Mariadb-Datenbank und einen neuen Benutzer für Nextcloud zu erstellen. In diesem Beispiel wirst du eine neue Datenbank nextcloud_db und den Benutzer nextclouduser mit dem Passwort StrongPassword anlegen. Achte darauf, dass du das Passwort StrongPassword durch ein neues Passwort änderst.

CREATE DATABASE nextcloud_db;
CREATE USER nextclouduser@localhost IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextclouduser@localhost;
FLUSH PRIVILEGES;

Datenbank und Benutzer erstellen

Zum Schluss führst du die folgende Abfrage aus, um sicherzustellen, dass der Benutzer nextclouduser auf die Datenbank nextcloud_db zugreifen kann.

SHOW GRANTS FOR nextclouduser@localhost;

Wenn alles gut geht, solltest du sehen, dass der Benutzer nextclouduser Zugriffsrechte auf die Datenbank nextcloud_db hat.

mariadb-Benutzer prüfen

Gib quit ein, um den MariaDB-Server zu verlassen und diesen Abschnitt abzuschließen.

Herunterladen des Nextcloud-Quellcodes

Zu diesem Zeitpunkt sind alle Softwarepakete für den Betrieb von Nextcloud installiert. Jetzt lädst du die neueste Version des Nextcloud-Quellcodes herunter und installierst sie. Informiere dich vorher auf der Nextcloud-Downloadseite über die aktuelle Version von Nextcloud.

Bevor du den Nextcloud-Quellcode herunterlädst, führe den Befehl apt install aus, um curl zu installieren und zu entpacken.

sudo apt install curl unzip -y

unzip und curl installieren

Wechsle in das Verzeichnis /var/www und lade den Nextcloud-Quellcode mit dem unten stehenden curl-Befehl herunter. Besuche die Nextcloud Download-Seite, um die neueste Version von Nextcloud zu erhalten.

cd /var/www/
curl -o nextcloud.zip https://download.nextcloud.com/server/releases/latest.zip

Herunterladen von Nextcloud

Entpacke die Datei nextcloud.zip mit dem Befehl unzip und ändere dann den Eigentümer des nextcloud-Verzeichnisses in www-data.

unzip nextcloud.zip
sudo chown -R www-data:www-data nextcloud

Damit solltest du feststellen, dass das Document Root-Verzeichnis für die Nextcloud-Installation das Verzeichnis /var/www/nextcloud ist. Und der Apache2-Webserver kann über den Benutzer www-data auf den nextcloud-Quellcode zugreifen.

Apache2 Virtual Host konfigurieren

Nachdem du den Nextcloud-Quellcode heruntergeladen hast, musst du eine neue Konfiguration des virtuellen Apache2-Hosts erstellen, der für den Betrieb von Nextcloud verwendet werden soll. Vergewissere dich, dass der Domainname auf die IP-Adresse deines Debian-Servers für die Nextcloud-Installation zeigt.

Erstelle eine neue Apache2 Virtual Host-Konfiguration /etc/apache2/sites-available/nextcloud.conf mit dem unten stehenden nano-Befehl.

sudo nano /etc/apache2/sites-available/nextcloud.conf

Ändere den Domänennamen im Parameter ServerName mit deiner Domäne und den vollständigen Pfad des Logs für die beiden Parameter ErrorLog und CustomLog.

<VirtualHost *:80>
    ServerName nextcloud.hwdomain.io
    DocumentRoot /var/www/nextcloud/
# log files
ErrorLog /var/log/apache2/files.hwdomain.io-error.log
CustomLog /var/log/apache2/files.hwdomain.io-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
</Directory>
</VirtualHost>

Wenn du fertig bist, speichere die Datei und beende den Editor.

Als nächstes führst du den Befehl a2ensite aus, um die Konfiguration des virtuellen Hosts nextcloud.conf zu aktivieren. Überprüfe dann die gesamte Apache2-Konfiguration mit dem Befehl apachectl (siehe unten).

sudo a2ensite nextcloud.conf
sudo apachectl configtest

virtualhost konfigurieren

Du solltest die Ausgabe Syntax OK sehen, wenn du die Apache-Konfiguration korrekt und richtig eingestellt hast.

Gib nun den folgenden systemctl-Befehl ein, um den apache2-Dienst neu zu starten und die Konfiguration des virtuellen Nextcloud-Hosts anzuwenden.

sudo systemctl restart apache2

Nachdem der apache2 neu gestartet wurde, sollte deine Nextcloud-Installation über ein unsicheres HTTP-Protokoll erreichbar sein. Wenn du deine Nextcloud-Domain aufrufst, solltest du die folgende Installationsseite erhalten:

installation page

Nextcloud mit SSL/TLS-Zertifikaten absichern

Um eine zusätzliche Sicherheitsebene für deine Nextcloud einzurichten, richtest du HTTPS innerhalb deiner Apache2 Virtual Host Konfiguration über Certbot ein. Certbot ist ein Kommandozeilen-Tool zur Erstellung kostenloser SSL/TLS-Zertifikate von Letsencrypt und wird mit einem zusätzlichen Plugin geliefert, mit dem du HTTPS automatisch für mehrere Webserver konfigurieren kannst.

Führe den folgenden apt install-Befehl aus, um Certbot und das Certbot-Apache-Plugin zu installieren. Gib y ein, wenn du zur Bestätigung aufgefordert wirst, und drücke ENTER, um fortzufahren.

sudo apt install certbot python3-certbot-apache

certbot installieren

Führe nun den folgenden Certbot-Befehl aus, um SSL/TLS-Zertifikate für deinen Nextcloud-Domainnamen zu generieren und HTTPS automatisch innerhalb des virtuellen Apache2-Hosts zu konfigurieren. Achte darauf, dass du den Domainnamen und die E-Mail-Adresse im folgenden Befehl änderst.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email user@hwdomain.io -d nextcloud.hwdomain.io

Sobald der Vorgang abgeschlossen ist, sollte der Nextcloud-Domainname mit HTTPS konfiguriert sein, was durch das Certbot Apache Plugin verwaltet wird. Und die SSL/TLS-Zertifikate befinden sich im Verzeichnis /etc/letsencrypt/live/domain-name.com/.

Installation von Nextcloud

In diesem Abschnitt wirst du die Nextcloud-Installation über deinen Webbrowser starten. Dabei legst du auch den Admin-Benutzer für Nextcloud an.

Starte deinen Webbrowser und rufe den Domainnamen deiner Nextcloud-Installation auf (z.B.: http://nextcloud.hwdomain.io/). Du solltest automatisch zu einer sicheren HTTPS-Verbindung weitergeleitet werden und wirst aufgefordert, einen Administrator-Benutzer für Nextcloud anzulegen.

Gib den neuen Administrator-Benutzer und das Passwort für deine Nextcloud ein. Du kannst auch ein benutzerdefiniertes Datenverzeichnis einrichten oder es als Standard belassen.

Admin-Benutzer anlegen

Als Nächstes scrollst du zum Ende der Seite und gibst den Namen der Datenbank, den Benutzer und das Passwort ein. Klicke dann auf Setup beenden, um die Installation abzuschließen.

Datenbank-Setup

Sobald die Installation abgeschlossen ist, solltest du die Nextcloud-Empfehlung erhalten, einige Nextcloud-Apps zu installieren. Klicke auf Überspringen, um sie später zu installieren.

empfohlene Apps

Jetzt solltest du das Benutzer-Dashboard wie folgt sehen:

nextcloud Dashboard

Klicke jetzt auf das Ordnersymbol, um den Dateimanager von Nextcloud zu öffnen.

Dateimanager

Schließlich klickst du im linken Menü auf das Benutzersymbol und wählst Verwaltungseinstellungen.

Verwaltungseinstellungen

Klicke im Bereich Verwaltung auf Übersicht. Du solltest Informationen über deine Nextcloud-Version und einige Empfehlungen erhalten, die du auf deine Nextcloud anwenden kannst, darunter einige Sicherheitsempfehlungen und Leistungsoptimierungen.

Übersicht

Grundlegendes Leistungstuning für Nextcloud

In den folgenden Schritten fügst du Einstellungen zu deiner Nextcloud-Installation hinzu, indem du den Speichercache über OPCache aktivierst und cron über crontab einrichtest.

Öffne die Standardkonfiguration von Nextcloud /var/www/nextcloud/config/config.php mit dem unten stehenden nano-Editor-Befehl.

sudo nano /var/www/nextcloud/config/config.php

Füge im Abschnitt $CONFIG = array die unten stehende neue Konfiguration hinzu, um das Memory Caching für Nextcloud zu aktivieren.

<?php
$CONFIG = array (
....
  # Additional configuration
  'memcache.local' => '\OC\Memcache\APCu',
);

Speichere die Änderungen und schließe die Datei, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um eine neue crontab zu erstellen, die zur Ausführung des Nextcloud crontab-Skripts verwendet wird. Der Parameter -u www-data wird verwendet, weil der Apache2-Webserver unter diesem Benutzer läuft.

sudo crontab -u www-data -e

Füge die folgende Konfiguration in die crontab-Datei ein.

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

Speichere und beende die Datei, wenn du fertig bist.

Überprüfe die Liste crontab für den Benutzer www-data mit dem folgenden Befehl. Stelle sicher, dass du das hinzugefügte crontab-Skript hast.

crontab -u www-data -l

Fazit

Du bist bereit! Du hast die Installation von Nextcloud auf deinem Debian-System abgeschlossen. Du hast Nextcloud mit dem Apache2 Webserver, PHP 8.2 und dem MariaDB Datenbankserver installiert. Außerdem hast du deine Nextcloud mit UFW (Uncomplicated Firewall) und SSL/TLS-Zertifikaten über Certbot und Letsencrypt gesichert.

Wenn du das alles eingerichtet hast, kannst du Nextcloud nutzen, um deine Dokumente sicher zu speichern oder deine Nextcloud um Datenspeicher von Dritten zu erweitern.

Das könnte dich auch interessieren …