diff --git a/post/zapusk-routera-mycelium-bez-root.md b/post/zapusk-routera-mycelium-bez-root.md new file mode 100644 index 0000000..5fa0322 --- /dev/null +++ b/post/zapusk-routera-mycelium-bez-root.md @@ -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 \ No newline at end of file