Ir al contenido
EuroVPSEuroVPS

Por qué Nextcloud parece lento, y qué lo arregla de verdad

Un Nextcloud lento rara vez necesita más hardware. Background jobs, caché, locking, índices y el editor de oficina, en el orden en que los revisamos, con ajustes exactos.

Por EuroVPS Engineering

5 min de lectura
Why Nextcloud feels slow, and what actually fixes it

Cuando una instancia de Nextcloud parece perezosa, el primer instinto es darle más CPU y memoria. Normalmente eso no cambia nada, porque el tiempo se va a otra parte: background jobs que corren en el sitio equivocado, una caché sin configurar, locks de ficheros que golpean la base de datos, una tabla a la que le falta un índice. Este es el orden en que revisamos las cosas, con los ajustes que arreglan cada una. Todo lo que sigue aplica tanto si Nextcloud corre en un servidor normal como en contenedores.

Empiece por lo que Nextcloud ya le dice

Nextcloud trae sus propias comprobaciones de salud. Ejecútelas antes de cambiar nada:

sudo -u apache php occ setupchecks
sudo -u apache php occ status

Use el usuario del servidor web (apache, www-data o nginx, según su sistema). Los mismos resultados aparecen en Ajustes de administración, Resumen. Cada aviso que hay ahí es un hallazgo real. Arréglelos primero; varios de los puntos de abajo aparecerán en esa lista.

Los background jobs no deben ir a cuestas de las cargas de página

Nextcloud tiene tareas de mantenimiento que hacer: escaneos de ficheros, previsualizaciones, notificaciones, limpieza, caducidad de la actividad. Por defecto, en modo AJAX, ejecuta un trabajo cada vez que un usuario carga una página. Los usuarios pagan el mantenimiento con sus propias cargas de página, y en una instancia tranquila los trabajos se retrasan.

Cambie a cron del sistema:

sudo -u apache php occ background:cron

Después ejecute cron.php cada cinco minutos. Un timer de systemd es más limpio que una entrada de crontab porque registra los fallos:

# /etc/systemd/system/nextcloud-cron.service
[Service]
Type=oneshot
User=apache
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php

# /etc/systemd/system/nextcloud-cron.timer
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
[Install]
WantedBy=timers.target

Actívelo con systemctl enable --now nextcloud-cron.timer. Ya que está, fije una ventana de mantenimiento para que los trabajos pesados corran de noche:

sudo -u apache php occ config:system:set maintenance_window_start --type=integer --value=1

El valor es una hora en UTC; los trabajos pesados correrán en las cuatro horas siguientes.

Caché y bloqueo de ficheros

Sin una caché en memoria, Nextcloud pide a la base de datos las mismas cosas una y otra vez. Sin un backend de locking adecuado, cada operación sobre ficheros toma además un lock en la base de datos. Configure ambos en config.php:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
  'host' => '/run/redis/redis.sock',
  'port' => 0,
],

APCu es la caché local rápida dentro de cada proceso PHP. Redis guarda el estado compartido y los locks de ficheros. Use un socket Unix si Redis está en la misma máquina, y asegúrese de que el usuario del servidor web puede abrirlo.

APCu también necesita activarse para la línea de comandos, o occ se quejará:

; /etc/php.d/40-apcu.ini
apc.enable_cli=1

El propio PHP: OPcache y el pool de FPM

Nextcloud es una aplicación PHP grande. Sin suficiente OPcache, PHP recompila partes de ella en cada petición. Valores iniciales típicos:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60

setupchecks le dirá si el buffer de interned strings es demasiado pequeño. Después dimensione el pool de PHP-FPM a la memoria que tiene de verdad: pm.max_children multiplicado por la memoria típica de un worker PHP debe caber en la RAM dejando sitio para la base de datos y Redis. Mida la memoria real de un worker bajo carga antes de elegir, en lugar de copiar un número de un foro.

La base de datos: índices y enteros grandes

Las actualizaciones a veces añaden índices y columnas que las instalaciones existentes no reciben automáticamente, porque crearlos en una tabla grande lleva tiempo. Nextcloud le deja ese paso a usted:

sudo -u apache php occ db:add-missing-indices
sudo -u apache php occ db:add-missing-columns
sudo -u apache php occ db:add-missing-primary-keys
sudo -u apache php occ db:convert-filecache-bigint

Ejecútelos después de cada actualización mayor, en una ventana de mantenimiento, porque pueden bloquear tablas grandes. Un índice que falta en la tabla de la caché de ficheros es una de las razones más comunes por las que una instancia grande parece lenta al navegar por carpetas.

Previsualizaciones: genérelas por adelantado

Las miniaturas se generan la primera vez que alguien abre una carpeta. Una carpeta de fotos en alta resolución significa una primera visita lenta para quien llegue primero. Dos cosas ayudan. Limite los tamaños de previsualización:

sudo -u apache php occ config:system:set preview_max_x --value=2048 --type=integer
sudo -u apache php occ config:system:set preview_max_y --value=2048 --type=integer

Y, si sus usuarios almacenan muchas imágenes, use la app Preview Generator para crear las previsualizaciones en el background job en lugar de bajo demanda.

El editor de oficina es una carga de trabajo propia

La edición en el navegador con Collabora corre como un servicio separado. Nextcloud le envía el documento, y Collabora lo renderiza y lo edita. Cuando la gente dice «Nextcloud va lento» mientras edita, el cuello de botella suele ser Collabora, no Nextcloud. Vigile su CPU y su memoria por separado, mientras varias personas editan hojas de cálculo grandes a la vez, y dimensiónelo a partir de esas mediciones.

Dos puntos de configuración importan tanto para la velocidad como para la seguridad. Apunte Nextcloud a Collabora por una ruta rápida y cercana. Y restrinja qué servidores pueden hablar con la interfaz WOPI de Collabora:

sudo -u apache php occ config:app:set richdocuments wopi_allowlist --value="10.0.0.0/24"

Use ahí el rango de direcciones de su propio servidor Nextcloud, para que solo su Nextcloud pueda abrir documentos a través de su editor.

Fije lo que se ejecuta

Si ejecuta Nextcloud en contenedores, fije cada imagen (Nextcloud, base de datos, Redis, Collabora) a una etiqueta que haya elegido usted.

El orden, en resumen

  • occ setupchecks y arreglar cada aviso.
  • Cron del sistema a través de un timer, más una ventana de mantenimiento.
  • APCu en local, Redis para locking y caché compartida.
  • OPcache bien dimensionado y un pool de FPM dimensionado a partir de mediciones.
  • Índices, columnas y claves que faltan añadidos después de cada actualización.
  • Previsualizaciones limitadas y generadas en segundo plano.
  • Collabora medido y dimensionado como servicio propio, con una lista de permitidos WOPI.
  • Cada componente fijado a una versión que haya elegido usted.

Solo después de todo eso añadir hardware le dice algo útil. Operamos Nextcloud con Collabora de esta manera para nuestros clientes en instancias dedicadas, y con gusto miramos la suya.

Hable con un ingeniero

Related (rows[1])

Relacionado: Managed Nextcloud para documentos de oficina · Archivo de correo privado con búsqueda por IA local

Publicado el 7 de octubre de 2026.

Todas las notas de campo