- Убраны все машинно/инфра-специфичные данные из README/CODEMAP/скриптов/ workflows (хосты, IP, домен gitea -> github.server_url). - preconfigure: enable-check-update=N (выкл. проверку обновлений); подсказка «set up your own server» и так гаснет с override-сервером. - CI публикует exe/apk в Gitea Release `latest` (обновляется каждый прогон, стабильная ссылка) + версионный релиз на теге v*. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.4 KiB
rustdesk-custom
Тонкий overlay поверх 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).
Значения (адрес сервера, ключ) не хранятся в этом публичном репозитории:
- локально — в
config/server.env(в.gitignore); - в CI — в gitea Actions secrets.
Быстрый старт (локально, Windows)
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. Первая сборка долгая: vcpkg компилит ffmpeg/aom из исходников.
Пины и обновление версии RustDesk
Все версии зафиксированы в upstream.txt (правило проекта: никаких latest).
Файл автогенерится — при бампе апстрима меняется не только тег, но и весь тулчейн
(Flutter/vcpkg/LLVM/FRB апстрим двигает между релизами), поэтому пины тянутся из CI-конфигов
самого целевого тега, а не проставляются вручную.
Подтянуть свежую версию и пересобрать под себя:
bash scripts/bump-upstream.sh latest # или конкретный тег: bash scripts/bump-upstream.sh 1.5.0
# -> перепишет upstream.txt пинами из CI этого тега (с диффом)
pwsh -File scripts/build-windows.ps1 # provision сам доустановит новые Flutter/vcpkg/LLVM -> пересборка
build-windows.ps1 в начале зовёт provision-windows.ps1 — тот
идемпотентно доводит тулчейн до пинов (ставит только отсутствующее/несовпадающее по версии). То есть
один и тот же build-windows.ps1 работает и для текущей, и для только что бампнутой версии.
В CI бамп = закоммитить обновлённый upstream.txt и запустить workflow.
Платформы
- Windows — локально + CI-раннер с меткой
windows. - Android (arm64-v8a) — CI-раннер с меткой
android(NDK r28c, cargo-ndk 3.1.2); раздача APK через Gitea Release (+ self-hosted F-Droid опционально).
Публикация артефактов
CI кладёт свежие exe/apk в Gitea Release latest (обновляется каждый прогон — стабильная ссылка
на актуальный билд). На теге v* — дополнительно версионный релиз. Триггеры: тег v* или ручной запуск
workflow. Значения сервера/ключа/пароля берутся из Actions secrets (в репозитории их нет).
Лицензия
RustDesk распространяется под AGPL-3.0. Собранные этим overlay бинарники — производная работа RustDesk и подчиняются AGPL-3.0. Скрипты этого репозитория — тонкая обвязка сборки.