Π Π°Π·Π³ΡΡΡΠ°Π½Π΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° node-red Π½Π° docker-compose
Π Π°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° node-red Π² docker-compose Ρ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° docker volume.
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°ΠΉΠ»Π° docker-compose.yml:
version: "3.7"
services:
node-red:
image: nodered/node-red
environment:
- TZ=Europe/Moscow
ports:
- "11880:1880" # 11880 - ΠΏΠΎΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, 1880 - ΠΏΠΎΡΡΡΡ, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ node-red Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
volumes:
- "node-red:/data" # node-red - Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ docker ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ, /data - Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
restart: always
volumes:
node-red: # ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ node-red Π½Π° Ρ
ΠΎΡΡΠ°.
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² ΠΎΡΠ»Π°Π΄ΡΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ (ΠΏΡΡΠ²ΠΈΡΡ ΠΏΡΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π±Π΅Π· ΠΊΠ»ΡΡΠ° `-d`, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΡΡ):
$ docker-compose up node-red
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° node-red_node-red_1_3e3e59f5e044 ... Π³ΠΎΡΠΎΠ²ΠΎ
Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ node-red_node-red_1_bca4cb987984
node-red_1_bca4cb987984 |
node-red_1_bca4cb987984 | > node-red-docker@1.0.3 start /usr/src/node-red
node-red_1_bca4cb987984 | > node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS "--userDir" "/data"
...Π‘ΠΏΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° volume:
$ docker volume ls
DRIVER VOLUME NAME
local node-red_node-redΠΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° volume:
$ docker volume inspect node-red_node-red
[
{
"CreatedAt": "2020-05-02T18:37:33Z",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "node-red",
"com.docker.compose.version": "1.23.0",
"com.docker.compose.volume": "node-red"
},
"Mountpoint": "/var/lib/docker/volumes/node-red_node-red/_data", # Π½Π°ΡΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ
"Name": "node-red_node-red",
"Options": null,
"Scope": "local"
}
]
ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π½Π° volume. Π ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π²Π΅ΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ docker Π΅ ΡΡΠ·Π΄Π°Π» ΠΏΡΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
$ sudo ls /var/lib/docker/volumes/node-red_node-red/_data
lib package.json settings.jsΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΉΠ»ΡΡ settings.js. ΠΡΠ²Π°ΡΡΠΌΠ΅ Π³ΠΎ ΠΈ ΡΡΡΡΠΈΠΌ ΠΊΠΎΠ΄Π° adminAuth. Π Π°Π·ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π³ΠΎ.
// Securing Node-RED
// -----------------
// To password protect the Node-RED editor and admin API, the following
// property can be used. See http://nodered.org/docs/security.html for details.
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
permissions: "*"
}]
},
Π ΠΊΠ»ΡΡΠ° ΠΏΠ°ΡΠΎΠ»Π°: Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ hash ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° Π½Π° node-red.
ΠΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° hash ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° Π½Π° node-red
ΠΠ° Π²ΡΡΠΊΠ° ΠΌΠ°ΡΠΈΠ½Π° Ρ node.js ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° node-red-admin.
npm i node-red-admin -gΠ‘ΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π°:
node-red-admin hash-pwΠ‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅ Ρ ΠΏΠΎΡΡΠ° 11880.
http://192.168.0.100:11880/Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ.

ΠΡΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Π°.
ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ, ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΊΠ»ΡΡΠ° -d.
$ docker-compose up -d node-red ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
