214 lines
6.7 KiB
Markdown
214 lines
6.7 KiB
Markdown
# 🛡️ WireGuard Easy — Быстрый старт
|
|
|
|
> Простое развёртывание WireGuard VPN с веб-интерфейсом через Docker.
|
|
|
|
---
|
|
|
|
## 📋 Требования
|
|
|
|
| Компонент | Минимум |
|
|
|-----------|---------|
|
|
| ОС | Ubuntu 20.04+ / Debian 11+ / CentOS 8+ |
|
|
| CPU | 1 ядро |
|
|
| RAM | 256 МБ |
|
|
| Внешний IP | Статический (обязательно) |
|
|
| Docker | 20.10+ |
|
|
|
|
---
|
|
|
|
## 🚀 Быстрый старт
|
|
|
|
### 1️⃣ Установка Docker
|
|
|
|
```bash
|
|
# Ubuntu/Debian
|
|
apt update && apt upgrade -y
|
|
apt install -y docker.io
|
|
systemctl enable --now docker
|
|
|
|
# Проверка
|
|
docker --version
|
|
```
|
|
|
|
---
|
|
|
|
### 2️⃣ Создание рабочей директории
|
|
|
|
```bash
|
|
mkdir -p ~/wg-easy && cd ~/wg-easy
|
|
```
|
|
|
|
---
|
|
|
|
### 3️⃣ Генерация хеша пароля
|
|
|
|
> ⚠️ Сначала сгенерируйте хеш — он понадобится на следующем шаге.
|
|
|
|
```bash
|
|
docker run --rm ghcr.io/wg-easy/wg-easy:latest wgpw ВАШ_ПАРОЛЬ
|
|
```
|
|
|
|
Скопируйте вывод (строку вида `$2b$12$...`) — это и есть `PASSWORD_HASH`.
|
|
|
|
---
|
|
|
|
### 4️⃣ Запуск контейнера
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name=wg-easy \
|
|
-e WG_HOST=ВАШ_ПУБЛИЧНЫЙ_IP \
|
|
-e PASSWORD_HASH='$2b$12$ВСТАВЬТЕ_ХЕШ_СЮДА' \
|
|
-e WG_DEFAULT_DNS=8.8.8.8,8.8.4.4 \
|
|
-v ~/wg-easy:/etc/wireguard \
|
|
-p 51820:51820/udp \
|
|
-p 51821:51821/tcp \
|
|
--cap-add=NET_ADMIN \
|
|
--cap-add=SYS_MODULE \
|
|
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
|
|
--sysctl="net.ipv4.ip_forward=1" \
|
|
--restart unless-stopped \
|
|
ghcr.io/wg-easy/wg-easy
|
|
```
|
|
|
|
> **Замените:**
|
|
> - `ВАШ_ПУБЛИЧНЫЙ_IP` — внешний IP вашего сервера
|
|
> - `$2b$12$ВСТАВЬТЕ_ХЕШ_СЮДА` — хеш из шага 3
|
|
|
|
---
|
|
|
|
## ⚙️ Переменные окружения
|
|
|
|
| Переменная | Описание | По умолчанию |
|
|
|------------|----------|--------------|
|
|
| `WG_HOST` | Публичный IP или домен сервера | — |
|
|
| `PASSWORD_HASH` | Bcrypt-хеш пароля для веб-интерфейса | — |
|
|
| `WG_PORT` | UDP-порт WireGuard | `51820` |
|
|
| `WG_DEFAULT_DNS` | DNS для клиентов | `1.1.1.1` |
|
|
| `WG_DEFAULT_ADDRESS` | Подсеть клиентов | `10.8.0.x` |
|
|
| `WG_ALLOWED_IPS` | Разрешённые IP для клиентов | `0.0.0.0/0` |
|
|
| `UI_TRAFFIC_STATS` | Показывать статистику трафика | `false` |
|
|
| `LANG` | Язык интерфейса (`ru`, `en` и др.) | `en` |
|
|
|
|
---
|
|
|
|
## 🎛️ Управление контейнером
|
|
|
|
```bash
|
|
# Статус
|
|
docker ps | grep wg-easy
|
|
|
|
# Логи
|
|
docker logs wg-easy
|
|
docker logs -f wg-easy # в реальном времени
|
|
|
|
# Перезапуск / Стоп / Старт
|
|
docker restart wg-easy
|
|
docker stop wg-easy
|
|
docker start wg-easy
|
|
|
|
# Удаление контейнера (данные в ~/wg-easy/ сохранятся)
|
|
docker rm -f wg-easy
|
|
|
|
# Обновление образа
|
|
docker pull ghcr.io/wg-easy/wg-easy
|
|
docker stop wg-easy && docker rm wg-easy
|
|
# Затем повторите команду из шага 4
|
|
```
|
|
|
|
---
|
|
|
|
## 📁 Расположение данных
|
|
|
|
```
|
|
~/wg-easy/
|
|
├── wg0.conf # Конфигурация сервера WireGuard
|
|
└── wg0.json # Данные клиентов (веб-интерфейс)
|
|
```
|
|
|
|
> 💾 Регулярно делайте резервную копию этой директории!
|
|
|
|
```bash
|
|
tar -czf wg-easy-backup-$(date +%F).tar.gz ~/wg-easy/
|
|
```
|
|
|
|
---
|
|
|
|
## 📱 Подключение клиентов
|
|
|
|
### Через веб-интерфейс
|
|
|
|
1. Откройте в браузере: `http://ВАШ_IP:51821`
|
|
2. Введите пароль, указанный при установке
|
|
3. Нажмите **+ New Client**, задайте имя
|
|
4. Получите конфиг:
|
|
- 📥 **Download** — скачать файл `.conf`
|
|
- 📷 **QR Code** — отсканировать камерой телефона
|
|
|
|
### Импорт в клиент WireGuard
|
|
|
|
| Платформа | Инструкция |
|
|
|-----------|------------|
|
|
| **Android** | [WireGuard](https://play.google.com/store/apps/details?id=com.wireguard.android) → «+» → «Импорт из файла / QR» |
|
|
| **iOS** | [WireGuard](https://apps.apple.com/app/wireguard/id1441195209) → «+» → «Сканировать QR» или «Импортировать» |
|
|
| **Windows** | [Скачать клиент](https://www.wireguard.com/install/) → «Import tunnel(s) from file» |
|
|
| **macOS** | `brew install wireguard-tools` → скопировать `.conf`, запустить `wg-quick up wg0` |
|
|
| **Linux** | `apt install wireguard` → скопировать `.conf` в `/etc/wireguard/`, запустить `wg-quick up wg0` |
|
|
|
|
---
|
|
|
|
## 🔒 Безопасность
|
|
|
|
### ✅ Рекомендации
|
|
|
|
- Используйте **надёжный пароль** (12+ символов, буквы + цифры + спецсимволы)
|
|
- Ограничьте доступ к веб-интерфейсу по IP
|
|
- Регулярно обновляйте Docker-образ
|
|
- Делайте резервные копии данных
|
|
|
|
### 🛡️ Настройка фаервола
|
|
|
|
```bash
|
|
# UFW (Ubuntu/Debian)
|
|
sudo ufw allow 51820/udp # WireGuard
|
|
sudo ufw allow from 203.0.113.10 to any port 51821 proto tcp # Веб только с вашего IP
|
|
sudo ufw enable
|
|
sudo ufw status
|
|
```
|
|
|
|
```bash
|
|
# firewalld (CentOS/RHEL)
|
|
sudo firewall-cmd --add-port=51820/udp --permanent
|
|
sudo firewall-cmd --add-port=51821/tcp --permanent
|
|
sudo firewall-cmd --reload
|
|
```
|
|
|
|
### 🔐 Защита от брутфорса (Fail2Ban)
|
|
|
|
```bash
|
|
sudo apt install fail2ban -y
|
|
sudo systemctl enable --now fail2ban
|
|
```
|
|
|
|
### 🔄 Автообновление образа (Watchtower)
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name watchtower \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
containrrr/watchtower \
|
|
--cleanup --interval 86400 wg-easy
|
|
```
|
|
|
|
---
|
|
|
|
## ❓ Частые проблемы
|
|
|
|
| Проблема | Решение |
|
|
|----------|---------|
|
|
| Контейнер не запускается | Проверьте `docker logs wg-easy` |
|
|
| Клиенты не подключаются | Убедитесь, что порт `51820/udp` открыт в фаерволе |
|
|
| Веб-интерфейс недоступен | Проверьте порт `51821/tcp` и правильность IP |
|
|
| Нет интернета через VPN | Проверьте `net.ipv4.ip_forward=1` на хосте |
|
|
| Ошибка хеша пароля | Убедитесь, что хеш обёрнут в **одинарные** кавычки |
|