Si Nextcloud muestra una advertencia de que el bloqueo de archivos transaccional no está configurado o está deshabilitado, las operaciones de archivos podrían estar menos protegidas contra escrituras simultáneas y transferencias interrumpidas. La solución habitual consiste en configurar un almacén de clave-valor compatible, como Redis o Valkey, para el bloqueo. Primero, identifique cómo está instalado Nextcloud y, a continuación, configure el servicio de caché y Nextcloud conjuntamente; instalar Redis por sí solo no elimina la advertencia.
El manual de administración actual de Nextcloud indica que el bloqueo transaccional utiliza la base de datos por defecto. Si bien el backend de la base de datos puede funcionar, aumenta la carga de la base de datos. Redis o Valkey pueden proporcionar un backend de bloqueo dedicado. El texto exacto de la advertencia varía según la versión de Nextcloud: la documentación actual indica: «El bloqueo transaccional de archivos está deshabilitado, lo que podría provocar problemas de condiciones de carrera». Una advertencia independiente sobre la caché de memoria no se refiere al mismo problema. Consulte la guía oficial de bloqueo transaccional de archivos y la referencia de advertencias de la página de administración .
Antes de cambiar de servidor
Estos pasos presuponen que usted administra el host de Nextcloud. Los comandos que se muestran a continuación utilizan Debian o Ubuntu con una instalación de paquetes convencional; los nombres de los paquetes, los nombres de los servicios, las versiones de PHP y las rutas de configuración varían en otras distribuciones de Linux. Si utiliza Nextcloud AIO, Docker, Snap, TrueNAS o una imagen de un proveedor de alojamiento, siga las instrucciones de esa implementación para instalar y reiniciar los servicios. La instalación de paquetes PHP en el host puede no modificar el entorno PHP dentro de un contenedor o dispositivo.
- Encuentra la raíz web de Nextcloud y su activo
config/config.php.
- Antes de editar ese archivo, haz una copia de seguridad protegida. Puede contener credenciales de base de datos y otra información confidencial.
- Confirma si Nextcloud utiliza un servidor web o varios. Una configuración multinodo requiere un servidor o clúster Redis/Valkey compartido al que puedan acceder todos los nodos de Nextcloud.
- Planifique un breve periodo de mantenimiento si sus usuarios dependen de la carga ininterrumpida de archivos.
Paso 1: Confirme el tipo de advertencia e instalación.
Inicie sesión como administrador y abra la configuración de administración , luego revise la descripción general o las advertencias de seguridad y configuración. Anote el mensaje exacto. Si la página solo dice que no hay ninguna caché de memoria configurada, esa es una verificación diferente; configure una caché local como APCu según corresponda, pero no asuma que proporcionará bloqueo transaccional. Nextcloud documenta que la configuración de caché debe habilitarse explícitamente en config.php.
En una instalación tradicional de Linux, utilice la consola para identificar la ruta de implementación e inspeccionar el archivo de configuración sin imprimir información confidencial en un registro de terminal compartido. Por ejemplo, desde el servidor:
cd /var/www/nextcloud
ls -l config/config.php
Sustituya /var/www/nextcloudcon su ruta real. Para contenedores, identifique el contenedor y su configuración montada en lugar de editar un archivo del lado del host que la instancia en ejecución no utiliza.
Paso 2: Instalar e iniciar un almacén de clave-valor.
En Debian o Ubuntu, el backend tradicional de Redis suele utilizar el servicio Redis y la extensión PHP Redis. Instale los paquetes que coincidan con la versión de PHP utilizada por el servidor web:
sudo apt update
sudo apt install redis-server php-redis
sudo systemctl enable --now redis-server
sudo systemctl status redis-server
El estado debería indicar que el servicio está activo. Confirme que el entorno de ejecución de PHP que sirve a Nextcloud pueda cargar la extensión Redis. En una instalación estándar, php -m | grep -i redisesto se puede comprobar fácilmente mediante la línea de comandos, pero PHP para la línea de comandos y PHP web pueden usar versiones o archivos de configuración diferentes. Si el módulo no está presente en el entorno de ejecución web, instale o habilite el paquete correspondiente y reinicie PHP-FPM o el servidor web.
Nextcloud 34.0.2 y versiones posteriores también incluyen un KeyValueCachebackend integrado para almacenes compatibles con Redis. No requiere la extensión PHP Redis. Esto puede ser útil cuando un entorno de alojamiento no permite la instalación de módulos PHP, pero sí requiere un servicio Redis o Valkey en funcionamiento. La guía actual de almacenamiento en caché de Nextcloud documenta ambos enfoques. Elija una de las configuraciones de backend que se muestran a continuación, en lugar de agregar ambas.
Paso 3: Configurar el bloqueo en Nextcloud
Edita la configuración activa config/config.phpy añade las entradas seleccionadas dentro del $CONFIGarray existente. Conserva la sintaxis y las comas de PHP. No crees un segundo array de configuración ni dupliques las claves. Mantén la configuración de caché existente a menos que comprendas por qué es necesario modificarla.
Opción A: Redis con la extensión PHP Redis
Utilice esta opción cuando el entorno de ejecución web de PHP tenga phpredisinstalada la extensión compatible. Un servidor Redis local que escuche en el puerto 6379 puede usar una configuración como esta:
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
'timeout' => 0.0,
],
Si Redis requiere autenticación, configure la contraseña correcta config.phpy proteja los permisos del archivo. No exponga Redis públicamente. Manténgalo vinculado a localhost o a una red privada protegida, y utilice un socket Unix cuando sea apropiado.
Opción B: KeyValueCache con Redis o Valkey
Utilice esta opción cuando su versión de Nextcloud sea compatible con el proveedor incluido y prefiera no instalar una extensión PHP Redis. Para un servicio local que escucha en el puerto 6379, el ejemplo mínimo es:
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
'server' => [
'host' => '127.0.0.1',
'port' => 6379,
],
],
Agregue la configuración documentada de autenticación, TLS, socket, Sentinel o clúster si su servicio la utiliza. No copie las credenciales de un ejemplo. Para obtener información detallada sobre parámetros y topologías compatibles, consulte la referencia oficial de configuración de caché .
Paso 4: Compruebe la conectividad y la configuración de múltiples servidores.
Nextcloud debe poder acceder al servidor de caché configurado utilizando el mismo host, puerto, socket y credenciales que el servicio. Un error común es configurarlo localhosten cada nodo web de Nextcloud mientras Redis se ejecuta en un único host independiente. En una implementación con varios servidores, configure todos los nodos web para que utilicen el mismo servidor o clúster de Redis. Restrinja el acceso a la red de los nodos de Nextcloud y proteja Redis con las reglas de autenticación y firewall adecuadas.
Para un socket Unix, confirme que la cuenta PHP/servidor web tenga permisos de lectura y escritura. Los permisos o cambios de grupo varían según el sistema operativo, por lo que se recomienda seguir la documentación de Redis/Valkey y de la distribución en lugar de aplicar permisos generales como acceso de escritura para todos los usuarios. Un rechazo de conexión, un error de autenticación o un error de permisos de socket pueden impedir que Nextcloud utilice el proveedor de bloqueo, incluso cuando la clave de configuración está presente.
Paso 5: Reinicie los servicios correctos.
Tras guardar la configuración, reinicie el servicio Redis si su configuración ha cambiado y, a continuación, reinicie el entorno de ejecución de PHP que da servicio a Nextcloud. Por ejemplo, una instalación de Apache puede requerir reiniciar Apache, mientras que una instalación de PHP-FPM requiere reiniciar el servicio PHP-FPM correspondiente. En algunas distribuciones, los nombres de los servicios incluyen números de versión de PHP. En el caso de los contenedores, recree o reinicie el servicio correspondiente mediante el método compatible con la implementación. Evite reiniciar servicios no relacionados indiscriminadamente en un servidor de producción.
Si Nextcloud devuelve un error de configuración o sintaxis, restaure la copia de seguridad y compruebe si falta una coma, hay comillas incorrectas, una clave duplicada o se ha editado incorrectamente config.php. La configuración de la matriz de PHP debe permanecer dentro de la estructura de configuración existente.
Paso 6: Verificar la configuración y probar las operaciones con archivos.
Actualiza la vista general del administrador y comprueba si ha desaparecido la advertencia de bloqueo de archivos transaccionales. Si configuraste una caché local y aún ves una advertencia de caché en memoria, compruébala por separado; Nextcloud recomienda APCu para el almacenamiento en caché local en muchas implementaciones de un solo servidor, mientras que Redis gestiona el bloqueo y el almacenamiento en caché distribuido. No añadas Redis como caché local por defecto, especialmente en una configuración de varios servidores.
También puede inspeccionar la configuración de bloqueo efectiva con la herramienta de línea de comandos de Nextcloud. Ejecútela occdesde el directorio de Nextcloud como la cuenta del servidor web; en Debian/Ubuntu, esa cuenta suele ser www-data:
sudo -u www-data php occ config:system:get memcache.locking
El valor debe coincidir con el backend que seleccionó, como \OC\Memcache\Rediso \OC\Memcache\KeyValueCache. Si el comando no encuentra la configuración, verifique la ruta, el usuario que ejecuta el comando y el archivo de configuración activo. La guía oficial de OCC explica cómo ejecutar comandos administrativos.
Finalmente, suba un archivo de prueba pequeño, cámbiele el nombre, descárguelo y confirme que un cliente de escritorio o móvil pueda sincronizar el cambio. Estas comprobaciones no simulan todas las cargas de trabajo concurrentes, pero confirman que las operaciones de archivo habituales siguen funcionando después del cambio. Para un servidor con mucha carga o en clúster, supervise el registro de Nextcloud y la disponibilidad de Redis/Valkey durante el uso normal. Si la advertencia persiste, verifique que el entorno de ejecución web de PHP tenga la extensión al usar la Opción A, que el host de caché sea accesible, que las credenciales y los permisos de socket sean correctos y que todos los nodos compartan el mismo backend.
Qué hace (y qué no hace) el bloqueo de archivos transaccionales.
El bloqueo transaccional ayuda a prevenir la corrupción de archivos cuando las operaciones se superponen, gestiona las transacciones interrumpidas y coordina los cambios que involucran archivos compartidos y almacenamiento externo. No reserva un documento para que solo una persona pueda editarlo, no muestra quién más lo está editando ni fusiona ediciones simultáneas. Considere la advertencia como un problema de configuración del servidor y, a continuación, pruebe las cargas y la sincronización normales una vez configurado el backend. Para la edición colaborativa, utilice una aplicación diseñada para la coautoría en lugar de depender de bloqueos de archivos.