n8n auto-hébergé : besoin de la façon la plus sûre de réinitialiser le mot de passe d'un utilisateur existant sans supprimer le compte/les données

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

J’exécute une instance n8n auto-hébergée sur Docker via Coolify sur une VM Google Cloud.

Je peux accéder à la page de connexion de n8n, mais je ne peux pas me connecter. La page « Mot de passe oublié » indique que l’email n’est pas configuré, donc elle ne peut pas envoyer un email de réinitialisation.

Important : Je NE veux PAS réinitialiser la gestion des utilisateurs ou créer un nouveau compte si cela supprime/remplace l’utilisateur actuel. Je veux conserver le même compte existant et préserver tous les workflows, les identifiants et les données.

J’ai confirmé que l’utilisateur existant se trouve dans la base de données SQLite :

adammzannar2009@gmail.com | Adam | Mzannar

J’ai déjà sauvegardé :

  • /home/node/.n8n/database.sqlite
  • /home/node/.n8n/database.sqlite-wal
  • /home/node/.n8n/database.sqlite-shm

Question :
Quelle est la façon la plus sûre et supportée de modifier/réinitialiser le mot de passe de l’utilisateur existant uniquement, sans supprimer le compte et sans perdre les workflows, les identifiants ou les données ?

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

La page Mot de passe oublié indique :

Please contact your admin. n8n isn't set up to send email right now.

En essayant des méthodes manuelles, j’ai reçu :

Cannot find module 'bcryptjs'

attempt to write a readonly database

sqlite3: not found

De plus, la route Coolify/Traefik contenait des anciens labels d’IP périmés parce que l’IP externe de ma VM a changé. J’ai temporairement accédé à n8n directement via l’IP du serveur et le port.

Veuillez partager votre workflow

Ceci ne concerne pas un workflow spécifique. C’est un problème de récupération de login/mot de passe auto-hébergé.

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

Non applicable.

Informations sur votre configuration n8n

  • Version n8n : 2.13.3
  • Base de données (par défaut : SQLite) : SQLite
  • Paramètre EXECUTIONS_PROCESS de n8n (par défaut : own, main) : par défaut / pas sûr
  • Exécution de n8n via (Docker, npm, n8n cloud, application de bureau) : Docker via Coolify sur VM Google Cloud
  • Système d’exploitation : Debian GNU/Linux 12 / VM Google Cloud

La commande de réinitialisation n8n CLI fera exactement cela

Pouvez-vous essayer ceci ?

1. Identifiez le nom de votre conteneur

Exécutez la commande suivante sur le terminal de votre VM pour trouver le nom exact de votre conteneur n8n :

docker ps

(Recherchez le conteneur exécutant l’image n8n ; il s’agira probablement de quelque chose comme n8n-nnn ou coolify-yyy).

2. Exécutez la commande de réinitialisation

Exécutez la commande en utilisant l’utilisateur node (l’utilisateur sous lequel n8n s’exécute) pour éviter les problèmes de permissions. Remplacez <container_name> par le nom que vous avez trouvé à l’étape 1 :

docker exec -u node -it <container_name> n8n user-management:reset

Résultat attendu : Successfully reset the database to default user state.

3. Redémarrez le conteneur

Pour que les modifications se propagent et que l’assistant de configuration se déclenche, redémarrez le conteneur via Coolify ou l’interface CLI :

docker restart <container_name>

4. Récupérez le compte

  1. Ouvrez votre navigateur en mode Incognito/Privé (c’est crucial pour éviter les anciens cookies de session).
  2. Accédez à votre page de connexion n8n.
  3. Vous serez redirigé vers la page de configuration du propriétaire.
  4. Entrez votre e-mail (adammzannar2009@gmail.com) et choisissez un nouveau mot de passe.
  5. Connectez-vous. Tous vos workflows et vos identifiants seront là.

Alternativement, vous pouvez simplement configurer votre docker pour SMTP email comme ci-dessous

@Adam_Mzannar
si tu peux configurer le smtp dans n8n, redémarrer l’instance et cliquer sur réinitialiser le mot de passe, il y a de bonnes chances que ça fonctionne. N’UTILISE PAS docker exec -u node -it <container_name> n8n user-management:reset; ça va faire ce que tu ne veux pas.

N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.gmail.com
N8N_SMTP_PORT=587
N8N_SMTP_USER=ton-email@gmail.com
N8N_SMTP_PASS=ton-app-password-google
N8N_SMTP_SENDER=ton-email@gmail.com
N8N_SMTP_SSL=false
N8N_SMTP_STARTTLS=true

Pourquoi pas ? Cela ne

L’objectif suivant est également atteint

Y a-t-il quelque chose que j’aurais oublié ?

Bienvenue @Adam_Mzannar dans notre communauté ! Je suis Jay et je suis un créateur vérifié n8n.

Vous pouvez mettre à jour le hash du mot de passe directement dans la base de données SQLite sans toucher à d’autres données utilisateur. Arrêtez d’abord le conteneur n8n, puis exécutez : sqlite3 /path/to/database.sqlite "UPDATE user SET password='$2b$10$NEW_HASH' WHERE email='your@email.com';". Générez le hash bcrypt avec un coût de 10 en utilisant n’importe quel outil bcrypt (par exemple, node -e "const b=require('bcryptjs'); console.log(b.hashSync('newpassword', 10))"). Redémarrez le conteneur et connectez-vous avec le nouveau mot de passe. Seule la colonne de mot de passe change - tous les workflows, les identifiants et les paramètres restent intacts.

L’OP a déjà déclaré

Salut Kjooleng! D’après mes recherches, cette commande réinitialise tout, donc il ne veut pas ça : « JE NE VEUX PAS réinitialiser la gestion des utilisateurs ou créer un nouveau compte si cela supprime/remplace l’utilisateur actuel »

Ce ne sera pas le cas parce que

De toute façon, je laisserai l’OP décider

Salut @kjooleng
selon la documentation, cette action ramène la gestion des utilisateurs à l’état de pré-configuration et supprime tous les comptes utilisateur. Les workflows/identifiants peuvent rester dans la base de données mais les comptes utilisateur sont supprimés/recréés

Reset Admin Password on Locally Hosted n8n - Perguntas - n8n Community

L’approche la plus sûre pour réinitialiser le mot de passe d’un utilisateur spécifique sans toucher à d’autres comptes : mettre à jour directement le champ password dans la table user de votre base de données. Générez un hash bcrypt du nouveau mot de passe (utilisez n’importe quel outil bcrypt ou un script Node.js ponctuel : require('bcryptjs').hash('newpassword', 10)), puis exécutez UPDATE user SET password = '<hash>' WHERE email = 'user@example.com' dans SQLite ou Postgres. Cela ne modifie que le champ de mot de passe de cet utilisateur et rien d’autre - pas de suppression de compte, aucun impact sur les identifiants.