# Деплой SHiNE (шаблон) Этот раздел хранит актуальные инструкции по деплою. ## Базовый сервер - SSH: `player@shineup.me` - Домен: `shineup.me` - Базовый путь: `/home/player` Для всех рабочих инструкций и скриптов использовать доменное имя `shineup.me`, а не фиксированный IP: - актуальный IP должен браться через DNS-резолв на момент подключения; - ручное дублирование IP в документации и deploy-скриптах не поддерживать. ## Контуры деплоя - Production: - SSH: `player@shineup.me` - Домен: `shineup.me` - IP: `185.229.109.118` - Main test: - SSH: `player@193.8.215.70` - Домен: `test2.shineup.me` - IP: `193.8.215.70` - Reserve test: - SSH: `player@93.170.12.154` - Домен: `test.shineup.me` - IP: `93.170.12.154` ## Локальные команды - Default server deploy: `./gradlew deployServer` или `./gradlew deployServerTest2` - Default UI deploy: `./gradlew deployUI` или `./gradlew deployUITest2` - Production server deploy: `./gradlew deployServerProduction` - Production UI deploy: `./gradlew deployUIProduction` - Reserve test server deploy: `./gradlew deployServerTest` - Reserve test UI deploy: `./gradlew deployUITest` - Локальный запуск: `./gradlew startLocal` ## Политика подтверждений - `shineup.me` — production. - Любые изменения на `shineup.me`, включая deploy сервера, deploy UI, конфиги, перезапуски и миграции, делать только после отдельного явного подтверждения пользователя. - Если пользователь пишет просто `задеплой` без уточнения, по умолчанию это означает deploy на `test2.shineup.me`. ## Main test deploy (`test2.shineup.me`) - Это основной сервер для тестов. - `deployServer` и `deployUI` по умолчанию направлены именно сюда. - Серверный deploy не запускает JUnit/IT-тесты на удалённом сервере. - `deployServer` / `deployServerTest2` делают: - сборку fat-jar локально; - синхронизацию `data/` и `shine.sqlite` с production `shineup.me`; - перенос `application.properties` с production с поправкой `server.ui.indexPath` на `/home/player/SHiNE/shine-ui/index.html`; - установку `systemd` unit на `193.8.215.70`; - перезапуск `shine-server.service`; - установку/проверку Caddy для `test2.shineup.me`. - `deployUI` / `deployUITest2` публикуют UI в `/home/player/SHiNE/shine-ui` на `193.8.215.70`. ## Reserve test deploy (`test.shineup.me`) - `test.shineup.me` пока не использовать для обычного deploy. - Задачи `deployServerTest` и `deployUITest` считаются резервными и требуют отдельной причины. ## UI-деплой и Caddy (обязательно) - Целевая директория UI-деплоя: `/home/player/SHiNE/shine-ui`. - `Caddyfile` на сервере должен смотреть в ту же директорию через `root * /home/player/SHiNE/shine-ui`. - В `deploy_shine-PWA.sh` добавлена проверка: скрипт ищет блок `shineup.me { ... }` (или значение `EXPECTED_CADDY_SITE`) и проверяет `root` внутри этого блока. - Если `root` внутри целевого блока не совпадает, деплой прерывается с ошибкой. - Для ручного обхода проверки (только осознанно): `ALLOW_CADDY_MISMATCH=1 ./gradlew deployUI`. - При необходимости можно явно переопределить путь деплоя: - `REMOTE_UI_DIR=/нужный/путь ./gradlew deployUI` - `EXPECTED_CADDY_UI_ROOT=/нужный/путь ./gradlew deployUI` - `EXPECTED_CADDY_SITE=example.com ./gradlew deployUI` ## Временные тестовые сайты Solana tickets - Для HTML UI программы `shine_payments` используется отдельный временный тестовый сайт. - Основной каталог публикации: - `/home/player/sites/test-solana-tickets.shineup.me` - Рабочие домены: - `https://test-solana-tickets.shineup.me` - `https://test-solana-tickets.shiningpeople.ru` - Назначение: - ручная проверка сценариев покупки билетов; - проверка DAO-инструментов и лимитов менеджеров; - проверка ручного добавления билетов и `step_payout`. - Эти сайты не считать основным UI SHiNE; это отдельная тестовая публикация под Solana-часть. ### Важно для локального UI (history-router / Ctrl+F5) - Локальный UI **обязательно** поднимать только через `./gradlew startLocal`. - Эта задача запускает `scripts/local_spa_server.py`, который делает SPA fallback: любой неизвестный путь (`/m/...`, `/channel/...`) возвращает `index.html`. - Это обязательно для корректной работы `Ctrl+F5` на внутренних роутов без `404`. - Рабочий URL выводится задачей в консоль в формате: `http://localhost:/?localWsPort=`. ## Обязательные правила 1. Перед серверным деплоем проверить локально. 2. При нестандартном деплое (другой хост, другая структура, ручные шаги) обязательно уточнить у пользователя, нужно ли обновить этот шаблон. 3. Если деплой-процесс изменился, этот файл и файлы в `servers/` обновлять в том же коммите.