Para eliminar la advertencia de bloqueo de archivos transaccionales de Nextcloud, primero asegúrese de que el bloqueo esté habilitado y, a continuación, configure un backend persistente compatible con Redis, como Redis o Valkey. En una instancia pequeña, Nextcloud puede usar su backend de bloqueo de base de datos por defecto; para un servidor de producción o una carga de trabajo compartida, el bloqueo con respaldo de Redis es la opción habitual, ya que reduce el tráfico de bloqueo a la base de datos. No asigne bloqueos de archivos a Memcached: Nextcloud advierte que los valores en caché pueden desaparecer inesperadamente.
Elige el sistema de bloqueo que mejor se adapte a tu servidor.
El bloqueo transaccional de archivos protege las operaciones de archivos contra escrituras conflictivas y puede liberar bloqueos cuando se interrumpe una carga u otra transacción. Ayuda a prevenir la corrupción durante el funcionamiento normal, incluso al trabajar con archivos compartidos y almacenamiento externo. No impide que dos personas editen el mismo documento simultáneamente ni proporciona indicadores de presencia; controla los guardados simultáneos. Consulte la documentación sobre el bloqueo transaccional de archivos de Nextcloud 35 .
- Base de datos: Nextcloud utiliza el bloqueo de base de datos por defecto. Esto evita añadir otro servicio y puede ser suficiente para una instalación personal pequeña, pero el bloqueo de base de datos aumenta la carga. Si solo está eliminando una advertencia en un servidor con poco uso, primero confirme que el bloqueo no se haya desactivado explícitamente.
- Redis con phpredis: Una buena opción para implementaciones consolidadas en servidores únicos y en clúster. Requiere un servidor compatible con Redis y la extensión PHP Redis, además de la configuración de conexión correspondiente en Nextcloud.
- KeyValueCache con Redis o Valkey: Disponible a partir de Nextcloud 34.0.2. Utiliza la biblioteca integrada de Nextcloud, por lo que no requiere una extensión PHP Redis. Esto resulta útil cuando la extensión no está disponible, aunque Nextcloud advierte que un servidor remoto de clave-valor puede generar sobrecarga de red.
- Memcached: Puede servir para el almacenamiento en caché distribuido, pero no es apropiado para bloqueos de archivos transaccionales porque los valores de la caché pueden ser desalojados. Manténgalo fuera de
memcache.locking.
Para un servidor doméstico pequeño, el bloqueo de la base de datos puede ser suficiente si no hay advertencias de bloqueo ni presión sobre la base de datos. Elija Redis o Valkey para instancias con mucha actividad, varios servidores de aplicaciones o cuando desee que los bloqueos de archivos se gestionen fuera de la base de datos. La guía actual de almacenamiento en caché de memoria de Nextcloud 35 recomienda APCu para la caché local y Redis para el bloqueo en implementaciones comunes de un solo servidor. Todos los nodos web en clúster deben usar el mismo punto final o clúster de Redis o Valkey.
Compruebe si el bloqueo estaba desactivado.
Localiza el archivo de configuración activo de Nextcloud, normalmente config/config.phpen el directorio de instalación de Nextcloud. Haz una copia de seguridad antes de modificarlo. Busca filelocking.enabledy memcache.locking. La referencia de configuración establece el bloqueo como habilitado por defecto; si encuentras un valor falso explícito, cámbialo a verdadero o elimina esa anulación.
'filelocking.enabled' => true,
No añada una segunda copia de una clave existente. Los arrays de configuración de PHP deben contener un único valor efectivo para cada ajuste. Si utiliza un contenedor o un panel de alojamiento gestionado, realice los cambios a través de su mecanismo de configuración compatible para que persistan tras las actualizaciones o las nuevas implementaciones. La referencia de advertencias de administración de Nextcloud 35 identifica la advertencia de bloqueo y enlaza con los requisitos del backend.
Configurar el bloqueo de Redis en un único servidor.
En Debian o Ubuntu, los nombres de los paquetes suelen tener este formato: redis-servery php-redis; utilice los paquetes de su distribución y haga coincidir el módulo PHP con la versión de PHP que utiliza el servidor web. Si utiliza el backend clásico de Redis, instale e inicie el servicio Redis y confirme que la extensión PHP Redis esté habilitada para la SAPI web. Un módulo PHP que solo se pueda cargar mediante la línea de comandos no garantiza que PHP-FPM o Apache puedan cargarlo.
Agregue los detalles de conexión y del backend de bloqueo al config.phparray existente. Este ejemplo asume que Redis se está ejecutando en la misma máquina, escuchando en el puerto 6379 de localhost y accesible para el proceso PHP de Nextcloud:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
Configure los detalles de autenticación si su servidor Redis los requiere. Evite exponer Redis a internet; restrinja su acceso al host o a la red privada y configure las reglas de autenticación y del firewall. Para un socket Unix, utilice la ruta del socket como host de Redis y el puerto 0, y asegúrese de que el usuario del servidor web pueda acceder a dicho socket. No copie la configuración de localhost en una implementación de varios servidores a menos que Redis sea realmente local y se comparta de forma consistente; todos los nodos de la aplicación Nextcloud deben acceder al mismo backend.
Cuando la extensión PHP Redis no está disponible
En Nextcloud 34.0.2 o posterior, KeyValueCache puede conectarse a Redis o Valkey sin necesidad de instalar una extensión PHP por separado. Configure el backend y el almacén de clave-valor de la siguiente manera, reemplazando el host y las credenciales con los valores de su entorno:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
],
No configure Redis y KeyValueCache como proveedores de bloqueo que compitan entre sí. Siga la documentación de Nextcloud para credenciales, TLS, sockets, Sentinel o topología del clúster, en lugar de adaptar un ejemplo de un solo servidor a ojo.
Reinicia y verifica la solución.
Reinicia el servicio compatible con Redis si modificaste su configuración. Luego, reinicia el servidor web o el proceso PHP-FPM si instalaste o habilitaste una extensión de PHP. Verifica el estado del servicio usando el nombre del servicio correspondiente a tu distribución; por ejemplo, systemctl status redis-serveren muchos sistemas Debian o Ubuntu. Confirma que el servicio esté activo y que el proceso PHP pueda conectarse. Las implementaciones en contenedores deben usar el nombre del servicio Redis en la red del contenedor, no localhost, a menos que ambos servicios compartan un espacio de nombres de red.
Inicie sesión en Nextcloud como administrador y actualice la vista general de administración. La advertencia de bloqueo de archivos transaccionales debería desaparecer cuando el backend configurado esté disponible y se haya cargado la configuración. Cargue, descargue y sincronice un archivo de prueba y, a continuación, revise los registros de Nextcloud y PHP si aparece un error de conexión o permisos de Redis. Una advertencia que persiste suele indicar un error tipográfico, una clave de configuración duplicada, una extensión/SAPI de PHP incorrecta, una conexión de red bloqueada, permisos de socket incorrectos o un backend inaccesible. Corrija la causa específica en lugar de deshabilitar el bloqueo.
Para opciones específicas de implementación, consulte las referencias oficiales versionadas antes de cambiar la topología: Bloqueo de archivos transaccionales , Almacenamiento en caché de memoria y configuración de Redis/Valkey y parámetros de configuración .