diff --git a/README (2).md b/README (2).md new file mode 100644 index 0000000..9b26454 --- /dev/null +++ b/README (2).md @@ -0,0 +1,213 @@ +# 🛡️ 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 password-hash ВАШ_ПАРОЛЬ +``` + +Скопируйте вывод (строку вида `$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` на хосте | +| Ошибка хеша пароля | Убедитесь, что хеш обёрнут в **одинарные** кавычки |