2025年9月22日 星期一

[Open-source tool] 如何設定Node-RED的使用者登入權限功能?

 


使用 Docker 部署 Node-Red 時,預設情況下是 沒有帳號密碼驗證 的。這意味著只要能訪問該Node-Red網頁,都能直接編輯和修改流程。因此在實務應用中,啟用使用者驗證機制是必要設定,確保具備權限的用戶才可以登入和操作Node-Red工作流後台。本文將以 Raspberry Pi + Docker 部署 Node-Red 為例,介紹如何設定使用者登入權限功能。

設定步驟

1.啟動 Node-Red docker 容器

利用Docker run 指令啟動 Node-Red 服務,如下:

sudo docker run -d \
  --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,即可看到登入頁面,如下圖,同時輸入剛剛設定的帳號和密碼即可進入。



透過上述的權限設定,可避免未經授權的存取問題,建議在正式專案中啟用此功能,提高資安等級。

沒有留言:

張貼留言