Optimizar un servidor Nextcloud: mejorar el rendimiento, aumentar el límite de subida y evitar tiempos de espera

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:

AjusteValor de ejemploEfecto
memory_limit1024M o 2GRAM máxima por proceso PHP
upload_max_filesize8GTamaño máximo de un solo archivo subido
post_max_size8G o más grandeTamaño máximo de toda la solicitud POST
max_file_uploads200Cuántos archivos se pueden subir por solicitud
default_socket_timeout900Tiempo de espera en segundos para los flujos, por ejemplo cargas lentas

Algunas reglas generales:

  • post_max_size debe ser al menos tan grande como upload_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_time por ejemplo 3600
    • max_input_time por ejemplo 3600

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: LimitRequestBody y timeouts tales como ProxyTimeout o RequestReadTimeout

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_consumption define cuánto RAM Opcache puede usar. 128 a 256 MB es un buen punto de partida para muchos servidores de Nextcloud.
  • opcache.max_accelerated_files controla 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.local con APCu es esencial para el rendimiento. Sin ella, Nextcloud se sentirá muy lento.
  • preview_max_memory limita 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_obligation y trashbin_retention_obligation controla 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_size Afecta 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.enabled si realmente sabes lo que estás haciendo. Un mejor enfoque es configurar Redis como memcache.locking para que el acceso concurrente a los archivos se gestione de forma segura.
  • check_data_directory_permissions establecido false puede 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 --all o 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.

  1. 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_size para pequeños servidores configurados en 1 a 2 GB.
    • Realiza copias de seguridad periódicas y compruebe los registros para consultas lentas.
  2. 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.
  3. 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.

Durchschnittliche Bewertung 0 / 5. Bewertungen: 0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio