Files
Homelab--Bratonein-Kontroll…/Kapitel 07/Free Rohtext.md

42 KiB
Raw Blame History

Kapitel 6 Nextcloud (Nginx + PostgreSQL + Redis, NPM-Setup)

Nextcloud ist eine vollständig selbst gehostete Cloud-Lösung eine private Alternative zu Diensten wie Google Drive, Dropbox oder OneDrive.
Sie läuft auf deinem eigenen UCC-Server und speichert alle Dateien, Fotos und Dokumente ausschließlich unter deiner Kontrolle.

Für Content Creator, Streamer und kleine Teams ist Nextcloud ideal:
Du kannst Dateien austauschen, gemeinsam an Projekten arbeiten, große Videodateien bereitstellen und automatische Backups deiner Aufnahmen ablegen alles ohne externe Anbieter.

Tip

Nextcloud kann viel mehr als nur Dateien speichern.
Über integrierte Apps kannst du Kalender, Kontakte, Aufgabenlisten oder Notizen synchronisieren und alles läuft zentral auf deinem eigenen Server.

Ziel dieses Kapitels

Wir installieren Nextcloud in einem eigenen Ubuntu 24.04 LXC-Container und kombinieren drei wichtige Komponenten:

  • Nginx als interner Webserver
  • PostgreSQL als leistungsstarke Datenbank
  • Redis für schnellen Cache und Datei-Sperrverwaltung

Anschließend binden wir die Instanz über den Nginx Proxy Manager (NPM) sicher an deine Domain an und richten automatische Cron-Jobs für Hintergrundprozesse ein.
So entsteht eine vollwertige, stabile Cloud-Plattform, die auf jedem Gerät erreichbar ist verschlüsselt und unter deiner Kontrolle.

Note

Wir bauen hier direkt auf den Grundlagen aus den vorherigen Kapiteln auf.
Du brauchst also keine neuen Tools, nur denselben Proxmox-Host, den du bereits nutzt.

👉 Screenshot geeignet: Nextcloud-Dashboard als Beispiel mit Datei-Upload, Kalender und Notizen.

Voraussetzungen & Ressourcen

Nextcloud ist eine umfangreiche Cloud-Lösung, die mehr Ressourcen benötigt als kleinere Dienste wie Pi-hole oder Vaultwarden.
Damit alle Funktionen Dateiablage, Freigaben, Kalender und Medienvorschauen zuverlässig arbeiten, sollte der Container sorgfältig vorbereitet werden.

Anforderungen an den Container

  • Betriebssystem: Ubuntu 24.04 LTS
    Ubuntu ist stabil, aktuell und wird von Nextcloud offiziell empfohlen.
  • CPU: 2 Kerne
  • RAM: 4 GB
  • Speicherplatz: 32 GB für das System
  • Zweite Festplatte: 500 GB für Benutzerdaten
  • Netzwerk: Statische IPv4-Adresse per DHCP-Reservierung (z. B. 192.168.1.60)

Tip

Weise die IP-Adresse im Router per DHCP-Reservierung zu.
So bleibt sie dauerhaft gleich und verursacht keine Konflikte mit automatisch vergebenen Adressen.

Note

Da dieser LXC ein paar Besonderheiten erfordert, findest du im weiteren Verlauf noch einmal die detaillierte Installation für diesen Container.
Der Abschnitt erklärt Schritt für Schritt, wie du ihn richtig anlegst und konfigurierst.

👉 Screenshot geeignet: Proxmox-Maske „Neuen LXC erstellen“ mit aktivierter Option „Nesting“.

Voraussetzungen im UCC

Nextcloud wird später über den bereits eingerichteten Nginx Proxy Manager (NPM) erreichbar gemacht.
Dieser übernimmt die SSL-Verschlüsselung und die Verbindung zwischen Internet und deiner Cloud.
Für dieses Kapitel genügt es, wenn der Proxy bereits läuft und deine Domain erreichbar ist.

Note

Die konkrete Einrichtung des Proxy Hosts erfolgt im Hauptteil des Tutorials,
sobald der Container fertig installiert und Nextcloud erreichbar ist.

👉 Screenshot geeignet: UCC-Strukturübersicht mit NPM-Container und geplantem Nextcloud-LXC.

Speicherstruktur im UCC

Nextcloud trennt die Anwendung strikt von den Benutzerdaten.
Dadurch bleiben alle Dateien erhalten, selbst wenn die Anwendung neu installiert oder aktualisiert wird.

  • Anwendungsdaten: /srv/nextcloud/app
  • Benutzerdaten: /mnt/hdd/nextcloud_data

Tip

Sichere regelmäßig den Ordner /mnt/hdd/nextcloud_data.
Er enthält sämtliche hochgeladenen Dateien, Fotos und Dokumente.

👉 Screenshot geeignet: Datei-Explorer mit Struktur /srv/nextcloud/app und /mnt/hdd/nextcloud_data.

Dienste im Überblick

Im Container installieren wir drei zentrale Dienste:

  1. Nginx Webserver für PHP-Anfragen
  2. PostgreSQL Datenbank für Benutzer und Freigaben
  3. Redis Cache und Datei-Sperrverwaltung (File Locking)

Diese Kombination bildet die stabile Grundlage für eine performante und sichere Nextcloud-Instanz.

Note

Redis ersetzt die ältere PHP-Cache-Methode APCu und verhindert typische Fehlermeldungen wie „File is locked“.

👉 Screenshot geeignet: Übersichtsgrafik mit Verbindung Nginx ↔ PHP ↔ Redis + PostgreSQL.


Schritt für Schritt

Bevor wir mit der eigentlichen Installation beginnen, aktualisieren wir das System und installieren einige Basis-Werkzeuge.
Diese Programme stellen sicher, dass spätere Installationen und Paketquellen reibungslos funktionieren.

LXC-Container anlegen (Sonderkonfiguration)

Nextcloud benötigt im Vergleich zu den vorherigen Containern ein paar zusätzliche Einstellungen.
Diese sorgen dafür, dass Redis, PostgreSQL und PHP-FPM korrekt funktionieren und der Container Zugriff auf die zweite Festplatte erhält.

Container erstellen

  1. Melde dich an der Proxmox-Weboberfläche an.
  2. Klicke oben rechts auf Erstellen → LXC-Container.
  3. In der Maske Allgemein:
    • Hostname: nextcloud
    • Kennwort: ein sicheres Administrator-Passwort
    • Template: Ubuntu 24.04 LTS
  4. In der Maske Ressourcen:
    • CPU-Kerne: 2
    • Arbeitsspeicher: 4096 MB
    • Swap: 512 MB
  5. In der Maske Festplatten:
    • Erste Platte (System): 32 GB
    • Zweite Platte (Daten): Mount Point = /mnt/hdd, Größe z. B. 500 GB
    • Backup: deaktivieren
  6. In der Maske Netzwerk:
    • IPv4-Adresse: statisch, z. B. 192.168.1.60/24
    • Gateway: IP-Adresse deines Routers, z. B. 192.168.1.1
  7. Klicke auf Erstellen, um den Container zu erzeugen.

👉 Screenshot geeignet: Proxmox-Dialog „Neuen LXC erstellen“ mit aktivierter Option „Nesting“ und Mount-Point /mnt/hdd.

Erweiterte Optionen aktivieren

Nach dem Erstellen öffne den Container in der Proxmox-Oberfläche:

  1. Wechsle in den Reiter Optionen.
  2. Wähle den Eintrag Features aus.
  3. Klicke auf Bearbeiten und aktiviere folgende Punkte:
    • Nesting
    • Keyctl

Note

Diese Optionen sind notwendig, damit PHP, Redis und Docker-ähnliche Prozesse im Container laufen können.
Ohne „Nesting“ kann PHP-FPM keine Sockets erstellen, und ohne „Keyctl“ funktioniert die Authentifizierung einiger Bibliotheken nicht.

👉 Screenshot geeignet: Proxmox-Optionen-Dialog mit aktivierten Features „Nesting“ und „Keyctl“.

Container starten und Verbindung testen

Starte den Container über Start → Konsole oder mit Rechtsklick → Start.
Wenn der Status grün angezeigt wird, öffne die Konsole und überprüfe, ob die zweite Festplatte eingebunden ist:

ls -ld /mnt/hdd

Wenn das Ergebnis in etwa so aussieht:

drwxr-xr-x 2 root root 4096 ...

ist der Mount erfolgreich.

Tip

Sollte das Verzeichnis nicht existieren, öffne im Container den Pfad /mnt/
und überprüfe, ob der Mount Point richtig eingetragen wurde.
Du kannst ihn in Proxmox im Reiter Ressourcen nachträglich bearbeiten.

👉 Screenshot geeignet: Proxmox-Konsole mit Ausgabe des Befehls ls -ld /mnt/hdd.

Verbindung zum Container herstellen

Öffne ein Terminal oder unter Windows das Programm PuTTY.
Verbinde dich mit der IP-Adresse deines Nextcloud-Containers:

ssh root@192.168.1.60

Note

Falls in deinem Container der direkte Root-Login deaktiviert ist, melde dich mit einem normalen Benutzer an,
zum Beispiel:

ssh benutzername@192.168.1.60

und wechsle danach per:

sudo -i

in die Root-Umgebung.

Wenn die Anmeldung erfolgreich war, sollte die Eingabeaufforderung des Containers erscheinen,
entweder root@nextcloud:~# oder falls du als Benutzer eingeloggt bist $.

👉 Screenshot geeignet: geöffnete SSH-Sitzung mit sichtbarem Prompt.

System aktualisieren

Aktualisiere die vorhandenen Pakete und lade aktuelle Sicherheitsupdates:

apt update && apt upgrade -y

Note

Dieser Schritt kann einige Minuten dauern.
Führe ihn immer aus, bevor du neue Software installierst so vermeidest du Versionskonflikte.

Basis-Tools installieren

Einige Programme werden für Paketverwaltung, Zertifikate und Entpacken von Archiven benötigt.
Sie werden mit einem einzigen Befehl installiert:

apt install -y curl gnupg2 ca-certificates lsb-release apt-transport-https software-properties-common unzip nano sudo

Tip

Diese Werkzeuge brauchst du später auch für Nginx, PHP und Redis.
Wenn du sie jetzt installierst, sparst du dir Nacharbeiten bei fehlenden Abhängigkeiten.

👉 Screenshot geeignet: Terminal mit erfolgreicher Paketinstallation.

Dienste installieren

Nextcloud besteht aus mehreren Diensten, die gemeinsam arbeiten.
Damit alle Komponenten optimal zusammenspielen, installieren wir sie jetzt in der richtigen Reihenfolge:
Nginx als Webserver, Redis für Caching und Datei-Sperren sowie PostgreSQL als Datenbank.

Paketquellen aktualisieren

Zuerst stellen wir sicher, dass alle benötigten Paketquellen eingebunden sind.
Ubuntu 24.04 bringt viele Pakete bereits mit, doch einige PHP-Module werden über ein zusätzliches Repository bereitgestellt.

add-apt-repository ppa:ondrej/php -y
apt update

Note

Dieses Repository stammt von Ondřej Surý, einem der offiziellen PHP-Maintainer.
Es wird weltweit in professionellen Serverumgebungen genutzt, um aktuelle PHP-Versionen und Sicherheitsupdates zu erhalten.

👉 Screenshot geeignet: Terminal mit erfolgreicher Einbindung des PHP-Repository.

Webserver, Datenbank und Cache installieren

Installiere nun alle notwendigen Pakete in einem Schritt:

apt install -y nginx redis-server postgresql php8.3-fpm php8.3-pgsql php8.3-cli php8.3-common php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-curl php8.3-bz2 php8.3-intl php8.3-gmp php8.3-imagick php8.3-redis

Dieser Befehl richtet die komplette Laufzeitumgebung ein von Webserver bis zu den PHP-Erweiterungen.

Tip

Durch die Installation von Redis und PostgreSQL in einem gemeinsamen Schritt sparst du Zeit und stellst sicher, dass alle Abhängigkeiten korrekt aufgelöst werden.

👉 Screenshot geeignet: Terminal mit erfolgreicher Installation der Dienste.

Dienste aktivieren und starten

Nach der Installation müssen alle Dienste aktiviert und gestartet werden, damit sie automatisch mit dem System hochfahren.

systemctl enable --now nginx
systemctl enable --now php8.3-fpm
systemctl enable --now redis-server
systemctl enable --now postgresql

Note

Wenn kein Fehler erscheint, laufen alle vier Dienste korrekt.
Mit systemctl status <dienstname> kannst du jederzeit prüfen, ob sie aktiv sind.

👉 Screenshot geeignet: Ausgabe von systemctl status nginx mit dem Status „active (running)“.

Verzeichnisse anlegen

Nextcloud trennt streng zwischen Programmdateien und Benutzerdaten.
Das sorgt für mehr Sicherheit und einfachere Backups, da die eigentlichen Dateien getrennt vom System liegen.

Erstelle zuerst die notwendigen Verzeichnisse und setze die richtigen Berechtigungen:

mkdir -p /srv/nextcloud/app
mkdir -p /mnt/hdd/nextcloud_data
chown -R www-data:www-data /mnt/hdd/nextcloud_data
chmod 750 /mnt/hdd/nextcloud_data

Note

Das Verzeichnis /srv/nextcloud/app enthält später die Anwendung selbst,
während /mnt/hdd/nextcloud_data alle hochgeladenen Dateien, Fotos und Dokumente speichert.

👉 Screenshot geeignet: Terminal mit erfolgreich erstellter Verzeichnisstruktur.

PHP konfigurieren

Nextcloud basiert auf PHP. Einige Standardwerte sind für größere Anwendungen jedoch zu niedrig gesetzt.
Wir passen deshalb die Konfiguration an, damit Uploads, Vorschauen und lange Prozesse problemlos funktionieren.

Datei php.ini bearbeiten

Öffne die Konfigurationsdatei des PHP-Prozesses:

nano /etc/php/8.3/fpm/php.ini

Suche nach den folgenden Parametern und ändere sie wie unten gezeigt:

upload_max_filesize = 10G
post_max_size = 10G
memory_limit = 1024M
max_execution_time = 3600
max_input_time = 3600
date.timezone = Europe/Berlin

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.interned_strings_buffer=16

Tip

Diese Werte erlauben auch sehr große Uploads, zum Beispiel Videoaufnahmen oder Backups.
opcache beschleunigt PHP, indem häufig genutzte Skripte im Arbeitsspeicher bleiben.

Speichern mit Strg + O, bestätigen mit Enter, schließen mit Strg + X.

👉 Screenshot geeignet: Editor mit geöffnetem php.ini-Abschnitt und angepassten Werten.

Datei www.conf bearbeiten

In dieser Datei wird gesteuert, wie viele gleichzeitige PHP-Prozesse laufen dürfen.

nano /etc/php/8.3/fpm/pool.d/www.conf

Ändere oder ergänze folgende Zeilen:

pm = dynamic
pm.max_children = 12
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 6

Note

Diese Werte sind ein guter Ausgangspunkt für Systeme mit 4 GB RAM.
Bei mehr Arbeitsspeicher kannst du pm.max_children später erhöhen.

Speichern und den PHP-Dienst neu laden:

systemctl reload php8.3-fpm

👉 Screenshot geeignet: Terminal mit Ausgabe „Reloading PHP 8.3 FPM configuration“.

PostgreSQL initialisieren

Nextcloud nutzt eine relationale Datenbank, um Benutzerkonten, Freigaben, Dateiinformationen und App-Daten zu speichern.
Wir verwenden hier PostgreSQL, weil sie stabiler und performanter als MariaDB ist besonders bei vielen gleichzeitigen Zugriffen.

Datenbankdienst aktivieren

Nach der Installation richten wir den Datenbankdienst so ein, dass er in der Container-Umgebung zuverlässig startet.
Ubuntu erstellt bei der Installation automatisch einen Standard-Cluster („main“).
Dieser funktioniert in vollwertigen Systemen sofort, nicht aber immer in LXC-Containern,
weil dort manche Systemfunktionen etwa Shared Memory oder Prozesskommunikation anders behandelt werden.

Darum löschen wir den automatisch angelegten Cluster und erstellen ihn direkt neu.
So passt PostgreSQL seine Struktur an die Container-Umgebung an und läuft stabil.

pg_dropcluster 16 main --stop
pg_createcluster 16 main --start
systemctl enable postgresql
systemctl start postgresql

Note

Dieser Schritt wird nur bei Containern benötigt.
Auf einem vollwertigen Server ohne LXC-Umgebung kannst du die Befehle pg_dropcluster und pg_createcluster weglassen.

👉 Screenshot geeignet: Terminal mit Ausgabe nach pg_createcluster 16 main --start.

Benutzer und Datenbank anlegen

Melde dich nun als PostgreSQL-Systembenutzer an:

su - postgres

Starte anschließend die SQL-Shell:

psql

Lege die Datenbank und den Benutzer an:

CREATE DATABASE nextcloud;
CREATE USER nextcloud WITH PASSWORD 'DEIN_SICHERES_PASSWORT';
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;
\q

Tip

Wähle ein starkes Passwort mit Sonderzeichen und Groß-/Kleinschreibung.
Es wird später in der Nextcloud-Konfiguration eingetragen.

👉 Screenshot geeignet: PostgreSQL-Konsole mit ausgeführten SQL-Befehlen.

Rechte auf das Schema vergeben

Öffne erneut die SQL-Shell, diesmal direkt für die neue Datenbank:

psql -d nextcloud

Ergänze die Berechtigungen:

GRANT ALL ON SCHEMA public TO nextcloud;
ALTER SCHEMA public OWNER TO nextcloud;
\q

Danach kannst du die PostgreSQL-Sitzung verlassen:

exit

👉 Screenshot geeignet: Terminal mit abgeschlossener Datenbankeinrichtung.

Note

Damit ist die Datenbank vollständig vorbereitet.
Nextcloud kann bei der Installation direkt darauf zugreifen, ohne dass nachträgliche Anpassungen nötig sind.

Redis konfigurieren

Redis ist ein schneller Zwischenspeicher (Cache), den Nextcloud für Datei-Sperren und temporäre Daten verwendet.
Ohne Redis kann es bei gleichzeitigen Zugriffen zu Fehlern wie „File is locked“ kommen.
Die Einrichtung erfolgt lokal im Container eine Authentifizierung ist hier nicht nötig, da kein externer Zugriff erlaubt wird.

Zugriff für den Webserver erlauben

Der Webserver läuft unter dem Benutzer www-data.
Damit dieser auf den Redis-Socket zugreifen kann, fügen wir ihn der Redis-Gruppe hinzu:

usermod -aG redis www-data

Note

Diese Berechtigung ist erforderlich, damit PHP über den lokalen Socket mit Redis kommunizieren kann.
Ohne sie würde Nextcloud beim ersten Start eine Warnung im Adminbereich anzeigen.

👉 Screenshot geeignet: Terminal mit erfolgreicher Ausgabe des usermod-Befehls.

Redis-Konfiguration anpassen

Öffne die Konfigurationsdatei:

nano /etc/redis/redis.conf

Suche nach den folgenden Zeilen und stelle sicher, dass sie wie unten aussehen.
Falls sie auskommentiert sind (# am Zeilenanfang), entferne das Zeichen.

supervised systemd
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770

Tip

Diese drei Einstellungen sorgen dafür, dass Redis über eine lokale Datei („Socket“) erreichbar ist.
So läuft die Kommunikation vollständig intern, ohne dass ein Netzwerkport geöffnet werden muss.

Speichern mit Strg + O, bestätigen mit Enter, schließen mit Strg + X.

👉 Screenshot geeignet: geöffnete redis.conf im Editor mit hervorgehobenen Socket-Einstellungen.

Redis neu starten

Damit die Änderungen aktiv werden:

systemctl restart redis-server
systemctl restart php8.3-fpm

Note

Nach dem Neustart ist Redis sofort einsatzbereit.
Eine zusätzliche Anmeldung oder Passwortabfrage ist in dieser Umgebung nicht nötig.

👉 Screenshot geeignet: Terminal mit erfolgreichem Neustart der Dienste.

Funktionsprüfung

Zur Kontrolle kannst du den Redis-Server kurz testen:

redis-cli ping

Wenn PONG zurückgegeben wird, läuft der Dienst korrekt.

👉 Screenshot geeignet: Terminal mit der Ausgabe „PONG“.

Nextcloud herunterladen

Nextcloud wird direkt von der offiziellen Projektseite geladen.
Wir installieren sie manuell, damit du jederzeit die genaue Version kontrollierst und später Updates gezielt durchführen kannst.
Automatische Installationspakete (z. B. Snap) sind für Server ungeeignet, weil sie Konfigurationen stark einschränken.

Installationsverzeichnis wechseln und aktuelle Version laden

cd /srv/nextcloud/app
curl -LO https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip && rm latest.zip
chown -R www-data:www-data nextcloud

Note

Der Befehl curl -LO lädt immer die aktuellste stabile Version von Nextcloud herunter.
Du kannst sie auf der offiziellen Seite https://nextcloud.com/changelog/ überprüfen.

👉 Screenshot geeignet: Terminal mit Download- und Entpackvorgang.

Dateiberechtigungen prüfen

Nach dem Entpacken muss das gesamte Verzeichnis dem Benutzer www-data gehören,
da dieser später den Webserver-Prozess ausführt.

ls -l /srv/nextcloud/app

Die Ausgabe sollte so aussehen:

drwxr-x---  15 www-data www-data 4096 ...

Tip

Wenn ein anderer Benutzer als Eigentümer angezeigt wird,
wiederhole den Befehl chown -R www-data:www-data /srv/nextcloud/app/nextcloud.

👉 Screenshot geeignet: Terminal mit Ausgabe der korrekten Besitzerrechte.

Damit ist Nextcloud auf dem Server installiert.
Im nächsten Schritt konfigurieren wir PHP und Nginx so, dass die Weboberfläche erreichbar ist.

Nginx konfigurieren

Nginx übernimmt innerhalb des Containers die lokale Auslieferung der Nextcloud-Dateien und die Kommunikation mit PHP.
Die eigentliche HTTPS-Verschlüsselung erfolgt später im Nginx Proxy Manager,
darum genügt es hier, Nginx nur auf Port 80 (HTTP) laufen zu lassen.

Neue Konfigurationsdatei anlegen

nano /etc/nginx/sites-available/nextcloud.conf

Füge folgenden Inhalt ein:

server {
  listen 80;
  server_name cloud.DEINE-DOMAIN.tld;

  root /srv/nextcloud/app/nextcloud;
  index index.php index.html;

  client_max_body_size 10G;
  fastcgi_buffers 64 4K;

  add_header Referrer-Policy "no-referrer" always;
  add_header X-Content-Type-Options "nosniff" always;
  add_header X-Frame-Options "SAMEORIGIN" always;
  add_header X-XSS-Protection "1; mode=block" always;

  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
  }

  location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
    deny all;
  }

  location ~ \.php(?:$|/) {
    include fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_intercept_errors on;
    fastcgi_request_buffering off;
  }
}

Note

Diese Konfiguration leitet PHP-Dateien direkt an den lokalen PHP-Prozess weiter
und begrenzt den Zugriff auf sensible Systemdateien.
Die Upload-Größe ist bereits auf 10 GB erweitert ideal für große Video- oder Projektdateien.

👉 Screenshot geeignet: Editor mit geöffneter nextcloud.conf und eingefügtem Inhalt.

Website aktivieren und Standardseite entfernen

Aktiviere die neue Konfiguration und entferne die alte Standardseite:

ln -s /etc/nginx/sites-available/nextcloud.conf /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default

Konfiguration prüfen und Nginx neu laden

Bevor du den Webserver neu startest, prüfe die Syntax:

nginx -t && systemctl reload nginx

Wenn die Meldung „syntax is ok“ erscheint, ist alles korrekt.
Jetzt ist Nginx bereit, Anfragen lokal entgegenzunehmen.

👉 Screenshot geeignet: Terminalausgabe mit „nginx: configuration file /etc/nginx/nginx.conf test is successful“.

Nextcloud-Konfiguration vorbereiten

Nextcloud legt beim ersten Start automatisch eine Konfigurationsdatei an.
Wir erstellen sie jedoch schon jetzt manuell, damit alle wichtigen Einstellungen insbesondere für Proxy, HTTPS und Redis von Anfang an korrekt sind.

Datei anlegen

nano /srv/nextcloud/app/nextcloud/config/config.php

Füge den folgenden Inhalt ein und passe die markierten Werte an deine Umgebung an:

<?php
$CONFIG = array (
  'trusted_domains' => [
    'cloud.DEINE-DOMAIN.tld',
  ],
  'overwrite.cli.url' => 'https://cloud.DEINE-DOMAIN.tld',
  'overwritehost' => 'cloud.DEINE-DOMAIN.tld',
  'overwriteprotocol' => 'https',
  'trusted_proxies' => ['IP.DEINES.NPM'],

  'filelocking.enabled' => true,
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => [
    'host' => '/var/run/redis/redis-server.sock',
    'port' => 0,
    'timeout' => 1.5,
  ],
);

Note

Ersetze DEINE-DOMAIN.tld durch deine echte Domain und trage bei trusted_proxies die IP-Adresse deines Proxy-Managers ein.
So erkennt Nextcloud später automatisch, dass alle HTTPS-Verbindungen über den Proxy laufen.

👉 Screenshot geeignet: geöffnete config.php im Editor mit angepassten Domain- und Proxy-Werten.

Dateirechte setzen

Die Konfiguration darf nur vom Webserver gelesen werden:

chown -R www-data:www-data /srv/nextcloud/app/nextcloud/config
chmod 640 /srv/nextcloud/app/nextcloud/config/config.php

Tip

Diese Berechtigungen schützen die Datei vor unbefugtem Zugriff.
Selbst wenn jemand SSH-Zugang zum Container hätte, könnte er die Datei ohne Administratorrechte nicht lesen.

👉 Screenshot geeignet: Terminal mit Ausgabe der Befehle und gesetzten Berechtigungen.

Damit ist Nextcloud vollständig vorbereitet.
Im nächsten Schritt richten wir im Nginx Proxy Manager (NPM) den externen Zugriff und das SSL-Zertifikat ein.

Nextcloud im Proxy Manager einrichten

Nextcloud ist jetzt im Container über Port 80 erreichbar.
Damit du sie auch über das Internet unter https://cloud.DEINE-DOMAIN.tld aufrufen kannst,
legen wir im Nginx Proxy Manager (NPM) einen neuen Proxy Host an.

Anmelden im NPM-Dashboard

Öffne im Browser:

https://proxy.DEINE-DOMAIN.tld

Alternativ kannst du dich auch über die interne IP deines NPM-Containers anmelden,
zum Beispiel:

http://192.168.1.10:81

Note

Aus Sicherheitsgründen sollte die Verwaltungsoberfläche des NPM nicht von außen erreichbar sein.
Der Zugriff über die lokale IP im Heimnetz ist vollkommen ausreichend.

Melde dich mit deinem Administrator-Konto an.
Sobald das Dashboard sichtbar ist, klicke links im Menü auf Hosts → Proxy Hosts
und anschließend oben rechts auf Add Proxy Host.

👉 Screenshot geeignet: NPM-Dashboard mit geöffnetem Menü „Proxy Hosts“.

Proxy Host anlegen

Fülle die Felder wie folgt aus:

Feld Wert
Domain Names cloud.DEINE-DOMAIN.tld
Scheme http
Forward Hostname/IP IP-Adresse des Nextcloud-Containers, z. B. 192.168.1.60
Forward Port 80
Block Common Exploits aktiviert
Websockets Support aktiviert

Note

Nextcloud selbst läuft nur über HTTP.
Der Proxy Manager übernimmt die HTTPS-Verschlüsselung und kümmert sich automatisch um das Zertifikat.

👉 Screenshot geeignet: ausgefüllte Proxy-Maske mit Beispielwerten.

SSL-Zertifikat erstellen

  1. Wechsle in den Reiter SSL.
  2. Wähle Request a new SSL Certificate.
  3. Aktiviere die Optionen:
    • Force SSL
    • HTTP/2 Support
    • HSTS (optional, empfohlen)
  4. Gib deine E-Mail-Adresse ein (wird von Lets Encrypt benötigt).
  5. Klicke auf Save.

Nach wenigen Sekunden erscheint das Zertifikat mit dem Status Active.

👉 Screenshot geeignet: SSL-Reiter mit aktiviertem Lets-Encrypt-Zertifikat.

Tip

Wenn die Zertifikatserstellung fehlschlägt, prüfe zuerst die Portweiterleitungen (80 und 443)
und ob deine Domain auf die öffentliche IP deines UCC zeigt.

Erweiterte Einstellungen für große Uploads

Nextcloud erlaubt Uploads bis zu mehreren Gigabyte.
Damit der Proxy diese Dateien nicht vorher abbricht, aktivieren wir erweiterte Timeout-Werte.

  1. Öffne beim selben Proxy Host den Reiter Advanced.
  2. Füge folgenden Text ein:
client_max_body_size 30G;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
  1. Klicke auf Save.

Note

Diese Werte verhindern Abbrüche bei großen Dateiübertragungen oder langsamen Verbindungen.

👉 Screenshot geeignet: Reiter „Advanced“ mit den eingetragenen Timeout-Werten.

Verbindung testen

Öffne im Browser:

https://cloud.DEINE-DOMAIN.tld

Wenn alles korrekt eingerichtet ist, erscheint der Nextcloud-Setup-Assistent.
Damit ist der externe Zugriff über den Proxy erfolgreich hergestellt.

Tip

Sollte stattdessen die Nginx-Standardseite erscheinen,
prüfe im Proxy Host, ob Forward Hostname/IP und Port 80 richtig eingetragen sind
und ob keine Tippfehler bei der Domain vorliegen.

Nextcloud im Browser einrichten

Nachdem der Proxy Host eingerichtet ist, kannst du die Installation von Nextcloud direkt im Browser abschließen.
Öffne die Adresse deiner Cloud:

https://cloud.DEINE-DOMAIN.tld

Nach kurzer Ladezeit erscheint das Einrichtungsformular von Nextcloud.

👉 Screenshot geeignet: Browserfenster mit dem Nextcloud-Setup-Assistenten.

Administrator-Konto anlegen

Im oberen Bereich legst du das erste Benutzerkonto an.
Dieses Konto ist der Administrator deiner Instanz.

Feld Beschreibung
Benutzername frei wählbar, z. B. admin
Passwort ein sicheres Kennwort mit Sonderzeichen

Tip

Verwende ein starkes Passwort, da dieses Konto vollen Zugriff auf alle Daten, Benutzer und Einstellungen hat.
Du kannst später weitere Benutzer mit eingeschränkten Rechten anlegen.

👉 Screenshot geeignet: Ausgefüllte Felder für Benutzername und Passwort.

Speicherort der Daten festlegen

Unter Datenverzeichnis trägst du das bereits angelegte Verzeichnis ein:

/mnt/hdd/nextcloud_data

Note

Hier werden später alle hochgeladenen Dateien gespeichert Dokumente, Fotos, Videos oder Backups.
Achte darauf, dass du den Pfad exakt einträgst, sonst legt Nextcloud ein neues Verzeichnis im Container an.

👉 Screenshot geeignet: Setup-Formular mit eingetragenem Pfad /mnt/hdd/nextcloud_data.

Datenbankzugang eintragen

Im unteren Teil folgen die Felder für den Datenbankzugang.
Wähle als Typ PostgreSQL und trage deine Zugangsdaten wie folgt ein:

Feld Wert
Datenbankbenutzer nextcloud
Datenbankpasswort DEIN_SICHERES_PASSWORT
Datenbankname nextcloud
Host localhost

Tip

Alle Werte stammen aus der PostgreSQL-Einrichtung im vorherigen Abschnitt.
Wenn du das Passwort vergessen hast, kannst du es in der Datenbank mit \password nextcloud neu setzen.

👉 Screenshot geeignet: Formularabschnitt „Datenbank-Konfiguration“ mit ausgefüllten Feldern.

Installation starten

Klicke anschließend auf Installation abschließen.
Nextcloud erstellt nun alle Tabellen in der Datenbank und richtet die Grundstruktur ein.
Der Vorgang dauert je nach Systemleistung ein bis zwei Minuten.

Nach Abschluss wird automatisch die Hauptseite geöffnet.
Du siehst das Dashboard mit Willkommensnachricht, Benutzerbereich und Menüleiste.

👉 Screenshot geeignet: Startseite der frisch installierten Nextcloud.

Note

Wenn der Vorgang fehlschlägt oder eine Fehlermeldung wie „Datenbankverbindung fehlgeschlagen“ erscheint,
prüfe nochmals den Datenbanknamen, das Passwort und den Hostnamen (localhost).
Danach einfach die Seite neu laden und den Vorgang wiederholen.

Cronjob für Hintergrundprozesse

Nextcloud erledigt viele Aufgaben automatisch im Hintergrund zum Beispiel das Erstellen von Vorschaubildern, das Aktualisieren von Freigaben oder das Entfernen alter Sitzungen.
Damit das zuverlässig funktioniert, richten wir einen systemweiten Cronjob ein.

Cronjob für den Webserver-Benutzer anlegen

Öffne die Cron-Konfiguration für den Benutzer www-data.
Das ist der Benutzer, unter dem Nextcloud und PHP laufen.

crontab -u www-data -e

Wenn du gefragt wirst, welchen Editor du verwenden möchtest, wähle nano.
Scrolle anschließend ganz ans Ende der Datei und füge folgende Zeile ein:

*/5 * * * * php -f /srv/nextcloud/app/nextcloud/cron.php

Note

Dieser Eintrag sorgt dafür, dass alle 5 Minuten das interne Skript cron.php ausgeführt wird.
Es verarbeitet automatisch Wartungs-, Daten- und Hintergrundaufgaben.

Speichern mit Strg + O, bestätigen mit Enter, schließen mit Strg + X.

👉 Screenshot geeignet: Editor mit geöffneter Crontab und eingetragener Zeile.

Funktionsprüfung

Warte ein paar Minuten und öffne danach das Admin-Panel in Nextcloud.
Unter Einstellungen → Verwaltung → Grundlegende Einstellungen sollte der Hinweis
„Hintergrundjobs: Cron (empfohlen)“ erscheinen.

Tip

Wenn dort noch „AJAX“ steht, wähle Cron (empfohlen) und speichere die Einstellung.
Danach übernimmt das System automatisch alle Hintergrundaufgaben.

👉 Screenshot geeignet: Nextcloud-Adminbereich mit aktivierter Cron-Option.

Damit ist der automatisierte Hintergrunddienst aktiv.
Nextcloud führt ab jetzt alle Aufgaben regelmäßig und ohne manuelles Eingreifen aus.

Feinschliff & Optimierung

Nach der Grundinstallation zeigt das Admin-Panel von Nextcloud häufig mehrere Hinweise an.
Das sind keine Fehler, sondern Empfehlungen, um Stabilität und Kompatibilität zu verbessern.
Wir gehen sie jetzt einzeln durch, erklären den Hintergrund und zeigen die exakten Schritte.

MIME-Type für .mjs aktivieren

Nach der Installation erscheint oft der Hinweis:

„Ihr Webserver liefert .mjs-Dateien nicht mit dem JavaScript MIME-Typ.“

Das bedeutet, dass moderne JavaScript-Dateien (.mjs) nicht korrekt als JavaScript erkannt werden.
Dadurch funktionieren einige Apps wie Kalender oder Talk nicht richtig.

  1. Öffne die Nginx-Konfiguration:
    nano /etc/nginx/sites-available/nextcloud.conf
    
  2. Suche den Block server { … }.
    Direkt unter der Zeile server_name cloud.DEINE-DOMAIN.tld; fügst du Folgendes ein:
    types { application/javascript mjs; }
    
    Diese Zeile sorgt dafür, dass .mjs-Dateien den korrekten MIME-Typ erhalten.
  3. Speichern mit Strg + O, bestätigen mit Enter, schließen mit Strg + X.
  4. Konfiguration prüfen:
    nginx -t
    
    Wenn „syntax is ok“ und „test is successful“ erscheint:
    systemctl reload nginx
    

Note

Danach sollte der Hinweis im Nextcloud-Adminbereich verschwinden.
Browser laden .mjs-Dateien jetzt korrekt.

👉 Screenshot geeignet: Editor mit eingefügtem MIME-Type und erfolgreicher Syntaxprüfung.

OCM- und OCS-Provider auflösen

Dieser Hinweis erscheint, wenn Nextcloud keine externen Freigaben (Federation) erkennt.
Die Ursache ist eine fehlende Routen-Definition in Nginx.

  1. Öffne wieder die Datei:
    nano /etc/nginx/sites-available/nextcloud.conf
    
  2. Scrolle bis ans Ende des Blocks server { … } und füge unterhalb der bestehenden location-Einträge ein:
    location ~ ^/(?:ocm-provider|ocs-provider)/ {
      try_files $uri $uri/ =404;
      index index.php;
    }
    
  3. Datei speichern, testen und neu laden:
    nginx -t && systemctl reload nginx
    

Note

Dadurch können andere Server und Benutzer wieder Dateien über Federation austauschen.
Im Admin-Panel sollte der entsprechende Hinweis verschwinden.

👉 Screenshot geeignet: geöffnete nextcloud.conf mit neuem Location-Block.

.well-known-Weiterleitungen aktivieren

Nextcloud nutzt spezielle URLs wie /.well-known/carddav, damit Kalender- und Kontakt-Apps (DAV-Clients) automatisch den richtigen Pfad finden.
Fehlt diese Weiterleitung, funktionieren CalDAV, CardDAV und WebFinger nicht.

  1. Öffne erneut die Datei:
    nano /etc/nginx/sites-available/nextcloud.conf
    
  2. Füge unterhalb der bestehenden location-Einträge diese Zeilen ein:
    location = /.well-known/webfinger { return 301 /index.php/.well-known/webfinger; }
    location = /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; }
    location ~ ^/.well-known/acme-challenge { default_type "text/plain"; root /var/www/letsencrypt; }
    location = /.well-known/carddav { return 301 /remote.php/dav; }
    location = /.well-known/caldav { return 301 /remote.php/dav; }
    
  3. Speichern und prüfen:
    nginx -t && systemctl reload nginx
    
  4. Kontrolle mit:
    curl -I https://cloud.DEINE-DOMAIN.tld/.well-known/carddav
    
    Wenn HTTP/1.1 301 Moved Permanently erscheint, funktioniert die Weiterleitung.

Tip

Ohne diese Weiterleitungen können Kalender- und Kontakte-Apps keine Verbindung herstellen.
Nach der Änderung verschwindet die Warnung im Admin-Panel.

👉 Screenshot geeignet: Terminal mit erfolgreichem curl-Test.

Debug-Modus deaktivieren

Der Debug-Modus zeigt zusätzliche Fehlermeldungen und Warnungen, die im Produktivbetrieb nicht nötig sind.
Er sollte immer deaktiviert sein, bevor du die Cloud dauerhaft nutzt.

  1. Öffne die Konfiguration:
    nano /srv/nextcloud/app/nextcloud/config/config.php
    
  2. Suche nach einem vorhandenen Eintrag 'debug' => true,
    oder füge am Ende der Liste folgende Zeile hinzu:
    'debug' => false,
    
  3. Speichern und schließen.

Note

Nach dieser Änderung verschwindet die Warnung „Debug-Modus aktiv“.
Die Cloud läuft nun mit normalen Log-Einstellungen.

👉 Screenshot geeignet: config.php mit deaktiviertem Debug-Modus.

Wartungsfenster festlegen

Nextcloud kann Hintergrundaufgaben gebündelt in einem festen Zeitfenster ausführen.
Damit wird die Serverlast gleichmäßig verteilt und störende Prozesse laufen z. B. nachts.

Führe im Container aus:

sudo -u www-data php /srv/nextcloud/app/nextcloud/occ config:system:set maintenance_window_start --value="2"

Damit beginnt das Wartungsfenster täglich um 2 Uhr morgens.

Tip

Du kannst den Wert anpassen, z. B. --value="4" für 4 Uhr morgens.
Die Zahl steht für die Startstunde des Wartungsfensters in 24-Stunden-Notation.

👉 Screenshot geeignet: Terminal mit erfolgreicher OCC-Ausgabe.

Fehlende Indizes hinzufügen

In neuen Nextcloud-Versionen erscheinen manchmal Meldungen wie
„Fehlende Indizes in der Datenbank gefunden“.
Das betrifft die Geschwindigkeit bei Datenbankabfragen.

  1. Im Container ausführen:
    sudo -u www-data php /srv/nextcloud/app/nextcloud/occ db:add-missing-indices
    
  2. Nach wenigen Sekunden meldet Nextcloud, welche Tabellen aktualisiert wurden.

Note

Danach ist die Warnung verschwunden und Datenbankabfragen laufen schneller.

👉 Screenshot geeignet: Terminal mit Ausgabe „All indices added successfully“.

Standard-Telefonregion festlegen

Dieser Hinweis betrifft Telefonnummern in Benutzerprofilen.
Ohne Standard-Region können Nummern ohne Landesvorwahl nicht validiert werden.

  1. Öffne die Datei:
    nano /srv/nextcloud/app/nextcloud/config/config.php
    
  2. Ergänze am Ende:
    'default_phone_region' => 'DE',
    
  3. Speichern und schließen.

Note

Danach akzeptiert Nextcloud auch Telefonnummern ohne Vorwahl als gültig.

👉 Screenshot geeignet: config.php mit eingetragener Standard-Region.

Ergebnis

Nach diesen Schritten ist deine Nextcloud-Installation technisch vollständig optimiert:

  • Keine Warnmeldungen mehr im Admin-Panel
  • Stabiler Betrieb ohne Fehlermeldungen
  • Externe Freigaben und DAV-Synchronisierung funktionieren
  • Datenbank und Webserver laufen effizient und sicher

👉 Screenshot geeignet: Admin-Übersicht ohne Warnmeldungen (alle Punkte grün).


Zusammenfassung & nächste Schritte

Mit diesem Kapitel hast du eine vollständig funktionsfähige Nextcloud-Instanz eingerichtet
von der Datenbank über den Webserver bis hin zur sicheren Veröffentlichung über den Proxy.

Du hast gelernt:

  • wie du einen eigenen Ubuntu-LXC mit aktivierten Sonderfunktionen (Nesting, Keyctl) anlegst
  • wie du Nginx, PostgreSQL, Redis und PHP so kombinierst, dass sie perfekt zusammenarbeiten
  • wie du Nextcloud manuell installierst und über Nginx Proxy Manager verschlüsselt veröffentlichst
  • wie du per Cronjob alle Hintergrundaufgaben automatisch ausführen lässt
  • wie du typische Warnmeldungen im Adminbereich Schritt für Schritt beseitigst

Damit ist der technische Teil abgeschlossen.
Nextcloud läuft stabil, sicher und performant in deinem UCC-System
und du kannst sie ab jetzt täglich nutzen, um Daten zu synchronisieren, Dateien zu teilen oder Teams zu organisieren.

Tip

Du kannst Nextcloud von allen Geräten aus aufrufen:

  • Browser: https://cloud.DEINE-DOMAIN.tld
  • Desktop-App: über die Nextcloud-App für Windows, macOS oder Linux
  • Smartphone: Nextcloud-App aus dem Play Store oder App Store

Note

Falls du den Zugriff nur intern erlauben möchtest, kannst du in Nginx Proxy Manager
einfach eine Access-List mit lokalen IP-Bereichen anlegen.
So bleibt deine Nextcloud im Heimnetz sichtbar, aber von außen geschützt.

Als nächstes folgen im Premium-Kapitel erweiterte Funktionen für Komfort und Automatisierung:

  • automatisierte Backups der Datenbank und Konfiguration
  • sichere Wiederherstellung älterer Versionen
  • Integration eines Mailservers für Benachrichtigungen
  • Performance-Tuning für Redis, OPcache und PHP
  • Optimierte Vorschaugenerierung und Bildverarbeitung mit Imagick

Damit bringst du deine Cloud auf professionelles Niveau
aber bleibst jederzeit Herr deiner eigenen Daten.

👉 Screenshot geeignet: Übersicht Nextcloud-Dashboard mit aktivierter Synchronisierung und grünem Systemstatus.


Zusammenfassung & Ausblick

Mit diesem Kapitel hast du eine vollständig funktionsfähige Nextcloud-Instanz eingerichtet
von der Datenbank über den Webserver bis hin zur sicheren Veröffentlichung über den Proxy.

Du hast gelernt:

  • wie du einen eigenen Ubuntu-LXC mit aktivierten Sonderfunktionen (Nesting, Keyctl) anlegst
  • wie du Nginx, PostgreSQL, Redis und PHP so kombinierst, dass sie perfekt zusammenarbeiten
  • wie du Nextcloud manuell installierst und über den Nginx Proxy Manager verschlüsselt veröffentlichst
  • wie du per Cronjob alle Hintergrundaufgaben automatisch ausführen lässt
  • wie du typische Warnmeldungen im Admin-Bereich Schritt für Schritt beseitigst

Damit ist der technische Teil abgeschlossen.
Nextcloud läuft stabil, sicher und performant in deinem UCC-System
und du kannst sie ab jetzt täglich nutzen, um Daten zu synchronisieren, Dateien zu teilen oder gemeinsam an Projekten zu arbeiten.

Tip

Du kannst Nextcloud von allen Geräten aus aufrufen:

  • Browser: https://cloud.DEINE-DOMAIN.tld
  • Desktop-App: Nextcloud-App für Windows, macOS oder Linux
  • Smartphone: Nextcloud-App aus Play Store oder App Store

Note

Wenn du den Zugriff nur intern erlauben möchtest, kannst du im Nginx Proxy Manager
eine Access-List mit lokalen IP-Bereichen anlegen.
So bleibt deine Nextcloud im Heimnetz sichtbar, aber von außen geschützt.

Ausblick

Im nächsten Kapitel 7 geht es um Affine, das selbst-gehostete Whiteboard- und Notizsystem im UCC.
Damit kannst du Inhalte planen, Projekte strukturieren und gemeinsam mit anderen an visuellen Boards arbeiten
direkt auf deinem Server, ohne Abhängigkeit von Cloud-Diensten.
Wir zeigen dir dort, wie du Affine installierst, sicher über den Proxy bereitstellst
und deine Notizen und Planungen mit Nextcloud verknüpfst.

Tip

Wenn du deine Nextcloud-Installation zusätzlich automatisieren möchtest mit Backups,
Mail-Benachrichtigungen und optimierter Bildverarbeitung
findest du diese erweiterten Funktionen im Premium-Kapitel 6.

👉 Screenshot geeignet: Übersicht deines UCC-Dashboards mit Nextcloud und geöffnetem Affine-Board.