# WG_SERF - WireGuard Server Panel

Современная веб-панель для управления WireGuard VPN серверами. Всё в одном файле.

По умолчанию:

Адрес: http://ИП_СЕРВЕРА:8080/login
Логин: admin   /  Пароль: admin

## 🎯 Что умеет

- 🌐 **Создавайте VPN серверы** - несколько серверов на одной машине (wg0, wg1...)
- 👥 **Управляйте клиентами** - добавляйте пользователей в пару кликов
- 📱 **QR коды** - клиент отсканирует и подключится за 10 секунд
- 🔀 **Проброс портов** - открывайте порты клиентам (SSH, RDP, игры)
- 📊 **Мониторинг в реальном времени** - кто онлайн, сколько трафика
- 🌓 **Темная и Светлая тема** - приятно работать ночью и днём
- ⚙️ **Автонастройка** - подсети, порты, IP - всё автоматически

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

**Скачайте и установите одной командой:**

1. Нужно зайти на сервер под root 

```bash
wget https://vserf.ru/download/wgserf/wg_serf && chmod +x wg_serf && ./wg_serf
```

## 📋 Команды

```bash
wg_serf              # Показать информацию и статус
wg_serf install      # Установить (только один раз)
wg_serf start        # Запустить
wg_serf stop         # Остановить
wg_serf restart      # Перезапустить
wg_serf status       # Статус сервиса
wg_serf delete       # Полностью удалить
```

## 🔧 Разработка

**Структура проекта:**
```
WG_Serv/
├── main.go                  # Точка входа + CLI
├── go.mod / go.sum
├── build/
│   └── wg_serf              # Скомпилированный бинарник
└── internal/
    ├── server/              # HTTP + handlers + embed HTML
    ├── wireguard/           # Логика WireGuard + iptables
    └── database/            # БД, конфиг, типы, утилиты
```

**Компиляция:**
```bash
# PowerShell (Windows)
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -ldflags="-s -w" -o build/wg_serf .

# Bash (Linux/Mac)
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o build/wg_serf .
```

**Зависимости:**
- `github.com/skip2/go-qrcode` - генерация QR кодов
- Всё остальное - встроенные библиотеки Go

## 🔄 Как это работает

1. **Синхронизация:** При запуске БД синхронизируется с WireGuard (удаляет лишние интерфейсы, создает нужные)
2. **Статистика:** Обновляется каждые 5 секунд
3. **Онлайн/офлайн:** Клиент онлайн если handshake < 30 секунд (PersistentKeepalive = 10 сек)
4. **Автоперезапуск:** При сбое systemd автоматически перезапустит
5. **Пробросы портов:** Применяются автоматически через iptables
6. **Автоматический IPtables** Автоматически очищает и заполняет при старте сервера IpTables 

## 📁 Файлы
После установки в `/opt/wg_serf/`:
- `wg_serf` - бинарник
- `config.json` - настройки (порт, логин, пароль)
- `db.json` - база данных (серверы, клиенты)
- `wg_serf.pid` - PID запущенного процесса

## 🛡️ Безопасность

- Cookie-based авторизация (24 часа)
- Проверка уникальности портов и подсетей
- Безопасные имена файлов
- Работает только под root

## 👨‍💻 Автор

Создано для удобного управления WireGuard VPN

**Разработчик:** [voxsel.com](https://voxsel.com/)  
**Отличный WebServer для Windows:** [vserf.ru](https://vserf.ru/)