Конфигурация сервисов¶
Сводная таблица всех сервисов ShivaVPN: адреса, порты, контейнеры.
Архитектура¶
VPN серверы — XRAY / X-UI¶
| Параметр | Значение |
|---|---|
| Контейнер | xray |
| X-UI панель | порт 2053 |
| XRAY сервис | порт 443 |
| nginx | порт 1443 |
| DB | /etc/x-ui/x-ui.db |
| Config | /etc/x-ui/xrayTemplateConfig |
| API | /panel/api/inbounds/list |
LKG кэш
Сервис выживает на Last-Known-Good кэше (TTL 30 мин). При потере связи с X-UI — конфиги раздаются из кэша.
# Перезапуск xray (только если сервер не работает — отключает всех пользователей)
docker restart xray
# Запрос статистики через API
docker exec xray /app/bin/xray-linux-amd64 api statsquery
Backend — vpn-app02 (10.99.87.249)¶
| Контейнер | Порт | Назначение |
|---|---|---|
vpn-back-blue |
8080 | Spring Boot API (blue slot) |
vpn-back-green |
8081 | Spring Boot API (green slot) |
redis |
6379 | Сессии и кэш |
redis_exporter |
9121 | Prometheus метрики Redis |
node_exporter |
— | Системные метрики (standalone docker run, не compose) |
fluent-bit |
— | Форвардинг логов |
promtail |
— | Loki агент |
Standalone контейнеры
node_exporter и redis_exporter запущены через docker run, а не через docker compose.
Деплой: GitLab CI/CD, blue-green, автоматически при пуше в main.
Health check: curl http://10.99.87.249:8080/actuator/health
VPN Config Service — vpn-app02 (10.99.87.249)¶
| Контейнер | Порт | Назначение |
|---|---|---|
vpn-config-service |
8000 | FastAPI — API |
vpn-config-worker |
— | Sync scheduler (memory limit: 4GB) |
vpn-config-checker |
8001 | VLESS probe — Prometheus метрики |
vpn-config-postgres |
5434 | PostgreSQL 16 |
vpn-config-redis |
6379 (internal) | Redis кэш |
Деплой: GitLab CI/CD (project #55), ручной триггер deploy_prod.
Подробнее: VPN Config Service
Frontend — vpn-app01 (10.99.87.63)¶
| Контейнер | Порт | Назначение |
|---|---|---|
vpn-front |
80 | React основной сайт |
vpn-lk |
8082 | Личный кабинет |
vpn-front-ru |
8084 | Российский frontend |
vpn-new-partner-land |
8085 | Партнёрский лендинг |
partner_land |
8086 | Партнёрский лендинг (старый) |
vpn-frontend-ios-land |
8087 | iOS лендинг |
vpn-new-partner-land-mirror |
8088 | Зеркало партнёрского |
vpn-front-marketing |
8089 | Маркетинговый лендинг (shiva-app.com) |
vpn-front-partners |
8083 | Партнёрский frontend |
Отдельные репозитории
frontend/, lk_front/, payment-widget/ — отдельные git-репозитории, не подмодули. Личный кабинет доступен по shiva-app.io/account.
MySQL 8.0 — vpn-db (10.99.87.62)¶
| Параметр | Значение |
|---|---|
| Контейнер | vpn-db |
| Порт | 3306 |
| База | vpn |
| Пользователь | vpn |
| Пароль | см. Vaultwarden |
# Подключение
./scripts/ssh-internal.sh 10.99.87.62 \
"docker exec vpn-db mysql -uvpn -p'$(см. Vaultwarden → Databases)' vpn -e 'QUERY'"
Особенность: Двойное хранение валюты USD+RUB, тип DECIMAL(38,2).
Redis (10.99.87.249:6379)¶
Критично
Redis хранит все auth-сессии. Рестарт Redis = разлогин всех пользователей.
Мигрирован с 10.99.87.63 на 10.99.87.249 (22 ноября 2025). Планируется переход на JWT.
Redis Exporter (10.99.87.249:9121)¶
Отслеживает очередь синхронизации VPN конфигов:
| Метрика | Описание |
|---|---|
redis_key_size{key="vpn:sync:queue"} |
Длина очереди sync (LLEN) |
redis_keys_count{key="vpn:sync:pending:*"} |
Ожидающие флаги sync |
redis_keys_count{key="vpn:sync:processing:*"} |
Активно обрабатываемые |
Nginx Proxy (212.70.189.60)¶
Config: /etc/nginx/conf.d/vpn.conf
Grafana / Мониторинг (10.99.87.5)¶
| Сервис | URL | Порт |
|---|---|---|
| Grafana | https://monitor.karmann.tech | 3001 |
| Prometheus | — | 9091 |
| Loki | — | 3101 |
Подробнее: Мониторинг
См. также: Обзор инфраструктуры · Production окружение · Логи и диагностика