Перейти к содержанию

Production окружение

Продакшн инфраструктура ShivaVPN. Все изменения — через CI/CD, не вручную.


Серверы Production

IP Hostname Сервисы Контейнеры
212.70.189.60 shiva-proxy Nginx (reverse proxy, jump host) nginx
10.99.87.249 vpn-app02 Backend, VCS, Redis, Remnawave vpn-back-blue, vpn-back-green, vpn-config-service, vpn-config-worker, redis
10.99.87.62 vpn-db MySQL PROD vpn-db
10.99.87.64 vpn-admin Admin Panel vpn-admin
10.99.87.63 vpn-app01 Frontend, LK, партнёрские лендинги vpn-front, vpn-lk, vpn-front-ru, и др.
10.99.87.5 km-monitor Grafana, Prometheus, Loki grafana-*, audit-bot
10.99.87.76 km-tools01a Vaultwarden vaultwarden
212.70.189.61 dev-api GitLab Runner, Nginx dev

Подключение к Production

Только через jump host

Серверы 10.99.87.* закрыты от интернета. Доступ только через 212.70.189.60:2255.

SSH

# Рекомендуемый способ (скрипт в monorepo)
./scripts/ssh-internal.sh 10.99.87.249   # Backend
./scripts/ssh-internal.sh 10.99.87.62    # MySQL
./scripts/ssh-internal.sh 10.99.87.5     # Grafana
./scripts/ssh-internal.sh 10.99.87.64    # Admin Panel

# Вручную
ssh root@10.99.87.249 -J root@212.70.189.60:2255 -i ~/.ssh/id_ed25519_shivavpn

MySQL PROD

# Через ssh-internal.sh
./scripts/ssh-internal.sh 10.99.87.62 \
  "docker exec vpn-db mysql -uvpn -p'$(см. Vaultwarden  Databases)' vpn -e 'SELECT COUNT(*) FROM account'"

Пароль: Vaultwarden → Databases → MySQL PROD

DBeaver / TablePlus (GUI)

Параметр Значение
Host 10.99.87.62
Port 3306
Database vpn
User vpn
Password см. Vaultwarden → Databases → MySQL PROD
SSH host (jump) 212.70.189.60
SSH port 2255
SSH user root
SSH key ~/.ssh/id_ed25519_shivavpn

Сервисы и URL

Сервис URL Auth
API https://api.shivavpn.io JWT / Keycloak
Личный кабинет https://shiva-app.io/account Keycloak
Grafana https://monitor.karmann.tech см. Vaultwarden → Monitoring
Admin Panel http://10.99.87.64 (внутренний) см. Vaultwarden → Infrastructure
Vaultwarden https://vault.shivavpn.io master password
VCS API (внутренний) http://10.99.87.249:8000 X-API-Key
VCS Swagger http://10.99.87.249:8000/docs нет
Backend Health http://10.99.87.249:8080/actuator/health нет

Учётные данные

Все пароли: Vaultwarden → [соответствующая коллекция]

Что Коллекция в Vaultwarden
MySQL PROD root/vpn Databases
Redis Databases
Admin Panel Infrastructure
Grafana admin Monitoring
GitLab tokens GitLab & CI/CD
Keycloak admin Keycloak & Auth
VPN Provider accounts VPN Providers
VCS API key Infrastructure
3x-ui panels Infrastructure

Никогда не коммитить учётные данные

Файл [Vaultwarden](https://vault.shivavpn.io) в monorepo git-ignored. Всё в Vaultwarden.


Деплой в Production

Сервис Способ деплоя
Backend (Java) Автоматически: push в main → CI → blue-green deploy
VPN Config Service Push → CI test+build → ручной deploy_prod в GitLab
Admin Frontend Push → CI build → ручной update_service_prod
User Frontend Свой CI/CD (отдельный git)

Детали: Backend Deploy и Runbooks: Деплой.


Мониторинг Production

  • Grafana: https://monitor.karmann.tech — 44 дашборда, 26 алертов
  • Алерты приходят в Telegram (zardes) при проблемах с VPN/инфраструктурой
  • Локи: централизованные логи (Loki + Promtail)

Подробнее: Мониторинг.


Критические особенности Production

Redis = auth сессии

Redis на 10.99.87.249:6379 хранит все пользовательские сессии. Рестарт Redis = разлогин всех пользователей.

docker restart xray — запрещено

На VPN серверах НИКОГДА не делать docker restart xray — это отключит всех пользователей сервера. Конфиги меняются через X-UI API (hot-reload).

Нет автобэкапов MySQL

Автоматические бэкапы MySQL PROD настроены (ежедневно 00:00 UTC, /backup/mysql/). Перед изменениями схемы — делать дополнительный ручной дамп. Инструкция.


Ссылки