93 lines
4.2 KiB
Markdown
93 lines
4.2 KiB
Markdown
# WG_SERF - WireGuard Server Panel
|
||
|
||
Современная веб-панель для управления WireGuard VPN серверами. Всё в одном файле.
|
||
|
||
## 🎯 Что умеет
|
||
|
||
- 🌐 **Создавайте 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/) |