# Развёртывание Егорин на gate (egorin.r.servaki.online) Узел **gate** = `gate.servaki.online` = **5.101.118.232** (Ubuntu 24.04, nginx 1.24, certbot). Выбран как чистый веб-узел: уже nginx+LE (панель «Ворота»), **нет amnezia/xray/MTProxy** — ничего не ломается. egorin — отдельный `server_name`, реле «Ворота» (`gate.conf`) не трогать. Имя **egorin.r.servaki.online** (relay-зона `.r.`) — совпадает с redirect_uri в Яндекс ID. ## Компоненты - Фронт (статика SPA) → `/var/www/egorin.r.servaki.online`. - Бэкенд-шлюз (Node) → `/opt/egorin-api/server`, порт **127.0.0.1:4100**, systemd `servaki-monitor-api` (см. [deploy/servaki-monitor-api.service](deploy/servaki-monitor-api.service)). - nginx-vhost: SPA + proxy `/api/`,`/socket` → 4100 (см. [deploy/egorin.r.servaki.online.conf](deploy/egorin.r.servaki.online.conf)). - `.env` бэкенда → `/opt/egorin-api/.env` (см. [deploy/egorin.env.example](deploy/egorin.env.example); **секрет Яндекс — только на сервере, не в git**). ## Шаги (проверено, SSH из песочницы к gate работает по id_rsa0404) ```bash # 1. DNS (на ru1, это только API-вызов, ru1 не меняем) /root/beget-api.sh setA egorin.r.servaki.online 5.101.118.232 # 2. Node 20 на gate curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt-get install -y nodejs # 3. Фронт npm run build # локально → dist/ scp -r dist/* root@5.101.118.232:/var/www/egorin.r.servaki.online/ # 4. Бэкенд scp -r server root@5.101.118.232:/opt/egorin-api/ # на gate: cd /opt/egorin-api/server && npm install --omit=dev # cp .env → /opt/egorin-api/.env ; cp unit → /etc/systemd/system/ # systemctl enable --now servaki-monitor-api # 5. nginx + TLS cp egorin.r.servaki.online.conf /etc/nginx/sites-available/ && ln -s … sites-enabled/ nginx -t && systemctl reload nginx certbot --nginx -d egorin.r.servaki.online --redirect -m mpo-inform@yandex.ru --agree-tos -n ``` ## Обновление - Только фронт: `npm run build` → залить `dist/` в `/var/www/egorin.r.servaki.online/`. - Бэкенд/демо-данные: залить `server/src/*` → `/opt/egorin-api/server/src/` → `systemctl restart servaki-monitor-api`. ## Яндекс ID (приложение «Железный монитор») - `YANDEX_CLIENT_ID=12f8169bc7f74571b53e90a2bafea786` - `YANDEX_REDIRECT=https://egorin.r.servaki.online/api/auth/yandex/callback` (совпадает с зарегистрированным в oauth.yandex.ru — иначе mismatch). - `YANDEX_ADMINS=mpo-inform@yandex.ru` (роль admin). - **Client secret** — в `/opt/egorin-api/.env` на gate, НЕ в git. - Поток: `/api/auth/yandex/start` → oauth.yandex.ru → `/api/auth/yandex/callback` → сессия. ## Проверка ```bash curl -sI https://egorin.r.servaki.online/ # 200 (фронт) curl -sI https://egorin.r.servaki.online/api/auth/yandex/start # 302 → oauth.yandex.ru curl -sI https://gate.servaki.online/ # 200 (реле «Ворота» цело) ```