WireGuard с панелью wg-easy в Docker: VPN с QR-кодами за 10 минут

Установка WireGuard на VPS через wg-easy 15: Docker Compose, вход по IP без HTTPS, мастер настройки, клиенты с QR-кодом и .conf, сброс пароля и обновление. Debian 12, Ubuntu 24.04.

16 октября 2026 г.·4 мин чтения·wireguard, wg-easy, docker

WireGuard — быстрый и простой VPN-протокол: почти не грузит сервер и мгновенно переподключается, когда телефон меняет сеть. Настраивать его руками (ключи, peer’ы, AllowedIPs) муторно, поэтому ставим веб-панель wg-easy: клиенты создаются парой кликов, конфиг выдаётся файлом или QR-кодом. Инструкция для wg-easy 15.x на Debian 12 и Ubuntu 24.04.

WireGuard не маскируется. Его рукопожатие легко распознаётся DPI, и в ряде сетей он просто не подключается. Если вам нужен VPN для обхода блокировок, смотрите Amnezia или VLESS Reality. WireGuard хорош как служебный VPN: доступ к домашней сети, связь серверов, защита в публичном Wi-Fi.

Что нужно

1. Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Если Docker уже есть (docker --version отвечает), пропустите.

2. Запуск wg-easy

Папка для панели, официальный compose-файл и запуск:

# Папка для файлов панели
mkdir -p /opt/wg-easy && cd /opt/wg-easy

# Официальный файл настроек от разработчиков wg-easy
curl -fsSL -o docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

# Разрешаем открывать панель по обычному http://
sed -i -e 's/^    #environment:/    environment:/' -e 's/^    #  - INSECURE=false/      - INSECURE=true/' docker-compose.yml

# Запускаем
docker compose up -d

Без INSECURE=true новая версия wg-easy открывается только по HTTPS, а для него нужны домен и сертификат. Команда sed раскомментирует эту переменную, и панель становится доступна сразу по IP.

Панель по HTTP — пароль идёт по сети открытым текстом. Придумайте длинный пароль и не заходите в панель из общественного Wi-Fi. Если панель нужна надолго, повесьте перед ней nginx с Let’s Encrypt и уберите INSECURE.

Если на сервере включён брандмауэр, откройте 51820/UDP для VPN и 51821/TCP для панели:

ufw allow 51820/udp
ufw allow 51821/tcp

3. Мастер настройки в браузере

Откройте http://IP-сервера:51821. При первом входе запустится мастер (есть русский язык):

  1. «Продолжить».
  2. Имя пользователя и пароль администратора → «Создать аккаунт».
  3. На вопрос «У вас уже есть существующая настройка?» — «Нет».
  4. В поле «Хост» укажите внешний IP сервера. Удобно кнопкой «Предложить»: нужна строка с пометкой «IPv4 - Public». Порт оставьте 51820 → «Продолжить».
  5. «Настройка завершена успешно» → «Войти».

Поле «Хост» попадает в каждый клиентский конфиг как Endpoint. Если там окажется внутренний адрес вроде 10.42.42.42, клиенты не подключатся.

4. Клиенты

Клиент — профиль для одного устройства. Для телефона и ноутбука делайте разных: любого можно отключить, не трогая остальных.

«Новый» → имя, например laptop → «Создать клиента». «Дата отключения» пустая — клиент бессрочный.

Кнопки справа от клиента:

Кнопка Что делает
Переключатель Включает и выключает клиента
Карандаш Настройки клиента; там же кнопка «Удалить»
QR-код QR для подключения с телефона
Стрелка вниз Скачивает .conf для компьютера
Ссылка Временная ссылка на файл настроек, живёт 5 минут

5. Подключение

Нужно официальное приложение WireGuard со страницы загрузки.

Компьютер (Windows, macOS):

  1. Скачайте .conf стрелкой вниз.
  2. В WireGuard — «Import tunnel(s) from file», выберите файл.
  3. «Activate». Когда в строке Status появится Active — работает.

Linux без GUI:

apt install -y wireguard
cp laptop.conf /etc/wireguard/wg0.conf
wg-quick up wg0

Телефон:

  1. WireGuard из App Store или Google Play.
  2. В панели — кнопка QR у клиента.
  3. В приложении «+» → сканировать QR → навести камеру.
  4. Включить переключатель у туннеля.

Проверка: откройте в браузере https://api.ipify.org — должен показаться IP сервера.

Файл настроек и QR-код — ключ к VPN. В них приватный ключ клиента. Не выкладывайте их в открытые чаты.

Частые вопросы

Панель не открывается. docker ps — контейнер wg-easy должен быть в статусе Up. Адрес открываете через http://, не https://. Порт 51821/TCP открыт в брандмауэре.

VPN не подключается. Почти всегда закрыт 51820/UDP. Второе — внутренний адрес в поле «Хост»: исправьте в «Админ-панель → Конфигурация» и скачайте конфиги заново. Общий алгоритм — в статье VPN не подключается.

Забыли пароль от панели. Сброс командой на сервере, она спросит новый пароль:

cd /opt/wg-easy && docker compose exec -it wg-easy cli db:admin:reset

Обновить wg-easy. Клиенты и настройки сохраняются:

cd /opt/wg-easy && docker compose pull && docker compose up -d

В моей сети WireGuard не работает. Провайдер его режет. Берите протоколы с маскировкой: Amnezia (AmneziaWG — тот же WireGuard, но неузнаваемый) или VLESS Reality.

Полезные команды

Команда Что делает
docker logs --tail 50 wg-easy Журнал панели
docker exec wg-easy wg show Активные peer’ы, трафик, последнее рукопожатие
cd /opt/wg-easy && docker compose down Остановить панель и VPN
cd /opt/wg-easy && docker compose up -d Запустить обратно

Данные панели лежат в volume etc_wireguard — не забудьте включить его в резервные копии.