RustDesk web-client: TLS termination 21118/21119 + ports в compose NPM
NPM stack пересоздан с публикацией портов 21115-21119. Compose-файл теперь лежит на host /data/compose/2/docker-compose.yml (Portainer хранил только в своём volume — теперь синхронизированы). Custom stream.conf с TLS termination для 21118/21119 в /data/compose/2/data/nginx/custom/. wss://remot.dttb.ru:21118/ws/id и /ws/relay отвечают 101 Switching Protocols. WebClient доходит до hbbr с relay request, но peer должен быть online + залогинен в API чтобы соединение установилось. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -142,8 +142,8 @@ tail -f /var/log/rustdesk-api/rustdesk-api.log
|
||||
- **Admin REST API через curl без web-сессии не пускает.** Юзеров/группы создавать через https://remot.dttb.ru/_admin/.
|
||||
- **Admin генерит `/webclient2/`-ссылки на peer'ы, а api отдаёт WebClient на `/webclient/`** — баг lejianwen 2.7. В NPM Proxy Host 14 (advanced_config) добавлен `return 301 /webclient/$1$is_args$args` для `/webclient2/...`.
|
||||
- **NPM streams API** — PUT не работает (валидатор `additional properties`). Только DELETE + POST.
|
||||
- **NPM streams 21115-21119 не публикуются наружу docker-контейнера.** `docker port npm-app-1` показывает только 80/81/443. То есть `10.0.0.195:21118` снаружи **closed**, хотя внутри nginx слушает. Поэтому desktop RustDesk-клиенты подключаются напрямую на `10.0.0.244:21116` (LAN) или `100.70.191.161:21116` (NetBird), минуя NPM streams. Streams через NPM работают только если NPM был запущен через `docker compose up` с `ports: 21118:21118` и т.д. в compose-файле.
|
||||
- **WebClient в браузере (https://remot.dttb.ru/webclient/) НЕ работает.** Flutter app старый (rustdesk-api 2.7), он жёстко строит `wss://<id-host>:<id-port+2>` = `wss://remot.dttb.ru:21118` и игнорирует `window.ws_host`. Чтобы заработал — нужно (a) опубликовать порты 21118/21119 в docker-mapping NPM через compose, (b) включить TLS termination в NPM stream (через `ssl_certificate` в custom `/data/nginx/custom/stream.conf`), (c) при необходимости открыть эти порты на роутере dttb.ru. Отложено как отдельная задача — desktop-клиент покрывает основные потребности.
|
||||
- **NPM streams через UI/API не публикуются наружу docker-контейнера.** Нужно править compose-файл и пересоздавать контейнер. Compose лежит в `/data/compose/2/docker-compose.yml` на host LXC 103 (мы его положили туда, ранее Portainer хранил только в своём volume). При обновлении stack ВАЖНО: `cd /data/compose/2 && docker compose -p npm up -d` — relative `./data` resolve в `/data/compose/2/data` (где реальные данные NPM). НЕ обновляй stack через Portainer UI — он работает со своей копией compose в `/var/lib/docker/volumes/portainer_data/_data/compose/2/`, может перезаписать. Текущий compose содержит ports: 80, 81, 443, 21115-21119 (TCP+UDP где надо).
|
||||
- **WebClient в браузере** работает на инфра-уровне (wss://remot.dttb.ru:21118/ws/id и :21119/ws/relay → 101 Switching Protocols). TLS termination для 21118/21119 через `/data/compose/2/data/nginx/custom/stream.conf` (custom stream block в NPM с `listen 21118 ssl` + `ssl_certificate /etc/letsencrypt/live/npm-41/...`). Streams 21115/21117/21116-tcp/udp идут через обычные NPM streams (id 38, 39, 40, 43). Чтобы реально использовать — нужны online peers с api-server login. Подключение Mac→Mac через WebClient невозможно (это и есть `MUST_LOGIN`-style ошибка "не удалось подключиться к серверу ретрансляции").
|
||||
- **community-script может пытаться обновить пакеты** — `apt-mark hold` защищает hbbs/hbbr, но если запустить полный re-run скрипта community-scripts, могут быть сюрпризы. Не запускать без необходимости.
|
||||
- **`/proc/loadavg` в LXC = нагрузка хоста**, не контейнера ([[../../../knowledge-base/feedback_lxc_loadavg]] в memory).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user