描述問題/錯誤/問題
我在 Google Cloud VM 上透過 Coolify 在 Docker 中執行自託管的 n8n 實例。
我可以存取 n8n 登入頁面,但無法登入。「忘記密碼」頁面顯示未設定電子郵件,因此無法傳送重設電子郵件。
重要事項:我不想重設使用者管理或建立新帳戶,如果這樣會刪除/替換目前的使用者。我想保留相同的現有帳戶,並保留所有工作流程、認證和資料。
我確認現有使用者存在於 SQLite 資料庫中:
adammzannar2009@gmail.com | Adam | Mzannar
我已經備份了:
/home/node/.n8n/database.sqlite
/home/node/.n8n/database.sqlite-wal
/home/node/.n8n/database.sqlite-shm
問題:
最安全且受支援的方式是什麼,僅更改/重設現有使用者的密碼,不刪除帳戶,也不會遺失工作流程、認證或資料?
錯誤訊息是什麼(如果有的話)?
忘記密碼頁面顯示:
Please contact your admin. n8n isn't set up to send email right now.
嘗試手動方法時,我收到:
Cannot find module 'bcryptjs'
attempt to write a readonly database
sqlite3: not found
此外,Coolify/Traefik 路由有過時的舊 IP 標籤,因為我的 VM 外部 IP 已變更。我暫時直接透過伺服器 IP 和連接埠存取 n8n。
請分享您的工作流程
這與特定工作流程無關。這是自託管登入/密碼恢復問題。
分享最後一個節點返回的輸出
不適用。
您的 n8n 設定資訊
- n8n 版本: 2.13.3
- 資料庫(預設:SQLite): SQLite
- n8n EXECUTIONS_PROCESS 設定(預設:own、main): default / 不確定
- 執行 n8n 的方式(Docker、npm、n8n cloud、桌面應用程式): Docker through Coolify on Google Cloud VM
- 作業系統: Debian GNU/Linux 12 / Google Cloud VM
n8n CLI 重設命令就能做到這一點
你可以試試看嗎?
1. 識別你的容器名稱
在你的 VM 終端執行以下命令,找到 n8n 容器的確切名稱:
docker ps
(尋找執行 n8n 映像的容器;它可能類似於 n8n-nnn 或 coolify-yyy)
2. 執行重設命令
使用 node 使用者(n8n 執行的使用者)執行命令,以避免權限問題。將 <container_name> 替換為你在步驟 1 中找到的名稱:
docker exec -u node -it <container_name> n8n user-management:reset
預期輸出:Successfully reset the database to default user state.
3. 重新啟動容器
為了讓變更生效並觸發設定精靈,請透過 Coolify 或 CLI 重新啟動容器:
docker restart <container_name>
4. 重新聲明帳戶
- 在無痕/隱私模式中開啟瀏覽器(這對於避免陳舊的工作階段 Cookie 至關重要)。
- 導航至你的 n8n 登入頁面。
- 你將被重新導向到所有者設定頁面。
- 輸入你的電子郵件(
adammzannar2009@gmail.com)並選擇新密碼。
- 登入。你的所有工作流程和認證都會在那裡。
或者,你可以如下所示配置你的 docker 以使用 SMTP 電子郵件
@Adam_Mzannar
如果你能在 n8n 中配置 smtp,重新啟動實例並點擊重設密碼,有很大的機會會成功。不要使用 docker exec -u node -it <container_name> n8n user-management:reset;這樣做會導致你不想要的結果。
N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=smtp.gmail.com
N8N_SMTP_PORT=587
N8N_SMTP_USER=你的信箱@gmail.com
N8N_SMTP_PASS=你的-google-應用密碼
N8N_SMTP_SENDER=你的信箱@gmail.com
N8N_SMTP_SSL=false
N8N_SMTP_STARTTLS=true
歡迎 @Adam_Mzannar 加入我們的社群!我是 Jay,是一位 n8n 認證創作者。
你可以直接在 SQLite 資料庫中更新密碼雜湊,而不需要接觸任何其他使用者資料。首先停止 n8n 容器,然後執行:sqlite3 /path/to/database.sqlite "UPDATE user SET password='$2b$10$NEW_HASH' WHERE email='your@email.com';"。使用任何 bcrypt 工具產生成本為 10 的 bcrypt 雜湊(例如,node -e "const b=require('bcryptjs'); console.log(b.hashSync('newpassword', 10))")。重新啟動容器並使用新密碼登入。只有密碼欄位會改變 - 所有工作流程、認證憑證和設定都保持不變。
嗨 Kjooleng!根據我的研究,這個命令會重設所有內容,包括,他不想要這樣:“我不想重新定義用戶管理或建立新帳戶,如果這會移除/替換目前使用者的話”
嗨 @kjooleng
根據文件,此操作會將使用者管理還原至預配置狀態並移除所有使用者帳戶。工作流程/認證資訊可能仍保留在資料庫中,但使用者帳戶會被移除/重新建立
在本機代管的 n8n 上重設管理員密碼 - 問題 - n8n Community
最安全的方法來重設特定使用者的密碼而不影響其他帳戶:直接更新資料庫中 user 表格的 password 欄位。產生新密碼的 bcrypt 雜湊值(使用任何 bcrypt 工具或一次性 Node.js 指令碼:require('bcryptjs').hash('newpassword', 10)),然後在 SQLite 或 Postgres 中執行 UPDATE user SET password = '<hash>' WHERE email = 'user@example.com'。這只會觸及該使用者的密碼欄位,不會影響其他任何部分 - 沒有帳戶刪除,沒有認證影響。