Nextcloud auf NGINX: Voraussetzungen, Setup und Installation
Nextcloud mit einem NGINX-Server zu betreiben, sorgt für einen ressourcenschonenden Cloud-Betrieb und maximale Flexibilität. Voraussetzung für die Installation sind eine kompatible Systemumgebung sowie die korrekte Konfiguration. Damit Nextcloud reibungslos in der NGINX-Umgebung läuft, sind zudem ein paar spezifische Anpassungen nötig.
Nextcloud mit NGINX: Das starke Duo für deine Cloud
NGINX ist eine Open-Source-Webserver-Software, die zusätzlich als Reverse-Proxy-Server, Load-Balancer und HTTP-Cache fungiert. Entwickelt wurde die Anwendung primär vom Softwareentwickler Igor Sysoev und unter der BSD-Lizenz (einer Unix-Variante) veröffentlicht.
NGINX ist darauf spezialisiert, eine Vielzahl an gleichzeitigen Verbindungen effizient zu verarbeiten. Dafür nutzt die Software eine ereignisgesteuerte, nicht blockierende Architektur. Statt für jede Verbindung separate Threads zu starten, wie es klassische Webserver tun, setzt NGINX auf einen Master-Prozess und mehrere Worker-Prozesse. Während der Master die Konfiguration verwaltet, kümmern sich die Worker um die Client-Anfragen.
Die Kombination aus Nextcloud und NGINX bietet klare Vorteile für performante Serverumgebungen:
- Effiziente Ressourcen: NGINX verwaltet parallele Verbindungen extrem sparsam.
- Hohe Skalierbarkeit: Die Lastverteilung ist flexibel und lässt sich durch weitere Server einfach erweitern.
- Maßgeschneidert: Dank des modularen Aufbaus passt sich NGINX perfekt an deine Anforderungen an.
- Stabile Performance: Auch bei hoher Auslastung bleibt dein System zuverlässig erreichbar.
Nextcloud unterstützt offiziell primär Apache 2.x. Für NGINX gibt es daher keinen direkten Support vom Hersteller. Der Betrieb von Nextcloud mit NGINX ist deshalb vor allem für Nutzer:innen mit Erfahrung in der Webserver-Konfiguration empfehlenswert.
Welche Voraussetzungen braucht Nextcloud via NGINX?
Die Basis für Nextcloud unter NGINX ist ein Server mit Ubuntu, Debian oder einer vergleichbaren Distribution. Wir empfehlen mindestens 4 GB RAM und 2 CPUs. Wenn du viele Nextcloud-Apps nutzt, profitierst du von mehr Kernen und Speicher. Achte zudem auf genügend Speicherplatz für deine Daten und Backups.
Zusätzlich benötigst du eine kompatible Datenbank wie MariaDB oder MySQL sowie PHP (mindestens Version 8.1, ideal ist 8.3). Die Datenbank speichert User-Profile, Plugins und Metadaten, während PHP die Funktionen von Nextcloud ausführt. Für die Installation sind Admin-Rechte auf dem Server erforderlich.
Nextcloud mit NGINX als Webserver: So gelingt die Einrichtung
Bevor wir mit der Installation starten, haben wir die Basis vorbereitet. Diese Anleitung basiert auf einem Ubuntu-Server, auf dem NGINX, MySQL und PHP 8.3 inklusive aller Erweiterungen bereits laufen.
Zudem ist Certbot installiert, um ein SSL-Zertifikat von Let’s Encrypt zu nutzen. Wir setzen voraus, dass du eine eigene Domain besitzt, um Nextcloud bequem per URL statt über die IP-Adresse zu erreichen.
Lies in unseren weiteren Guides, wie du Nextcloud unter Ubuntu 22.04 installierst oder Nextcloud auf Kubernetes aufsetzt. Wir bieten dir auch eine Anleitung für Nextcloud unter Debian 12.
Nextcloud laden und entpacken
Erstelle zuerst im Benutzerverzeichnis einen Ordner namens „nextcloud“ für die Installationsdateien. Du kannst diese manuell aus dem Nextcloud-Changelog laden oder direkt diesen Curl-Befehl nutzen:
mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zipbashFalls du eine andere Version wählst, achte darauf, die Download-URL der ZIP-Datei im Befehl anzupassen.
Entpacke das Archiv, verschiebe den Inhalt nach ./var/www (dein Root-Verzeichnis) und setze die nötigen Berechtigungen mit diesen Befehlen:
unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloudbashDatenbank konfigurieren
Richte die MySQL-Datenbank mit dem Befehl sudo mysql_secure_installation ein. Bestätige mit „y“, um ein Root-Passwort zu vergeben (VALIDATE PASSWORD), und wähle „2“ für ein sicheres Passwort (STRONG). Bestätige mit „y“ und folge den Schritten, um anonyme User zu löschen, Remote-Logins zu sperren und die Testdatenbank zu entfernen.
Gehe dann wie folgt vor:
- Melde dich mit
sudo mysql -u root -pals Root in der Datenbank an. - Erstelle mit
create database nextcloud;die Datenbank für Nextcloud. - Lege mit
create user 'nextcloud'@'localhost' identified by <new_password>;den passenden User an. - Vergib mit
grant all privileges on nextcloud.* to 'nextcloud'@'localhost';die erforderlichen Rechte. - Speichere mit
flush privileges;und verlasse die Konsole mitexit.
Trage nun die Zugangsdaten (DB_NAME, DB_USER, DB_PASSWORD) in die Konfigurationsdatei von Nextcloud ein. Öffne ./var/www/nextcloud/config/config.php und ergänze die Einträge:
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,txtNGINX-Standardkonfiguration deaktivieren
Damit deine Nextcloud-Instanz sauber geladen wird, darf keine andere Konfiguration dazwischenfunken. Entferne eine eventuell vorhandene default-Datei in ./etc/nginx/sites-enabled/ mit diesem Befehl:
sudo rm /etc/nginx/sites-enabled/defaultbashAktiviere danach die neue Konfiguration für Nextcloud:
sudo ln -s /etc/nginx/sites-available/beispieldomain.de /etc/nginx/sites-enabled/bashNGINX-Server einstellen
Für die NGINX-Konfiguration muss deine Domain bereits auf die Server-IP zeigen (DNS-Check nicht vergessen). Erstelle die Konfigurationsdatei im Verzeichnis sites-available per sudo-Befehl sudo touch /etc/nginx/sites-available/beispieldomain.de (hier am Beispiel beispieldomain.de).
Öffne die Datei mit einem Editor wie Vim (sudo vim /etc/nginx/sites-available/beispieldomain.de) und kopiere den Code-Block für „Nextcloud in a subdir of the NGINX webroots“ von der offiziellen Nextcloud-Dokumentation hinein.
Da Certbot das SSL-Zertifikat später automatisch einbindet, entferne alle SSL-Zeilen aus dieser Datei. Das spart manuelle Arbeit und Fehlerquellen.
SSL-Zertifikat via Certbot aktivieren
Sicherheit geht vor: Damit deine Cloud über HTTPS erreichbar ist, nutzen wir Let’s Encrypt. Erlaube zuerst HTTPS- und SSH-Verbindungen in der Firewall:
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'bashStarte die Firewall mit sudo ufw enable und prüfe den Status mit sudo ufw status. Erstelle dann das Zertifikat via Certbot:
sudo certbot --nginx -d beispieldomain.debashHinterlege deine E-Mail für Benachrichtigungen, akzeptiere die Bedingungen und wähle Option 2, um HTTP-Traffic direkt auf HTTPS umzuleiten. Die Zertifikate liegen unter .etc/letsencrypt/live/beispieldomain.de/. Trage den Pfad zum Zertifikat (fullchain.pem) und zum Key (privkey.pem) in deine NGINX-Config ein:
ssl_certificate /etc/letsencrypt/live/beispieldomain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/beispieldomain.de/privkey.pem;txtNach der automatischen Anpassung durch Certbot musst du das Attribut ssl zwischen 443 und http2 wieder hinzufügen. Der Block sieht dann so aus:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name beispieldomain.de;txtDienste starten und loslegen
Damit alles glatt läuft, starte die PHP-FPM- und NGINX-Dienste neu:
sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.servicebashGib nun deine Domain im Browser ein. Wenn alles passt, begrüßt dich direkt die Nextcloud-Oberfläche.