使用 Docker 部署 Node-Red 時,預設情況下是 沒有帳號密碼驗證 的。這意味著只要能訪問該Node-Red網頁,都能直接編輯和修改流程。因此在實務應用中,啟用使用者驗證機制是必要設定,確保具備權限的用戶才可以登入和操作Node-Red工作流後台。本文將以 Raspberry Pi + Docker 部署 Node-Red 為例,介紹如何設定使用者登入權限功能。
設定步驟
1.啟動 Node-Red docker 容器
利用Docker run 指令啟動 Node-Red 服務,如下:
--name Node-Red \
-p 1880:1880 \
-v /home/xxxx/docker-service/nodered/data:/data \
nodered/node-red
2.找到 settings.js
檔案
因 Docker 指令配置一個data資料夾連結容器內部的資料,所以在 /home/xxxx/docker-service/nodered/data
資料夾內產生一份 settings.js
。
3.產生密碼雜湊 (bcrypt hash)
在終端命令列上輸入以下指令:
docker exec -it Node-Red node-red admin hash-pw
輸入欲設定的密碼(如 mypassword
),系統會輸出一段 bcrypt 雜湊碼,例如:
$2b$08$YJ9QW.4oVbMC6RXKkYcC7uUoF4dGocA9qzVJ7QxfsDiF1dVqLZCIK
請先複製這段雜湊碼,下一步要將這段雜湊碼放到settings.js檔案中。
4.配置 settings.js
檔案
打開 /home/xxxx/docker-service/nodered/data/settings.js
,找到預設被註解的區塊。
//adminAuth: {
// type: "credentials",
// users: [{
// username: "admin",
// password: "$2b$08$somethingHashedHere",
// permissions: "*"
// }]
//},
修改後如下(移除註解,並貼上剛產生的 bcrypt 雜湊):
adminAuth: {
type: "credentials",
users: [{
username: "myuser",
password: "$2b$08$YJ9QW.4oVbMC6RXKkYcC7uUoF4dGocA9qzVJ7QxfsDiF1dVqLZCIK",
permissions: "*"
}]
},
參數說明:
-
username → 登入帳號
-
password → bcrypt 雜湊密碼
-
permissions → 設為
"*"
代表完整存取權限
5.重啟 Node-RED
sudo docker restart Node-Red
完成後,重新開啟 http://your ip address:1880
,即可看到登入頁面,如下圖,同時輸入剛剛設定的帳號和密碼即可進入。
透過上述的權限設定,可避免未經授權的存取問題,建議在正式專案中啟用此功能,提高資安等級。
沒有留言:
張貼留言