Nextcloud Server optimieren: Performance verbessern, Upload Limit erhöhen und Timeouts vermeiden

Warum du deinen Nextcloud Server optimieren solltest

Nextcloud ist mehr als nur ein Netzlaufwerk in hübsch. Wenn du deinen Nextcloud Server als zentrale Datendrehscheibe nutzt, merkst du schnell, wie wichtig Performance und Stabilität sind. Große Uploads brechen ab, Downloads laufen ins Timeout, die Weboberfläche fühlt sich zäh an und die Vorschau von Bildern oder Videos lässt auf sich warten.

In diesem Beitrag zeige ich dir, wie du deinen Nextcloud Server optimierst, die Performance verbesserst und typische Limits wie das PHP Upload Limit und Timeouts anpasst. Außerdem schauen wir uns an, wie du Cronjobs aktivierst, die Nextcloud config.php anpasst und welche Befehle bei Wartung und Tuning wirklich wichtig sind.

Ich gehe dabei vor allem von einem Setup mit Ubuntu, Apache und PHP 8.3 oder 8.4 aus. Viele Tipps gelten aber genauso für PHP-FPM oder Nginx.

PHP Upload Limit erhöhen und Timeouts anpassen

Damit große Dateien in Nextcloud sauber hochgeladen werden können, müssen mehrere PHP Parameter zusammenpassen. Die Einstellungen findest du in der Regel unter zum Beispiel:

sudo nano /etc/php/8.4/apache2/php.ini

Wichtige Parameter für Uploads und Timeouts:

EinstellungBeispielwertWirkung
memory_limit1024M oder 2GMaximaler RAM pro PHP Prozess
upload_max_filesize8GMaximalgröße einer einzelnen Datei
post_max_size8G oder größerMaximalgröße des gesamten POST Requests
max_file_uploads200Wie viele Dateien pro Request hochgeladen werden dürfen
default_socket_timeout900Timeout in Sekunden für Streams, z. B. bei langsamen Uploads

Wichtig:

  • post_max_size sollte mindestens so groß sein wie upload_max_filesize, besser etwas größer.
  • Übertreibe es nicht mit absurden Werten wie 256G, wenn dein Server nur 16 GB RAM und 2 TB Speicher hat. Passe die Werte an dein Setup an.
  • Für sehr große Dateien ist oft das Timeout das eigentliche Problem. Erhöhe daher zusätzlich:
    • max_execution_time auf zum Beispiel 3600
    • max_input_time auf zum Beispiel 3600

Beispielauszug aus einer php.ini:

memory_limit = 2G
upload_max_filesize = 8G
post_max_size = 8G
max_file_uploads = 200
max_execution_time = 3600
max_input_time = 3600
default_socket_timeout = 900
zlib.output_compression = On
zlib.output_compression_level = 6

Die zlib.output_compression Einstellung kann helfen, die Antwortgröße zu reduzieren, vor allem bei langsameren Leitungen. Achte aber darauf, dass dein Reverse Proxy oder Webserver nicht zusätzlich doppelt komprimiert.

Zusätzlich musst du bei Nginx oder einem Reverse Proxy oft noch Limits anpassen, zum Beispiel:

  • Nginx: client_max_body_size
  • Apache: LimitRequestBody oder Timeouts wie ProxyTimeout oder RequestReadTimeout

Nextcloud Performance Tweaks mit APCu und Opcache

Nextcloud profitiert massiv von einem korrekt eingerichteten PHP Opcache und einem lokalen Cache wie APCu.

In deiner php.ini oder einer eigenen apcu.ini kannst du APCu zum Beispiel so aktivieren:

apc.enabled=1
apc.shm_segments=1
apc.shm_size=256M
apc.entries_hint=8192

Deine Werte aus den Notizen (z. B. apc.shm_size=768M) sind für sehr große Installationen mit vielen Nutzern ok. Für eine kleine private Nextcloud reichen meist 128M bis 256M.

Der PHP Opcache sorgt dafür, dass PHP Dateien im Speicher gehalten werden und nicht bei jedem Request neu geparst werden müssen:

opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.max_wasted_percentage=10

Kurz erklärt:

  • opcache.memory_consumption legt fest, wie viel RAM der Opcache nutzen darf. 128 bis 256 MB sind für die meisten Installationen ein guter Start.
  • opcache.max_accelerated_files gibt an, wie viele PHP Dateien gecacht werden dürfen. 10000 bis 20000 sind für typische Nextcloud Umgebungen sinnvoll.

Nach Änderungen an den PHP Einstellungen musst du Apache oder PHP-FPM neu starten:

sudo systemctl restart apache2
# oder
sudo systemctl restart php8.4-fpm

Cronjob aktivieren und Hintergrundjobs richtig konfigurieren

Nextcloud erledigt viele Aufgaben im Hintergrund: Vorschauen generieren, Freigaben aufräumen, Shares synchronisieren, externe Speicher prüfen und vieles mehr. Standardmäßig läuft das über AJAX. Das ist bequem, aber schlecht für die Performance, weil Aufgaben dann nur ausgelöst werden, wenn jemand im Browser aktiv ist.

Besser ist ein System Cronjob. Stelle in den Nextcloud Admin Einstellungen unter „Grundlegende Einstellungen“ den Punkt „Hintergrundaufgaben“ auf „Cron“.

Dann legst du als www-data Benutzer einen Cronjob an:

sudo -u www-data crontab -e

Zum Beispiel:

*/5 * * * * php --define apc.enable_cli=1 -f /var/www/html/cron.php > /dev/null 2>&1

Damit läuft der Nextcloud Cron alle 5 Minuten, unabhängig davon, ob jemand im Browser eingeloggt ist.

In deinen Notizen hast du zusätzlich ein paar sinnvolle Wartungsjobs mit occ files:scan eingetragen, um bestimmte Benutzerverzeichnisse oder externe Speicher zu scannen. Das ist völlig ok, aber übertreibe es nicht mit zu vielen täglichen Scans, sonst belastest du deine Datenbank unnötig.

Nextcloud config.php optimieren

Die Datei config/config.php steuert viele interne Funktionen von Nextcloud. Du findest sie zum Beispiel unter:

nano /var/www/html/config/config.php

Ein paar deiner Einträge und was sie bedeuten:

'memcache.local' => '\\OC\\Memcache\\APCu',
'preview_max_memory' => 4096,
'versions_retention_obligation' => '5,auto',
'trashbin_retention_obligation' => '5,auto',
'filelocking.enabled' => false,
'check_data_directory_permissions' => false,
'files.chunked_upload.max_size' => 20971520,
'enabledPreviewProviders' => array(
    'OC\\Preview\\PNG',
    'OC\\Preview\\JPEG',
    'OC\\Preview\\GIF',
    'OC\\Preview\\HEIC',
    'OC\\Preview\\BMP',
    'OC\\Preview\\XBitmap',
    'OC\\Preview\\MP3',
    'OC\\Preview\\TXT',
    'OC\\Preview\\MarkDown',
    'OC\\Preview\\OpenDocument',
    'OC\\Preview\\Krita',
    'OC\\Preview\\PDF',
    'OC\\Preview\\SVG',
    'OC\\Preview\\EPS',
    'OC\\Preview\\DOC',
    'OC\\Preview\\DOCX',
    'OC\\Preview\\TIFF',
    'OC\\Preview\\Photoshop',
    'OC\\Preview\\PhotoshopPSB',
    'OC\\Preview\\MP4',
),

Kurz zusammengefasst:

  • memcache.local mit APCu ist Pflicht für Performance. Ohne das fühlt sich Nextcloud sehr langsam an.
  • preview_max_memory begrenzt den RAM für das Generieren von Bildvorschauen. Standard ist deutlich kleiner, 4096 MB ist eher großzügig. Passe den Wert an deine Hardware an.
  • versions_retention_obligation und trashbin_retention_obligation steuern, wie lange Versionen und Papierkorb-Inhalte aufbewahrt werden. Kürzere Aufbewahrung bedeutet weniger Speicherverbrauch.
  • files.chunked_upload.max_size beeinflusst die Chunkgröße beim Upload. Der Wert ist in Bytes. 20971520 entspricht 20 MB. Größere Chunks können die Performance bei schnellen Leitungen verbessern, sind aber empfindlicher bei instabilen Verbindungen.

Vorsicht bei:

'filelocking.enabled' => false,
'check_data_directory_permissions' => false,
  • filelocking.enabled solltest du nur deaktivieren, wenn du genau weißt, was du tust. Besser ist es, Redis als memcache.locking zu konfigurieren, damit gleichzeitige Zugriffe sauber gesperrt werden.
  • check_data_directory_permissions auf false kann sinnvoll sein, wenn du ein spezielles Storage Setup hast, nimmt dir aber auch eine Sicherheitsprüfung ab.

Wichtige occ Befehle für Wartung und Performance

Das Nextcloud CLI Werkzeug occ ist extrem hilfreich für Wartung und Optimierung. Du führst Befehle zum Beispiel so aus:

sudo -u www-data php /var/www/html/occ status

Einige nützliche Befehle:

  • occ status
    Zeigt dir grundlegende Informationen zu deiner Instanz.
  • occ db:add-missing-indices
    Fügt fehlende Datenbank Indizes hinzu und kann Abfragen deutlich beschleunigen.
  • occ db:convert-filecache-bigint
    Konvertiert Spalten in der Datenbank, um Performance und Stabilität zu verbessern.
  • occ files:scan --all oder gezielt mit --path
    Hilft, wenn Dateien im Dateisystem liegen, aber in Nextcloud nicht sichtbar sind. Nicht zu häufig laufen lassen, da es die Datenbank belasten kann.
  • occ preview:pre-generate
    In Kombination mit der Preview Generator App kannst du Bildvorschauen nachts vorrechnen lassen, damit der Webzugriff schneller wird.

Datenbank, Storage und Netzwerk nicht vergessen

Wenn du deinen Nextcloud Server wirklich optimieren willst, solltest du auch diese Bereiche im Blick behalten:

  1. Datenbank Tuning
    • Verwende nach Möglichkeit MariaDB oder PostgreSQL.
    • Stelle sicher, dass der Buffer Pool groß genug ist, zum Beispiel:
      • MariaDB: innodb_buffer_pool_size bei kleinen Servern auf 1 bis 2 GB setzen.
    • Achte auf regelmäßige Backups und prüfe die Logs auf langsame Abfragen.
  2. Storage und Dateisystem
    • SSD oder NVMe bringen einen deutlichen Performance Schub gegenüber alten HDDs.
    • Bei vielen kleinen Dateien lohnt sich ein Blick auf das Dateisystem und Mount-Optionen.
    • Externe Speicher (SMB, NFS) sind praktisch, aber oft langsamer als lokaler Storage.
  3. Netzwerk und Reverse Proxy
    • Stelle sicher, dass deine Internetleitung zum Upload passt, vor allem bei großen Dateien.
    • Prüfe Timeouts und Body Limits im Reverse Proxy (Nginx, Traefik, Apache Proxy).
    • Aktiviere HTTP/2 oder HTTP/3, wenn dein Setup das unterstützt, um viele kleine Anfragen effizienter abzuarbeiten.

Durchschnittliche Bewertung 0 / 5. Bewertungen: 0

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen