āĻĄāĻāĻžāϰ-āĻāĻŽā§āĻĒā§āĻā§ āύā§āĻĄ-āϞāĻžāϞ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏā§āĻĨāĻžāĻĒāύ āĻāĻŦāĻ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻšāĻā§āĻā§
āĻ āύā§āĻŽā§āĻĻāύ āϏāĻā§āώāĻŽ āĻāĻŦāĻ āĻĄāĻāĻžāϰ āĻāϞāĻŋāĻāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĄāĻāĻžāϰ-āĻāĻŽā§āĻĒā§āĻā§ āύā§āĻĄ-āϞāĻžāϞ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
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
Creating node-red_node-red_1_3e3e59f5e044 ... done
Attaching to 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"
...
āϧāĻžāϰāĻ āĻŦāύā§āϧ āĻāϰā§āύ āĻāĻŦāĻ āĻāϞāĻŋāĻāĻŽ āĻĻā§āĻāϤ⧠āĻāĻŽāĻžāύā§āĻĄ āĻāĻžāϞāĻžāύ:
$ docker volume ls
DRIVER VOLUME NAME
local node-red_node-red
āĻāĻŽāϰāĻž āĻāϞāĻŋāĻāĻŽā§āϰ āĻāĻĒāϰ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āϤāĻĨā§āϝ āĻĻā§āĻāĻŋ:
$ 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"
}
]
āĻāϞāĻŋāĻāĻŽ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āϝāĻžāύāĨ¤ āĻāĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻāύā§āĻā§āĻāύāĻžāϰ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĄāĻāĻžāϰ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
$ sudo ls /var/lib/docker/volumes/node-red_node-red/_data
lib package.json settings.js
āĻāĻŽāϰāĻž āĻĢāĻžāĻāϞ⧠āĻāĻā§āϰāĻšā§ settings.js. āĻāĻāĻŋ āĻā§āϞā§āύ āĻāĻŦāĻ āĻā§āĻĄā§āϰ āĻāĻāĻāĻŋ āĻ āĻāĻļ āϏāύā§āϧāĻžāύ āĻāϰā§āύ adminAuth. āĻāϰ āĻāĻāĻž uncomment āĻāϰāĻž āϝāĻžāĻ.
// 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: "*"
}]
},
āĻāĻžāĻŦāĻŋāϤ⧠āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ: āĻāĻĒāύāĻžāĻā§ āύā§āĻĄ-āϞāĻžāϞ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻšā§āϝāĻžāĻļ āϏāύā§āύāĻŋāĻŦā§āĻļ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āύā§āĻĄ-āϞāĻžāϞ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻšā§āϝāĻžāĻļ āĻĒāĻžāĻā§āĻā§āύ
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
āϝ⧠āĻŽāϤ āĻāĻŋāĻā§āĨ¤
āĻāϤā§āϏ: www.habr.com
