diff --git a/docs/fast.md b/docs/fast.md
index 6eb032e..3c248f0 100644
--- a/docs/fast.md
+++ b/docs/fast.md
@@ -9,151 +9,342 @@
-# Quick start
+# Quick start (via scripts)
> **Important:** always check that the video call service you need is on the allow lists, that it works in your network, and so on. If not, use another one.
-This method runs `olcrtc` as an ordinary native binary. You need Go 1.26+, mage, git and curl.
+This is the easiest way. Everything runs inside a [Podman](https://en.wikipedia.org/wiki/Podman) container. The script does everything itself: clones the [sources](https://github.com/openlibrecommunity/olcrtc), builds the binary in a container, generates a config and starts it.
-## Install dependencies
+The project is in beta. For issues: t.me/openlibrecommunity
+
+If you want to build the binary by hand, see [manual.md](manual.md).
+
+---
+
+## What to install
+
+### git
```sh
-apt install git curl # Debian / Ubuntu / Mint
-pacman -S git curl # Arch / CachyOS / Manjaro
-dnf install git curl # Fedora / RHEL / CentOS
+apt install git # Debian / Ubuntu / Mint
+pacman -S git # Arch / CachyOS / Manjaro
+dnf install git # Fedora / RHEL / CentOS
```
-Install Go 1.26+ and mage:
+### curl
```sh
-go install github.com/magefile/mage@latest
-echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrc
-source ~/.bashrc
+apt install curl # Debian / Ubuntu / Mint
+pacman -S curl # Arch / CachyOS / Manjaro
+dnf install curl # Fedora / RHEL / CentOS
```
-If the machine has less than 4 GB RAM, enable swap before building:
+### podman
+
+You do not have to install it up front - the script installs podman itself if it is missing. But if you want:
+
+```sh
+apt install podman # Debian / Ubuntu / Mint
+pacman -S podman # Arch / CachyOS / Manjaro
+dnf install podman # Fedora / RHEL / CentOS
+```
+
+### swap (RAM)
+
+If the machine has less than 4 GB RAM, the build may crash. **Enable SWAP**:
```sh
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
```
-## Build
+---
+
+## Step 1: Clone the repository
```sh
git clone https://github.com/openlibrecommunity/olcrtc --recurse-submodules
cd olcrtc
-mage build
```
-The binary lands in `build/`, for example:
+
+
+---
+
+## Step 2: Run the server
+
+On the machine the traffic should go through (VPS, server abroad, home PC):
```sh
-./build/olcrtc-linux-amd64
+./script/srv.sh
```
-## Generate a key
+The script installs podman if needed, clones the current code, builds the binary in a container and starts the server. Then it asks a few questions.
-The key must match on the server and the client.
+#### `srv.sh` flags
+
+| Flag | What it does |
+|---|---|
+| `--branch=` | Use another repository branch instead of `master` |
+| `--no-cache` | Purge the Go cache (`~/.cache/olcrtc`) before building - rebuild from scratch |
```sh
-openssl rand -hex 32
+./script/srv.sh --no-cache # build from scratch
+./script/srv.sh --branch=dev --no-cache # branch dev, no cache
```
-## Run the server
+### Carrier (which service carries the traffic)
-Create `server.yaml`:
-
-> **Important:** always check that the video call service you need is on the allow lists, that it works in your network, and so on. If not, use another one.
-
-```yaml
-mode: srv
-auth:
- provider: jitsi
-room:
-
- id: "https://meet.small-dm.ru/REPLACE_ME_WITH_ROOM_ID" # or https://meet.small-dm.ru/ROOM or https://meet1.arbitr.ru/ROOM or https://meet.handyweb.org/ROOM etc.
-
-crypto:
- key: "REPLACE_ME_WITH_64_HEX_CHARS"
-net:
- transport: datachannel
- dns: "8.8.8.8:53"
-data: data
+```
+Select carrier:
+ 1) jitsi
+ 2) telemost
+ 3) wbstream
+Enter choice [1-3, default: 1]:
```
-Run it:
+**Default is `jitsi`** - stable on datachannel, no registration needed, easy to self-host. Full compatibility matrix in [settings.md](settings.md).
+
+### Transport (how the data is carried)
+
+```
+Select transport:
+ 1) datachannel
+ 2) videochannel
+ 3) seichannel
+ 4) vp8channel
+Enter choice [1-4, default: 1]:
+```
+
+Recommendations:
+- **datachannel** - fastest, lowest ping. Stable with `jitsi`. **WBStream DC does not work** in the normal guest flow. **Telemost removed DC**.
+- **vp8channel** - works with telemost and wbstream, fast, but high ping.
+- **seichannel** - works only with wbstream, slow, but low ping.
+- **videochannel** - works with wbstream reliably, with telemost when possible; slowest and highest ping.
+
+**Recommended combo: `jitsi + datachannel`**. Alternative: `wbstream + vp8channel`.
+
+### Jitsi server (carrier jitsi only)
+
+```
+Choose a Jitsi server (check in the browser which one works in your network):
+ 1) https://meet.small-dm.ru/
+ 2) https://meet1.arbitr.ru/
+ 3) https://meet.handyweb.org/
+ 4) Other (enter manually)
+Enter number [1-4, default: 1]:
+```
+
+Pick the one that **opens in your browser**. Any public or self-hosted Jitsi Meet works - choose `4` and enter your URL.
+
+### Room (carrier jitsi only)
+
+```
+Room options:
+ 1) Auto-generate new room (recommended)
+ 2) Use specific room name or URL
+Enter choice [1-2, default: 1]:
+```
+
+- **1) Auto-generate** - the script picks a room name on the chosen server. Recommended.
+- **2) Specific** - enter a room name (`myroom`) or a full URL (`https://meet.small-dm.ru/myroom`).
+
+For **telemost** and **wbstream** the Jitsi menu is not shown - the script asks for the Room ID directly. Create a room on the site ([telemost](https://telemost.yandex.ru/), [wbstream](https://stream.wb.ru)) and paste its ID.
+
+### DNS
+
+```
+DNS server [default: 8.8.8.8:53]:
+```
+
+Press Enter. No need to change it without a reason; if you want - `77.88.8.8:53` or your provider's DNS.
+
+### SOCKS5 proxy for egress
+
+```
+Use SOCKS5 proxy for egress? (y/N):
+```
+
+If not needed - just Enter. If the server itself should go through an external proxy - type `y` and enter the address and port.
+
+### Transport settings (videochannel only)
+
+```
+Video codec:
+ 1) qrcode
+ 2) tile (requires 1080x1080)
+Enter choice [1-2, default: 1]:
+```
+
+- **qrcode** - QR codes, configurable resolution, stable, slow.
+- **tile** - tile codec, 1080x1080 only, Reed-Solomon support, faster but less stable.
+
+Then the script asks for width/height, QR error correction, fragment size (or tile params), FPS, bitrate and hardware acceleration (`none`/`nvenc`). Press Enter for defaults.
+
+### Transport settings (vp8channel only)
+
+```
+VP8 FPS [default: 25]:
+VP8 batch size (frames per tick) [default: 1]:
+```
+
+Press Enter if `25` and `1` are fine.
+
+### Transport settings (seichannel only)
+
+```
+SEI FPS [default: 60]:
+SEI batch size (frames per tick) [default: 64]:
+SEI fragment size in bytes [default: 900]:
+SEI ACK timeout in milliseconds [default: 2000]:
+```
+
+Press Enter on all - the defaults are optimal.
+
+### Config comment
+
+```
+Enter a comment for the config (default: olc - t.me/openlibrecommunity):
+```
+
+This is the label for the resulting `olcrtc://` URI. You can leave it empty (Enter).
+
+### Result
+
+After startup the script prints the container name, carrier, transport, Room ID, the **encryption key** and a ready `olcrtc://` URI:
+
+```
+[+] Server started successfully!
+
+Container name: olcrtc-server-xxxxxxxx
+Carrier: jitsi
+Transport: datachannel
+Room ID/URL: https://meet.small-dm.ru/olcrtc-xxxxxxxx
+Encryption key: d823fa01cb3e0609b67322f7cf984c4ee2e294936fc24ef38c9e59f4799...
+
+uri: olcrtc://jitsi?datachannel@https://meet.small-dm.ru/olcrtc-xxxxxxxx#$olc - t.me/openlibrecommunity
+```
+
+**Save the Room ID and the encryption key** - the client needs them. The key is also saved to `~/.olcrtc_key` and reused on later runs.
+
+---
+
+## Step 3: Run the client
+
+On your machine (home PC, laptop):
```sh
-./build/olcrtc-linux-amd64 server.yaml
+git clone https://github.com/openlibrecommunity/olcrtc --recurse-submodules
+cd olcrtc
+./script/cnc.sh
```
-## Run the client
+Answer the same questions as on the server - **auth, transport and room ID must match**. For jitsi the script asks for the same server choice and room name/URL.
-Create `client.yaml` on the client machine. `auth.provider`, `room.id`, `crypto.key` and `net.transport` must match the server.
+When it asks for the key:
-> **Important:** always check that the video call service you need is on the allow lists, that it works in your network, and so on. If not, use another one.
-
-```yaml
-mode: cnc
-auth:
- provider: jitsi
-room:
- id: "https://meet.small-dm.ru/REPLACE_ME_WITH_ROOM_ID" # or https://meet.small-dm.ru/ROOM or https://meet1.arbitr.ru/ROOM or https://meet.handyweb.org/ROOM etc.
-crypto:
- key: "REPLACE_ME_WITH_64_HEX_CHARS"
-net:
- transport: datachannel
- dns: "8.8.8.8:53"
-socks:
- host: "127.0.0.1"
- port: 8808
-data: data
+```
+Enter Encryption Key (hex):
```
-Run it:
+Paste the key from the server (64 hex characters).
-```sh
-./build/olcrtc-linux-amd64 client.yaml
+### SOCKS5: address, port, auth
+
+```
+SOCKS5 ip [default: 127.0.0.1]:
+SOCKS5 port [default: 8808]:
+SOCKS5 username (leave empty to disable auth):
```
-After startup SOCKS5 listens on `127.0.0.1:8808`.
+Press Enter for address and port - the proxy comes up on `127.0.0.1:8808`. If you want login/password protection - enter the username, then the password. When binding outside loopback (not `127.*`) a username and password are required.
-## Verify
+### Result
+
+```
+[+] Client started successfully!
+
+Container name: olcrtc-client-xxxxxxxx
+Auth: jitsi
+Transport: datachannel
+Room ID/URL: https://meet.small-dm.ru/olcrtc-xxxxxxxx
+SOCKS5 proxy: 127.0.0.1:8808
+```
+
+---
+
+## Step 4: Verify
```sh
curl --socks5-hostname 127.0.0.1:8808 https://icanhazip.com
```
-It should return the server IP.
+It should return your server IP.
+
+Or route all traffic through the proxy:
+
+```sh
+export all_proxy=socks5h://127.0.0.1:8808
+curl https://icanhazip.com
+```
+
+---
## Control
-Stop a manual run with `Ctrl+C`.
-
-If the process runs in the background:
+### Logs
```sh
-pgrep -af olcrtc
-kill
+podman ps --filter name=olcrtc
+podman logs -f olcrtc-server-xxxxxxxx # on the server
+podman logs -f olcrtc-client-xxxxxxxx # on the client
```
-Update:
+### Stop
```sh
-git pull --recurse-submodules
-mage build
+podman stop olcrtc-server-xxxxxxxx
+podman stop olcrtc-client-xxxxxxxx
```
-Restart the server and the client with the same YAML configs.
+Stop all olcrtc containers at once:
-## Multiple instances
-
-You can run several servers or clients on one machine: create a separate YAML for each instance. For clients use different SOCKS5 ports:
-
-```yaml
-socks:
- host: "127.0.0.1"
- port: 8809
+```sh
+podman stop $(podman ps -q --filter name=olcrtc)
```
-All settings and the compatibility matrix: [settings.md](settings.md). Detailed manual build: [manual.md](manual.md).
+---
+
+## Update a running instance
+
+A running container does not update itself: it keeps the binary built at start time. To move to the current code, stop the old container and run the script again.
+
+```sh
+cd olcrtc
+git pull --recurse-submodules # update local scripts
+podman stop olcrtc-server-xxxxxxxx # stop the old container
+./script/srv.sh --no-cache # start again with fresh code
+```
+
+`--no-cache` is optional but guarantees a clean rebuild. On the rerun use the same `auth`, `transport`, `room ID` and key. The server key lives in `~/.olcrtc_key` and is reused automatically.
+
+---
+
+## Multiple instances on one machine
+
+You can run several servers or clients on one machine - each run creates a container with a unique name (`olcrtc-server-`), they do not conflict.
+
+```sh
+./script/srv.sh # first instance - e.g. jitsi + datachannel
+./script/srv.sh # second instance - e.g. wbstream + vp8channel
+```
+
+On the client run a separate `cnc.sh` for each instance with **different SOCKS5 ports** to switch between them:
+
+```sh
+./script/cnc.sh # first client - port 8808 (default)
+./script/cnc.sh # second client - set port 8809
+```
+
+---
+
+All settings and the compatibility matrix: [settings.md](settings.md). Manual build without scripts: [manual.md](manual.md).
diff --git a/docs/fast.ru.md b/docs/fast.ru.md
index 18f2d8f..df2b2d4 100644
--- a/docs/fast.ru.md
+++ b/docs/fast.ru.md
@@ -9,151 +9,342 @@
-# Быстрый старт
+# Быстрый старт (через скрипты)
-> **Важно:** Обязательно проверяйте, есть ли сервис видеозвонков у вас в белых списках, работает ли он и так далее, если нет - используйте другой.
+> **Важно:** Обязательно проверяйте, есть ли сервис видеозвонков у вас в белых списках, работает ли он в вашей сети и так далее. Если нет - используйте другой.
-Этот способ запускает `olcrtc` как обычный нативный бинарник. Нужны Go 1.26+, mage, git и curl.
+Это самый простой способ. Всё запускается в контейнере [Podman](https://ru.wikipedia.org/wiki/Podman). Скрипт делает всё сам: клонирует [исходники](https://github.com/openlibrecommunity/olcrtc), собирает бинарник в контейнере, генерирует конфиг и запускает.
-## Установить зависимости
+Проект в бете. По проблемам: t.me/openlibrecommunity
+
+Хочешь собрать бинарник руками - смотри [manual.ru.md](manual.ru.md).
+
+---
+
+## Что нужно установить
+
+### git
```sh
-apt install git curl # Debian / Ubuntu / Mint
-pacman -S git curl # Arch / CachyOS / Manjaro
-dnf install git curl # Fedora / RHEL / CentOS
+apt install git # Debian / Ubuntu / Mint
+pacman -S git # Arch / CachyOS / Manjaro
+dnf install git # Fedora / RHEL / CentOS
```
-Установи Go 1.26+ и mage:
+### curl
```sh
-go install github.com/magefile/mage@latest
-echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrc
-source ~/.bashrc
+apt install curl # Debian / Ubuntu / Mint
+pacman -S curl # Arch / CachyOS / Manjaro
+dnf install curl # Fedora / RHEL / CentOS
```
-Если на машине меньше 4 ГБ RAM, включи swap перед сборкой:
+### podman
+
+Можно не ставить заранее - скрипт сам поставит podman, если его нет. Но при желании:
+
+```sh
+apt install podman # Debian / Ubuntu / Mint
+pacman -S podman # Arch / CachyOS / Manjaro
+dnf install podman # Fedora / RHEL / CentOS
+```
+
+### swap (ОЗУ)
+
+Если на машине меньше 4 ГБ оперативной памяти, сборка может вылетать. **Включите SWAP**:
```sh
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
```
-## Собрать
+---
+
+## Шаг 1: Скачать репозиторий
```sh
git clone https://github.com/openlibrecommunity/olcrtc --recurse-submodules
cd olcrtc
-mage build
```
-Бинарник появится в `build/`, например:
+
+
+---
+
+## Шаг 2: Запустить сервер
+
+На машине, через которую должен идти трафик (VPS, сервер за рубежом, домашний ПК):
```sh
-./build/olcrtc-linux-amd64
+./script/srv.sh
```
-## Сгенерировать ключ
+Скрипт сам поставит podman при необходимости, склонирует актуальный код, соберёт бинарник в контейнере и запустит сервер. Дальше он задаст вопросы.
-Ключ должен совпадать на сервере и клиенте.
+#### Флаги `srv.sh`
+
+| Флаг | Что делает |
+|---|---|
+| `--branch=` | Использовать другую ветку репозитория вместо `master` |
+| `--no-cache` | Очистить Go-кеш (`~/.cache/olcrtc`) перед сборкой - пересобрать с нуля |
```sh
-openssl rand -hex 32
+./script/srv.sh --no-cache # сборка с нуля
+./script/srv.sh --branch=dev --no-cache # ветка dev, без кеша
```
-## Запустить сервер
+### Carrier (на каком сервисе передавать трафик)
-Создай `server.yaml`:
-
-> **Важно:** Обязательно проверяйте, есть ли сервис видеозвонков у вас в белых списках, работает ли он и так далее, если нет - используйте другой.
-
-```yaml
-mode: srv
-auth:
- provider: jitsi
-room:
-
- id: "https://meet.small-dm.ru/REPLACE_ME_WITH_ROOM_ID" # или же https://meet.small-dm.ru/ROOM или https://meet1.arbitr.ru/ROOM или https://meet.handyweb.org/ROOM и т.д.
-
-crypto:
- key: "REPLACE_ME_WITH_64_HEX_CHARS"
-net:
- transport: datachannel
- dns: "8.8.8.8:53"
-data: data
+```
+Select carrier:
+ 1) jitsi
+ 2) telemost
+ 3) wbstream
+Enter choice [1-3, default: 1]:
```
-Запусти:
+**По умолчанию `jitsi`** - стабильно работает на datachannel, не требует регистрации, легко поднимается на своём сервере. Полная матрица совместимости - в [settings.ru.md](settings.ru.md).
+
+### Transport (как именно передавать данные)
+
+```
+Select transport:
+ 1) datachannel
+ 2) videochannel
+ 3) seichannel
+ 4) vp8channel
+Enter choice [1-4, default: 1]:
+```
+
+Рекомендации:
+- **datachannel** - самый быстрый, минимальный пинг. Стабильно работает с `jitsi`. **WBStream DC не работает** в обычном guest flow. **Telemost удалил DC**.
+- **vp8channel** - работает с telemost и wbstream, быстрый, но большой пинг.
+- **seichannel** - работает только с wbstream, медленный, но мелкий пинг.
+- **videochannel** - работает с wbstream стабильно, с telemost по возможности; самый медленный и с большим пингом.
+
+**Рекомендуемая комбинация: `jitsi + datachannel`**. Альтернатива: `wbstream + vp8channel`.
+
+### Jitsi-сервер (только для carrier jitsi)
+
+```
+Выберите Jitsi-сервер (проверьте в браузере, какой работает в вашей сети):
+ 1) https://meet.small-dm.ru/
+ 2) https://meet1.arbitr.ru/
+ 3) https://meet.handyweb.org/
+ 4) Другой (ввести вручную)
+Введите номер [1-4, по умолчанию: 1]:
+```
+
+Выбери тот сервер, который **открывается в твоём браузере**. Подойдёт любой публичный или self-hosted Jitsi Meet - выбери `4` и введи свой URL.
+
+### Room (только для carrier jitsi)
+
+```
+Room options:
+ 1) Auto-generate new room (recommended)
+ 2) Use specific room name or URL
+Enter choice [1-2, default: 1]:
+```
+
+- **1) Auto-generate** - скрипт сам придумает имя комнаты на выбранном сервере. Рекомендуется.
+- **2) Specific** - введи имя комнаты (`myroom`) или полный URL (`https://meet.small-dm.ru/myroom`).
+
+Для **telemost** и **wbstream** Jitsi-меню не показывается - скрипт спросит Room ID напрямую. Создай руму через сайт ([telemost](https://telemost.yandex.ru/), [wbstream](https://stream.wb.ru)) и вставь её ID.
+
+### DNS
+
+```
+DNS server [default: 8.8.8.8:53]:
+```
+
+Нажми Enter. Менять не нужно без причины; при желании - `77.88.8.8:53` или DNS твоего провайдера.
+
+### SOCKS5-прокси для исходящего трафика
+
+```
+Use SOCKS5 proxy for egress? (y/N):
+```
+
+Если не нужно - просто Enter. Если сервер сам должен ходить через внешний прокси - введи `y` и укажи адрес и порт.
+
+### Параметры транспорта (только videochannel)
+
+```
+Video codec:
+ 1) qrcode
+ 2) tile (requires 1080x1080)
+Enter choice [1-2, default: 1]:
+```
+
+- **qrcode** - QR-коды, настраиваемое разрешение, стабильный, медленный.
+- **tile** - тайловый кодек, только 1080x1080, поддержка Reed-Solomon, быстрее, но менее стабилен.
+
+Дальше скрипт спросит ширину/высоту, коррекцию ошибок QR, размер фрагмента (или параметры tile), FPS, битрейт и аппаратное ускорение (`none`/`nvenc`). Для значений по умолчанию жми Enter.
+
+### Параметры транспорта (только vp8channel)
+
+```
+VP8 FPS [default: 25]:
+VP8 batch size (frames per tick) [default: 1]:
+```
+
+Жми Enter, если устраивают `25` и `1`.
+
+### Параметры транспорта (только seichannel)
+
+```
+SEI FPS [default: 60]:
+SEI batch size (frames per tick) [default: 64]:
+SEI fragment size in bytes [default: 900]:
+SEI ACK timeout in milliseconds [default: 2000]:
+```
+
+Жми Enter на всех - значения по умолчанию оптимальны.
+
+### Комментарий к конфигу
+
+```
+Enter a comment for the config (default: olc - t.me/openlibrecommunity):
+```
+
+Это подпись для итогового `olcrtc://` URI. Можно оставить пустым (Enter).
+
+### Результат
+
+После запуска скрипт выведет имя контейнера, carrier, transport, Room ID, **ключ шифрования** и готовый `olcrtc://` URI:
+
+```
+[+] Server started successfully!
+
+Container name: olcrtc-server-xxxxxxxx
+Carrier: jitsi
+Transport: datachannel
+Room ID/URL: https://meet.small-dm.ru/olcrtc-xxxxxxxx
+Encryption key: d823fa01cb3e0609b67322f7cf984c4ee2e294936fc24ef38c9e59f4799...
+
+uri: olcrtc://jitsi?datachannel@https://meet.small-dm.ru/olcrtc-xxxxxxxx#$olc - t.me/openlibrecommunity
+```
+
+**Сохрани Room ID и ключ шифрования** - они нужны для клиента. Ключ также сохраняется в `~/.olcrtc_key` и переиспользуется при повторных запусках.
+
+---
+
+## Шаг 3: Запустить клиент
+
+На своей машине (домашний ПК, ноутбук):
```sh
-./build/olcrtc-linux-amd64 server.yaml
+git clone https://github.com/openlibrecommunity/olcrtc --recurse-submodules
+cd olcrtc
+./script/cnc.sh
```
-## Запустить клиент
+Отвечай на те же вопросы, что и на сервере - **auth, transport и room ID должны совпадать**. Для jitsi скрипт спросит тот же выбор сервера и имя/URL комнаты.
-Создай `client.yaml` на клиентской машине. `auth.provider`, `room.id`, `crypto.key` и `net.transport` должны совпадать с сервером.
+Когда спросит ключ:
-> **Важно:** Обязательно проверяйте, есть ли сервис видеозвонков у вас в белых списках, работает ли он и так далее, если нет - используйте другой.
-
-```yaml
-mode: cnc
-auth:
- provider: jitsi
-room:
- id: "https://meet.small-dm.ru/REPLACE_ME_WITH_ROOM_ID" # или же https://meet.small-dm.ru/ROOM или https://meet1.arbitr.ru/ROOM или https://meet.handyweb.org/ROOM и т.д.
-crypto:
- key: "REPLACE_ME_WITH_64_HEX_CHARS"
-net:
- transport: datachannel
- dns: "8.8.8.8:53"
-socks:
- host: "127.0.0.1"
- port: 8808
-data: data
+```
+Enter Encryption Key (hex):
```
-Запусти:
+Вставь ключ с сервера (64 hex-символа).
-```sh
-./build/olcrtc-linux-amd64 client.yaml
+### SOCKS5: адрес, порт, аутентификация
+
+```
+SOCKS5 ip [default: 127.0.0.1]:
+SOCKS5 port [default: 8808]:
+SOCKS5 username (leave empty to disable auth):
```
-После запуска SOCKS5 будет слушать на `127.0.0.1:8808`.
+Жми Enter для адреса и порта - прокси поднимется на `127.0.0.1:8808`. Если нужна защита логином/паролем - введи логин, затем пароль. При биндинге вне loopback (не `127.*`) логин и пароль обязательны.
-## Проверить
+### Результат
+
+```
+[+] Client started successfully!
+
+Container name: olcrtc-client-xxxxxxxx
+Auth: jitsi
+Transport: datachannel
+Room ID/URL: https://meet.small-dm.ru/olcrtc-xxxxxxxx
+SOCKS5 proxy: 127.0.0.1:8808
+```
+
+---
+
+## Шаг 4: Проверить
```sh
curl --socks5-hostname 127.0.0.1:8808 https://icanhazip.com
```
-Должен вернуться IP сервера.
+Должен вернуться IP твоего сервера.
+
+Или направить весь трафик через прокси:
+
+```sh
+export all_proxy=socks5h://127.0.0.1:8808
+curl https://icanhazip.com
+```
+
+---
## Управление
-Остановка ручного запуска - `Ctrl+C`.
-
-Если процесс запущен в фоне:
+### Логи
```sh
-pgrep -af olcrtc
-kill
+podman ps --filter name=olcrtc
+podman logs -f olcrtc-server-xxxxxxxx # на сервере
+podman logs -f olcrtc-client-xxxxxxxx # на клиенте
```
-Обновление:
+### Остановить
```sh
-git pull --recurse-submodules
-mage build
+podman stop olcrtc-server-xxxxxxxx
+podman stop olcrtc-client-xxxxxxxx
```
-Перезапусти сервер и клиент с теми же YAML-конфигами.
+Остановить все olcrtc-контейнеры разом:
-## Несколько инстансов
-
-Можно запустить несколько серверов или клиентов на одной машине: создай отдельный YAML для каждого инстанса. Для клиентов используй разные SOCKS5-порты:
-
-```yaml
-socks:
- host: "127.0.0.1"
- port: 8809
+```sh
+podman stop $(podman ps -q --filter name=olcrtc)
```
-Все настройки и матрица совместимости: [settings.md](settings.ru.md). Подробная ручная сборка: [manual.md](manual.ru.md).
+---
+
+## Обновить уже запущенный инстанс
+
+Запущенный контейнер сам не обновляется: внутри него остаётся бинарник, собранный на момент запуска. Чтобы перейти на актуальный код, останови старый контейнер и запусти скрипт заново.
+
+```sh
+cd olcrtc
+git pull --recurse-submodules # обновить локальные скрипты
+podman stop olcrtc-server-xxxxxxxx # остановить старый контейнер
+./script/srv.sh --no-cache # запустить заново со свежим кодом
+```
+
+`--no-cache` не обязателен, но гарантирует пересборку с нуля. При повторном запуске укажи те же `auth`, `transport`, `room ID` и ключ. Серверный ключ хранится в `~/.olcrtc_key` и переиспользуется автоматически.
+
+---
+
+## Несколько инстансов на одной машине
+
+Можно запустить несколько серверов или клиентов на одной машине - каждый запуск создаёт контейнер с уникальным именем (`olcrtc-server-`), они не конфликтуют.
+
+```sh
+./script/srv.sh # первый инстанс - например jitsi + datachannel
+./script/srv.sh # второй инстанс - например wbstream + vp8channel
+```
+
+На клиенте для каждого инстанса запускай отдельный `cnc.sh` с **разными SOCKS5-портами**, чтобы переключаться между ними:
+
+```sh
+./script/cnc.sh # первый клиент - порт 8808 (по умолчанию)
+./script/cnc.sh # второй клиент - укажи порт 8809
+```
+
+---
+
+Все настройки и матрица совместимости: [settings.ru.md](settings.ru.md). Ручная сборка без скриптов: [manual.ru.md](manual.ru.md).