Le déclencheur Gmail ne fonctionne pas (la plupart du temps)

Décrivez le problème/l’erreur/la question

Le flux de travail avec le déclencheur Gmail ne fonctionne pas et est très lent à publier

Quel est le message d’erreur (le cas échéant) ?

Le déclencheur Gmail ne fonctionne pas de manière fiable. J’ai réussi à le faire fonctionner quelques fois, mais la plupart du temps il ne réagit tout simplement plus aux nouveaux messages. Sur l’ordinateur où j’exécute le n8n auto-hébergé, je vois les erreurs suivantes. Il s’agit d’une machine avec des connexions sortantes très limitées, mais j’ai réussi à la faire fonctionner à un moment donné, donc je ne pense pas que ce soit le problème.

Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at AxiosError.from (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/axios/dist/node/axios.cjs:1355:24)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at RedirectableRequest.handleRequestError (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/axios/dist/node/axios.cjs:4026:25)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at RedirectableRequest.emit (node:events:520:35)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at ClientRequest.eventHandlers. (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/follow-redirects/index.js:56:24)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at ClientRequest.emit (node:events:508:28)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at emitErrorEvent (node:_http_client:108:11)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at TLSSocket.socketErrorListener (node:_http_client:575:5)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at TLSSocket.emit (node:events:520:35)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at emitErrorNT (node:internal/streams/destroy:170:8)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at emitErrorCloseNT (node:internal/streams/destroy:129:3)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at Axios.request (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/axios/dist/node/axios.cjs:5427:41)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at processTicksAndRejections (node:internal/process/task_queues:104:5)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at invokeAxios (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/@n8n/backend-network/src/http/axios/invoke.ts:15:10)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at httpRequest (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/@n8n/backend-network/src/http/axios/request.ts:211:5)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at Object.request (/home/angelv-adm/.npm-global/lib/node_modules/n8n/node_modules/@n8n/backend-network/src/http/outbound-http.ts:188:12)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at paginatedRequest (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/utils/strapi-utils.ts:87:15)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at getCommunityNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types-utils.ts:54:9)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at CommunityNodeTypesService.fetchNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types.service.ts:93:13)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at CommunityNodeTypesService.getCommunityNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types.service.ts:213:4)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at CommunityNodeTypesController.getCommunityNodeTypes (/home/angelv-adm/.npm-global/lib/node_modules/n8n/src/modules/community-packages/community-node-types.controller.ts:18:10)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: read ECONNRESET
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: Error: read ECONNRESET
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20)
Aug 01 10:20:33 orejon.ll.iac.es n8n[1375]: Error fetching from Strapi API (https://api-staging.n8n.io/api/community-nodes): read ECONNRESET
Aug 01 10:22:51 orejon.ll.iac.es n8n[1375]: There was a problem in ‘Gmail Trigger’ node in workflow ‘7’: ‘undefined’

Veuillez partager votre flux de travail

Partagez la sortie retournée par le dernier nœud

Informations sur votre configuration n8n

  • Version n8n : 2.32.5
  • Base de données (par défaut : SQLite) :
  • Paramètre EXECUTIONS_PROCESS de n8n (par défaut : own, main) :
  • Exécution de n8n via (Docker, npm, n8n cloud, application de bureau) : npm
  • Système d’exploitation : Linux Ubuntu 22.04

Salut @angelv
Ces traces ECONNRESET sont n8n qui récupère la liste des nœuds communautaires depuis api-staging.n8n.io, pas Gmail. « undefined » sur la ligne Gmail Trigger signifie que l’appel du sondage à Google s’est arrêté au niveau du socket, il n’y a donc pas de corps de réponse API d’où extraire un message, et un sondage échoué est ignoré sans nouvelle tentative, ce qui explique pourquoi des minutes entières de courrier n’arrivent jamais. Ouvrez le port 443 sortant vers www.googleapis.com et oauth2.googleapis.com depuis cet hôte. Testez-le depuis la machine elle-même :

curl -sS -o /dev/null -w '%{http_code}\n' https://www.googleapis.com/gmail/v1/users/me/profile

401 est le résultat sain, cela signifie que l’hôte est joignable et seul le jeton est manquant. Une erreur de connexion ou un blocage signifie que le filtre de sortie le coupe.
Pour la publication lente, ceci empêche n8n de chercher les nœuds communautaires à chaque chargement de l’éditeur :

N8N_COMMUNITY_PACKAGES_ENABLED=false

curl semble fonctionner correctement :

angelv-adm@orejon:~$ curl -sS -o /dev/null -w ‘%{http_code}\n’ https://www.googleapis.com/gmail/v1/users/me/profile
401

Je démarre n8n avec ces variables définies :

Environment=PATH=/home/angelv-adm/.npm-global/bin/:/usr/bin:/bin
Environment=GENERIC_TIMEZONE=Atlantic/Canary
Environment=NODES_EXCLUDE=“”
Environment=N8N_HOST=orejon.ll.iac.es
Environment=N8N_PROTOCOL=https
Environment=N8N_PORT=5678
Environment=N8N_EDITOR_BASE_URL=https://orejon.ll.iac.es/
Environment=WEBHOOK_URL=https://orejon.ll.iac.es/
Environment=N8N_PROXY_HOPS=1
Environment=N8N_DIAGNOSTICS_ENABLED=false
Environment=N8N_VERSION_NOTIFICATIONS_ENABLED=false
Environment=N8N_TEMPLATES_ENABLED=false
Environment=N8N_ONBOARDING_FLOW_DISABLED=true
Environment=N8N_LICENSE_AUTO_RENEW_ENABLED=false
Environment=N8N_DIAGNOSTICS_CONFIG_FRONTEND=
Environment=N8N_DIAGNOSTICS_CONFIG_BACKEND=
Environment=EXTERNAL_FRONTEND_HOOKS_URLS=

mais quand j’essaie de récupérer un événement de test, j’obtiens une erreur de délai d’attente :

N8N_COMMUNITY_PACKAGES_ENABLED=false

J'utilise le nœud « Execute Command », qui échouera si je définis cela, c'est bien ça ?

Hé @angelv

Bien que vous ayez mentionné des connexions sortantes limitées, l’erreur spécifique connect ETIMEDOUT 2001:4860:4840:400::443 révèle que n8n tente de se connecter à Google via IPv6, et votre réseau/machine n’est soit pas configuré pour IPv6, soit le pare-feu sortant supprime les paquets IPv6.

Les erreurs ECONNRESET dans vos journaux concernant api-staging.n8n.io confirment en outre que votre machine a du mal à maintenir des connexions TLS sortantes stables vers des API externes.

Comme votre machine a une connectivité sortante limitée et échoue sur une adresse IPv6, vous devez forcer Node.js (et donc n8n) à préférer IPv4.

Ajoutez la variable d’environnement suivante à votre configuration de démarrage de n8n (où vous définissez N8N_HOST, etc.) :

Environment=NODE_OPTIONS=--dns-result-order=ipv4first

Si vous utilisez un fichier de service systemd (ce qui semble être le cas selon vos extraits Environment=) :

  1. Modifiez le fichier de service : sudo nano /etc/systemd/system/n8n.service (ou votre nom de fichier spécifique).
  2. Ajoutez la ligne : Environment=NODE_OPTIONS=--dns-result-order=ipv4first.
  3. Rechargez systemd : sudo systemctl daemon-reload.
  4. Redémarrez n8n : sudo systemctl restart n8n.

Pour confirmer que le correctif fonctionne en dehors de n8n, exécutez cette commande depuis votre terminal :

# Forcer curl IPv4 vers l'API Google
curl -4 -v https://www.googleapis.com/gmail/v1/users/me/profile
  • Si cela renvoie 401 (Non autorisé) : Le chemin réseau est ouvert (401 est attendu car vous ne transmettez pas de jeton).
  • Si cela expire toujours : Votre pare-feu sortant bloque le port 443 vers les plages IP de Google, et vous devez demander à l’administrateur réseau de mettre en liste blanche *.googleapis.com.

Pour les autres erreurs du journal

  • Error fetching from Strapi API... ECONNRESET : C’est n8n qui essaie de vérifier les mises à jour des nœuds communautaires. Cela n’est pas lié à votre flux de travail Gmail mais confirme l’instabilité générale de vos connexions sortantes. Vous pouvez ignorer cela ou désactiver les vérifications des nœuds communautaires si possible.
  • There was a problem in 'Gmail Trigger'... 'undefined' : C’est un plantage générique résultant du ETIMEDOUT mentionné dans votre capture d’écran. Une fois que le correctif IPv4 est appliqué, cela devrait disparaître.

Cela vous aide-t-il ?

Non, celui-ci n’est pas lié à Execute Command. N8N_COMMUNITY_PACKAGES_ENABLED régit uniquement les packages de nœuds communautaires npm, ceux installés à partir de la page des paramètres Community nodes. Execute Command est un nœud principal intégré et est contrôlé séparément par NODES_EXCLUDE, que vous avez déjà défini sur un tableau vide, donc il continue de se charger de toute façon.

Merci beaucoup. Je ne sais pas combien de fois j’ai eu des problèmes IPv6 sur ce réseau, mais d’une façon ou d’une autre, ça ne rentre toujours pas dans ma tête…

J’ai ajouté ceci à mon fichier de service, redémarré, et j’ai immédiatement commencé à obtenir des résultats

Environment=NODE_OPTIONS=–dns-result-order=ipv4first
Environment=N8N_COMMUNITY_PACKAGES_ENABLED=false

Merci beaucoup !

Le diagnostic IPv4 semble correct — mais vérifiez OÙ vous avez défini NODE_OPTIONS. Si n8n s’exécute sous systemd, l’exporter dans votre shell ou .bashrc n’atteint jamais le service. Il faut que ce soit Environment=NODE_OPTIONS=–dns-result-order=ipv4first dans le fichier unit (ou un EnvironmentFile), puis systemctl daemon-reload et redémarrage.

Confirmez que c’est vraiment appliqué au lieu de supposer : sudo strings /proc/$(pgrep -f n8n | head -1)/environ | grep NODE_OPTIONS. Si ce n’est pas dans cette sortie, le paramètre n’a jamais été appliqué, et c’est pour ça que rien n’a changé.