Self-hosted n8n: sicherste Methode zum Zurücksetzen eines bestehenden Benutzerpassworts ohne Löschen von Konto/Daten

Beschreibe das Problem/den Fehler/die Frage

Ich führe eine selbst gehostete n8n-Instanz auf Docker über Coolify auf einer Google Cloud VM aus.

Ich kann die n8n-Anmeldeseite aufrufen, kann mich aber nicht anmelden. Die Seite “Passwort vergessen” sagt, dass E-Mail nicht konfiguriert ist, daher kann sie keine Zurücksetungs-E-Mail senden.

Wichtig: Ich möchte NICHT die Benutzerverwaltung zurücksetzen oder ein neues Konto erstellen, wenn das den aktuellen Benutzer entfernt/ersetzt. Ich möchte das gleiche vorhandene Konto behalten und alle Workflows, Anmeldedaten und Daten bewahren.

Ich habe bestätigt, dass der vorhandene Benutzer in der SQLite-Datenbank existiert:

adammzannar2009@gmail.com | Adam | Mzannar

Ich habe bereits eine Sicherung gemacht von:

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

Frage:
Was ist der sicherste unterstützte Weg, um das Passwort für den vorhandenen Benutzer zu ändern/zurückzusetzen, ohne das Konto zu löschen und ohne Workflows, Anmeldedaten oder Daten zu verlieren?

Was ist die Fehlermeldung (falls vorhanden)?

Die Seite “Passwort vergessen” sagt:

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

Bei Versuchen mit manuellen Methoden erhielt ich:

Cannot find module 'bcryptjs'

attempt to write a readonly database

sqlite3: not found

Außerdem hatte die Coolify/Traefik-Route veraltete alte IP-Beschriftungen, da sich die externe IP meiner VM geändert hat. Ich griff vorübergehend direkt über die Server-IP und den Port auf n8n zu.

Bitte teile deinen Workflow

Dies bezieht sich nicht auf einen bestimmten Workflow. Es ist ein selbst gehostetes Problem bei der Anmeldung/Passwortwiederherstellung.

Teile die Ausgabe des letzten Knotens

Nicht zutreffend.

Informationen zu deinem n8n-Setup

  • n8n-Version: 2.13.3
  • Datenbank (Standard: SQLite): SQLite
  • n8n EXECUTIONS_PROCESS-Einstellung (Standard: own, main): Standard / nicht sicher
  • n8n läuft über (Docker, npm, n8n cloud, Desktop-App): Docker über Coolify auf Google Cloud VM
  • Betriebssystem: Debian GNU/Linux 12 / Google Cloud VM

Der n8n CLI-Befehl zum Zurücksetzen macht genau das

Kannst du das versuchen?

1. Identifiziere deinen Container-Namen

Führe den folgenden Befehl im Terminal deiner VM aus, um den genauen Namen deines n8n-Containers zu finden:

docker ps

(Suche nach dem Container, auf dem das n8n-Image läuft; es wird wahrscheinlich etwas wie n8n-nnn oder coolify-yyy sein).

2. Führe den Reset-Befehl aus

Führe den Befehl mit dem Benutzer node aus (dem Benutzer, unter dem n8n läuft), um Berechtigungsprobleme zu vermeiden. Ersetze <container_name> mit dem Namen, den du in Schritt 1 gefunden hast:

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

Erwartete Ausgabe: Successfully reset the database to default user state.

3. Starten Sie den Container neu

Damit die Änderungen propagiert werden und der Setup-Assistent ausgelöst wird, starten Sie den Container über Coolify oder die CLI neu:

docker restart <container_name>

4. Beanspruche das Konto erneut

  1. Öffne deinen Browser im Inkognito-/Privatmodus (das ist wichtig, um alte Session-Cookies zu vermeiden).
  2. Navigiere zu deiner n8n-Anmeldeseite.
  3. Du wirst zur Seite zur Eigentümer-Einrichtung weitergeleitet.
  4. Gebe deine E-Mail-Adresse (adammzannar2009@gmail.com) ein und wähle ein neues Passwort.
  5. Melde dich an. Alle deine Workflows und Anmeldedaten werden vorhanden sein.

Alternativ kannst du auch docker für SMTP-E-Mail wie folgt konfigurieren

@Adam_Mzannar
wenn du SMTP in n8n konfigurieren kannst, die Instanz neu starten und auf Passwort zurücksetzen klicken, besteht eine gute Chance, dass es funktioniert. VERWENDE NICHT docker exec -u node -it <container_name> n8n user-management:reset; das wird das tun, was du nicht möchtest.

N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.gmail.com
N8N_SMTP_PORT=587
N8N_SMTP_USER=deine-email@gmail.com
N8N_SMTP_PASS=dein-app-passwort-von-google
N8N_SMTP_SENDER=deine-email@gmail.com
N8N_SMTP_SSL=false
N8N_SMTP_STARTTLS=true

Warum nicht? Es

Das folgende Ziel wird auch erreicht

Habe ich etwas übersehen?

Willkommen @Adam_Mzannar in unserer Community! Ich bin Jay und bin ein n8n verified creator.

Du kannst den Password-Hash direkt in der SQLite-Datenbank aktualisieren, ohne andere Benutzerdaten zu ändern. Stoppe zuerst den n8n-Container und führe dann aus: sqlite3 /path/to/database.sqlite "UPDATE user SET password='$2b$10$NEW_HASH' WHERE email='your@email.com';".
Generiere den bcrypt-Hash mit Cost 10 mit einem beliebigen bcrypt-Tool (z. B. node -e "const b=require('bcryptjs'); console.log(b.hashSync('newpassword', 10))"). Starte den Container neu und melde dich mit dem neuen Passwort an. Nur die Password-Spalte ändert sich - alle Workflows, Anmeldedaten und Einstellungen bleiben intakt.

Der OP hat bereits angegeben

Hallo Kjooleng! Nach meiner Recherche führt dieser Befehl einen vollständigen Reset durch, aber das ist nicht das, was er möchte: “Ich möchte NICHT die Benutzerverwaltung zurücksetzen oder ein neues Konto erstellen, wenn dies den aktuellen Benutzer entfernt/ersetzt”

Das wird nicht der Fall sein, weil

Anyways werde ich das dem OP überlassen, zu entscheiden

Hi @kjooleng
laut Dokumentation setzt die Aktion die Benutzerverwaltung in den Pre-Setup-Zustand zurück und entfernt alle Benutzerkonten. Workflows/Anmeldeinformationen können in der Datenbank verbleiben, aber Benutzerkonten werden entfernt/neu erstellt

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

Der sicherste Ansatz zum Zurücksetzen eines Passworts für einen spezifischen Benutzer ohne Beeinträchtigung anderer Konten: Direkt das password-Feld in der user-Tabelle deiner Datenbank aktualisieren. Generiere einen bcrypt-Hash des neuen Passworts (verwende ein beliebiges bcrypt-Tool oder ein einmaliges Node.js-Skript: require('bcryptjs').hash('newpassword', 10)), führe dann UPDATE user SET password = '<hash>' WHERE email = 'user@example.com' in SQLite oder Postgres aus. Dies betrifft nur das Passwortfeld dieses einen Benutzers und nichts anderes – keine Kontolöschung, keine Auswirkungen auf Anmeldedaten.