devzone.org.ua/post/zapusk-routera-mycelium-bez-root.md
2026-01-31 07:01:28 +02:00

2 KiB
Raw Blame History

Запуск роутера Mycelium без root

Щоб не повторюватись, схожа тема про Запуск роутера Yggdrasil без root.

Відмінність рішення для Mycelium - полягає лише у тому, що тут не потрібно вказувати адреси UNIX-сокета.

useradd -s /usr/sbin/nologin -M mycelium

Якщо файл ключа було згенеровано раніше, myceliumd для нього встановлює права 0400, отже потрібно актуалізувати й власника - інакше сервіс не зможе запуститись від нового користувача mycelium:

chown mycelium:mycelium /etc/mycelium.bin

Тепер створюємо сервіс:

#/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