Не запускается NodeRed через systemctl

Ранее NodeRed запускался через systemctl, появилась необходимость поставить HomeKitBridge.
NodeJs 16 не подходит. Нашел в темах что можно штатным образом поставить более свежий NodeJs Homekit - ошибка - #8 от пользователя BrainRoot
Соответственно все поставил, переустановил, NodeJs 22, Nodered 4.02 вручную запускается без проблем. Но не запускается через systemctl.

root@wirenboard-AKYPRX3L:/# nano /etc/systemd/system/nodered.service
root@wirenboard-AKYPRX3L:/# systemctl enable nodered && systemctl start nodered
Created symlink /etc/systemd/system/multi-user.target.wants/nodered.service → /etc/systemd/system/nodered.service.
root@wirenboard-AKYPRX3L:/# systemctl status nodered
● nodered.service - Node-RED graphical event wiring tool
     Loaded: loaded (/etc/systemd/system/nodered.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2024-09-02 15:53:00 MSK; 8s ago
    Process: 22680 ExecStart=/usr/bin/env node-red $NODE_OPTIONS $NODE_RED_OPTIONS (code=exited, status=127)
   Main PID: 22680 (code=exited, status=127)
        CPU: 13ms

Sep 02 15:53:00 wirenboard-AKYPRX3L systemd[1]: nodered.service: Scheduled restart job, restart counter is at 5.
Sep 02 15:53:00 wirenboard-AKYPRX3L systemd[1]: Stopped Node-RED graphical event wiring tool.
Sep 02 15:53:00 wirenboard-AKYPRX3L systemd[1]: nodered.service: Start request repeated too quickly.
Sep 02 15:53:00 wirenboard-AKYPRX3L systemd[1]: nodered.service: Failed with result 'exit-code'.
Sep 02 15:53:00 wirenboard-AKYPRX3L systemd[1]: Failed to start Node-RED graphical event wiring tool.

При запуске вручную все стартует без проблем.

Welcome to Node-RED
===================

5 Sep 13:01:05 - [info] Node-RED version: v4.0.2
5 Sep 13:01:05 - [info] Node.js  version: v22.1.0
5 Sep 13:01:05 - [info] Linux 5.10.35-wb169 arm LE
(node:1696) [DEP0059] DeprecationWarning: The `util.log API is deprecated. Please use console.log() with a custom formatter or a third-party logger instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
5 Sep 13:01:15 - [info] Loading palette nodes
5 Sep 13:01:57 - [info] Settings file  : /root/.node-red/settings.js
5 Sep 13:01:57 - [info] Context store  : 'default' [module=memory]
5 Sep 13:01:58 - [info] User directory : /root/.node-red
5 Sep 13:01:58 - [warn] Projects disabled : editorTheme.projects.enabled=false
5 Sep 13:01:58 - [info] Flows file     : /root/.node-red/flows.json
(node:1696) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
5 Sep 13:01:58 - [info] Server now running at http://127.0.0.1:1880/
5 Sep 13:01:58 - [warn]

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

5 Sep 13:02:00 - [info] Starting flows
5 Sep 13:02:24 - [info] Started flows
5 Sep 13:02:27 - [info] [mqtt-broker:WirenBoard] Connected to broker: mqtt://192.168.66.6:1883

Добрывй день.
Как именно вы описали запуск сервиса?

Добрый день.
node-red -start если вручную.

а файл создал так как было описано в документации здесь Установка Node-RED на контроллер Wiren Board — Wiren Board

[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home

Nice=5
Environment="NODE_OPTIONS=--max_old_space_size=256"
ExecStart=/usr/bin/env node-red $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED

[Install]
WantedBy=multi-user.target

Я не вижу тут “-start”. Если ставите определенную версию - то не следует использовать документацию от другой. Опишите запуск с опциями именно под установленную.
Проверьте что выводится при запуске процесса с опциями как в скрипте.

Если правлю файл, надеюсь что делаю правильно, потому что до этого не было опыта работы с systemctl

[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home

Nice=5
Environment="NODE_OPTIONS=--max_old_space_size=256"
ExecStart=node-red -start $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED

[Install]
WantedBy=multi-user.target

Выводит следующее

root@wirenboard-AKYPRX3L:~# systemctl enable nodered && systemctl start nodered
root@wirenboard-AKYPRX3L:~# systemctl status nodered
● nodered.service - Node-RED graphical event wiring tool
     Loaded: loaded (/etc/systemd/system/nodered.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2024-09-06 15:47:27 MSK; 7s ago
    Process: 30839 ExecStart=node-red -start $NODE_OPTIONS $NODE_RED_OPTIONS (code=exited, status=203/EXEC)
   Main PID: 30839 (code=exited, status=203/EXEC)
        CPU: 8ms

Sep 06 15:47:27 wirenboard-AKYPRX3L systemd[1]: nodered.service: Scheduled restart job, restart counter is at 5.
Sep 06 15:47:27 wirenboard-AKYPRX3L systemd[1]: Stopped Node-RED graphical event wiring tool.
Sep 06 15:47:27 wirenboard-AKYPRX3L systemd[1]: nodered.service: Start request repeated too quickly.
Sep 06 15:47:27 wirenboard-AKYPRX3L systemd[1]: nodered.service: Failed with result 'exit-code'.
Sep 06 15:47:27 wirenboard-AKYPRX3L systemd[1]: Failed to start Node-RED graphical event wiring tool.

При запуске с этими же параметрами все успешно запускается.

root@wirenboard-AKYPRX3L:~# node-red -start  --max-old-space-size=256
6 Sep 15:41:56 - [info]

Welcome to Node-RED
===================

6 Sep 15:41:57 - [info] Node-RED version: v4.0.2
6 Sep 15:41:57 - [info] Node.js  version: v22.1.0
6 Sep 15:41:57 - [info] Linux 5.10.35-wb169 arm LE
(node:30064) [DEP0059] DeprecationWarning: The `util.log API is deprecated. Please use console.log() with a                  custom formatter or a third-party logger instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
6 Sep 15:42:05 - [info] Loading palette nodes
6 Sep 15:42:52 - [info] Settings file  : /root/.node-red/settings.js
6 Sep 15:42:52 - [info] Context store  : 'default' [module=memory]
6 Sep 15:42:52 - [info] User directory : /root/.node-red
6 Sep 15:42:52 - [warn] Projects disabled : editorTheme.projects.enabled=false
6 Sep 15:42:52 - [info] Flows file     : /root/.node-red/flows.json
(node:30064) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland altern                 ative instead.
6 Sep 15:42:53 - [info] Server now running at http://127.0.0.1:1880/
6 Sep 15:42:53 - [warn]

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

6 Sep 15:42:57 - [info] Starting flows
6 Sep 15:43:22 - [info] Started flows
6 Sep 15:43:24 - [info] [mqtt-broker:WirenBoard] Connected to broker: mqtt://192.168.66.6:1883

Попробую воспроизвести.
поставил
nodejs=20.5.1-deb-1nodesource1
npm@10.8.3

создаю:

cat > /etc/systemd/system/nodered.service << EOF
[Unit]
Description=Node-RED 10 graphical event wiring tool
Wants=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home

Nice=5
Environment="NODE_OPTIONS=--max_old_space_size=256 NODE_RED_OPTIONS=-start PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NODE_PATH=/usr/lib/node_modules"
ExecStart=node-red $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED
TimeoutSec=20

[Install]
WantedBy=multi-user.target

EOF


настраиваю -запускаю сервис, получаю ожидаемое:

systemctl status nodered
● nodered.service - Node-RED 10 graphical event wiring tool
     Loaded: loaded (/etc/systemd/system/nodered.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-09-06 15:05:35 UTC; 1min 42s ago
   Main PID: 2467522 (node-red)
      Tasks: 15 (limit: 4676)
     Memory: 47.4M
        CPU: 8.524s
     CGroup: /system.slice/nodered.service
             └─2467522 node-red

Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: file will not be recoverable, you will have to delete it and re-enter
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: your credentials.
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: You should set your own key using the 'credentialSecret' option in
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: your settings file. Node-RED will then re-encrypt your credentials
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: file using your chosen key the next time you deploy a change.
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: ---------------------------------------------------------------------
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: 6 Sep 15:05:41 - [info] Server now running at http://127.0.0.1:1880/
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: 6 Sep 15:05:41 - [warn] Encrypted credentials not found
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: 6 Sep 15:05:41 - [info] Starting flows
Sep 06 15:05:41 wirenboard-AYK5U4TB Node-RED[2467522]: 6 Sep 15:05:41 - [info] Started flows

Контроллер не отличается от любого другого компьютера - ничем. Те же конфиги, те же методы работы.

Да понимаю что контроллер это просто компьютер с ОС, вот делаю тоже самое у меня почему то 203 ошибка прилетает. Сюда пришел за помощью спустя большое количество времени и попыток самостоятельно разобраться.
Проблема где то в файле с настройками или где то еще искать?

Попробуйте явно указать время между попытками запуска, не менее 15 секунд.
Ну и проверьте что на момент запуска - нет уже запущенного процесса.

Процесса нет, поставил запуск через 120 сек. Все верно по файлу?

root@wirenboard-AKYPRX3L:~# nano /etc/systemd/system/nodered.service
  GNU nano 5.4                                                                        /etc/systemd/system/nodered.service
[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home

Nice=5
Environment="NODE_OPTIONS=--max_old_space_size=256 NODE_RED_OPTIONS=-start PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NODE_PATH=/usr/lib/node_modules"
ExecStart=node-red $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED
TimeoutSec=120

[Install]
WantedBy=multi-user.target

Почему то та же 203 ошибка, мне кажется что в приницпе он у меня долго запускается, более 2 минут.

root@wirenboard-AKYPRX3L:~# node-red  --max-old-space-size=256 -start
10 Sep 10:00:04 - [info]

Welcome to Node-RED
===================

10 Sep 10:00:04 - [info] Node-RED version: v4.0.2
10 Sep 10:00:04 - [info] Node.js  version: v22.1.0
10 Sep 10:00:04 - [info] Linux 5.10.35-wb169 arm LE
(node:28213) [DEP0059] DeprecationWarning: The `util.log API is deprecated. Please use console.log() with a custom formatter or a third-party logger instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
10 Sep 10:00:12 - [info] Loading palette nodes
10 Sep 10:00:57 - [info] Settings file  : /root/.node-red/settings.js
10 Sep 10:00:57 - [info] Context store  : 'default' [module=memory]
10 Sep 10:00:57 - [info] User directory : /root/.node-red
10 Sep 10:00:57 - [warn] Projects disabled : editorTheme.projects.enabled=false
10 Sep 10:00:57 - [info] Flows file     : /root/.node-red/flows.json
(node:28213) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
10 Sep 10:00:57 - [info] Server now running at http://127.0.0.1:1880/
10 Sep 10:00:58 - [warn]

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

10 Sep 10:01:00 - [info] Starting flows
10 Sep 10:01:26 - [info] Started flows
10 Sep 10:01:27 - [info] [mqtt-broker:WirenBoard] Connected to broker: mqtt://192.168.66.6:1883

Может каким то образом контроллер сбросить в 0. И попробовать все сначала, но я не уверен что это поможет.
И на сколько понимаю настройки всех модулей слетят, потому что конфигурационные файлы удалятся.

Документация говорит:

according to hte docmentation "203 EXIT_EXEC" says "The actual process execution failed (specifically, the execve(2) system call). Most likely this is caused by a missing or non-accessible executable file."

Где расположен файл который пытаетесь запустить и какие на него права?

Вот, вроде с такими правами и пытаюсь запустить.

root@wirenboard-AKYPRX3L:~/.nvm/versions/node/v22.1.0/bin# ls
corepack  node  node-red  node-red-pi  npm  npx
root@wirenboard-AKYPRX3L:~/.nvm/versions/node/v22.1.0/bin# ls -l
total 95380
lrwxrwxrwx 1 1001 1001       45 May  2 15:36 corepack -> ../lib/node_modules/corepack/dist/corepack.js
-rwxr-xr-x 1 1001 1001 97667164 May  2 15:36 node
lrwxrwxrwx 1 root root       35 Sep  2 16:08 node-red -> ../lib/node_modules/node-red/red.js
lrwxrwxrwx 1 root root       44 Sep  2 16:08 node-red-pi -> ../lib/node_modules/node-red/bin/node-red-pi
lrwxrwxrwx 1 root root       38 Jul 20 16:49 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxrwxrwx 1 root root       38 Jul 20 16:49 npx -> ../lib/node_modules/npm/bin/npx-cli.js

А этот путь есть в PATH, который устанавливается для запуска через systemd?
Подозреваю что нет.

В общем удалил Path и указал явно в Exec
Следующий файл заработал

[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home

Nice=5
Environment="NODE_OPTIONS=--max_old_space_size=256 NODE_RED_OPTIONS=-start"
ExecStart=/root/.nvm/versions/node/v22.1.0/bin/node-red $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED
TimeoutSec=120

[Install]
WantedBy=multi-user.target

Спасибо большое вам за подсказки.

PATH зря. Вот потребуется процессу запустить что-нибудь - а не получится. Лучше в него путь добавить. Ну и ставить лучше в штатное место все ж.
Но рад.

Тогда попробую еще раз через Path запустить, с первого раза не вышло.
А устанавливал без указания конкретных директорий, просто штатными командами.
Спасибо!

Нет. При установке бинарник располагается никак не в /home

whereis node-red
node-red: /usr/bin/node-red