- Por qué debe optimizar su servidor Nextcloud
- Aumentar el límite de subida de PHP y ajustar los tiempos de espera
- Ajustes de rendimiento de Nextcloud con APCu y Opcache
- Activar Cron y configurar las tareas en segundo plano
- Optimizar el archivo config.php de Nextcloud
- Comandos occ importantes para el mantenimiento y el rendimiento
- No olvide la base de datos, almacenamiento y red
Por qué debe optimizar su servidor Nextcloud
Nextcloud es más que una bonita unidad de red. Si utiliza su servidor Nextcloud como centro central para sus archivos y flujos de trabajo, notará rápidamente cuán importante son el rendimiento y la estabilidad. Las subidas grandes fallan, las descargas agotan el tiempo de espera, la interfaz web se nota lenta y las vistas previas de fotos o vídeos tardan demasiado en cargar.
En este artículo te mostraré cómo optimizar su servidor Nextcloud, mejorar el rendimiento y ajustar los límites típicos como el límite de subida de PHP y los tiempos de espera. También miramos cómo activar cronjobs, cómo personalizar Nextcloud config.php, y qué comandos son realmente importantes cuando se trata de mantenimiento y optimización.
Los ejemplos se basan en una configuración con Ubuntu, Apache y PHP 8.3 o 8.4. Muchos de los consejos también se aplican si utiliza PHP-FPM o Nginx en lugar de Apache.
Aumentar el límite de subida de PHP y ajustar los tiempos de espera
Para cargar archivos grandes fiablemente en Nextcloud, varios parámetros PHP deben trabajar juntos. En Ubuntu con Apache y PHP 8.4 se suele editar:
sudo nano /etc/php/8.4/apache2/php.ini
Ajustes importantes para subidas y timeouts:
| Ajuste | Valor de ejemplo | Efecto |
|---|---|---|
memory_limit | 1024M o 2G | RAM máxima por proceso PHP |
upload_max_filesize | 8G | Tamaño máximo de un solo archivo subido |
post_max_size | 8G o más grande | Tamaño máximo de toda la solicitud POST |
max_file_uploads | 200 | Cuántos archivos se pueden subir por solicitud |
default_socket_timeout | 900 | Tiempo de espera en segundos para los flujos, por ejemplo cargas lentas |
Algunas reglas generales:
post_max_sizedebe ser al menos tan grande comoupload_max_filesize, idealmente ligeramente más grande.- No lo superes con valores absurdos como 256G si tu servidor tiene sólo 16 GB de RAM y 2 TB de almacenamiento. Ajuste los valores a su configuración.
- Para archivos muy grandes, el tiempo de espera es a menudo el problema real. Aumenta también estos valores:
max_execution_timepor ejemplo3600max_input_timepor ejemplo3600
Ejemplo snippet de un php.ini archivo:
memory_limit = 2G
upload_max_filesize = 8G
post_max_size = 8G
max_file_uploads = 200
max_execution_time = 3600
max_input_time = 3600
default_socket_timeout = 900
zlib.output_compression = On
zlib.output_compression_level = 6
El zlib.output_compression configuración puede ayudar a reducir el tamaño de la respuesta, especialmente en conexiones más lentas. Solo asegúrate de que tu proxy o servidor web inverso no comprime la misma respuesta por segunda vez.
Si utiliza Nginx o un proxy inverso delante de Apache, también tiene que ajustar los límites de subida y los tiempos de espera allí, por ejemplo:
- Nginx:
client_max_body_size - Apache:
LimitRequestBodyy timeouts tales comoProxyTimeoutoRequestReadTimeout
Ajustes de rendimiento de Nextcloud con APCu y Opcache
El rendimiento de Nextcloud mejora mucho si configura PHP Opcache y un caché local como APCu.
En tu php.ini o un dedicado apcu.ini puede habilitar APCu así:
apc.enabled=1
apc.shm_segments=1
apc.shm_size=256M
apc.entries_hint=8192
Valores como apc.shm_size=768M de sus notas están bien para grandes instalaciones con muchos usuarios. Para un pequeño servidor privado Nextcloud 128M a 256M es generalmente suficiente.
PHP Opcache almacena scripts compilados en memoria para que no necesiten ser analizados una y otra vez:
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.max_wasted_percentage=10
En términos simples:
opcache.memory_consumptiondefine cuánto RAM Opcache puede usar. 128 a 256 MB es un buen punto de partida para muchos servidores de Nextcloud.opcache.max_accelerated_filescontrola cuántos archivos PHP se pueden almacenar en caché. Los valores entre 10000 y 20000 funcionan bien para las configuraciones típicas de Nextcloud.
Después de cambiar la configuración de PHP debe reiniciar Apache o PHP-FPM:
sudo systemctl restart apache2
# oder
sudo systemctl restart php8.4-fpm
Activar Cron y configurar las tareas en segundo plano
Nextcloud ejecuta muchas tareas en el fondo: generar previsualizaciones, limpiar acciones antiguas, sincronizar el almacenamiento externo, actualizar el caché de archivos y mucho más. Por defecto esto funciona a través de AJAX que es fácil de configurar pero malo para el rendimiento, porque los trabajos sólo comienzan cuando alguien está activo en el navegador.
Es mejor cambiar a un sistema Cronjob. Abra la configuración de administración de Nextcloud, vaya a «Configuración básica» y cambie «Tareas en segundo plano» a «Cron».
Entonces crea un Cronjob como el www-data usuario:
sudo -u www-data crontab -e
Por ejemplo:
*/5 * * * * php --define apc.enable_cli=1 -f /var/www/html/cron.php > /dev/null 2>&1
Ahora el Nextcloud Cron funciona cada 5 minutos, independientemente de la actividad del usuario en la interfaz web.
En sus notas también utiliza trabajos de mantenimiento adicionales con occ files:scan para volver a analizar carpetas de usuario específicas o almacenamiento externo. Eso está absolutamente bien, pero trate de no hacer escaneos completos con demasiada frecuencia. Un análisis específico cada noche para caminos críticos es generalmente suficiente, de lo contrario usted pondrá carga innecesaria en su base de datos.
Optimizar el archivo config.php de Nextcloud
El archivo config/config.php controla muchas funciones internas de Nextcloud. En una instalación estándar lo editas así:
nano /var/www/html/config/config.php
Estos son algunos parámetros y su función:
'memcache.local' => '\\OC\\Memcache\\APCu',
'preview_max_memory' => 4096,
'versions_retention_obligation' => '5,auto',
'trashbin_retention_obligation' => '5,auto',
'filelocking.enabled' => false,
'check_data_directory_permissions' => false,
'files.chunked_upload.max_size' => 20971520,
'enabledPreviewProviders' => array(
'OC\\Preview\\PNG',
'OC\\Preview\\JPEG',
'OC\\Preview\\GIF',
'OC\\Preview\\HEIC',
'OC\\Preview\\BMP',
'OC\\Preview\\XBitmap',
'OC\\Preview\\MP3',
'OC\\Preview\\TXT',
'OC\\Preview\\MarkDown',
'OC\\Preview\\OpenDocument',
'OC\\Preview\\Krita',
'OC\\Preview\\PDF',
'OC\\Preview\\SVG',
'OC\\Preview\\EPS',
'OC\\Preview\\DOC',
'OC\\Preview\\DOCX',
'OC\\Preview\\TIFF',
'OC\\Preview\\Photoshop',
'OC\\Preview\\PhotoshopPSB',
'OC\\Preview\\MP4',
),
Breve resumen:
memcache.localcon APCu es esencial para el rendimiento. Sin ella, Nextcloud se sentirá muy lento.preview_max_memorylimita la RAM utilizada para generar previsualizaciones. El valor predeterminado es mucho menor, 4096 MB es bastante generoso. Ajuste el valor para que coincida con su hardware.versions_retention_obligationytrashbin_retention_obligationcontrola cuánto tiempo se mantienen las versiones y el contenido de basura. La retención más corta ahorra espacio de disco pero reduce las opciones de restauración.files.chunked_upload.max_sizeAfecta el tamaño del trozo cuando se subió. El valor está en bytes. 20971520 es equivalente a 20 MB. Los trozos más grandes pueden mejorar el rendimiento en líneas rápidas, pero son más sensibles a conexiones inestables.
Ten cuidado con:
'filelocking.enabled' => false,
'check_data_directory_permissions' => false,
- Sólo deberías deshabilitarte.
filelocking.enabledsi realmente sabes lo que estás haciendo. Un mejor enfoque es configurar Redis comomemcache.lockingpara que el acceso concurrente a los archivos se gestione de forma segura. check_data_directory_permissionsestablecidofalsepuede tener sentido en configuraciones especiales pero también se pierde una comprobación de seguridad que le advierte sobre los permisos incorrectos.
Comandos occ importantes para el mantenimiento y el rendimiento
La herramienta Nextcloud CLI occ es extremadamente útil para tareas de mantenimiento y afinación. Normalmente ejecuta comandos como este:
sudo -u www-data php /var/www/html/occ status
Algunos comandos útiles:
occ status
Muestra información básica sobre su instancia Nextcloud.occ db:add-missing-indices
Añade índices de bases de datos perdidos y puede acelerar muchas consultas.occ db:convert-filecache-bigint
Convierte columnas en la base de datos a tipos más adecuados para un mejor rendimiento y estabilidad.occ files:scan --allo con--path
Vuelve a analizar el sistema de archivos y actualiza el caché de archivos. Muy útil si los archivos aparecen en el disco pero no en Nextcloud. No haga escaneos completos cada hora, supone una carga elevada para la base de datos.occ preview:pre-generate
Junto con la aplicación Preview Generator puedes pregenerar previsualizaciones por la noche para que los usuarios vean imágenes y PDFs mucho más rápido en la interfaz web.
No olvide la base de datos, almacenamiento y red
Si realmente desea optimizar su servidor Nextcloud, también debe buscar más allá de PHP y archivos de configuración.
- Base de datos
- Si es posible, use MariaDB o PostgreSQL.
- Asegúrese de que la búfer de memoria sea lo suficientemente grande, por ejemplo:
- MariaDB:
innodb_buffer_pool_sizepara pequeños servidores configurados en 1 a 2 GB.
- MariaDB:
- Realiza copias de seguridad periódicas y compruebe los registros para consultas lentas.
- Sistema de almacenamiento y archivo
- SSD o NVMe aportan un impulso de rendimiento significativo en comparación con los HDD antiguos.
- Para muchos pequeños archivos, vale la pena echar un vistazo al sistema de archivos y opciones de montaje.
- El almacenamiento externo (SMB, NFS) es conveniente pero a menudo más lento que el almacenamiento local.
- Red y Proxy Inverso
- Asegúrese de que su línea de Internet coincida con la carga, especialmente para archivos grandes.
- Comprueba los tiempos de espera y los límites del cuerpo de la solicitud en el proxy inverso (Nginx, Traefik, Apache Proxy).
- Activar HTTP/2 o HTTP/3 si tu configuración lo soporta para procesar muchas pequeñas solicitudes de manera más eficiente.
Este artículo ha sido traducido con ayuda de IA.


