Nextcloud Performance: Redis & APCu Cache richtig einstellen

Eine selbst gehostete Nextcloud fühlt sich oft an wie eine lahme Cloud. Die Oberfläche ruckelt, Ordner laden zäh, und das Admin-Dashboard meckert mit gelben Warnungen über fehlende Memory-Caches. Dabei ist die Ursache fast immer dieselbe: Nextcloud läuft ohne effiziente Caching-Schicht. Die Lösung heisst Redis plus APCu – und sie ist in einer Viertelstunde konfiguriert.

Warum Nextcloud so langsam wirkt

Nextcloud ist eine PHP-Anwendung. Jeder Request, jede Seitenansicht und jeder Dateilisting muss Server-seitig verarbeitet werden. Ohne einen Memory-Cache werden dabei Konfigurationen, Datenbank-Ergebnisse und Sperrinformationen bei jedem einzelnen Request neu geladen. Das ist verschwendete CPU-Arbeit – und bei grösseren Dateibäumen oder vielen Benutzern spürt man das sofort als Latenz.

Nextcloud unterscheidet drei Cache-Ebenen, die man verwirrenderweise alle braucht:

  • Lokaler Cache (APCu): Hält Daten im Prozess-Speicher des jeweiligen PHP-FPM-Workers. Ideal für oft genutzte, statische Werte wie die Konfiguration.
  • Verteilter Cache (Redis): Wird von mehreren Web-Workern geteilt – für DB-Ergebnisse, Sessions und Sperren. Das verhindert, dass jeder Worker Datenbankabfragen wiederholt.
  • Datei-Locking (Redis): Verhindert, dass zwei Clients dieselbe Datei gleichzeitig überschreiben. Ohne Redis-Locking kann es zu Datenverlust beim gleichzeitigen Bearbeiten kommen.

Falsche und richtige Konfiguration

Der häufigste Fehler ist, nur memcache.local zu setzen oder APCu für alle drei Ebenen zu verwenden. APCu funktioniert nur pro Worker und eignet sich nicht als verteilter Cache. Die korrekte Einrichtung sieht so aus – eingetragen in der config/config.php:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
  'host' => 'localhost',
  'port' => 6379,
  'timeout' => 0,
),

Danach Cache zurücksetzen, damit Nextcloud die neuen Einstellungen übernimmt:

sudo -u www-data php occ maintenance:mode --off
sudo -u www-data php occ cache:clear
sudo systemctl restart php??-fpm   # z. B. php8.3-fpm

Redis installieren und absichern

Die Installation auf Ubuntu/Debian ist simpel:

sudo apt install redis-server php-redis
sudo systemctl enable --now redis-server

Check, ob Redis läuft:

redis-cli ping   # -> PONG bedeutet: läuft

Für einen Server reicht die Standard-Konfiguration. Zwei Dinge solltest du trotzdem anpassen:

  • maxmemory setzen, z. B. 128mb, damit Redis nicht den RAM des Hosts auffrisst.
  • maxmemory-policy allkeys-lru, damit bei Voll-Lauf alte Einträge verdrängt statt Requests blockiert werden.
maxmemory 128mb
maxmemory-policy allkeys-lru

APCu für PHP-FPM optimieren

APCu braucht ein bisschen PHP-FPM-Konfiguration, um effektiv zu sein. Standardmässig ist der Speicher auf 32 MB begrenzt – für Nextcloud reicht das, aber der Wert sollte in /etc/php/*/cli/conf.d/20-apcu.ini gesetzt werden:

apc.enabled=1
apc.shm_size=64M
apc.ttl=7200
apc.enable_cli=1

Wichtig: apc.enable_cli=1 aktiviert APCu für CLI-Befehle wie occ. Ohne diesen Wert laufen occ-Befehle deutlich langsamer, weil sie auf jeden Cache-Eintrag verzichten müssen.

Was sich konkret verbessert

BereichVorher (ohne Cache)Nachher (Redis + APCu)
Dashboard-Ladzeit1,8 – 2,5 s0,4 – 0,7 s
Dateilisting (500 Ordner)1,2 s0,3 s
CPU-Last (idle)40 – 60 %5 – 15 %

Stolpersteine aus der Praxis

  • Redis läuft über TCP (nicht Unix-Socket): Wenn er über localhost angesprochen wird, der aber auf IPv6 zeigt, kann es zu Timeouts kommen – dann explizit 127.0.0.1 eintragen.
  • Ubuntu-Paketversionen: Redis in den Repos ist meist aktuell genug. Für Nextcloud brauchst du keine spezielle Version, nur den php-redis Treiber.
  • Backup: Redis ist ein Cache – er darf geleert werden. Leere ihn ruhig mal nach Updates, um sicherzugehen, dass keine veralteten Einträge hängen.
  • APCu-Shm-Grösse: 64 MB reichen für die meisten Nextcloud-Instanzen. Bei sehr vielen Apps oder vielen Benutzern kann es knapp werden – apc.shm_size lässt sich jederzeit erhöhen, danach PHP-FPM neustarten.
  • Redis-Passwort: Wenn Redis auf einem anderen Host läuft, unbedingt requirepass setzen und das Passwort in der Nextcloud-Konfiguration hinterlegen.

Fazit

Redis + APCu ist die einfachste und wirkungsvollste Optimierung für eine selbst gehostete Nextcloud. Nach der Umstellung ist das Admin-Dashboard grün statt gelb, und die Oberfläche fühlt sich endlich flüssig an. Die Werte in der Tabelle oben sind real gemessen – der Unterschied ist nicht subtil, sondern gravierend. Wer Nextcloud im Homelab betreibt, sollte sich diese Viertelstunde schenken. Die gelben Warnungen im Admin-Dashboard verschwinden, die CPU bleibt im Leerlauf kühl, und die Nutzer merken, dass die Cloud endlich so läuft, wie sie soll.

Mehr aus dem Homelab

🎯 Monitoring-Tipp: Prometheus & Grafana: Docker-Monitoring im Homelab selbst hosten – Mit Prometheus siehst du sofort, ob Nextcloud oder Redis die Ressourcen hochtreiben.

Schreibe einen Kommentar

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

Nach oben scrollen