Mauvaises heures dans n8n : bien configurer UTC, GENERIC_TIMEZONE et Cron
Par défaut, n8n s'exécute en America/New_York au lieu de Europe/Berlin. Voici comment configurer correctement GENERIC_TIMEZONE et le fuseau horaire du workflow.
n8n ou script personnalisé avec Cron-Job ? Une comparaison basée sur la documentation officielle de n8n : gestion des erreurs, planification, node Code.
n8n est rentable quand une automatisation relie plusieurs systèmes, s'exécute régulièrement et doit rester transparent en cas d'erreur. Un script personnalisé avec Cron-Job se tape souvent en une demi-heure, mais devient vite une charge de maintenance silencieuse dès qu'une API change, qu'un token expire ou qu'un collègue doit comprendre la logique sans lire le code. Selon la documentation officielle de n8n, n8n est « a fair-code licensed workflow automation tool that combines AI capabilities with business process automation » et combine un éditeur de workflow visuel avec du vrai code quand c'est vraiment nécessaire. Mise à jour : juillet 2026.
La décision entre n8n et un script auto-écrit n'est pas une question de croyance, mais une question du nombre de systèmes impliqués, de la susceptibilité aux erreurs et de qui doit maintenir le résultat plus tard. Cet article montre à partir de la documentation de n8n où se situe la limite et quand le passage d'une ligne Crontab à un workflow vaut vraiment le coup.
Une configuration classique de script et Cron-Job semble d'abord simple : un fichier, une entrée de calendrier, c'est bon. En pratique, le script en fait bien plus dès qu'il s'exécute en production. Il doit s'authentifier auprès de plusieurs API, analyser les réponses et réagir aux changements de format, capturer les erreurs au lieu de les avaler silencieusement, écrire des logs que quelqu'un lira le cas échéant, et idéalement alerter quelqu'un si une exécution échoue. Personne n'ajoute tout cela au premier coup, ça s'ajoute petit à petit, généralement seulement après qu'une exécution soit restée silencieuse pendant des jours sans rien faire. C'est exactement ce développement ultérieur qui prend le plus de temps dans les solutions de script et Cron, pas l'automatisation d'origine elle-même.
n8n remplace la structure de base de l'authentification, du traitement des données et du contrôle du temps par des nodes pré-configurés, sans te prendre complètement le code. Quand les nodes intégrés ne suffisent pas, il y a le node Code : il exécute du JavaScript ou Python personnalisé directement dans le workflow, et pour les instances auto-hébergées même avec accès à des modules npm externes, comme la documentation du node Code le décrit. Dans la version Cloud, l'accès aux modules est plus restreint. Pour le fonctionnement lui-même, tu as aussi le choix : n8n peut être auto-hébergé via npm, Docker ou chez des fournisseurs comme AWS, Hetzner ou DigitalOcean, comme l'aperçu de l'auto-hébergement le montre. Tu gardes ainsi le contrôle sur l'infrastructure et les données, au lieu de t'engager dans une solution cloud pure.
Le remplaçant direct de Crontab dans n8n est le node Schedule-Trigger. Il lance les workflows à des heures fixes ou à intervalles réguliers, un peu comme l'utilitaire Cron Unix, mais offre sept types de configuration allant des intervalles de secondes et minutes à des expressions Cron personnalisées au format six parties incluant le champ de secondes, comme la documentation du node Schedule-Trigger le décrit. Si tu apportes une syntaxe Cron existante, tu peux donc la reprendre presque inchangée, mais tu n'as pas besoin de maintenir ta propre programmation de temps dans le script et tu vois directement dans l'interface quand un workflow a fonctionné pour la dernière fois et quand il fonctionnera ensuite.
Un Cron-Job qui échoue ne signale rien dans le pire des cas, ou dans un fichier log que personne ne vérifie automatiquement au mieux. n8n offre pour cela un concept intégré : pour chaque workflow, tu peux définir un workflow d'erreur séparé dans les paramètres, qui démarre automatiquement en cas d'échec et reçoit des détails comme le message d'erreur, le node affecté et l'ID d'exécution via le node Error-Trigger. En complément, il y a le node Stop-And-Error pour faire échouer les exécutions de manière ciblée sous certaines conditions, ainsi que l'option Retry-on-Fail sur les nodes individuels. Des détails à ce sujet se trouvent dans le guide de gestion des erreurs. Tu peux ainsi mettre en place une notification en cas d'erreur, sans avoir à écrire de code supplémentaire.
Si tu n'es pas sûr de savoir si une automatisation prévue resterait plutôt un script léger ou vaudrait plus comme workflow n8n, tu obtiendras dans le cadre du conseil en n8n de NordFlux une évaluation honnête, avant de perdre du temps sur la mauvaise solution.
Oui. Le node Code exécute JavaScript ou Python directement dans le workflow, afin que tu continues à programmer toi-même la logique qu'aucun node standard ne couvre. Pour les instances auto-hébergées, tu peux même intégrer des modules npm externes, tandis que dans la version Cloud, l'accès aux modules est plus restreint.
Pour la programmation pure, oui, le node Schedule-Trigger couvre les intervalles de secondes à mois ainsi que les expressions Cron libres. Pour les tâches système en dehors des workflows, comme le nettoyage des répertoires de logs directement sur un serveur, un Cron-Job classique reste toujours utile.
Tu peux définir un workflow d'erreur par workflow, qui démarre automatiquement en cas d'échec et reçoit des détails sur l'erreur via le node Error-Trigger. Tu peux ainsi mettre en place une notification, par exemple par e-mail ou chat, sans avoir à le programmer toi-même.
Pas nécessairement. Si elle reste une tâche isolée sans autres systèmes, un court script avec Cron-Job est souvent plus rapide à mettre en place et entraîne moins de frais d'exploitation continus qu'une plateforme supplémentaire.
Pas pour beaucoup de workflows standard, car tu peux cliquer sur les connexions entre les systèmes via des nodes pré-configurés. Une fois que tu as besoin de logique personnalisée, il aide de pouvoir au moins lire du JavaScript ou du Python, car le node Code est exactement prévu pour cela.
Fondateur de NordFlux. Sept ans d'expérience, du web et du SEO jusqu'à l'automatisation à l'échelle d'un groupe, aujourd'hui pragmatique pour les PME et avec une souveraineté des données allemande.
Certifications
Par défaut, n8n s'exécute en America/New_York au lieu de Europe/Berlin. Voici comment configurer correctement GENERIC_TIMEZONE et le fuseau horaire du workflow.
L'expression cron est presque toujours correcte, le fuseau horaire non. Trois cas réels du forum n8n montrent pourquoi les Schedule Triggers se déclenchent au mauvais moment.
La vraie question est rarement technique, elle porte sur la maintenabilité : qui entretient l'automatisation quand l'auteur du script est parti ? NordFlux vous conseille en toute neutralité sur les cas où n8n vaut la migration et ceux où un cron job reste la solution la plus honnête. Vous recevez une recommandation fondée sur vos processus, pas sur un catalogue de licences.