add localhost config example

This commit is contained in:
postscriptum 2026-02-02 10:10:24 +02:00
parent b7051ee38e
commit 45a05c1734

View file

@ -116,20 +116,55 @@ ufw allow from a.a.a.a to b.b.b.b port 9150 proto tcp
* a.a.a.a - хост клієнта
* b.b.b.b - хост сервера
## Системний сервіс
Сервіс systemd я пускаю від окремого користувача, до теки якого складатиму журнали і файл конфігурації:
Для подальшого запуску з systemd, користувача створив наступним чином:
``` bash
sudo useradd -m arti
```
* тобто, з домашньою текою, де роутер зберігатиме дані сесії за замочуванням - використовуючи змінні оточення `${ARTI_CACHE}` і `${ARTI_LOCAL_DATA}`
### Локальний хост
Я довго думав, яким чином організувати багато-користувацький простір, щоб не конфліктували між собою сесії при запуску через системний сервіс. Взагалі, роутер розрахований на запуск від поточного системного користувача з подальшим зберіганням даних сесії в його домашній теці. Утім, я хочу обмежити доступ цього експериментального софту до моїх персональних даних в робочому середовищі.
Можливо, це не правильно, але оскільки сервіс один, я організував профіль роутера наступним чином:
``` bash
useradd -s /usr/sbin/nologin -Mr arti
```
* створюється прихований системний користувач `arti` без домашньої теки
Тепер знадобляться дві нові теки:
``` bash
mkdir /var/lib/arti
mkdir /var/log/arti
```
На які потрібно дати права:
``` bash
chown arti:arti -R /var/lib/arti
chown arti:arti -R /var/log/arti
```
У файлі конфігурації, вказуємо:
``` config.toml
[storage]
state_dir = "/var/lib/arti/state"
cache_dir = "/var/lib/arti/cache"
port_info_file = "/var/lib/arti/public/port_info.json"
```
* варто звернути увагу на всі змінні оточення (які починаються на `$`) але мені вистачило перевизначення тільки вказаних
### Системний сервіс
Приклад конфігурації для Debian є в репозиторії:
=> https://gitlab.torproject.org/tpo/core/arti/-/blob/main/debian/systemd/arti.service
Але в мене вона інша:
```
``` /etc/systemd/system/arti.service
[Unit]
Description=System Tor Service (Arti)
After=network.target
@ -141,7 +176,7 @@ Type=simple
User=arti
Group=arti
ExecStart=/usr/local/bin/arti --config /home/arti/config.toml -l warn proxy
ExecStart=/usr/local/bin/arti --config /path/to/config.toml -l warn proxy
ExecReload=/bin/kill -HUP ${MAINPID}
KillSignal=SIGINT
@ -152,19 +187,15 @@ PrivateTmp=yes
PrivateDevices=yes
ProtectHome=yes
ProtectSystem=full
#ReadOnlyDirectories=/
#ReadWriteDirectories=-/var/lib/arti
#ReadWriteDirectories=-/var/log/arti
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
StandardOutput=file:///home/arti/debug.log
StandardError=file:///home/arti/error.log
# StandardOutput=file:///path/to/debug.log
# StandardError=file:///path/to/error.log
[Install]
WantedBy=multi-user.target
```
* вказати актуальний шлях `/path/to/config.toml` - це може бути домашня тека або простір `/etc`
Щоб (пере)запустити сервер:
@ -253,7 +284,7 @@ sudo etherape
Тому я вирішив проблему скидання кешу видаленням директорії профілю:
``` bash
rm -rf ~/.local/share/arti
rm -rf /home/arti/.local/share/arti
```
* у вас цей шлях може різнитися, в залежності від способу запуску роутера