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

Щоб не повторюватись, схожа тема:
=> run-yggdrasil-without-root.gmi Запуск роутера Yggdrasil без root

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

``` bash
useradd -s /usr/sbin/nologin -Mr 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