0036 — Локальный мастер удалённой установки
Статус: принято. Дата: 2026-09-26. Владелец: Ian Panaev.
Контекст
Администратору нужен графический путь установки Arkvory на другую машину: выбор сервера, проверка, запуск одной кнопкой и готовая консоль. Нативные установщики уже владеют зависимостями, БД, службами и сохранением данных. Удалённое управление не должно превращать публичный API хранения в привилегированный executor с SSH-паролями.
Решение
Добавить отдельную точку входа arkvory-remote.mjs в apps/deploy и включить её в существующие клиентские EXE/DEB/RPM. Внутренний allowlist приложения остаётся пустым; apps/cli не импортирует deploy. Локальный HTTP отдает формы без клиентского JavaScript; orchestration, SSH, target commands, tunnel, model и представление находятся в отдельных небольших модулях.
SSH-адаптер использует закреплённую библиотеку ssh2. До аутентификации отдельно обнаруживается fingerprint, который подтверждает оператор. Реальное соединение требует совпадения ключа. Агент и произвольные команды пользователя не поддерживаются. Linux допускает root/passwordless sudo; Windows — административный OpenSSH-сеанс. Привилегированные команды статичны, параметры ограничены и экранированы; пароль владельца передаётся через stdin, не argv. Base64 для stdin обеспечивает переносимость UTF-8 через Windows shell, не считается шифрованием.
Загрузка использует опубликованные стабильные GitHub Releases с manifest/version/hash checks и повторной проверкой SHA-256 на сервере. Токен GitHub не отправляется на сервер и стороннему origin при redirect. Передачи потоковые; ожидания и размеры ограничены. Закрытие сеанса отменяет локальный download и запрещает последующие шаги; оно не обещает остановку или откат уже начатой удалённой установки.
Мастер повторно использует EXE/DEB/RPM и Services.healthy(), после чего открывает loopback SSH forwarding API:8080. Он не публикует PostgreSQL. Доступ к локальному HTTP требует одноразового capability, session cookie, CSRF и точных Host/Origin. Referrer-Policy strict-origin сохраняет проверяемый Origin у браузерных форм и не раскрывает путь одноразового входа.
Ограничения и последствия
- Это профиль приватного доступа администратора. Постоянная LAN/HTTPS-публикация, DNS/firewall/NAT, remote Compose и двухузловая репликация — отдельные реализации; GUI не изображает их работающими.
- Существующая установка подключается без повторной установки или изменения владельца. Сбой после запуска пакета может требовать ручного восстановления; нет автоматического retry разрушительных шагов.
- Браузерный сеанс не заменяет supervisor сервера. Службы работают независимо; туннель зависит от процесса на машине администратора.
- Криптографическая подпись издателя и приёмка реального OpenSSH остаются требованиями выпуска. SHA-256 manifest по доверенному HTTPS подтверждает комплект, но не заменяет подпись издателя.
- Новые тесты входят в unit/browser/deployment/native-install через существующие verify/release и CI. Установка на рабочей машине разработчика запрещена; реальные службы проверяются только на одноразовых runner’ах.
Эксплуатация и ограничения: REMOTE_DEPLOYMENT.