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

### 1️⃣ Установка Docker (если не установлен)

```bash
# Для Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER && newgrp docker
```

### 2️⃣ Создание рабочей директории

```bash
mkdir -p ~/wg-easy && cd ~/wg-easy
```

### 3️⃣ Запуск контейнера

```bash
docker run -d \
  --name=wg-easy \
  -e WG_HOST=ВАШ_ПУБЛИЧНЫЙ_IP \
  -e PASSWORD_HASH='$(docker run --rm ghcr.io/wg-easy/wg-easy password-hash ВАШ_ПАРОЛЬ)' \
  -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 вашего сервера.

---

## ⚙️ Настройка окружения

### 🔐 Генерация хеша пароля

```bash
docker run --rm ghcr.io/wg-easy/wg-easy password-hash ваш_надёжный_пароль
```

Скопируйте полученный хеш и подставьте в параметр `PASSWORD_HASH`.

### 🌐 Переменные окружения

| Переменная | Обязательная | Описание | Пример |
|------------|--------------|----------|--------|
| `WG_HOST` | ✅ | Публичный IP сервера | `193.124.57.125` |
| `PASSWORD_HASH` | ✅ | Bcrypt-хеш пароля для веб-интерфейса | `$2a$12$...` |
| `WG_DEFAULT_DNS` | ❌ | DNS-серверы для клиентов | `8.8.8.8,8.8.4.4` |
| `WG_MTU` | ❌ | MTU для WireGuard-интерфейса | `1420` |
| `WG_ALLOWED_IPS` | ❌ | Разрешённые подсети | `192.168.1.0/24` |
| `WG_PERSISTENT_KEEPALIVE` | ❌ | Интервал keepalive (сек) | `25` |

> 💡 Полный список переменных: [wg-easy Environment Variables](https://github.com/wg-easy/wg-easy#environment-variables)

---

## 🎛️ Управление контейнером

```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

# 🗑️ Удаление контейнера (данные в volume сохранятся)
docker rm -f wg-easy

# 🔄 Обновление образа
docker pull ghcr.io/wg-easy/wg-easy
docker stop wg-easy && docker rm wg-easy
# Затем повторите команду запуска из раздела "Быстрый старт"
```

### 📁 Расположение данных

```
~/wg-easy/data/
├── wg0.conf          # Конфигурация сервера WireGuard
└── clients/          # Конфигурации клиентов (.conf файлы)
```

> 💾 Регулярно делайте бэкап этой директории!

---

## 📱 Подключение клиентов

### Через веб-интерфейс

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/Linux** | Установите `wireguard-tools`, скопируйте `.conf` в `~/.wireguard/`, запустите `wg-quick up wg0` |

---

## 🔒 Безопасность

### ✅ Рекомендации

- Используйте **надёжный пароль** для веб-интерфейса
- Настройте **Fail2Ban** для защиты от брутфорса:
  ```bash
  sudo apt install fail2ban -y
  ```
- Ограничьте доступ к порту `51821` по IP (если возможно):
  ```bash
  # Пример для UFW (разрешить только с доверенного IP)
  sudo ufw allow from 203.0.113.10 to any port 51821 proto tcp
  ```
- Регулярно обновляйте Docker-образ:
  ```bash
  watchtower или ручной docker pull + restart
  ```

### 🛡️ Настройка фаервола

```bash
# UFW (Ubuntu/Debian)
sudo ufw allow 51820/udp    # WireGuard трафик
sudo ufw allow 51821/tcp    # Веб-интерфейс (опционально ограничить по IP)
sudo ufw enable

# firewalld (CentOS/RHEL)
sudo firewall-cmd --add-port=51820/udp --permanent
sudo firewall-cmd --add-port=51821/tcp --permanent
sudo firewall-cmd --reload
```

---
