Tutorials  /  Linux Basics

Was ist Nextcloud? Funktionsweise, Komponenten und Einsatz

LLudwig · August 2026 ·8 Min. Lesezeit ·Linux Basics, Tutorial

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
<?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',
);
VM

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.

Konsole
$ sudo crontab -u www-data -l
*/5 * * * * php -f /var/www/nextcloud/cron.php

Beim 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.

Konsole
# 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-indices

Der 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:

Konsole
$ 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: false

Danach die integrierten Setup-Prüfungen. Sie melden dieselben Punkte wie die Übersicht unter „Verwaltungseinstellungen“:

Konsole
$ sudo -u www-data php /var/www/nextcloud/occ setupchecks

Zum Schluss der Blick von außen. Der Endpunkt status.php ist ohne Anmeldung erreichbar und eignet sich als Health-Check für Monitoring:

Konsole
$ 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:

Konsole
$ 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

Jetzt 200 € Guthaben sichern

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.

Ludwig Technische Redaktion

Schreibt bei centron über Linux-Administration, Container und Datenbanken – mit Fokus auf Anleitungen, die im Betrieb tatsächlich funktionieren.

Kategorie Linux Basics
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren