Nextcloud mit einem NGINX-Server zu betreiben, sorgt für einen res­sour­cen­scho­nen­den Cloud-Betrieb und maximale Fle­xi­bi­li­tät. Vor­aus­set­zung für die In­stal­la­ti­on sind eine kom­pa­ti­ble Sys­tem­um­ge­bung sowie die korrekte Kon­fi­gu­ra­ti­on. Damit Nextcloud rei­bungs­los in der NGINX-Umgebung läuft, sind zudem ein paar spe­zi­fi­sche An­pas­sun­gen nötig.

Nextcloud mit NGINX: Das starke Duo für deine Cloud

NGINX ist eine Open-Source-Webserver-Software, die zu­sätz­lich als Reverse-Proxy-Server, Load-Balancer und HTTP-Cache fungiert. Ent­wi­ckelt wurde die Anwendung primär vom Soft­ware­ent­wick­ler Igor Sysoev und unter der BSD-Lizenz (einer Unix-Variante) ver­öf­fent­licht.

NGINX ist darauf spe­zia­li­siert, eine Vielzahl an gleich­zei­ti­gen Ver­bin­dun­gen effizient zu ver­ar­bei­ten. Dafür nutzt die Software eine er­eig­nis­ge­steu­er­te, nicht blo­ckie­ren­de Ar­chi­tek­tur. Statt für jede Ver­bin­dung separate Threads zu starten, wie es klas­si­sche Webserver tun, setzt NGINX auf einen Master-Prozess und mehrere Worker-Prozesse. Während der Master die Kon­fi­gu­ra­ti­on verwaltet, kümmern sich die Worker um die Client-Anfragen.

Die Kom­bi­na­ti­on aus Nextcloud und NGINX bietet klare Vorteile für per­for­man­te Ser­ver­um­ge­bun­gen:

  • Ef­fi­zi­en­te Res­sour­cen: NGINX verwaltet parallele Ver­bin­dun­gen extrem sparsam.
  • Hohe Ska­lier­bar­keit: Die Last­ver­tei­lung ist flexibel und lässt sich durch weitere Server einfach erweitern.
  • Maß­ge­schnei­dert: Dank des modularen Aufbaus passt sich NGINX perfekt an deine An­for­de­run­gen an.
  • Stabile Per­for­mance: Auch bei hoher Aus­las­tung bleibt dein System zu­ver­läs­sig er­reich­bar.
Hinweis

Nextcloud un­ter­stützt offiziell primär Apache 2.x. Für NGINX gibt es daher keinen direkten Support vom Her­stel­ler. Der Betrieb von Nextcloud mit NGINX ist deshalb vor allem für Nutzer:innen mit Erfahrung in der Webserver-Kon­fi­gu­ra­ti­on emp­feh­lens­wert.

Welche Vor­aus­set­zun­gen braucht Nextcloud via NGINX?

Die Basis für Nextcloud unter NGINX ist ein Server mit Ubuntu, Debian oder einer ver­gleich­ba­ren Dis­tri­bu­ti­on. Wir empfehlen min­des­tens 4 GB RAM und 2 CPUs. Wenn du viele Nextcloud-Apps nutzt, pro­fi­tierst du von mehr Kernen und Speicher. Achte zudem auf genügend Spei­cher­platz für deine Daten und Backups.

Zu­sätz­lich benötigst du eine kom­pa­ti­ble Datenbank wie MariaDB oder MySQL sowie PHP (min­des­tens Version 8.1, ideal ist 8.3). Die Datenbank speichert User-Profile, Plugins und Metadaten, während PHP die Funk­tio­nen von Nextcloud ausführt. Für die In­stal­la­ti­on sind Admin-Rechte auf dem Server er­for­der­lich.

Nextcloud mit NGINX als Webserver: So gelingt die Ein­rich­tung

Bevor wir mit der In­stal­la­ti­on starten, haben wir die Basis vor­be­rei­tet. Diese Anleitung basiert auf einem Ubuntu-Server, auf dem NGINX, MySQL und PHP 8.3 inklusive aller Er­wei­te­run­gen bereits laufen.

Zudem ist Certbot in­stal­liert, um ein SSL-Zer­ti­fi­kat 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.

Tipp

Lies in unseren weiteren Guides, wie du Nextcloud unter Ubuntu 22.04 in­stal­lierst oder Nextcloud auf Ku­ber­netes aufsetzt. Wir bieten dir auch eine Anleitung für Nextcloud unter Debian 12.

Nextcloud laden und entpacken

Erstelle zuerst im Be­nut­zer­ver­zeich­nis einen Ordner namens „nextcloud“ für die In­stal­la­ti­ons­da­tei­en. 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.zip
bash
Hinweis

Falls du eine andere Version wählst, achte darauf, die Download-URL der ZIP-Datei im Befehl an­zu­pas­sen.

Entpacke das Archiv, ver­schie­be den Inhalt nach ./var/www (dein Root-Ver­zeich­nis) und setze die nötigen Be­rech­ti­gun­gen mit diesen Befehlen:

unzip nextcloud.zip && sudo mv nextcloud /var/www/ && sudo chown -R www-data:www-data /var/www/nextcloud
bash

Datenbank kon­fi­gu­rie­ren

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 Test­da­ten­bank zu entfernen.

Gehe dann wie folgt vor:

  1. Melde dich mit sudo mysql -u root -p als Root in der Datenbank an.
  2. Erstelle mit create database nextcloud; die Datenbank für Nextcloud.
  3. Lege mit create user 'nextcloud'@'localhost' identified by <new_password>; den passenden User an.
  4. Vergib mit grant all privileges on nextcloud.* to 'nextcloud'@'localhost'; die er­for­der­li­chen Rechte.
  5. Speichere mit flush privileges; und verlasse die Konsole mit exit.

Trage nun die Zu­gangs­da­ten (DB_NAME, DB_USER, DB_PASSWORD) in die Kon­fi­gu­ra­ti­ons­da­tei 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,
txt

NGINX-Stan­dard­kon­fi­gu­ra­ti­on de­ak­ti­vie­ren

Damit deine Nextcloud-Instanz sauber geladen wird, darf keine andere Kon­fi­gu­ra­ti­on da­zwi­schen­fun­ken. Entferne eine eventuell vor­han­de­ne default-Datei in ./etc/nginx/sites-enabled/ mit diesem Befehl:

sudo rm /etc/nginx/sites-enabled/default
bash

Aktiviere danach die neue Kon­fi­gu­ra­ti­on für Nextcloud:

sudo ln -s /etc/nginx/sites-available/beispieldomain.de /etc/nginx/sites-enabled/
bash

NGINX-Server ein­stel­len

Für die NGINX-Kon­fi­gu­ra­ti­on muss deine Domain bereits auf die Server-IP zeigen (DNS-Check nicht vergessen). Erstelle die Kon­fi­gu­ra­ti­ons­da­tei im Ver­zeich­nis 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 of­fi­zi­el­len Nextcloud-Do­ku­men­ta­ti­on hinein.

Da Certbot das SSL-Zer­ti­fi­kat später au­to­ma­tisch einbindet, entferne alle SSL-Zeilen aus dieser Datei. Das spart manuelle Arbeit und Feh­ler­quel­len.

SSL-Zer­ti­fi­kat via Certbot ak­ti­vie­ren

Si­cher­heit geht vor: Damit deine Cloud über HTTPS er­reich­bar ist, nutzen wir Let’s Encrypt. Erlaube zuerst HTTPS- und SSH-Ver­bin­dun­gen in der Firewall:

sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'
bash

Starte die Firewall mit sudo ufw enable und prüfe den Status mit sudo ufw status. Erstelle dann das Zer­ti­fi­kat via Certbot:

sudo certbot --nginx -d beispieldomain.de
bash

Hin­ter­le­ge deine E-Mail für Be­nach­rich­ti­gun­gen, ak­zep­tie­re die Be­din­gun­gen und wähle Option 2, um HTTP-Traffic direkt auf HTTPS um­zu­lei­ten. Die Zer­ti­fi­ka­te liegen unter .etc/letsencrypt/live/beispieldomain.de/. Trage den Pfad zum Zer­ti­fi­kat (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;
txt

Nach der au­to­ma­ti­schen Anpassung durch Certbot musst du das Attribut ssl zwischen 443 und http2 wieder hin­zu­fü­gen. Der Block sieht dann so aus:

server { 
    listen 443 ssl http2; 
    listen [::]:443 ssl http2; 
    server_name beispieldomain.de;
txt

Dienste 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.service
bash

Gib nun deine Domain im Browser ein. Wenn alles passt, begrüßt dich direkt die Nextcloud-Ober­flä­che.

Zum Hauptmenü