# rustdesk-custom Тонкий overlay поверх [RustDesk](https://github.com/rustdesk/rustdesk): собирает **преднастроенный** клиент RustDesk, из коробки указывающий на свой self-hosted сервер (hbbs/hbbr). Сам код RustDesk сюда не форкается — апстрейт клонируется в CI по пину и патчится минимальным скриптом. ## Как это работает RustDesk в 1.4.9 хранит адрес сервера и публичный ключ как **хардкод-константы** в сабмодуле `hbb_common` (`RENDEZVOUS_SERVERS`, `RS_PUB_KEY` в `libs/hbb_common/src/config.rs`). Старого механизма `option_env!` в актуальном master нет. Поэтому преднастройка = патч этих двух констант перед сборкой ([`scripts/preconfigure.sh`](scripts/preconfigure.sh)). Значения (адрес сервера, ключ) **не хранятся в этом публичном репозитории**: - локально — в `config/server.env` (в `.gitignore`); - в CI — в gitea Actions secrets. ## Быстрый старт (локально, Windows) ```powershell copy config\server.env.example config\server.env # заполнить RUSTDESK_SERVER / RUSTDESK_PUB_KEY pwsh -File scripts\build-windows.ps1 ``` Тулчейн (Rust 1.75, LLVM 15.0.6, Flutter 3.24.5, vcpkg@пин) нужно поднять один раз — см. [docs/CODEMAP.md](docs/CODEMAP.md). Первая сборка долгая: vcpkg компилит ffmpeg/aom из исходников. ## Пины Все версии зафиксированы в [`upstream.txt`](upstream.txt) (правило проекта: никаких `latest`). Обновление RustDesk = поднять `RUSTDESK_TAG` и сверить остальные пины с новым `flutter-build.yml` апстрима. ## Платформы - **Windows** — локально на GUSIK-PC + CI-раннер `windows:host`. - **Android** — CI на build-VM 118 (NDK r28c, cargo-ndk 3.1.2), раздача APK как в GusVoice (gitea release + self-hosted F-Droid). ## Лицензия RustDesk распространяется под AGPL-3.0. Собранные этим overlay бинарники — производная работа RustDesk и подчиняются AGPL-3.0. Скрипты этого репозитория — тонкая обвязка сборки.