Nextcloud wird häufig auf „selbst gehostete Dropbox-Alternative“ verkürzt. Technisch ist es eine PHP-Anwendung mit klar getrennten Bausteinen: Webserver, PHP-FPM, Datenbank, Datenverzeichnis und Caching-Schicht. Wer diese Bausteine kennt, ordnet Performance-Probleme und Fehlermeldungen zielsicher zu, statt an der falschen Stelle zu suchen.
Was ist Nextcloud?
Nextcloud ist eine quelloffene, in PHP geschriebene Kollaborationsplattform, die Dateisynchronisation, Kalender, Kontakte, Videokonferenzen und Office-Funktionen auf eigener Infrastruktur bereitstellt und dabei alle Daten unter deiner Kontrolle hält.
Das Projekt entstand 2016 als Fork von ownCloud und steht unter der AGPLv3. Die Weiterentwicklung koordiniert die Nextcloud GmbH, der Code ist vollständig öffentlich. Seit 2020 erscheinen die Hauptversionen als „Hub“-Releases, die Files, Groupware, Talk und Office als abgestimmtes Paket bündeln. Der Kern bleibt dabei immer derselbe: ein Server, der Dateien über WebDAV bereitstellt, und eine App-Schicht darüber.
Wichtig für die Einordnung: Nextcloud ist kein verteiltes Dateisystem und kein Objektspeicher. Es ist eine Anwendung, die vorhandenen Speicher verwaltet, Metadaten in einer relationalen Datenbank hält und Zugriffe über Rechte, Freigaben und Verschlüsselung reguliert.
Voraussetzungen für den Eigenbetrieb
Für eine produktive Nextcloud-Instanz brauchst du einen Linux-Host mit Webserver, PHP-FPM, einer relationalen Datenbank, Redis und einem gültigen TLS-Zertifikat. Für erste Tests und kleine Teams reicht eine skalierbare Cloud-VPS mit 2 vCPU und 4 GB RAM, weil sich CPU und Speicher später nachziehen lassen.
| Komponente | Empfehlung | Hinweis |
|---|---|---|
| Webserver | nginx 1.24+ oder Apache 2.4 | Apache benötigt mod_rewrite und mod_headers |
| PHP | 8.2 oder 8.3 als PHP-FPM | PHP 8.4 wird ab Nextcloud 31 unterstützt |
| Datenbank | MariaDB 10.11 LTS oder PostgreSQL 15/16 | SQLite nur für Testinstanzen |
| Cache | Redis 7.x | Pflicht für Datei-Sperren im Mehrbenutzerbetrieb |
| Arbeitsspeicher | ab 4 GB | Volltextsuche und Office erhöhen den Bedarf deutlich |
An PHP-Modulen erwartet Nextcloud mindestens ctype, curl, dom, fileinfo, gd, intl, mbstring, openssl, posix, xml, zip sowie den passenden Datenbanktreiber (pdo_mysql oder pdo_pgsql). Empfohlen sind zusätzlich apcu für den lokalen Cache, bcmath und gmp für Passwordless-Login sowie imagick für Vorschaubilder.
Woraus besteht eine Nextcloud-Installation?
Eine Nextcloud-Installation besteht aus fünf Bausteinen: dem Webserver mit TLS-Terminierung, PHP-FPM als Anwendungslaufzeit, einer relationalen Datenbank für Metadaten, dem Datenverzeichnis für die eigentlichen Dateien und Redis für Sperren und Sitzungen.
Diese Trennung ist der Schlüssel zum Verständnis. Die Datenbank enthält keine Dateiinhalte, sondern Pfade, Größen, Änderungszeitpunkte, Freigaben und Berechtigungen. Der eigentliche Inhalt liegt im Datenverzeichnis oder auf einem angebundenen externen Speicher. Ein Backup, das nur die Datenbank sichert, ist deshalb wertlos, und ein Backup, das nur die Dateien sichert, ebenso.
graph TD
A["Client: Desktop-Client, Mobile-App, Browser"] --> B["Reverse Proxy mit TLS"]
B --> C["Webserver: nginx oder Apache"]
C --> D["PHP-FPM Pool"]
D --> E["Datenbank: MariaDB oder PostgreSQL"]
D --> F["Redis: Datei-Sperren und Sitzungen"]
D --> G["Datenverzeichnis: /var/nextcloud/data"]
D --> H["Externer Speicher: S3, SMB, WebDAV"]
I["Cron oder systemd-Timer"] --> J["cron.php über PHP-CLI"]
J --> E
J --> G
Die zentrale Konfigurationsdatei ist /var/www/nextcloud/config/config.php. Sie hält Datenbankzugang, Datenverzeichnis, erlaubte Hostnamen und die Cache-Konfiguration:
<?php
$CONFIG = array (
'instanceid' => 'ocxxxxxxxxxx',
'datadirectory' => '/var/nextcloud/data',
'dbtype' => 'mysql',
'dbhost' => '127.0.0.1',
'dbname' => 'nextcloud',
'trusted_domains' => array ( 0 => 'cloud.<deine-domain>' ),
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array ( 'host' => '/run/redis/redis-server.sock', 'port' => 0 ),
'default_phone_region' => 'DE',
);Passende Infrastruktur bei centron
Zum Mitmachen braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff, stundengenau abgerechnet und in Sekunden startklar. Cloud-Server mieten →
Wie läuft ein Datei-Upload technisch ab?
Ein Datei-Upload läuft über WebDAV unter /remote.php/dav, wird von PHP-FPM entgegengenommen, per Redis gegen konkurrierende Zugriffe gesperrt, ins Datenverzeichnis geschrieben und danach in der Tabelle oc_filecache verbucht.
sequenceDiagram
participant C as Desktop-Client
participant W as Webserver
participant P as PHP-FPM
participant R as Redis
participant D as Datenbank
participant S as Datenverzeichnis
C->>W: PUT /remote.php/dav/files/anna/bericht.pdf
W->>P: FastCGI-Request
P->>R: Sperre auf Zielpfad setzen
P->>S: Datei schreiben
P->>D: Eintrag in oc_filecache aktualisieren
P->>R: Sperre freigeben
P-->>C: 201 Created mit ETag
Große Dateien zerlegen die Desktop- und Mobile-Clients in Chunks und laden sie einzeln in ein temporäres Upload-Verzeichnis. Erst der abschließende MOVE-Request setzt die Teile zusammen. Deshalb scheitern große Uploads oft nicht am ersten Chunk, sondern am Zusammenbau, wenn max_execution_time oder das Proxy-Timeout zu knapp bemessen sind.
Der ETag aus der Antwort ist der Anker für die Synchronisation. Ändert sich der Inhalt einer Datei, ändert sich der ETag, und alle verbundenen Clients erkennen beim nächsten PROPFIND, dass sie neu laden müssen. Wenn Dateien serverseitig am Cache vorbei geändert werden, etwa durch ein Skript direkt im Datenverzeichnis, bleibt der Datenbankeintrag veraltet. Dagegen hilft occ files:scan.
Hintergrundjobs, Caching und Speicher
Nextcloud verschiebt Aufgaben wie Volltextindizierung, Vorschaubilder, Papierkorb-Bereinigung und Federated-Sharing-Abgleich in Hintergrundjobs. Für den Produktivbetrieb ist der System-Cron die einzig sinnvolle Variante, weil AJAX-Jobs nur laufen, solange jemand die Weboberfläche geöffnet hat.
$ sudo crontab -u www-data -l
*/5 * * * * php -f /var/www/nextcloud/cron.phpBeim Speicher hast du zwei Optionen. Das lokale Datenverzeichnis ist die einfachste Variante und für einzelne Teams völlig ausreichend. Wächst der Bestand über einige hundert Gigabyte, lohnt sich ein S3-kompatibler Objektspeicher als Primary Storage oder als externer Speicher pro Nutzergruppe. Für Wachstum in der Rechenleistung skalierst du CPU und RAM des Hosts nach, ohne die Instanz neu aufzusetzen.
Redis ist keine optionale Optimierung. Ohne memcache.locking nutzt Nextcloud Datei-Sperren in der Datenbank, was bei parallelen Sync-Clients zu Deadlocks und der Meldung „Die Datei ist gesperrt“ führt.
Installation mit occ prüfen
Das Kommandozeilenwerkzeug occ liegt im Nextcloud-Wurzelverzeichnis und wird immer als Webserver-Benutzer ausgeführt. Startest du es als root, gehören neu erzeugte Dateien danach root und die Instanz bricht bei der nächsten Schreiboperation ab.
# Version, Wartungsmodus und Installationsstatus
$ sudo -u www-data php /var/www/nextcloud/occ status
# Aktive und deaktivierte Apps auflisten
$ sudo -u www-data php /var/www/nextcloud/occ app:list
# Systemkonfiguration ohne Passwörter anzeigen
$ sudo -u www-data php /var/www/nextcloud/occ config:list system
# Fehlende Datenbankindizes nachziehen
$ sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indicesDer Befehl db:add-missing-indices ist nach jedem größeren Upgrade sinnvoll. Fehlende Indizes sind die häufigste Ursache für eine Weboberfläche, die bei wachsender Dateizahl spürbar träge wird.
Verifikation
Drei Prüfungen zeigen dir, ob die Instanz sauber läuft. Zuerst der Status über die Kommandozeile:
$ sudo -u www-data php /var/www/nextcloud/occ status
- installed: true
- version: 31.0.5.1
- versionstring: 31.0.5
- edition:
- maintenance: false
- needsDbUpgrade: falseDanach die integrierten Setup-Prüfungen. Sie melden dieselben Punkte wie die Übersicht unter „Verwaltungseinstellungen“:
$ sudo -u www-data php /var/www/nextcloud/occ setupchecksZum Schluss der Blick von außen. Der Endpunkt status.php ist ohne Anmeldung erreichbar und eignet sich als Health-Check für Monitoring:
$ curl -s https://cloud.<deine-domain>/status.php
{"installed":true,"maintenance":false,"needsDbUpgrade":false,"version":"31.0.5.1","productname":"Nextcloud"}Steht dort "maintenance":true, hängt die Instanz in einem abgebrochenen Upgrade. Zurücksetzen lässt sich das mit occ maintenance:mode --off, nachdem du die Upgrade-Logs geprüft hast.
Troubleshooting
„Zugriff über nicht vertrauenswürdige Domain“: Der aufgerufene Hostname steht nicht in trusted_domains. Ergänze ihn gezielt statt mit einem Platzhalter:
$ sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 1 --value=cloud.<deine-domain>HTTP 413 beim Upload: Das Limit greift an zwei Stellen. In nginx setzt du client_max_body_size 16G; im Server-Block, in /etc/php/8.3/fpm/php.ini zusätzlich upload_max_filesize und post_max_size. Danach php8.3-fpm und nginx neu laden.
„Letzter Hintergrundjob liegt Stunden zurück“: Der Cron-Eintrag fehlt oder läuft unter dem falschen Benutzer. Prüfe mit sudo -u www-data php -f /var/www/nextcloud/cron.php, ob der Aufruf manuell durchläuft, und sieh im Fehlerfall in /var/nextcloud/data/nextcloud.log nach.
Warnung zum Datenverzeichnis: Nextcloud verlangt Rechte 0750 und Eigentümer www-data. Korrigiere mit sudo chown -R www-data:www-data /var/nextcloud/data und sudo chmod 0750 /var/nextcloud/data.
Fazit
Nextcloud ist eine PHP-Anwendung mit sauber getrennten Schichten, und genau entlang dieser Schichten grenzt du Probleme ein: Webserver und Proxy für Timeouts und Upload-Limits, PHP-FPM für Speicher- und Laufzeitfehler, Datenbank für Trägheit bei vielen Dateien, Redis für Sperrmeldungen, Datenverzeichnis für Rechteprobleme. Als nächsten Schritt richtest du ein Backup ein, das Datenbank-Dump und Datenverzeichnis im selben Wartungsfenster erfasst, und ergänzt einen Monitoring-Check auf status.php.
Weiterlesen
- Nextcloud aktualisieren: Updater, occ und Rollback-Plan
- Nextcloud All-in-One mit Docker installieren
- Nextcloud auf Ubuntu 24.04 mit nginx installieren
- Nextcloud sichern und wiederherstellen: Daten, Datenbank, Config
- Nextcloud mit Docker Compose betreiben
- Nextcloud Office einrichten: Collabora oder OnlyOffice
- Nextcloud, ownCloud oder Seafile: Welche Lösung wofür?
- Nextcloud per WebDAV einbinden: Linux, Windows, macOS
- Welcher Server für Nextcloud? RAM, CPU und Storage dimensionieren
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.