Ejecuta Nextcloud Cron automáticamente con un temporizador de Systemd.

Cuando la página de administración de Nextcloud indica que sus tareas en segundo plano no se han ejecutado recientemente, es posible que la limpieza, las notificaciones y otras tareas programadas se retrasen. En un servidor systemd, la solución suele ser ejecutar Nextcloud cron.phpcomo cuenta de servidor web desde un servicio systemd y, a continuación, programar dicho servicio con un temporizador habilitado. El manual de administración actual de Nextcloud proporciona un ejemplo de dos unidades; las rutas y la cuenta de servicio deben coincidir con su instalación.

Comprueba primero qué está fallando.

Las tareas en segundo plano de Nextcloud se ejecutan cuando cron.phpse invoca un comando. Un servicio systemd define el comando a ejecutar; un temporizador inicia dicho servicio según un cronograma. Si el servicio se ejecuta manualmente pero el temporizador nunca se activa, concéntrese en la activación del temporizador. Si el temporizador se activa pero el servicio falla, inspeccione su comando, el entorno PHP y los permisos.

Confirma el directorio de Nextcloud y el usuario HTTP antes de editar nada. Este ejemplo asume /var/www/nextcloudy www-data, comunes en Debian y Ubuntu. La cuenta puede ser wwwrun, apache, u otro usuario en sistemas distintos. Nextcloud requiere ejecutar sus trabajos de línea de comandos como el usuario HTTP para que la propiedad de los archivos se mantenga constante. Consulta la documentación de Nextcloud occ .

Pruebe el mismo ejecutable PHP y el mismo script cron que pretende que utilice systemd:

sudo -u www-data /usr/bin/php -f /var/www/nextcloud/cron.php

Sustituye la cuenta, la ruta de PHP y la ruta de Nextcloud por las de tu servidor. Si el comando informa de un error de PHP, una extensión faltante, un problema de permisos, el modo de mantenimiento o un fallo de conexión a la base de datos, soluciona eso primero; el temporizador no puede corregir un comando que falla.

Confirma que Nextcloud utiliza el cron del sistema.

Abra la configuración de administración → Configuración básica → Tareas en segundo plano y seleccione Cron si aún no está seleccionado. También puede ejecutar este comando desde el directorio de Nextcloud:

cd /var/www/nextcloud
sudo -E -u www-data php occ background:cron

Nextcloud señala que seleccionar Cron en la configuración de administración no es estrictamente necesario si cron.phpse ejecuta desde la línea de comandos, ya que el script configura el modo automáticamente. Configurarlo explícitamente deja claro el modo de producción previsto. Nextcloud recomienda usar cron del sistema para producción; su documentación sobre trabajos en segundo plano también incluye los temporizadores de systemd como una alternativa de planificación.

Reparar el servicio systemd

Cree o actualice /etc/systemd/system/nextcloudcron.servicecon el siguiente contenido. Use la ruta completa a PHP para que systemd no dependa de un intérprete de comandos interactivo PATH.

[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecCondition=/usr/bin/php -f /var/www/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

Cambia Usera la cuenta del servidor web y ambas rutas a las ubicaciones correspondientes de PHP y Nextcloud. La condición verifica que la instancia esté operando normalmente antes de ejecutar el trabajo. Si la condición falla, systemd puede omitir el servicio; verifica si Nextcloud está en modo de mantenimiento e inspecciona el registro antes de eliminar o cambiar la condición. Mantén KillMode=process, ya que el ejemplo de Nextcloud lo usa para que los programas externos iniciados por cron puedan continuar después de que el proceso cron finalice. La unidad de servicio no necesita una [Install]sección.

Reparar y activar el temporizador.

Crear /etc/systemd/system/nextcloudcron.timer. Este programa comienza cinco minutos después del arranque y luego espera cinco minutos después de cada activación del servicio:

[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5 min
OnUnitActiveSec=5 min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

Recarga systemd para que lea los archivos de unidad, luego habilita e inicia el temporizador con un solo comando:

sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer

Habilitar esta opción hace que el temporizador se inicie en los arranques posteriores; --nowse inicia inmediatamente. No habilite el servicio como si fuera un temporizador recurrente. El temporizador es la unidad que corresponde a timers.target. El manual actual de Nextcloud explica estos ajustes de intervalo y el comando de activación necesario; las versiones anteriores del manual incluían una sección de instalación obsoleta para el servicio, así que siga el ejemplo de la unidad actual.

Rastrea una ejecución fallida y verifica la solución.

Compruebe el estado del temporizador y la próxima ejecución programada:

systemctl status nextcloudcron.timer
systemctl list-timers nextcloudcron.timer

El temporizador debería mostrarse como en espera o activo, y la lista debería mostrar la hora de la próxima activación. A continuación, inspeccione la última ejecución del servicio:

systemctl status nextcloudcron.service
journalctl -u nextcloudcron.service --since today

Un temporizador puede estar activo incluso cuando falla cada ejecución del servicio, así que revise ambas unidades. Si falta el servicio o systemd rechaza el archivo, ejecute systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, corrija el problema de sintaxis o ruta informado y luego vuelva a cargar systemd. Si el servicio finaliza sin éxito, la salida del registro a menudo identifica una ruta PHP no válida, un usuario incorrecto, una condición fallida o un error de tiempo de ejecución de Nextcloud. Si el temporizador no tiene una próxima ejecución, verifique el nombre exacto del archivo del temporizador, ejecute daemon-reloady confirme que se habilitó con systemctl is-enabled nextcloudcron.timer.

Tras la siguiente activación del temporizador, compruebe de nuevo el estado de las tareas en segundo plano de Nextcloud. Debería mostrar una hora de ejecución reciente en lugar de una advertencia de obsolescencia. Si tanto el temporizador como el servicio informan de ejecuciones correctas, pero la página de administración sigue apareciendo desactualizada, revise los registros de la instancia y la versión de PHP utilizada por el servidor web; la versión de PHP de línea de comandos puede diferir del entorno de ejecución web. Esta configuración aborda la programación de systemd en un host Linux normal. Las instalaciones en contenedores y dispositivos pueden gestionar cron a través de su propio supervisor de servicios, por lo que debe utilizar el método compatible con esa plataforma en lugar de añadir unidades de host que no puedan acceder a los archivos del contenedor.

Dejar un comentario

Ejecuta Nextcloud Cron automáticamente con un temporizador de Systemd.

Comprueba el modo cron de Nextcloud, repara su servicio systemd y su temporizador, y verifica que las tareas en segundo plano se ejecuten después del inicio y cada cinco minutos.

Elimina la advertencia de bloqueo de archivos de Nextcloud con Redis.

Habilite el bloqueo de archivos confiable de Nextcloud, elija el backend Redis o Valkey adecuado y verifique que la advertencia desaparezca sin riesgo de que se produzcan cambios simultáneos en los archivos.

Requisitos para obtener una calificación de seguridad A+ en Nextcloud

Requisitos para obtener una calificación de seguridad A+ en Nextcloud

Solucione los problemas comunes detectados en los análisis de Nextcloud con las últimas actualizaciones, HTTPS y HSTS, una configuración precisa de la confianza en el proxy inverso y comprobaciones con el servidor público.

Habilitar el cifrado del lado del servidor de Nextcloud con impacto medido

Configure Nextcloud SSE para el almacenamiento que lo necesite, proteja las claves de cifrado y mida el impacto en la transferencia y la CPU antes de cifrar los archivos existentes.

Agregar búsqueda de texto completo de Elasticsearch a Nextcloud

Conecta la búsqueda de archivos de Nextcloud con Elasticsearch, indexa el contenido de los documentos y elige una configuración que se adapte a las necesidades de tu servidor y de seguridad.

Establece una política de caducidad fiable para los archivos eliminados de Nextcloud.

Establece una política de caducidad fiable para los archivos eliminados de Nextcloud.

Configure Nextcloud para que elimine los archivos borrados después de un período de retención definido, programe tareas en segundo plano de forma fiable y evite comandos que vacíen la papelera de todos los usuarios.

Borrar la advertencia de Nextcloud sobre índices de base de datos faltantes

Borrar la advertencia de Nextcloud sobre índices de base de datos faltantes

Ejecuta la reparación de OCC de Nextcloud de forma segura, previsualiza los cambios en la base de datos y comprueba por qué persiste la advertencia.

Aumentar el límite de subida web de Nextcloud por encima de 2 GB

Aumentar el límite de subida web de Nextcloud por encima de 2 GB

Permita la carga de archivos más grandes en el navegador Nextcloud alineando la configuración de PHP, Nginx o Apache, el almacenamiento temporal y el tiempo de espera, y verifique qué límite está bloqueando el archivo.

Borre la advertencia de memoria PHP de Nextcloud en el servidor web.

Establezca el límite de memoria PHP que Nextcloud utiliza realmente, reinicie el servicio correcto y confirme la configuración de 512 MB en la Vista general de administración.

Conecta un bucket compatible con S3 al almacenamiento externo de Nextcloud.

Monta un bucket de almacenamiento de objetos compatible en Nextcloud utilizando su backend S3, con el punto final, las credenciales, el ámbito de acceso y los pasos de verificación correctos.