n8n autohospedado: ¿forma más segura de restablecer la contraseña de un usuario existente sin eliminar la cuenta/datos?

Describe the problem/error/question

Estoy ejecutando una instancia de n8n auto-hospedada en Docker a través de Coolify en una VM de Google Cloud.

Puedo acceder a la página de inicio de sesión de n8n, pero no puedo iniciar sesión. La página “Olvidé mi contraseña” dice que el email no está configurado, por lo que no puede enviar un correo de restablecimiento.

Importante: NO quiero restablecer la gestión de usuarios ni crear una nueva cuenta si eso elimina/reemplaza el usuario actual. Quiero mantener la misma cuenta existente y preservar todos los flujos de trabajo, credenciales y datos.

Confirmé que el usuario existente existe en la base de datos SQLite:

adammzannar2009@gmail.com | Adam | Mzannar

Ya hice una copia de seguridad de:

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

Pregunta:
¿Cuál es la forma más segura y soportada de cambiar/restablecer la contraseña del usuario existente únicamente, sin eliminar la cuenta y sin perder flujos de trabajo, credenciales o datos?

¿Cuál es el mensaje de error (si existe)?

La página de “Olvidé mi contraseña” dice:

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

Al intentar métodos manuales, obtuve:

Cannot find module 'bcryptjs'

attempt to write a readonly database

sqlite3: not found

Además, la ruta Coolify/Traefik tenía etiquetas de IP antiguas obsoletas porque mi IP externa de la VM cambió. Accedí temporalmente a n8n directamente a través de la IP del servidor y el puerto.

Por favor, comparte tu flujo de trabajo

Esto no está relacionado con un flujo de trabajo específico. Es un problema de recuperación de login/contraseña en un entorno auto-hospedado.

Comparte el resultado devuelto por el último nodo

No aplica.

Información sobre tu configuración de n8n

  • Versión de n8n: 2.13.3
  • Base de datos (predeterminado: SQLite): SQLite
  • Configuración de n8n EXECUTIONS_PROCESS (predeterminado: own, main): predeterminado / no estoy seguro
  • Ejecutando n8n a través de (Docker, npm, n8n cloud, desktop app): Docker a través de Coolify en VM de Google Cloud
  • Sistema operativo: Debian GNU/Linux 12 / Google Cloud VM

El comando de restablecimiento de la CLI de n8n hará exactamente eso

¿Puedes intentarlo?

1. Identifica el nombre de tu contenedor

Ejecuta el siguiente comando en la terminal de tu VM para encontrar el nombre exacto de tu contenedor n8n:

docker ps

(Busca el contenedor que ejecuta la imagen de n8n; probablemente será algo como n8n-nnn o coolify-yyy).

2. Ejecuta el comando de restablecimiento

Ejecuta el comando utilizando el usuario node (el usuario que ejecuta n8n) para evitar problemas de permisos. Reemplaza <container_name> con el nombre que encontraste en el paso 1:

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

Resultado esperado: Successfully reset the database to default user state.

3. Reinicia el contenedor

Para que los cambios se propaguen y se active el asistente de configuración, reinicia el contenedor a través de Coolify o la CLI:

docker restart <container_name>

4. Reclama la cuenta

  1. Abre tu navegador en modo Incógnito/Privado (esto es crucial para evitar cookies de sesión antiguas).
  2. Navega a tu página de inicio de sesión de n8n.
  3. Serás redirigido a la página de Configuración del propietario.
  4. Ingresa tu correo electrónico (adammzannar2009@gmail.com) y elige una nueva contraseña.
  5. Inicia sesión. Todos tus flujos de trabajo y credenciales estarán ahí.

Alternativamente, puedes configurar tu docker para SMTP de correo electrónico como se muestra a continuación

@Adam_Mzannar
si puedes configurar el smtp en n8n, reiniciar la instancia y hacer clic en restablecer contraseña, hay grandes probabilidades de que funcione. NO USES docker exec -u node -it <container_name> n8n user-management:reset; eso hará lo que no quieres.

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

¿Por qué no? No

También se logra el siguiente objetivo

¿Hay algo que me haya pasado por alto?

¡Bienvenido @Adam_Mzannar a nuestra comunidad! Soy Jay y soy un creador verificado de n8n.

Puedes actualizar el hash de contraseña directamente en la base de datos SQLite sin tocar ningún otro dato de usuario. Primero detén el contenedor de n8n, luego ejecuta: sqlite3 /path/to/database.sqlite "UPDATE user SET password='$2b$10$NEW_HASH' WHERE email='your@email.com';"``. Genera el hash bcrypt con costo 10 usando cualquier herramienta bcrypt (por ejemplo, node -e “const b=require(‘bcryptjs’); console.log(b.hashSync(‘newpassword’, 10))”`). Reinicia el contenedor e inicia sesión con la nueva contraseña. Solo la columna de contraseña cambia - todos tus flujos de trabajo, credenciales y configuración permanecen intactos.

El OP ya mencionó

¡Hola Kjooleng! Por la investigación que hice, ese comando reinicia todo, tanto, él no quiere eso: “NO quiero redefinir la gestión de usuarios o crear una nueva cuenta si eso elimina/reemplaza el usuario actual”

No lo hará porque

De todos modos, dejaré que el OP decida

Hola @kjooleng
de acuerdo con la documentación, la acción devuelve la gestión de usuarios al estado preconfiguración y elimina todas las cuentas de usuario. Los workflows/credenciales pueden permanecer en la base de datos pero las cuentas de usuario se eliminan/recrean

Restablecer la Contraseña de Administrador en n8n Alojado Localmente - Preguntas - n8n Community

El enfoque más seguro para restablecer la contraseña de un usuario específico sin afectar otras cuentas: actualiza directamente el campo password en la tabla user en tu base de datos. Genera un hash bcrypt de la nueva contraseña (usa cualquier herramienta bcrypt o un script Node.js de una sola vez: require('bcryptjs').hash('newpassword', 10)), luego ejecuta UPDATE user SET password = '<hash>' WHERE email = 'user@example.com' en SQLite o Postgres. Esto afecta solo el campo de contraseña de ese usuario y nada más - sin eliminación de cuenta, sin impacto en las credenciales.