Nextcloud mit einem NGINX-Server laufen zu lassen, er­mög­licht einen res­sour­cen­scho­nen­den Betrieb der Cloud-Software und bietet flexible Ein­satz­mög­lich­kei­ten. Die In­stal­la­ti­on setzt sowohl eine kom­pa­ti­ble Sys­tem­um­ge­bung als auch die passende Kon­fi­gu­ra­ti­on voraus. Um Nextcloud nahtlos in die NGINX-Umgebung zu in­te­grie­ren, sind außerdem einige spe­zi­fi­sche An­pas­sun­gen er­for­der­lich.

Nextcloud mit NGINX: Ein leis­tungs­star­kes Duo für Ihre Cloud

NGINX ist eine auf dem Open-Source-Prinzip ba­sie­ren­de Webserver-Software, die ebenso als Reverse-Proxy-Server, Load-Balancer und HTTP-Cache genutzt werden kann. Die Anwendung wurde größ­ten­teils von dem rus­si­schen Soft­ware­ent­wick­ler Igor Sysoev pro­gram­miert und unter der BSD-Lizenz (BSD ist eine Unix-Variante) ver­öf­fent­licht.

NGINX ist darauf ausgelegt, eine große Anzahl von Ver­bin­dun­gen gleich­zei­tig ver­ar­bei­ten zu können. Um dies zu ge­währ­leis­ten, setzt die Software auf eine er­eig­nis­ge­steu­er­te, nicht blo­ckie­ren­de Ar­chi­tek­tur. Anstatt wie tra­di­tio­nel­le Webserver für jede Ver­bin­dung eigene Threads oder Prozesse zu verwenden, greift NGINX auf einen Master-Prozess und ver­schie­de­ne Worker-Prozesse zurück. Ersterer verwaltet die Kon­fi­gu­ra­ti­on, letztere bedienen ein­ge­hen­de Anfragen der Clients.

Nextcloud mit NGINX zu kom­bi­nie­ren, bringt ver­schie­de­ne Vorteile mit sich, die ins­be­son­de­re für per­for­man­te Ser­ver­um­ge­bun­gen relevant sind. Dazu zählen vor allem:

  • Ef­fi­zi­en­te Res­sour­cen­nut­zung: NGINX ist dazu in der Lage, viele gleich­zei­ti­ge Ver­bin­dun­gen res­sour­cen­scho­nend zu verwalten.
  • Hohe Ska­lier­bar­keit: NGINX er­mög­licht eine flexible Last­ver­tei­lung und kann pro­blem­los durch das Hin­zu­fü­gen zu­sätz­li­cher Server erweitert werden.
  • In­di­vi­du­el­le An­pas­sungs­mög­lich­kei­ten: Dank seiner modularen Struktur lässt sich NGINX an un­ter­schied­lichs­te An­wen­dungs­fäl­le anpassen.
  • Stabile Per­for­mance unter Last: Auch bei hoher Ser­ver­aus­las­tung bleibt NGINX zu­ver­läs­sig und sorgt für eine konstante Ver­füg­bar­keit.
Hinweis

Nextcloud un­ter­stützt offiziell nur Apache 2.x als Webserver. Für NGINX stellt Nextcloud daher auch keinen of­fi­zi­el­len Support bereit. Nextcloud mit NGINX zu betreiben, empfiehlt sich daher vorrangig für User mit Erfahrung im Bereich der Webserver-Kon­fi­gu­ra­tio­nen.

Welche Vor­aus­set­zun­gen müssen für Nextcloud via NGINX erfüllt sein?

Die Grund­vor­aus­set­zung für Nextcloud unter NGINX ist ein Server, auf dem bereits Ubuntu, Debian oder ein anderes kom­pa­ti­bles System in­stal­liert wurde. Der Server sollte min­des­tens über vier Gigabyte RAM und zwei CPUs verfügen. Für um­fang­rei­che­re Nextcloud-Instanzen mit vielen Nextcloud-Apps empfehlen sich Systeme mit mehr CPU-Kernen und Ar­beits­spei­cher. Es muss außerdem aus­rei­chend Spei­cher­platz für Ihre Daten und Backups vorhanden sein.

Für die In­stal­la­ti­on benötigen Sie zudem eine kom­pa­ti­ble Datenbank wie MySQL oder MariaDB sowie die Skript­spra­che PHP (min­des­tens Version 8.1, empfohlen wird Version 8.3). In der Datenbank werden sowohl Nut­ze­rin­nen und Nutzer als auch Plugins, deren Daten und Datei-Metadaten ge­spei­chert. PHP ist es­sen­zi­ell für die Ver­ar­bei­tung und Aus­füh­rung der Nextcloud-Funk­tio­nen. Um Nextcloud in­stal­lie­ren zu können, benötigen Sie darüber hinaus einen Account mit Admin-Rechten.

Managed Nextcloud
Ihr per­sön­li­cher Cloud-Speicher
  • Voll­stän­di­ge Da­ten­sou­ve­rä­ni­tät
  • Kein Ad­mi­nis­tra­ti­ons­auf­wand dank Managed-Betrieb
  • Flexibel um Apps und Online Office er­wei­ter­bar

Nextcloud mit NGINX als Webserver: In­stal­la­ti­on und Ein­rich­tung

Vor der In­stal­la­ti­on von Nextcloud haben wir grund­le­gen­de Vor­ar­bei­ten bereits erledigt. Wir gehen in dieser Anleitung von einem Ubuntu-Server aus, auf dem das System und alle be­nö­tig­ten Ab­hän­gig­kei­ten im Vorfeld in­stal­liert wurden. Dazu zählen NGINX als Webserver, MySQL als Datenbank und PHP in der Version 8.3 mit allen er­for­der­li­chen Er­wei­te­run­gen.

Wir haben außerdem Certbot in­stal­liert, um un­kom­pli­ziert ein SSL-Zer­ti­fi­kat mit Let´s Encrypt ein­rich­ten zu können. Wir setzen zudem eine eigene Domain voraus, um Nextcloud über eine ent­spre­chen­de URL anstelle einer IP-Adresse nutzen zu können.

Tipp

In weiteren Artikeln erfahren Sie, wie Sie Nextcloud unter Ubuntu 22.04 in­stal­lie­ren oder Nextcloud auf Ku­ber­netes ein­rich­ten. Außerdem bieten wir Ihnen eine aus­führ­li­che Anleitung für die In­stal­la­ti­on und Kon­fi­gu­ra­ti­on von Nextcloud unter Debian 12.

Nextcloud her­un­ter­la­den und entpacken

Zunächst erstellen Sie im Be­nut­zer­ver­zeich­nis auf Ihrem Server einen Ordner namens „nextcloud“, in den Sie die In­stal­la­ti­ons­da­tei­en von Nextcloud her­un­ter­la­den. Das kann manuell über das Nextcloud-Changelog erfolgen, funk­tio­niert mithilfe des folgenden Curl-Befehls aber noch einfacher:

mkdir ~/nextcloud && cd ~/nextcloud
curl --output nextcloud.zip https://download.nextcloud.com/server/releases/nextcloud-30.0.5.zip
bash
Hinweis

Sollten Sie eine andere Version in­stal­lie­ren, müssen Sie darauf achten, die korrekte Download-URL der ZIP-Datei ein­zu­fü­gen.

Entpacken Sie die Datei, ver­schie­ben Sie den Ordner nach ./var/www (fungiert als Root-Ver­zeich­nis) und legen Sie Da­tei­be­rech­ti­gun­gen fest. Dafür nutzen Sie folgende Befehle:

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

Datenbank ein­rich­ten

Um die MySQL-Datenbank ein­zu­rich­ten, führen Sie den sudo-Befehl sudo mysql_secure_installation aus. Geben Sie „y“ ein, um Ihr Root-Passwort fest­zu­le­gen (VALIDATE PASSWORD) und „2“ für ein starkes Passwort (STRONG), das Sie danach ein­rich­ten können. Drücken Sie „y”, um das Passwort zu be­stä­ti­gen und im Anschluss erneut, um anonyme User zu entfernen, Remote-Logins zu verbieten, die Test­da­ten­bank zu entfernen und Pri­vi­le­gi­en-Tabellen neu zu laden.

Danach gehen Sie fol­gen­der­ma­ßen vor:

  1. Loggen Sie sich mit dem Befehl sudo mysql -u root -p als Root-User in die Datenbank ein.
  2. Legen Sie mit create database nextcloud; die Nextcloud-Datenbank an.
  3. Erstellen Sie mit dem Kommando create user 'nextcloud'@'localhost' identified by <new_password>; das Nextcloud-Nut­zer­kon­to.
  4. Gewähren Sie dem er­stell­ten Konto mit grant all privileges on nextcloud.* to 'nextcloud'@'localhost'; Da­ten­bank­be­rech­ti­gun­gen.
  5. Ak­tua­li­sie­ren Sie die Be­rech­ti­gun­gen ab­schlie­ßend mit flush privileges; und verlassen die DB-Konsole mit dem Befehl exit.

Nachdem die Datenbank er­folg­reich ein­ge­rich­tet wurde, müssen die Zu­gangs­da­ten (DB_NAME, DB_USER, DB_PASSWORD) in die Nextcloud-Kon­fi­gu­ra­ti­ons­da­tei ein­ge­tra­gen werden. Öffnen Sie hierfür die Datei ./var/www/nextcloud/config/config.php und fügen Sie die re­le­van­ten Einträge hinzu:

'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbuser' => 'nextcloud',
'dbpassword' => '<your_password>',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
txt
vServer / VPS
VPS un­schlag­bar günstig auf Dell En­ter­pri­se Servern
  • 1 Gbit/s, un­be­grenzt Traffic & mehr Cores
  • Min­des­tens 99,99% Ver­füg­bar­keit & ISO-zer­ti­fi­zier­te Re­chen­zen­tren
  • Aus­ge­zeich­ne­ter 24/7 Premium-Support mit per­sön­li­chem Berater

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

Bevor Sie Nextcloud in NGINX einbinden, sollten Sie si­cher­stel­len, dass keine andere Kon­fi­gu­ra­ti­ons­da­tei die Nextcloud-In­stal­la­ti­on über­schreibt. Stan­dard­mä­ßig könnte sich noch eine default-Kon­fi­gu­ra­ti­on in ./etc/nginx/sites-enabled/ befinden, die ver­hin­dert, dass Nextcloud korrekt geladen wird. Diese sollte mit folgendem Kommando entfernt werden:

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

An­schlie­ßend stellen Sie mit folgendem Kommando sicher, dass die neue Kon­fi­gu­ra­ti­on für Nextcloud aktiv ist:

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

NGINX-Server kon­fi­gu­rie­ren

Um NGINX als Webserver zu kon­fi­gu­rie­ren, sollte bereits eine Domain ein­ge­rich­tet und mit der Server-IP verknüpft sein. Achten Sie in diesem Zu­sam­men­hang auch auf eine korrekte DNS-Kon­fi­gu­ra­ti­on. Erstellen Sie die NGINX-Config-Datei im Ver­zeich­nis sites-available mithilfe des Linux-sudo-Befehls sudo touch /etc/nginx/sites-available/beispieldomain.de (wir haben als URL beispieldomain.de verwendet).

Öffnen Sie die Kon­fi­gu­ra­ti­ons­da­tei in einem Text­edi­tor wie Vim mit sudo vim /etc/nginx/sites-available/beispieldomain.de und fügen Sie den Code-Block des Ab­schnitts „Nextcloud in a subdir of the NGINX webroots” der Nextcloud-Webseite zur NGINX-Kon­fi­gu­ra­ti­on in ./etc/nginx/sites-available/beispieldomain.de ein.

Da das HTTPS-Zer­ti­fi­kat mit Certbot hin­zu­ge­fügt wird, sollten Sie zudem alle SSL-bezogenen Zeilen aus der NGINX-Kon­fi­gu­ra­ti­ons­da­tei entfernen. Certbot übernimmt die au­to­ma­ti­sche Kon­fi­gu­ra­ti­on, sodass eine de­tail­lier­te manuelle Ein­rich­tung entfällt.

SSL-Zer­ti­fi­kat mit Certbot ein­rich­ten

Damit Nextcloud über eine sichere HTTPS-Ver­bin­dung läuft, ist es notwendig, ein SSL-Zer­ti­fi­kat – in diesem Fall von Let’s Encrypt – ein­zu­rich­ten. Zunächst wird die Firewall ein­ge­stellt, damit HTTPS und SSH-Ver­bin­dun­gen zulässig sind. Nutzen Sie dafür folgenden sudo-Befehl:

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

Als Nächstes ak­ti­vie­ren Sie die Firewall mit sudo ufw enable und über­prü­fen mit sudo ufw status, ob die Ver­bin­dun­gen nun zu­ge­las­sen sind. An­schlie­ßend können Sie über Certbot das SSL-Zer­ti­fi­kat erstellen:

sudo certbot --nginx -d beispieldomain.de
bash

Geben Sie Ihre E-Mail-Adresse für Zer­ti­fi­kats­er­neue­run­gen an, stimmen Sie den Nut­zungs­be­din­gun­gen zu und wählen Sie im Anschluss Option 2, um alle HTTP-Anfragen au­to­ma­tisch auf HTTPS um­zu­lei­ten. Die Zer­ti­fi­kats­da­tei­en finden Sie im Ver­zeich­nis .etc/letsencrypt/live/beispieldomain.de/. Die Datei fullchain.pem be­inhal­tet das SSL-Zer­ti­fi­kat, die Datei privkey.pem enthält den privaten Schlüssel. Diese müssen in die NGINX-Kon­fi­gu­ra­ti­ons­da­tei ein­ge­tra­gen werden:

ssl_certificate /etc/letsencrypt/live/beispieldomain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/beispieldomain.de/privkey.pem;
txt

Da Certbot die Kon­fi­gu­ra­ti­ons­da­tei angepasst hat, ist es er­for­der­lich, das Attribut ssl zwischen 443 und http2 wieder hin­zu­zu­fü­gen. Der ent­spre­chen­de Block sollte dann wie folgt aussehen:

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

Dienste neu starten und Nextcloud aufrufen

Damit die Än­de­run­gen wirksam werden, ist es notwendig, die PHP-FPM- und NGINX-Dienste neu zu laden:

sudo systemctl reload php8.3-fpm.service
sudo systemctl reload nginx.service
bash

An­schlie­ßend rufen Sie über den Browser Ihre Domain – in unserem Fall bei­spiel­do­main.de – auf, wo Ihnen die Nextcloud-Start­sei­te angezeigt wird, wenn alles korrekt ein­ge­rich­tet wurde.

Hinweis

Falls Nextcloud nicht laufen sollte, kann es daran liegen, dass Ihre Domain noch nicht in der config.php als Nextcloud Trusted Domain ein­ge­tra­gen wurde. Holen Sie diesen Schritt an dieser Stelle nach, um das Problem zu beheben.

Zum Hauptmenü