feat: autostart as a service + separate password setup (set-password.bat)
- set-password.bat: one-time password setup -> writes webvnc.conf (HASH + VNC_PASSWORD), syncs UltraVNC via ensure-vnc-password.ps1; if the 'web-vnc' task is installed, restarts it (elevated) to reload the new password, skipping restart when the password is unchanged. - run.bat: no longer prompts for the password; reads it from webvnc.conf (asks to run set-password.bat first if absent). Also clears --spawn-command (not just --spawn) when 5900 is already listening, to avoid spawning a 2nd VNC server. - scripts/autostart-run.bat: non-interactive launcher for the scheduled task (reads webvnc.conf, finds only a LOCAL VNC server, never downloads at boot). - scripts/install-autostart.bat / uninstall-autostart.bat: register/remove a 'web-vnc' scheduled task (ONSTART, SYSTEM, HIGHEST) via schtasks. - scripts/restart-autostart.bat: restart the task to apply a new password; checks whether web-vnc.exe is running (stop+start, or just start). - .gitignore: ignore webvnc.conf (secret). - AGENTS.md / README.md: document the autostart flow, set-password.bat, the new scripts, and that the running gateway must be restarted to apply a password change.
This commit is contained in:
@@ -18,29 +18,53 @@ Go-модулей, собирается офлайн.
|
||||
└─ прозрачный релей WS↔TCP
|
||||
```
|
||||
|
||||
## Самый простой запуск (Windows) — одним батником
|
||||
## Самый простой запуск (Windows)
|
||||
|
||||
В папке проекта есть `run.bat`. Он делает всё сам и спрашивает **только пароль**:
|
||||
Запуск состоит из двух шагов: один раз задаётся пароль, затем `run.bat` поднимает
|
||||
gateway без запросов.
|
||||
|
||||
```bat
|
||||
run.bat
|
||||
```
|
||||
1. **Один раз** задайте пароль:
|
||||
```bat
|
||||
set-password.bat
|
||||
```
|
||||
Спросит пароль доступа, синхронизирует им пароль UltraVNC-сервиса
|
||||
(`scripts\ensure-vnc-password.ps1`, UAC только при смене), сгенерирует хэш и
|
||||
сохранит его вместе с паролем в `webvnc.conf` (секрет, в git не коммитится).
|
||||
Используйте ASCII-пароль длиной до 8 символов (VNC-пароль = первые 8 байт).
|
||||
|
||||
Что делает `run.bat`:
|
||||
1. Если `web-vnc.exe` отсутствует — собирает его (нужен установленный Go).
|
||||
Если Go нет — подсказывает, что сделать.
|
||||
2. Если noVNC-клиент ещё не встроен — пытается его скачать (нужен интернет).
|
||||
Без интернета продолжит работу, но в браузере будет страница-заглушка.
|
||||
3. Спрашивает пароль доступа.
|
||||
4. Генерирует из него хэш.
|
||||
5. Ищет VNC-сервер: если он не установлен — пытается скачать портативный
|
||||
UltraVNC (`scripts\get-vnc.ps1`) и запускать его.
|
||||
6. Выводит список всех адресов для подключения (`http://localhost:8080` и
|
||||
`http://<каждый IPv4 машины>:8080`) и запускает сервер с флагом `--spawn`.
|
||||
2. **Запустите gateway**:
|
||||
```bat
|
||||
run.bat
|
||||
```
|
||||
`run.bat` собирает `web-vnc.exe` (нужен Go, если бинарника нет), встраивает
|
||||
noVNC-клиент (качает при наличии интернета), находит/докачивает VNC-сервер,
|
||||
читает пароль из `webvnc.conf` (больше не спрашивает), печатает адреса
|
||||
(`http://localhost:8080` и `http://<каждый IPv4 машины>:8080`) и запускает
|
||||
сервер с флагом `--spawn`. Если `127.0.0.1:5900` уже слушает (сервис UltraVNC) —
|
||||
запускается без `--spawn`, подключаясь к существующему серверу.
|
||||
|
||||
После запуска откройте в браузере один из выведенных адресов,
|
||||
введите тот же пароль — и попадёте на рабочий стол.
|
||||
|
||||
### Автостарт при загрузке ОС (вместо ручного `run.bat`)
|
||||
|
||||
```bat
|
||||
set-password.bat :: один раз: пароль -> webvnc.conf
|
||||
scripts\install-autostart.bat :: один раз (от админа): плановое задание «web-vnc»
|
||||
```
|
||||
`install-autostart.bat` регистрирует через `schtasks` задание (`ONSTART`, `SYSTEM`,
|
||||
`HIGHEST`), которое при загрузке запускает `scripts\autostart-run.bat` —
|
||||
неинтерактивный launcher, читающий `webvnc.conf` и не качающий ничего на старте.
|
||||
Запустить сразу без перезагрузки: `schtasks /Run /TN "web-vnc"`.
|
||||
Снять автостарт: `scripts\uninstall-autostart.bat` (от админа).
|
||||
|
||||
**Смена пароля:** `web-vnc.exe` читает пароль из `webvnc.conf` только при старте и не
|
||||
перечитывает его в runtime. Поэтому `set-password.bat` (если задание «web-vnc» установлено)
|
||||
перезапускает его через `scripts\restart-autostart.bat` (с elevation) — тот проверяет,
|
||||
запущен ли `web-vnc.exe` (если да — стоп + старт, если нет — только старт). Рестарт
|
||||
пропускается, если пароль не изменился. Для интерактивного `run.bat` просто перезапустите
|
||||
его вручную.
|
||||
|
||||
## Быстрый старт вручную (Windows)
|
||||
|
||||
```powershell
|
||||
@@ -186,7 +210,13 @@ scripts/get-novnc.{ps1,sh} скачать noVNC во встроенную ста
|
||||
scripts/get-vnc.ps1 скачать портативный VNC-сервер (UltraVNC) в папку vnc/
|
||||
scripts/list-ips.ps1 список IPv4 машины (используется run.bat)
|
||||
scripts/open-firewall.bat открыть порт 8080 в Windows Firewall (один раз, от админа)
|
||||
run.bat запуск в один клик (спрашивает только пароль)
|
||||
run.bat интерактивный запуск: собирает бинарник/noVNC/VNC, читает пароль из webvnc.conf (не спрашивает)
|
||||
set-password.bat разовая настройка пароля -> webvnc.conf (хэш + VNC-пароль); синхронизирует UltraVNC
|
||||
webvnc.conf секрет: HASH= + VNC_PASSWORD= (создаётся set-password.bat, gitignored)
|
||||
scripts/autostart-run.bat неинтерактивный launcher для автостарта (читает webvnc.conf)
|
||||
scripts/install-autostart.bat автостарт при загрузке ОС (schtasks ONSTART/SYSTEM) — от админа
|
||||
scripts/uninstall-autostart.bat снять автостарт — от админа
|
||||
scripts/restart-autostart.bat перезапустить задание «web-vnc» (чтобы применить новый пароль) — от админа
|
||||
```
|
||||
|
||||
## Кросс-компиляция под другую ОС
|
||||
|
||||
Reference in New Issue
Block a user