Eine langsame Nextcloud weist häufig auf ungenaue Einstellungen in PHP, Datenbank, Caching und Hintergrundprozessen hin. Durch gezielte Anpassungen sinkt die Systemlast und die Reaktionszeit verbessert sich spürbar. Die wichtigsten Stellschrauben lassen sich in jeder Installation direkt optimieren.
So optimieren Sie Nextcloud: Zielgerichtete Anpassungen in PHP und Datenbank für schnellere Reaktionszeiten und verbesserte Systemleistung.
Die Geschwindigkeit einer Nextcloud hängt zuerst von einer korrekt konfigurierten PHP-Umgebung ab. Administratoren öffnen die Datei „php.ini“ im jeweiligen PHP-Verzeichnis. Dieses hängt vom Installationsverzeichnis von Nextcloud ab. Ist dieses nicht bekannt, weil die Nextcloud-Installation schon eine Weile her ist, lässt sich das schnell herausfinden.
Wo liegt die Nextcloud-Instanz?
Apache speichert die Konfiguration in „/etc/apache2/sites-available“. Die aktive Datei trägt oft den Namen der Domain, zum Beispiel nextcloud.conf. In dieser Datei steht eine Zeile wie:
DocumentRoot /var/www/nextcloud
Genau der Pfad in dieser Zeile ist das Installationsverzeichnis der Nextcloud. Wenn dort etwas anderes steht, zum Beispiel „/srv/web/nextcloud“, dann liegt die Installation dort. Befehl zum Anzeigen aller aktiven Apache-Hosts:
apache2ctl -S
Der Befehl zeigt ebenfalls die verwendeten DocumentRoot-Pfade an. Der Webservernginx speichert die Konfiguration ebenfalls in „/etc/nginx/sites-available“. Die Datei für die Nextcloud-Domain enthält einen Block „server { ... }“. Darin gibt es eine Zeile wie:
root /var/www/nextcloud;
Der Pfad in dieser Zeile ist das Installationsverzeichnis der Nextcloud. Befehl zum Anzeigen der geladenen Konfiguration:
nginx -T
Die Ausgabe zeigt jede „root“-Zeile aller Serverblöcke, inklusive des Pfads zur Nextcloud.
Wenn der Pfad unbekannt ist oder mehrere Installationen existieren, gehört die Datei „config.php“ im Verzeichnis „config“ zur Nextcloud-Installation. Man findet sie mit:
sudo find / -type f -name config.php 2>/dev/null
Der Ordner, in dem diese Datei liegt, ist die Nextcloud-Installation.
Konfigurationsdabei bearbeiten
Bearbeiten lassen sich die Dateien mit beliebigen Editoren, zum Beispiel vi oder nano. Die Datei „php.ini“ kann es mehrfach im System geben. Wichtig ist für die Bearbeitung die Datei, die Apache oder ngingx nutzen. Auch die eingesetzte Variante bestimmt, wo die jeweilige ini-Datei gespeichert ist. Anzeigen lässt sich das mit:
sudo apache2ctl -M | grep php
und
php –ini
Sobald bekannt ist, welche Konfigurationsdateien genutzt werden, wird diese geöffnet und bearbeitet, zum Beispiel mit:
sudo nano /etc/php/8.3/fpm/php.ini
Wichtig ist, nach Änderungen die notwendigen Dienste neu zu starten:
Der Parameter „memory_limit“ erhält einen Wert von mindestens vier Gigabyte. Eine erhöhte Speicherzuweisung verhindert Engpässe bei Aufgaben wie Vorschau-Erstellung oder Dateioperationen und reduziert interne Umwege innerhalb einzelner PHP-Prozesse. Die beiden Parameter „upload_max_filesize“ und „post_max_size“ müssen denselben Wert besitzen, um Abläufe beim Hochladen großer Dateien stabil zu halten. Die Verarbeitung bleibt dadurch konsistent und die Anzahl abgebrochener Uploads sinkt.
Der Eintrag „date.timezone“ definiert die lokale Zeitzone, damit Protokolle und zeitabhängige Routinen einheitlich arbeiten. Der Parameter „output_buffering“ wird auf „Off“ gesetzt. Dadurch verzichtet PHP auf eine Zwischenspeicherung von Ausgaben, was die Reaktionszeit bei WebDAV-Operationen spürbar verkürzt und blockierende Prozesse reduziert. Jede Änderung wird erst nach einem Neustart des PHP-Dienstes aktiv, daher folgt unmittelbar ein Restart des Apache- oder FPM-Dienstes:
OPcache bildet eine der wirksamsten Maßnahmen für eine schnelle Nextcloud. Der Interpreter lädt den kompilierten PHP-Code direkt aus dem Speicher und nicht aus dem Dateisystem. In der „php.ini“ werden daher OPcache mit „opcache.enable“ und zusätzlich „opcache.enable_cli“, damit auch OCC-Befehle und Cronjobs vom Cache profitieren, geladen.
Der Parameter „opcache.memory_consumption“ erhält eine Größe von mindestens zwei Gigabyte, wodurch genügend Speicher für häufig genutzte Skripte bereitsteht. Der interne Speicher für Zeichenketten wird über „opcache.interned_strings_buffer“ auf mindestens 64 Megabyte gesetzt, was Seitenaufrufe mit wiederkehrenden Strings beschleunigt.
Die Einstellung „opcache.revalidate_freq“ bleibt auf dem Wert 60, damit der Cache nur bei relevanten Dateiänderungen prüft und das System nicht permanent Dateien neu einliest. Für Nextcloud entscheidend bleibt die Anzahl der beschleunigten Dateien über „opcache.max_accelerated_files“. Viele Installationen mit zahlreichen Apps übersteigen schnell den Standardwert und profitieren stark von einer Erhöhung auf Werte ab dreißigtausend. Dadurch sinkt die Anzahl von Festplattenzugriffen deutlich, und die Ladezeiten der Weboberfläche verkürzen sich merklich.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Die Datei für die Datenbankkonfiguration liegt in der Regel unter „/etc/mysql/mariadb.conf.d“. Um die Datei zu öffnen, wird ebenfalls wieder ein herkömmlicher Editor verwendet, zum Beispiel
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Dort passen Administratoren die Parameter im Abschnitt für „InnoDB“ an. Der Wert „innodb_buffer_pool_size“ nutzt idealerweise die Hälfte des verfügbaren Arbeitsspeichers des Servers. Eine Instanz mit acht Gigabyte RAM erhält vier Gigabyte für den Buffer-Pool. Je größer dieser Bereich ist, desto mehr Tabelleninhalte verarbeitet die Datenbank ohne Zugriff auf das Dateisystem.
Ergänzend bietet „innodb_log_file_size“ eine größere Logdatei, damit Lastspitzen geglättet werden und Schreibvorgänge ohne Verzögerung ablaufen. Der Parameter „innodb_flush_method“ bleibt auf „O_DIRECT“, da dadurch doppeltes Caching verhindert wird und der Datenträger nicht unnötig belastet wird.
Die Werte „innodb_read_io_threads“ und „innodb_write_io_threads“ steuern parallele Lese- und Schreiboperationen. Mehr Threads verbessern die Effizienz bei gleichzeitigen Abfragen, was in aktiven Umgebungen zu deutlich geringerem Antwortverzug führt. Die Variable „max_connections“ bestimmt die maximale Zahl gleichzeitiger Datenbankverbindungen. Ein Wert im Bereich von zweihundert verhindert Engpässe bei steigender Nutzerzahl, ohne die Datenbank zu überlasten. Änderungen werden wirksam, sobald der Datenbankdienst neu startet.
Redis als Schlüssel für schnelles Filelocking
Redis ersetzt das Filelocking über die Datenbank und sorgt für spürbar stabilere Dateioperationen. Der Redis-Dienst wird auf einem Ubuntu-Server über den Paketmanager installiert. Administratoren rufen dazu folgenden Befehl auf:
sudo apt install redis-server
. Damit wird der Redis-Dienst eingerichtet und automatisch gestartet. Anschließend prüfen Administratoren, ob PHP Redis korrekt nutzen kann. Dafür muss das PHP-Modul geladen sein, das Redis mit PHP verbindet.
Die Installation von Redis kann auf Paketkonflikte treffen, wenn die verfügbaren Versionen von „redis-server“ und „redis-tools“ nicht exakt übereinstimmen. Tritt während der Installation ein Hinweis auf zurückgehaltene oder nicht erfüllte Abhängigkeiten auf, prüfen Administratoren zunächst die verfügbaren Paketversionen mit
apt-cache policy redis-server redis-tools
Weichen die Versionen voneinander ab, wird die zur Serverversion passende Ausgabe von „redis-tools“ gezielt installiert, bevor „redis-server“ erneut aufgerufen wird. In der Praxis erfolgt dies durch einen Reparaturlauf der Paketverwaltung per „apt -f install“ oder durch ein vollständiges Aktualisieren der Systempakete per „apt full-upgrade“, wodurch Ubuntu die Pakete wieder in einen konsistenten Zustand bringt. Sobald beide Komponenten in der passenden Version vorliegen, lässt sich Redis regulär installieren und der Dienst steht unmittelbar für die Einbindung in Nextcloud bereit.
Wird die Aktualisierung zurückgehalten, muss die Konfiguration dazu erst freigegeben werden:
sudo apt-mark unhold redis-tools redis-server
. Danach erfolgt die Aktualisierung mit
sudo apt updatesudo apt upgrade
Ob Redis bereits installiert ist und welche Version zum Einsatz kommt, lässt sich ebenfalls im Terminal herausfinden:
dpkg -l | grep redissystemctl status redis-server
Nach der Aktualisierung des Paketbestands installiert das System die zum Redis-Server passenden Build-Versionen der zugehörigen Werkzeuge. Die zuvor eventuell vorhandene Inkonsistenz zwischen älteren und neueren Paketständen wird damit vollständig aufgelöst. Die Ausgabe der Paketverwaltung bestätigt zum Beispiel die Installation der Version 5:7.0.15-1ubuntu0.24.04.2 sowohl für „redis-server“ als auch für „redis-tools“. Anschließend belegt die Abfrage über „dpkg -l“ den korrekten Paketstatus, da beide Komponenten nun mit identischer Versionsbezeichnung vorliegen. Zusätzlich ist das PHP-Modul für die Anbindung an Redis installiert, sodass PHP-FPM den Dienst unmittelbar nutzen kann.
Die Kontrolle des Systemdienstes liefert den notwendigen Nachweis für einen funktionsfähigen Redis-Server. Die Statusabfrage zeigt einen aktiven Dienst, der eingehende Verbindungen auf der lokalen Adresse 127.0.0.1 und dem Standardport 6379 akzeptiert. Die Prozessinformationen geben ergänzend Auskunft über Speicherbedarf, Laufzeit und Ausführungsstatus, was bei der Bewertung eines stabilen Betriebs unterstützt. Mit diesem Zustand ist Redis vollständig in das System eingebunden und bereit, für Caching-Mechanismen und das Filelocking von Nextcloud genutzt zu werden.
Damit Redis im Zusammenhang mit Nextcloud wirksam eingesetzt wird, folgt anschließend die Anpassung der zentralen Konfigurationsdatei der Instanz. Diese Datei befindet sich in der vorliegenden Installation unter „/var/www/html/config/config.php“. Auch hier hängt der Speicherort von der jeweiligen Installation ab. Dort wird die lokale Cache-Verwaltung auf APCu gelegt und das Filelocking auf Redis umgestellt. Die Konfiguration verweist auf den lokalen Redis-Dienst und den Standardport, wodurch Nextcloud Filelocks im Arbeitsspeicher ablegt und nicht mehr über die Datenbank erzeugt. Ergänzend bleibt sicherzustellen, dass APCu auch im Kontext der Kommandozeile wirksam ist, da Cronjobs und OCC-Befehle sonst weiterhin ohne lokales Caching laufen. Die entsprechende Einstellung „apc.enable_cli“ wird hierfür in der APCu-Konfigurationsdatei aktiviert. Nach einem Neustart von PHP-FPM und Apache arbeitet die komplette Instanz mit Redis-Unterstützung.
Dieser Ablauf stellt sicher, dass Redis als performante Cache- und Locking-Komponente zuverlässig zur Verfügung steht und die Last auf der Datenbank deutlich sinkt. Die Umgebung reagiert schneller, da Dateizugriffe und Metadatenabfragen im Speicher verarbeitet werden und nicht mehr in Form von zusätzlichen Datenbanktransaktionen auftreten.
Erst wenn Redis und das PHP-Modul vorhanden sind, kann Nextcloud Redis auch tatsächlich verwenden. Anschließend öffnet ein Administrator die Datei „config.php“ im Nextcloud-Installationsverzeichnis, zum Beispiel im Verzeichnis „/var/www/html/config/config.php“. In der Datei „config.php“ von Nextcloud stehen die relevanten Parameter. Der Eintrag „filelocking.enabled“ bleibt aktiviert. Die Zeile für das lokale Caching verweist auf APCu über „memcache.local“. Der Abschnitt für das Locking definiert Redis über „memcache.locking“. Die Verbindung erfolgt über die Angabe des Hosts, in der Regel „localhost“, und den Standardport. Zusätzlich verlangt APCu einen Eintrag in der eigenen Ini-Datei. Der Parameter „apc.enable_cli“ wird auf den Wert „1“ gesetzt. Dadurch profitieren OCC-Prozesse und Cronjobs ebenfalls vom Cache und reduzieren die Last auf PHP und die Datenbank. Nach Abschluss der Konfiguration startet der Webserver neu, wodurch alle Module korrekt eingebunden werden.
Viele Installationen verlangsamen mit der Zeit, weil Hintergrundaufgaben nicht regelmäßig starten. Nextcloud nutzt standardmäßig den Modus Ajax, der nur bei Seitenaufrufen aktive Prozesse startet. Das führt mittelfristig zu inkonsistenten Daten, nicht gelöschten Sessions und unerledigten Wartungsabläufen.
Administratoren wechseln daher in den Cron-Modus und aktivieren diesen in den Systemeinstellungen der Instanz. Anschließend wird über den Cron-Tab des Webservers-Benutzers ein Eintrag erstellt, der die Datei „cron.php“ alle fünf Minuten aufruft. Der zuständige Benutzer bleibt „www-data“, damit Nextcloud die richtigen Berechtigungen erhält. Sobald der Cron-Dienst aktiv arbeitet, bleiben Wartungsaufgaben zuverlässig ausgeführt und das System reagiert stabil, selbst bei hoher Last.
Die Aktualität der Nextcloud-Version spielt eine wesentliche Rolle für die Gesamtperformance, da neue Hauptversionen regelmäßig Optimierungen für OPcache, Datenbankabfragen und Caching enthalten. Direkt nach dem Erscheinen einer neuen Hauptversion zeigen viele Installationen jedoch instabile Verhaltensweisen. Sinnvoll bleibt daher ein Update ab der Version x.1.0, sobald größere Fehler behoben und die meisten Apps angepasst wurden. Dadurch profitieren Installationen von Leistungssteigerungen, ohne sich instabile Entwicklungen einzuhandeln.
Ergänzende Optimierung für Umgebungen mit hoher Talk-Nutzung
Instanzen, die Nextcloud Talk intensiv einsetzen, profitieren zusätzlich vom Einsatz eines Signaling-Servers. Dieses System arbeitet neben Janus und einem NATS-Dienst und entlastet die Hauptinstanz bei der Verwaltung der Medienströme. Administratoren installieren die Komponenten in einem separaten Dienstverzeichnis, bauen den Signaling-Server aus dem Quellcode, konfigurieren die Verbindungsparameter mit Nextcloud und binden ihn anschließend über die Talk-Einstellungen ein. Die Option für das gemeinsame Geheimnis verweist auf den zuvor generierten Schlüssel. Diese Erweiterung verbessert ausschließlich den Ablauf von Videokonferenzen und wirkt sich nicht auf Dateioperationen aus, eignet sich aber für Umgebungen mit vielen gleichzeitigen Teilnehmern.