Skip to content

Tozix/govpn

Repository files navigation

GoVPN Multi-User Edition

Многопользовательская версия GoVPN с веб-админкой и системой аутентификации.

🚀 Особенности

  • Многопользовательская система - поддержка множества пользователей с уникальными учетными записями
  • Веб-админка - удобный интерфейс для управления пользователями
  • API аутентификация - безопасный доступ через API ключи
  • WebSocket и UDP - поддержка обоих протоколов
  • Docker контейнеризация - легкий деплой через docker-compose
  • SSL/TLS - шифрование всех соединений
  • IP-менеджмент - автоматическое управление IP-адресами

🏗 Архитектура

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Client    │────│   Nginx     │────│   VPN       │
│   Apps      │    │ Reverse    │    │  Server     │
└─────────────┘    │   Proxy     │    │ (wss/udp)   │
                   └─────────────┘    └─────────────┘
                           │               │
                   ┌─────────────┐    ┌─────────────┐
                   │   Admin     │────│   Database  │
                   │    API      │    │ (PostgreSQL)│
                   └─────────────┘    └─────────────┘
                           │
                   ┌─────────────┐
                   │   Admin     │
                   │   Web UI    │
                   └─────────────┘

📋 Требования

  • Docker
  • Docker Compose
  • Linux/macOS (для TUN/TAP устройств)

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

1. Клонируйте репозиторий:

git clone <your-repo-url>
cd govpn-multi

2. Скопируйте файл окружения:

cp .env.example .env

3. Отредактируйте .env файл и установите свои значения:

JWT_SECRET=your_secure_jwt_secret
ADMIN_API_KEY=your_admin_api_key

4. Запустите сервисы:

docker-compose up -d --build

🖥️ Использование

Админ-панель

  • URL: http://localhost:3003 (порт 3003 для локальной разработки)
  • Логин: admin
  • Пароль: admin123

Управление пользователями

  1. Войдите в админ-панель
  2. Перейдите в раздел "Пользователи"
  3. Создайте нового пользователя
  4. Скачайте конфигурационный файл для клиента
  5. Используйте конфиг в клиентском приложении

API эндпоинты

VPN API (доступен через аутентификацию API ключом):

  • GET /api/vpn/pick-ip - получить IP адрес
  • DELETE /api/vpn/delete-ip - освободить IP
  • POST /api/vpn/keepalive-ip - обновить сессию
  • GET /api/vpn/list-ip - список IP адресов

Admin API:

  • POST /api/auth/login - аутентификация
  • GET /api/users - список пользователей
  • POST /api/users - создать пользователя
  • DELETE /api/users/:id - удалить пользователя
  • GET /api/users/:id/config - скачать конфиг

🔐 Безопасность

  • Все соединения шифруются через TLS
  • API ключи для аутентификации
  • JWT токены для веб-интерфейса
  • Ограничение прав доступа
  • Защита от DDoS атак

📊 Мониторинг

  • Активные подключения
  • Статистика трафика
  • Состояние сервера
  • Управление сессиями
  • Логирование действий

🛠 Troubleshooting

Если возникают проблемы:

  1. Проверьте логи:
docker-compose logs -f vpn-server
docker-compose logs -f admin-api
docker-compose logs -f nginx
  1. Убедитесь, что права доступа к TUN устройству корректны:
ls -la /dev/net/tun
  1. Проверьте сетевые настройки и firewall.

📦 Production деплой

Для production деплоя используйте:

# Установите все переменные в .env
# Запустите production compose
docker-compose -f docker-compose.prod.yml up -d --build

🤝 Вклад в проект

  1. Fork проекта
  2. Создайте feature ветку
  3. Сделайте commit ваших изменений
  4. Push в ветку
  5. Откройте Pull Request

📄 Лицензия

MIT License

📞 Поддержка

Для вопросов и поддержки создайте issue в репозитории.

About

Simple VPN on GO

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published