d4c8870cd880de7646afa03470fb4d7dd2dc36fc
🛡️ WireGuard Easy — Быстрый старт
Простое развёртывание WireGuard VPN с веб-интерфейсом через Docker.
📋 Требования
| Компонент | Минимум |
|---|---|
| ОС | Ubuntu 20.04+ / Debian 11+ / CentOS 8+ |
| CPU | 1 ядро |
| RAM | 256 МБ |
| Внешний IP | Статический (обязательно) |
| Docker | 20.10+ |
🚀 Быстрый старт
1️⃣ Установка Docker
# Ubuntu/Debian
apt update && apt upgrade -y
apt install -y docker.io
systemctl enable --now docker
# Проверка
docker --version
2️⃣ Создание рабочей директории
mkdir -p ~/wg-easy && cd ~/wg-easy
3️⃣ Генерация хеша пароля
⚠️ Сначала сгенерируйте хеш — он понадобится на следующем шаге.
docker run --rm ghcr.io/wg-easy/wg-easy:latest wgpw ВАШ_ПАРОЛЬ
Скопируйте вывод (строку вида $2b$12$...) — это и есть PASSWORD_HASH.
4️⃣ Запуск контейнера
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 |
📱 Подключение клиентов
Через веб-интерфейс
- Откройте в браузере:
http://ВАШ_IP:51821 - Введите пароль, указанный при установке
- Нажмите + New Client
- Выберите способ получения конфига:
- 📥 Download — скачать файл
.conf - 📷 QR Code — отсканировать камерой телефона
- 📥 Download — скачать файл
🎛️ Управление контейнером
# Статус
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 # Данные клиентов (веб-интерфейс)
💾 Регулярно делайте резервную копию этой директории!
tar -czf wg-easy-backup-$(date +%F).tar.gz ~/wg-easy/
📱 Подключение клиентов
Через веб-интерфейс
- Откройте в браузере:
http://ВАШ_IP:51821 - Введите пароль, указанный при установке
- Нажмите + New Client, задайте имя
- Получите конфиг:
- 📥 Download — скачать файл
.conf - 📷 QR Code — отсканировать камерой телефона
- 📥 Download — скачать файл
Импорт в клиент WireGuard
| Платформа | Инструкция |
|---|---|
| Android | WireGuard → «+» → «Импорт из файла / QR» |
| iOS | WireGuard → «+» → «Сканировать QR» или «Импортировать» |
| Windows | Скачать клиент → «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-образ
- Делайте резервные копии данных
🛡️ Настройка фаервола
# 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
# firewalld (CentOS/RHEL)
sudo firewall-cmd --add-port=51820/udp --permanent
sudo firewall-cmd --add-port=51821/tcp --permanent
sudo firewall-cmd --reload
🔐 Защита от брутфорса (Fail2Ban)
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
🔄 Автообновление образа (Watchtower)
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 на хосте |
| Ошибка хеша пароля | Убедитесь, что хеш обёрнут в одинарные кавычки |