57 lines
3.3 KiB
Markdown
57 lines
3.3 KiB
Markdown
# Развёртывание Егорин на 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 (реле «Ворота» цело)
|
||
```
|