================================================================================ 24remotedesk: звук (rd-audio), nginx, Happ/прокси и «гугл через VPN» ================================================================================ --- 1) Звук: что уже есть в репозитории --- app/rd-audio.js — браузер, WebSocket /rd-audio, PCM s16le stereo 44100 scripts/rd-audio-ws-server.py — раздаёт stdin в WebSocket (только 127.0.0.1) scripts/run-rd-audio.sh — ffmpeg (pulse) | python scripts/nginx-rd-audio.conf — proxy в location /rd-audio На сервере (Linux, там же где VNC и звуковая сессия): sudo apt install -y ffmpeg python3-pip cd /home/vncuser/noVNC/scripts pip3 install --user -r requirements-rd-audio.txt Проверь имя устройства Pulse: pactl info | grep Default При необходимости в run-rd-audio.sh замени "-i default" на "-i <имя_sink>". Запуск вручную: chmod +x run-rd-audio.sh ./run-rd-audio.sh systemd (пример): User=vncuser, Environment=PULSE_SERVER=unix:/run/user/UID/pulse/native, рабочая директория scripts, ExecStart=/полный/путь/run-rd-audio.sh Nginx: добавь содержимое nginx-rd-audio.conf в server { } для HTTPS. sudo nginx -t && sudo systemctl reload nginx В vnc.html meta rd-audio-ws можно оставить "auto" — клиент сам возьмёт wss://этот_хост/rd-audio --- 2) Happ на сервере и доступ по nginx --- Happ в десктопной версии — это в основном КЛИЕНТ с графическим интерфейсом. На сервере без GUI обычно ставят тот же стек, что использует Happ под капотом: sing-box, Xray, mihomo (Clash Meta) — с systemd и конфигом. Задача: входящие к nginx (443) с интернета НЕ должны «ломаться», когда ты включаешь исходящий VPN/прокси на машине. Правильная схема: A) TUN/глобальный VPN на сервере — опасно для nginx: ответы могут уйти не в тот интерфейс. Нужны policy routing, bypass для локальных сетей, иногда отдельная таблица маршрутов (см. документацию к твоему клиенту: «bypass mainland», «direct» для локальной сети и публичного IP сервера). B) Проще: НЕ поднимать системный default-route через VPN, а поднять ЛОКАЛЬНЫЙ прокси (mixed/socks на 127.0.0.1:7890) и направить в него ТОЛЬКО браузер внутри удалённой сессии (Firefox: Settings → Network → Manual proxy). Тогда: - nginx слушает 0.0.0.0:443 — как раньше, клиенты подключаются к 24remotedesk; - Firefox/Chromium в VNC использует 127.0.0.1:7890 — трафик «гугл и т.д.» идёт через sing-box/Xray; остальное системы — напрямую. Если нужен «весь трафик пользователя vncuser через VPN»: - sing-box с TUN + в routing правилах: direct для dst: порт 443 на публичном IP сервера (или для uid процесса nginx), proxy для остального от uid vncuser — это уже тонкая настройка (см. доки sing-box «rule», «route»). --- 2b) Уже лежит в noVNC/scripts (ручной прокси только для Firefox) --- ff-proxy-user.js — настройки Firefox: HTTP/HTTPS/SOCKS5 → 127.0.0.1:7890 apply-firefox-proxy.sh — копирует ff-proxy-user.js в ~/.mozilla/firefox/*.default*/user.js sing-box-mixed-7890.json — минимальный sing-box: mixed только на 127.0.0.1:7890, outbound direct install-vnc-proxy-stack.sh — запуск sing-box с этим конфигом (нужен бинарник sing-box) Порядок в сессии VNC под пользователем vncuser: 1) Установить sing-box (официальный релиз с GitHub под amd64/arm64). 2) В одном терминале: ./install-vnc-proxy-stack.sh (или: sing-box run -c /home/vncuser/noVNC/scripts/sing-box-mixed-7890.json) 3) Один раз: chmod +x apply-firefox-proxy.sh && ./apply-firefox-proxy.sh 4) Перезапустить Firefox — весь его трафик пойдёт в mixed 7890. Пока в JSON outbound = direct, «VPN» не включён — замени конфиг на свой (VLESS и т.д.) из подписки / экспорта Happ → sing-box, сохранив inbound mixed на 127.0.0.1:7890. --- 3) Краткий чеклист --- [ ] rd-audio: run-rd-audio.sh под пользователем с активным Pulse, nginx /rd-audio [ ] Прокси: sing-box/Xray на 127.0.0.1:7890, браузер в VNC → этот прокси [ ] Или: TUN + обязательный bypass для входящего nginx и SSH по white IP Установка «как Happ» на сервере = установка sing-box/Xray + импорт подписки/конфига, а не пакет happ.deb на headless-сервер (его обычно не ставят).