Um die Warnung von Nextcloud bezüglich transaktionaler Dateisperrungen zu beheben, stellen Sie zunächst sicher, dass die Sperrung aktiviert ist. Konfigurieren Sie anschließend ein persistentes, Redis-kompatibles Backend wie Redis oder Valkey. Auf einer kleinen Instanz kann Nextcloud standardmäßig das Datenbank-Sperr-Backend verwenden. Für einen Produktionsserver oder eine gemeinsam genutzte Arbeitslast ist die Redis-basierte Sperrung die übliche Wahl, da sie den Sperrverkehr zur Datenbank reduziert. Weisen Sie Memcached keine Dateisperren zu: Nextcloud warnt davor, dass zwischengespeicherte Werte unerwartet verloren gehen können.
Wählen Sie das passende Locking-Backend für Ihren Server.
Die transaktionale Dateisperrung schützt Dateivorgänge vor Schreibkonflikten und kann Sperren aufheben, wenn ein Upload oder eine andere Transaktion unterbrochen wird. Sie trägt dazu bei, Datenbeschädigungen im Normalbetrieb zu vermeiden, insbesondere bei der Arbeit mit gemeinsam genutzten Dateien und externem Speicher. Sie verhindert nicht, dass zwei Personen gleichzeitig dasselbe Dokument bearbeiten, und zeigt auch keine Anwesenheitsanzeigen an; sie steuert lediglich gleichzeitige Speichervorgänge. Weitere Informationen finden Sie in der Dokumentation zur transaktionalen Dateisperrung von Nextcloud 35 .
- Datenbank-Backend: Nextcloud verwendet standardmäßig Datenbanksperren. Dadurch wird ein zusätzlicher Dienst vermieden und die Sperrung kann für eine kleine private Installation ausreichend sein, sie erhöht jedoch die Serverlast. Wenn Sie lediglich eine Warnung auf einem wenig ausgelasteten Server beheben, prüfen Sie zunächst, ob die Sperrung nicht explizit deaktiviert wurde.
- Redis mit phpredis: Ideal für etablierte Einzelserver- und Clusterumgebungen. Erforderlich sind ein Redis-kompatibler Server, die PHP-Redis-Erweiterung sowie entsprechende Verbindungseinstellungen in Nextcloud.
- KeyValueCache mit Redis oder Valkey: Verfügbar ab Nextcloud 34.0.2. Es nutzt die in Nextcloud integrierte Bibliothek und benötigt daher keine PHP-Redis-Erweiterung. Dies ist hilfreich, wenn die Erweiterung nicht verfügbar ist. Nextcloud weist jedoch darauf hin, dass ein externer KeyValue-Server zusätzlichen Netzwerk-Overhead verursachen kann.
- Memcached: Es kann für verteiltes Caching verwendet werden, ist aber für transaktionale Dateisperren ungeeignet, da Cache-Werte verworfen werden können. Vermeiden Sie es daher
memcache.locking.
Für einen kleinen Heimserver kann die Datenbank-Sperrung ausreichend sein, sofern keine Sperrwarnungen vorliegen und die Datenbank nicht stark ausgelastet ist. Für stark ausgelastete Instanzen, mehrere Anwendungsserver oder wenn Dateisperren außerhalb der Datenbank verwaltet werden sollen, empfiehlt sich Redis oder Valkey. Die aktuellen Nextcloud-35-Richtlinien zum Speicher-Caching empfehlen APCu für den lokalen Cache und Redis für die Sperrung in gängigen Einzelserver-Bereitstellungen. Webknoten in einem Cluster müssen alle denselben Redis- oder Valkey-Endpunkt bzw. Cluster verwenden.
Prüfen Sie, ob die Sperre deaktiviert wurde.
Suchen Sie die aktive Nextcloud-Konfigurationsdatei, üblicherweise config/config.phpim Nextcloud-Installationsverzeichnis. Erstellen Sie eine Sicherungskopie, bevor Sie Änderungen vornehmen. Suchen Sie nach ` <locking-config>` filelocking.enabledund ` memcache.locking<locking-config>`. Die Konfigurationsreferenz legt die Sperrung standardmäßig auf aktiviert fest. Sollten Sie einen expliziten Wert `false` finden, ändern Sie ihn in `true` oder entfernen Sie diese Überschreibung.
'filelocking.enabled' => true,
Fügen Sie keine zweite Kopie eines bestehenden Schlüssels hinzu. PHP-Konfigurationsarrays sollten für jede Einstellung genau einen gültigen Wert enthalten. Wenn Sie einen Container oder ein Managed-Hosting-Panel verwenden, nehmen Sie Änderungen über den zugehörigen Konfigurationsmechanismus vor, damit diese auch nach Upgrades oder Neuinstallationen erhalten bleiben. Die Nextcloud-35-Admin-Warnung beschreibt die Sperrwarnung und verlinkt zu den Backend-Anforderungen.
Redis-Sperren auf einem einzelnen Server konfigurieren
Unter Debian oder Ubuntu sehen Paketnamen üblicherweise so aus: `<php.php>` und `<php.php>`. redis-serverVerwenden php-redisSie die Pakete Ihrer Distribution und achten Sie darauf, dass das PHP-Modul zur PHP-Version Ihres Webservers passt. Wenn Sie das klassische Redis-Backend verwenden, installieren und starten Sie den Redis-Dienst und stellen Sie sicher, dass die PHP-Redis-Erweiterung für die Web-SAPI aktiviert ist. Ein PHP-Modul, das nur über die Kommandozeile (CLI) verfügbar ist, beweist nicht, dass es von PHP-FPM oder Apache geladen werden kann.
Fügen Sie dem bestehenden Array das Sperr-Backend und die Verbindungsdetails hinzu config.php. In diesem Beispiel wird davon ausgegangen, dass Redis auf demselben Rechner läuft, auf localhost Port 6379 lauscht und für den Nextcloud-PHP-Prozess erreichbar ist:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
Legen Sie Authentifizierungsdaten fest, falls Ihr Redis-Server diese benötigt. Vermeiden Sie es, Redis dem öffentlichen Internet auszusetzen; beschränken Sie den Zugriff auf den Host oder ein privates Netzwerk und konfigurieren Sie Authentifizierungs- und Firewall-Regeln. Verwenden Sie für einen Unix-Socket den Socket-Pfad als Redis-Host und Port 0 und stellen Sie sicher, dass der Webserver-Benutzer auf diesen Socket zugreifen kann. Kopieren Sie die localhost-Einstellungen nicht in eine Multi-Server-Umgebung, es sei denn, Redis befindet sich tatsächlich lokal und wird konsistent gemeinsam genutzt; alle Nextcloud-Anwendungsknoten müssen auf dasselbe Backend zugreifen.
Wenn die PHP-Redis-Erweiterung nicht verfügbar ist
Ab Nextcloud 34.0.2 kann KeyValueCache ohne separat installierte PHP-Erweiterung eine Verbindung zu Redis oder Valkey herstellen. Konfigurieren Sie das Backend und den Key-Value-Speicher wie folgt und ersetzen Sie dabei Host und Zugangsdaten durch die Werte Ihrer Umgebung:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
],
Konfigurieren Sie Redis und KeyValueCache nicht gleichzeitig als konkurrierende Sperranbieter. Beachten Sie die Nextcloud-Dokumentation bezüglich Anmeldeinformationen, TLS, Sockets, Sentinel und Clustertopologie, anstatt ein Einzelserverbeispiel durch Ausprobieren anzupassen.
Starten Sie den Computer neu und überprüfen Sie, ob die Reparatur erfolgreich war.
Starten Sie den Redis-kompatiblen Dienst neu, wenn Sie dessen Konfiguration geändert haben. Starten Sie anschließend den Webserver oder den PHP-FPM-Prozess neu, falls Sie eine PHP-Erweiterung installiert oder aktiviert haben. Überprüfen Sie den Dienststatus anhand des Dienstnamens Ihrer Distribution, z. B. systemctl status redis-serverauf vielen Debian- oder Ubuntu-Systemen. Stellen Sie sicher, dass der Dienst aktiv ist und der PHP-Prozess eine Verbindung herstellen kann. Container-Bereitstellungen sollten den Redis-Dienstnamen im Containernetzwerk verwenden, nicht localhost, es sei denn, beide Dienste teilen sich einen Netzwerk-Namespace.
Melden Sie sich als Administrator bei Nextcloud an und aktualisieren Sie die Administrationsübersicht. Die Warnung zur Transaktionsdateisperrung sollte verschwinden, sobald das konfigurierte Backend verfügbar und die Einstellung geladen ist. Laden Sie eine Testdatei hoch, laden Sie sie herunter und synchronisieren Sie sie. Überprüfen Sie anschließend die Nextcloud- und PHP-Protokolle, falls ein Redis-Verbindungs- oder Berechtigungsfehler auftritt. Eine weiterhin bestehende Warnung deutet in der Regel auf einen Tippfehler, einen doppelten Konfigurationsschlüssel, die falsche PHP-Erweiterung/SAPI, eine blockierte Netzwerkverbindung, fehlerhafte Socket-Berechtigungen oder ein nicht erreichbares Backend hin. Beheben Sie diese spezifische Ursache, anstatt die Sperrung zu deaktivieren.
Für einsatzspezifische Optionen konsultieren Sie bitte die versionierten offiziellen Referenzen, bevor Sie die Topologie ändern: Transaktionale Dateisperrung , Speichercaching und Redis/Valkey-Konfiguration sowie Konfigurationsparameter .