add zapusk-routera-mycelium-bez-root.md

This commit is contained in:
postscriptum 2026-01-31 05:56:04 +02:00
parent 9c2826aed9
commit 33ad821c8a

View file

@ -0,0 +1,51 @@
# Запуск роутера Mycelium без root
Щоб не повторюватись, схожа тема про [Запуск роутера Yggdrasil без root](https://devzone.org.ua/post/zapusk-routera-yggdrasil-bez-root).
Відмінність рішення для Mycelium полягає лише у тому, що тут не потрібно вказувати адреси UNIX-сокета.
``` bash
useradd -s /usr/sbin/nologin -M mycelium
```
Якщо файл ключа було згенеровано раніше, `myceliumd` для нього встановлює права `0400`, отже потрібно актуалізувати й власника - інакше сервіс не зможе запуститись від нового користувача `mycelium`:
``` bash
chown mycelium:mycelium /etc/mycelium.bin
```
Тепер створюємо сервіс:
``` /etc/systemd/system/mycelium.service
#/etc/systemd/system/mycelium.service
[Unit]
Wants=network.target
After=network.target
[Service]
User=mycelium
Group=mycelium
ProtectHome=true
ProtectSystem=strict
SyslogIdentifier=mycelium
NoNewPrivileges=true
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
ExecStartPre=+-/sbin/modprobe tun
ExecStart=/usr/local/bin/mycelium -k /etc/mycelium.bin --peers tcp://xxx.xxx.xxx.xxx:xxxx
# Адреси підмереж
#ExecStartPost=/bin/sleep 5s
#ExecStartPost=/bin/ip address add xxx:xxxx:xxxx:xxxx::x1/64 dev mycelium
#ExecStartPost=/bin/ip address add xxx:xxxx:xxxx:xxxx::x2/64 dev mycelium
#Restart=always
#RestartSec=5
TimeoutStopSec=5
```
* якщо не планується робота з портами нижче `1024`, то `CAP_NET_BIND_SERVICE` варто прибрати
* є ще цікава опція `--no-tun`, тоді можна обійтись без `CAP_NET_ADMIN` але:
> The system will participate in the network as usual, but won't be able to send out L3 packets