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

Конфигурация сервисов

Сводная таблица всех сервисов ShivaVPN: адреса, порты, контейнеры.


Архитектура

Пользователи → Прокси 212.70.189.60 → Backend 10.99.87.249 → MySQL 10.99.87.62
                                       VPN серверы (XRAY)

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

proxy_connect_timeout 3s;
proxy_read_timeout    15s;
proxy_send_timeout    10s;

Grafana / Мониторинг (10.99.87.5)

Сервис URL Порт
Grafana https://monitor.karmann.tech 3001
Prometheus 9091
Loki 3101

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


См. также: Обзор инфраструктуры · Production окружение · Логи и диагностика