No description
  • C# 66.2%
  • Vue 25.2%
  • TypeScript 6.3%
  • CSS 1.4%
  • Shell 0.6%
  • Other 0.3%
Find a file
DSvinka 34204d1b88
All checks were successful
ci / ci (push) Successful in 2m30s
фикс названий профилей
2026-05-30 23:32:42 +03:00
.forgejo/workflows CI Fix 2026-05-29 20:16:39 +03:00
backend фикс названий профилей 2026-05-30 23:32:42 +03:00
deploy Compose 2026-05-30 03:38:19 +03:00
frontend фикс названий профилей 2026-05-30 23:32:42 +03:00
socks-egress фикс DNS прокси 2026-05-30 22:10:30 +03:00
.editorconfig Рефакторинг на новый бренд 2026-05-28 18:37:57 +03:00
.gitignore Рефакторинг на новый бренд 2026-05-28 18:37:57 +03:00
README.md фикс названий профилей 2026-05-30 23:32:42 +03:00

CaviCodeVPN Core

Ядро платформы CaviCodeVPN — управление пользователями, подписками, SOCKS5 прокси, панель администрирования и Plugin API.

Компоненты

Директория Назначение
backend/ C# .NET 8 — Controller API, Plugin API, фоновые сервисы, сбор метрик
frontend/ Vue 3 — панель управления (дашборд, пользователи, логи, плагины, настройки, вики)
socks-egress/ C# .NET 8 — SOCKS5 прокси (RFC1928/1929, CONNECT/UDP ASSOCIATE), валидация учётных данных, server-side policy, учёт трафика
deploy/ Docker Compose и примеры конфигурации

Быстрый старт

cd deploy
cp .env.example .env
docker compose up -d

При первом запуске откроется мастер настройки:

  1. Шаг 1 — создание учётной записи администратора
  2. Шаг 2 — настройка сервера (пароль БД, JWT, Egress, метрики). Можно пропустить.

После создания первого администратора маршрут /setup закрывается и перенаправляет в обычный вход.

Панель управления

  • Дашборд — метрики CPU/RAM/сеть/диск с графиками, статистика Egress, активные соединения
  • Пользователи — создание пользователей, управление подписками и логинами вида ИмяПользователя-ИмяПодписки
  • Клиентские фильтры — профили bypass/selective правил и генерация конфигураций подписок через traffic-плагины
  • Логи — запросы, соединения Gateway, системные логи контейнеров
  • Плагины — установка из Git URL, настройка через iframe UI, обновление из Git/Docker registry, перезапуск, логи контейнеров
  • Настройки — параметры сервера (JWT, Egress, метрики, пароль БД) через web-интерфейс
  • Админы — управление администраторами (Owner/Admin/Viewer) и 2FA через TOTP-приложения
  • API Ключи — ключи для внешних интеграций (Telegram-боты и т.д.)
  • Вики — встроенная документация (API, развёртывание, плагины)

Плагины

Core работает самостоятельно как SOCKS5-прокси с биллингом. Плагины устанавливаются через панель управления (Плагины → Установка) указав Git URL репозитория. Core автоматически клонирует репозиторий и запускает Docker Compose или одиночный Dockerfile плагина. Compose-плагины могут использовать готовые образы из registry через CaviCodeVPN_PLUGIN_IMAGE_PREFIX.

Установленные плагины настраиваются через Плагины → карточка плагина → Настройки. При сохранении настроек они синхронизируются в .env файл плагина. Кнопка обновления выполняет git pull --ff-only, docker compose pull для compose-плагинов и затем пересоздаёт контейнеры с актуальными images. При перезапуске плагина контейнеры пересоздаются с обновлёнными переменными окружения.

Server-side страховка Egress

При генерации клиентской конфигурации Core сохраняет выбранный профиль клиентских фильтров на подписке. SOCKS5 Egress получает вместе с credentials egressPolicy и до исходящего TCP CONNECT или UDP datagram блокирует домены и CIDR из профиля. Это не заменяет клиентский bypass в TOML, а страхует от устаревшего или вручную изменённого клиентского конфига: запрещённый destination не выходит наружу с IP VPN-сервера.

При блокировке Egress возвращает SOCKS5 reply 0x02 (connection not allowed by ruleset) и пишет событие в application logs контейнера. Расширение UI request logs отдельными полями решения и причины блока пока не включено в схему БД.

Связанные репозитории

Репозиторий Назначение
CaviCodeVPN-Plugin-TT Плагин маскировки через TrustTunnel (Gateway + TT endpoint + сайт прикрытия + ACME)
CaviCodeVPN-Plugin-UserSync Плагин P2P синхронизации пользователей между нодами
CaviCodeVPN-Desktop Avalonia VPN-клиент для Linux/Windows

Стек

  • Backend: C# .NET 8, ASP.NET Core Minimal API, EF Core + Npgsql, JWT/ApiKey/PluginToken аутентификация, BCrypt, TOTP 2FA, TimescaleDB
  • Frontend: Vue 3, TypeScript, Vite, Pinia, Canvas-графики, ANSI-цветные логи
  • Egress: C# .NET 8, RFC1928+RFC1929 SOCKS5, CONNECT/UDP ASSOCIATE, pull-кеш учётных данных и policy
  • БД: PostgreSQL 16 + TimescaleDB
  • Инфра: Docker Compose, прямой монтаж docker.sock, Let's Encrypt ACME (в плагинах)

Развёртывание в продакшн

cd deploy
cp .env.example .env
# Отредактируйте .env (пароль БД) или настройте через мастер в браузере
docker compose up -d

По умолчанию Core images берутся из git.dsvinka.ru/cavicode/*. Для локальной сборки используйте deploy/scripts/dev-up.sh.

Пароль PostgreSQL можно задать:

  • В .env файле перед запуском
  • Через мастер настройки в браузере (автоматически обновит .env и перезапустит контейнер)

Подробнее — в Wiki панели управления (раздел «Развёртывание»).