Configurez l'exécution automatique de Nextcloud Cron avec un minuteur Systemd

Lorsque la page d'administration de Nextcloud indique que ses tâches en arrière-plan n'ont pas été exécutées récemment, le nettoyage, les notifications et autres tâches planifiées peuvent prendre du retard. Sur un serveur systemd, la solution consiste généralement à exécuter Nextcloud cron.phpavec le compte du serveur web via un service systemd, puis à planifier ce service avec un minuteur activé. Le manuel d'administration actuel de Nextcloud fournit un exemple à deux unités ; les chemins d'accès et le compte de service doivent correspondre à votre installation.

Vérifiez d'abord ce qui ne fonctionne pas.

Les tâches en arrière-plan de Nextcloud s'exécutent lorsqu'elles sont lancées. Un servicecron.php systemd définit la commande à exécuter ; une minuterie démarre ce service selon une planification. Si le service s'exécute manuellement mais que la minuterie ne se déclenche jamais, vérifiez l'activation de la minuterie. Si la minuterie se déclenche mais que le service échoue, examinez sa commande, son environnement PHP et ses permissions.

Vérifiez le répertoire Nextcloud et l'utilisateur HTTP avant toute modification. Cet exemple suppose l'utilisation de `/etc/nextcloud` /var/www/nextcloudet `/etc/nextcloud` www-data, courants sur Debian et Ubuntu. Le compte peut être `/etc/nextcloud` wwwrun, apache`/etc/nextcloud` ou un autre utilisateur sur d'autres systèmes. Nextcloud exige que ses tâches en ligne de commande soient exécutées avec l'utilisateur HTTP afin de garantir la cohérence des droits d'accès aux fichiers. Consultez la documentation de Nextcloud relative à la commande `occ` .

Testez le même exécutable PHP et le même script cron que ceux que vous prévoyez d'utiliser avec systemd :

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

Remplacez le compte, le chemin PHP et le chemin Nextcloud par ceux de votre hébergeur. Si la commande signale une erreur PHP, une extension manquante, un problème d'autorisation, un mode maintenance ou une défaillance de connexion à la base de données, résolvez ce problème en premier lieu ; le minuteur ne peut pas corriger une commande ayant échoué.

Confirmez que Nextcloud utilise les tâches système cron

Ouvrez les paramètres d'administration → Paramètres de base → Tâches en arrière-plan et sélectionnez Cron s'il n'est pas déjà sélectionné. Vous pouvez également exécuter cette commande depuis le répertoire Nextcloud :

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

Nextcloud précise que la sélection de Cron dans les paramètres d'administration n'est pas strictement nécessaire si cron.phpla commande est exécutée en ligne de commande, car le script configure automatiquement le mode. La définir explicitement permet de clarifier le mode de production souhaité. Nextcloud recommande l'utilisation de cron système en production ; sa documentation sur les tâches en arrière-plan mentionne également les minuteurs systemd comme alternative.

Réparer le service systemd

Créez ou mettez à jour le fichier /etc/systemd/system/nextcloudcron.serviceavec le contenu suivant. Utilisez le chemin complet vers PHP afin que systemd ne dépende pas d'un shell interactif 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

Modifiez Userle compte du serveur web et les deux chemins d'accès pour pointer vers les emplacements PHP et Nextcloud correspondants. La condition vérifie que l'instance fonctionne normalement avant d'exécuter la tâche. Si la condition échoue, systemd peut ignorer le service ; vérifiez si Nextcloud est en mode maintenance et consultez le journal avant de supprimer ou de modifier la condition. Conservez la clause `<service>` KillMode=process, car l'exemple de Nextcloud l'utilise pour que les programmes externes lancés par cron puissent continuer à s'exécuter après l'arrêt du processus cron. L'unité de service ne nécessite pas de [Install]section `<service>`.

Réparer et activer la minuterie

Créer /etc/systemd/system/nextcloudcron.timer. Cette planification démarre cinq minutes après le démarrage et attend ensuite cinq minutes après chaque activation de service :

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

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

[Install]
WantedBy=timers.target

Rechargez systemd pour qu'il lise les fichiers d'unité, puis activez et démarrez le minuteur en une seule commande :

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

L'activation de cette option permet au minuteur de démarrer automatiquement au prochain démarrage ; l' --nowactivation immédiate le démarre. Ne pas activer le service lui-même comme s'il s'agissait d'un minuteur récurrent. Le minuteur est l'unité de configuration timers.target. Le manuel actuel de Nextcloud explique ces paramètres d'intervalle et la commande d'activation requise ; les versions précédentes du manuel contenaient une section d'installation obsolète pour ce service, veuillez donc suivre l'exemple actuel.

Tracez une exécution manquée et vérifiez la correction

Vérifiez l'état du minuteur et la prochaine exécution programmée :

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

Le minuteur devrait indiquer « En attente » ou « Actif », et la liste devrait afficher la prochaine heure d'activation. Ensuite, examinez la dernière exécution du service :

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

Un minuteur peut rester actif même si chaque exécution de service échoue ; vérifiez donc les deux unités. Si le service est absent ou si systemd rejette le fichier, exécutez la commande ` systemctl --no-timer` systemd-analyze verify /etc/systemd/system/nextcloudcron.service /etc/systemd/system/nextcloudcron.timer, corrigez l'erreur de syntaxe ou de chemin signalée, puis rechargez systemd. Si le service s'arrête de manière inattendue, les journaux système indiquent souvent un chemin PHP invalide, un utilisateur incorrect, une condition d'échec ou une erreur d'exécution de Nextcloud. Si le minuteur n'a pas de prochaine exécution prévue, vérifiez le nom exact du fichier du minuteur, exécutez la commande `systemctl --no-timer` daemon-reloadet confirmez qu'il a bien été activé avec `systemctl --no-timer` systemctl is-enabled nextcloudcron.timer.

Après la prochaine activation du minuteur, vérifiez à nouveau l'état des tâches en arrière-plan de Nextcloud. Il devrait afficher une durée d'exécution récente plutôt qu'un avertissement d'obsolescence. Si le minuteur et le service indiquent tous deux une exécution réussie, mais que la page d'administration affiche toujours un avertissement d'obsolescence, consultez les journaux de l'instance et la version de PHP utilisée par le serveur web ; la version de PHP en ligne de commande peut différer de celle utilisée par le serveur web. Cette configuration concerne la planification systemd sur un hôte Linux classique. Les installations conteneurisées et les appliances peuvent gérer cron via leur propre superviseur de services ; utilisez donc la méthode prise en charge par la plateforme plutôt que d'ajouter des unités hôtes qui ne peuvent pas accéder aux fichiers du conteneur.

Laisser un commentaire

Configurez l'exécution automatique de Nextcloud Cron avec un minuteur Systemd

Vérifiez le mode cron de Nextcloud, réparez son service systemd et son minuteur, et assurez-vous que les tâches en arrière-plan s'exécutent après le démarrage et toutes les cinq minutes.

Éliminer l'avertissement de verrouillage de fichiers de Nextcloud avec Redis

Activez le verrouillage fiable des fichiers Nextcloud, choisissez le bon backend Redis ou Valkey et vérifiez que l'avertissement disparaît sans risque de modifications simultanées des fichiers.

Comment obtenir la note A+ en matière de sécurité pour Nextcloud ?

Comment obtenir la note A+ en matière de sécurité pour Nextcloud ?

Corrigez les problèmes courants d'analyse de Nextcloud grâce aux mises à jour actuelles, HTTPS et HSTS, à une confiance précise du proxy inverse et à des vérifications auprès du serveur public.

Activez le chiffrement côté serveur Nextcloud avec Measured Impact

Configurez Nextcloud SSE pour le stockage qui en a besoin, protégez les clés de chiffrement et mesurez l'impact sur les transferts et le processeur avant de chiffrer les fichiers existants.

Ajouter la recherche plein texte Elasticsearch à Nextcloud

Connectez la recherche de fichiers de Nextcloud à Elasticsearch, indexez le contenu des documents et choisissez une configuration adaptée à votre serveur et à vos besoins de sécurité.

Définir une politique d'expiration fiable pour les fichiers supprimés de Nextcloud

Définir une politique d'expiration fiable pour les fichiers supprimés de Nextcloud

Configurez Nextcloud pour supprimer les fichiers supprimés après une période de rétention définie, planifiez les tâches en arrière-plan de manière fiable et évitez les commandes qui vident la corbeille de tous les utilisateurs.

Effacer l'avertissement concernant les index de base de données manquants de Nextcloud

Effacer l'avertissement concernant les index de base de données manquants de Nextcloud

Exécutez la réparation OCC de Nextcloud en toute sécurité, prévisualisez les modifications de la base de données et vérifiez pourquoi l'avertissement peut persister.

Augmenter la limite de chargement web de Nextcloud au-delà de 2 Go

Augmenter la limite de chargement web de Nextcloud au-delà de 2 Go

Autorisez les chargements de fichiers plus volumineux via le navigateur Nextcloud en alignant les paramètres PHP, Nginx ou Apache, le stockage temporaire et les délais d'expiration, et vérifiez quelle limite bloque le fichier.

Effacer l'avertissement de mémoire PHP de Nextcloud sur le serveur web

Définissez la limite de mémoire PHP réellement utilisée par Nextcloud, redémarrez le service concerné et confirmez le paramètre de 512 Mo dans la vue d'ensemble de l'administration.

Connectez un compartiment compatible S3 au stockage externe Nextcloud

Montez un compartiment de stockage d'objets compatible dans Nextcloud en utilisant son backend S3, avec le point de terminaison, les informations d'identification, le périmètre d'accès et les étapes de vérification appropriés.