1b3c3496c5
- Убраны все машинно/инфра-специфичные данные из 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>
62 lines
4.4 KiB
Markdown
62 lines
4.4 KiB
Markdown
# 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 из исходников.
|
|
|
|
## Пины и обновление версии RustDesk
|
|
|
|
Все версии зафиксированы в [`upstream.txt`](upstream.txt) (правило проекта: никаких `latest`).
|
|
Файл **автогенерится** — при бампе апстрима меняется не только тег, но и весь тулчейн
|
|
(Flutter/vcpkg/LLVM/FRB апстрим двигает между релизами), поэтому пины тянутся из CI-конфигов
|
|
самого целевого тега, а не проставляются вручную.
|
|
|
|
**Подтянуть свежую версию и пересобрать под себя:**
|
|
```powershell
|
|
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`](scripts/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. Скрипты этого репозитория — тонкая обвязка сборки.
|