En bref
| PrĂ©requis | n8n dĂ©ployĂ© en Docker, SWAG comme reverse proxy, Authelia pour lâauthentification |
| Résultat | Connexion à n8n en un clic via SSO Authelia + credentials Google fonctionnels |
| Ressources | docs.n8n.io · faircode.io · github.com/n8n-io |
Cette vidĂ©o fait suite Ă la vidĂ©o de dĂ©ploiement de n8n. Deux limitations que jâavais laissĂ©es de cĂŽtĂ© Ă lâĂ©poque, rĂ©solues ici.
ProblĂšme 1 â Double authentification
Le problĂšme : quand on accĂšde Ă n8n depuis SWAG + Authelia, il faut sâidentifier une premiĂšre fois sur le portail Authelia, puis une deuxiĂšme fois sur la page de login n8n. Câest inutile et frustrant.
La solution : utiliser le mĂ©canisme de trusted headers de n8n. Authelia peut injecter dans les headers HTTP lâadresse email de lâutilisateur authentifiĂ© (Remote-Email). n8n peut lire ce header via un fichier de hook JavaScript et bypasser sa propre page de login.
Ce quâil faut faire :
1. Créer le fichier de hook
Dans votre rĂ©pertoire de donnĂ©es n8n (ex : appdata/n8n-data/), crĂ©er un fichier hook.js. Le code est disponible sur le blog rĂ©fĂ©rencĂ© en commentaire Reddit (chercher ân8n Authelia SSO hookâ). Utiliser la version pour n8n > 0.87.
Le principe : quand n8n est prĂȘt, le hook vĂ©rifie si le header Remote-Email est prĂ©sent. Si oui, il cherche lâutilisateur correspondant dans la base n8n, gĂ©nĂšre le cookie de session et bypass la page de login.
2. Modifier le docker-compose de n8n
Ajouter plusieurs variables dâenvironnement dans la section environment du docker-compose n8n : le chemin vers les extensions custom et le fichier hook.js, la durĂ©e des tokens JWT, et la variable qui indique quel header HTTP contient lâemail de lâutilisateur (ici le header Remote-Email transmis par Authelia). Configurer aussi les proxies de confiance.
3. Sâassurer que les emails correspondent
Lâemail de lâutilisateur dans Authelia (champ email dans users_database.yml) doit ĂȘtre exactement le mĂȘme que lâemail du compte créé dans n8n. Sans ça, le hook ne peut pas faire le lien.
4. Redéployer n8n
RedĂ©ployer le conteneur n8n avec lâoption --force-recreate pour que les nouvelles variables dâenvironnement soient bien prises en compte.
RĂ©sultat : aprĂšs connexion sur Authelia, on arrive directement dans n8n. Le SSO fonctionne aussi avec les passkeys Authelia 4.39. Et si on est dĂ©jĂ connectĂ© sur un autre service (Nextcloud, JellyfinâŠ), n8n est directement accessible sans nouvelle authentification.
Limitation : le bouton âlogoutâ intĂ©grĂ© Ă n8n ne fonctionne plus. Il faut se dĂ©connecter via Authelia.
ProblĂšme 2 â Erreur 500 sur le renouvellement des credentials Google
Le problĂšme : dans n8n â Credentials â Gmail, quand on clique âSign in with Googleâ pour renouveler les tokens OAuth, une erreur 500 apparaĂźt. Le callback OAuth de Google ne passe pas correctement Ă cause dâun problĂšme de cookie via SWAG + Authelia.
La solution de contournement prĂ©cĂ©dente consistait Ă dĂ©sactiver temporairement Authelia sur n8n â ce qui est une mauvaise pratique.
La solution propre : ajouter une location spĂ©cifique dans le fichier de configuration SWAG pour le sous-domaine n8n, qui exclut Authelia uniquement sur le chemin de callback OAuth (/rest/oauth2-credential/callback). Cette location fait passer les requĂȘtes directement vers n8n sans interception par Authelia.
GrĂące Ă lâauto-reload de SWAG, la configuration est prise en compte sans redĂ©marrage.
RĂ©sultat : âSign in with Googleâ fonctionne directement, les credentials se renouvellent sans manipulation.
En bonus â Comment jâutilise le workflow n8n en pratique
Jâai simplifiĂ© le workflow de traitement automatique des emails de collaboration. PlutĂŽt que de laisser le LLM catĂ©goriser les mails lui-mĂȘme (trop dâerreurs, obligation de tout revĂ©rifier), je pose manuellement un label sur chaque mail reçu. Ăa prend quelques secondes.
n8n rĂ©cupĂšre tous les mails labelisĂ©s, passe dans un switch selon le label (reply-deny, no-replyâŠ), appelle Gemini 2 Flash pour rĂ©diger une rĂ©ponse adaptĂ©e en français ou anglais selon la langue du mail reçu, crĂ©e un brouillon dans Gmail, marque le message comme lu et ajoute le label ân8n-doneâ pour ne pas retraiter.
Je valide ou ajuste le brouillon avant dâenvoyer. Le LLM sait quâil ne faut pas mentionner de rĂ©munĂ©ration, pas de contrat, et quâil faut rediriger vers YouTube ou Discord pour tout Ă©change public.
Câest moins automatique quâavant, mais ça ne me fait plus perdre de temps Ă corriger des erreurs de catĂ©gorisation.