Как поднять свой VPN-сервер на WireGuard с веб-интерфейсом (WGDashboard)
4

Как поднять свой VPN-сервер на WireGuard с веб-интерфейсом (WGDashboard)

Автор: admin

Пошаговый гайд по установке WireGuard + WGDashboard в Docker. Создаём свой приватный VPN за 15 минут с красивым веб-интерфейсом для управления пользователями. Полная альтернатива коммерческим VPN-сервисам — только ваш трафик, только ваши правила.

Помните времена, когда для доступа к домашней сети или безопасного серфинга в кафе нужно было настраивать сложные OpenVPN-сертификаты? Сейчас всё проще. WireGuard — это современный, быстрый и безопасный VPN-протокол, который работает в разы быстрее предшественников. А с Docker и WGDashboard его настройка становится делом 15 минут.

В этой статье я покажу, как поднять собственный VPN-сервер на WireGuard с удобным веб-интерфейсом. Это пригодится, чтобы:

  • Безопасно выходить в интернет из публичных Wi-Fi-сетей в кафе или аэропортах.
  • Обходить региональные блокировки (ваш трафик пойдёт через сервер в нужной стране).
  • Получить доступ к домашней сети из любой точки мира — например, к вашему медиасерверу или Nextcloud.
  • Скрыть свой IP-адрес от сайтов и рекламных трекеров.

И главное — это полностью ваш сервер. Никто не логирует ваши действия, не продаёт данные рекламодателям и не ограничивает скорость.

Почему WireGuard, а не OpenVPN

WireGuard — это не просто очередной VPN-протокол. Это полностью переосмысленный подход к VPN:

Характеристика
WireGuard
OpenVPN
Скорость
~1000 Мбит/с
~200 Мбит/с
Кодовая база
~4000 строк
~70000+ строк
Настройка
5 строк конфига
Сертификаты, CA, сложные ключи
Потребление CPU
Минимальное
Высокое
Переподключение
Мгновенное
5-10 секунд

WireGuard встроен прямо в ядро Linux начиная с версии 5.6. Это значит, что он работает на уровне операционной системы, а не как отдельное приложение, что даёт максимальную производительность.

Что мы будем собирать

Мы развернём три компонента:

  1. WireGuard — сам VPN-сервер.
  2. WGDashboard — веб-интерфейс для управления пользователями. Можно добавлять и удалять клиентов, скачивать конфиги, смотреть статистику трафика.
  3. Docker + Docker Compose — всё это будет работать в контейнерах.

Всё это поднимется из одного файла docker-compose.yml. Никаких ручных правок конфигов, никаких сложных команд.

Подготовка: что нужно

  • Сервер (VPS) или домашний компьютер с белым IP-адресом. Если у вас нет VPS, можно взять недорогой сервер у любого провайдера (например, DigitalOcean, Vultr, Hetzner или российские TimeWeb, RuVDS).
  • Ubuntu 22.04 / Debian 11 или новее (хотя подойдёт любой дистрибутив с Docker).
  • Открытый порт 51820/udp в фаерволе (это стандартный порт WireGuard).
  • Docker и Docker Compose установленные.

Если вы уже ставили Docker по моему предыдущему гайду, считайте, что полдела сделано.

Шаг 1. Устанавливаем Docker и Docker Compose

Если Docker ещё не установлен, выполняем:

bash
sudo apt update && sudo apt upgrade -y
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
sudo usermod -aG docker $USER

Выходим и заходим обратно, чтобы применить права.

Шаг 2. Создаём структуру и файл docker-compose.yml

Создаём папку для проекта:

bash
mkdir -p /opt/wireguard-dashboard
cd /opt/wireguard-dashboard

Создаём файл docker-compose.yml:

yaml
version: '3.8'

services:
  wireguard:
    image: weejewel/wg-easy:latest
    container_name: wg-easy
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv4.ip_forward=1
    environment:
      - WG_HOST=your-server-ip-or-domain.com
      - PASSWORD=your-admin-password
      - WG_PORT=51820
      - WG_DEFAULT_ADDRESS=10.8.0.x
      - WG_DEFAULT_DNS=1.1.1.1
      - WG_ALLOWED_IPS=0.0.0.0/0
      - WG_PERSISTENT_KEEPALIVE=25
    volumes:
      - ./wireguard:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    networks:
      - vpn_network

networks:
  vpn_network:
    driver: bridge

Что здесь важно:

Переменная
Описание
WG_HOST
Ваш внешний IP-адрес или домен. Это самое важное поле. Например: vpn.example.com или 123.123.123.123
PASSWORD
Пароль для входа в веб-интерфейс. Обязательно придумайте надёжный
WG_PORT
Порт WireGuard (по умолчанию 51820). Можно оставить
WG_DEFAULT_DNS
DNS-сервер. 1.1.1.1 — это Cloudflare, быстрый и приватный
WG_ALLOWED_IPS
0.0.0.0/0 означает, что весь трафик клиента пойдёт через VPN (full-tunnel)
WG_DEFAULT_ADDRESS
Диапазон IP-адресов для клиентов. 10.8.0.x — стандартный

Внимание!

Замените your-server-ip-or-domain.com на реальный IP или домен вашего сервера. Если ошибётесь, конфиги для клиентов не будут работать.

Шаг 3. Запускаем

Одной командой поднимаем всё:

bash
docker compose up -d

Проверяем, что контейнер запустился:

bash
docker compose ps

Вы должны увидеть wg-easy со статусом Up.

Шаг 4. Заходим в веб-интерфейс

Открываем браузер и переходим по адресу:

bash
http://ваш-ip-сервера:51821

Вводим пароль, который вы указали в переменной PASSWORD.

Что вы увидите:

  • Красивую панель со списком клиентов.
  • Кнопку "New Client" — создание нового пользователя.
  • QR-коды для быстрого подключения с телефона.
  • Скачивание конфигов для всех устройств.
  • Статистику трафика по каждому клиенту.

Шаг 5. Подключаем устройства

Для Windows / macOS / Linux

  1. Скачайте официальный WireGuard-клиент с сайта wireguard.com.
  2. В веб-интерфейсе нажмите "New Client", дайте имя (например, "Мой ноутбук").
  3. Нажмите на значок скачивания (📥) рядом с клиентом — скачается .conf-файл.
  4. Откройте этот файл в клиенте WireGuard и нажмите "Connect".

Для Android / iPhone

  1. Установите приложение WireGuard из магазина приложений.
  2. В веб-интерфейсе создайте клиента и нажмите на QR-код.
  3. В приложении нажмите "Сканировать QR-код" и наведите камеру.
  4. Нажмите "Connect".

Готово! Всё работает. Весь ваш трафик идёт через ваш личный VPN-сервер.

Шаг 6. Настройка фаервола (важно!)

Если вы используете VPS, на нём обычно стоит фаервол (UFW) или iptables. Нужно обязательно открыть порты:

bash
sudo ufw allow 51820/udp
sudo ufw allow 51821/tcp
sudo ufw reload

Если вы используете облачного провайдера (например, DigitalOcean, Vultr, TimeWeb), не забудьте открыть порты в панели управления (там есть отдельный раздел "Firewall" или "Security Groups").

Порт
Протокол
Назначение
51820
UDP
WireGuard VPN
51821
TCP
Веб-интерфейс WGDashboard

Дополнительно: настройка автозапуска и обновлений

Контейнер уже настроен с restart: unless-stopped, так что он будет запускаться автоматически при перезагрузке сервера.

Чтобы обновить WGDashboard до новой версии:

bash
cd /opt/wireguard-dashboard
docker compose pull
docker compose up -d

Всё обновится без потери настроек, потому что конфиги хранятся в томе ./wireguard.

Дополнительно: домен и HTTPS (для безопасности)

Если вы хотите доступ к веб-интерфейсу по HTTPS (рекомендую), можно поставить Nginx Proxy Manager или Caddy перед WGDashboard.

Самый простой способ — использовать Caddy в том же docker-compose.yml:

yaml
services:
  caddy:
    image: caddy:latest
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
    networks:
      - vpn_network

volumes:
  caddy_data:

Тогда интерфейс будет доступен по https://vpn.example.com с автоматическим SSL-сертификатом.

Итог: что вы получили

Что у вас есть
Зачем это
Собственный VPN-сервер
Безопасный доступ к интернету из любой точки мира
WGDashboard
Удобное управление пользователями, QR-коды, статистика
Полный контроль
Никаких логов, никаких ограничений скорости, только ваш трафик
Docker-контейнер
Лёгкое обновление, перенос, откат

Вы только что создали свой частный VPN за 15 минут. Это надёжнее, дешевле (в долгосрочной перспективе) и приватнее, чем любые платные VPN-сервисы.

Что почитать дальше (ссылки на ваши статьи)

  • Docker для начинающих — если вы только знакомитесь с контейнерами.
  • Как поднять Nextcloud — теперь ваш VPN открывает доступ к вашему облаку из любой точки мира.
  • Домашний медиасервер на Docker — с VPN вы сможете смотреть свои фильмы даже из отпуска.

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

Сколько это стоит?
Если вы используете домашний сервер с белым IP — бесплатно. Если VPS — от $4–6 в месяц (это дешевле любого платного VPN).

Можно ли подключить несколько устройств?
Да, сколько угодно. WGDashboard позволяет создавать неограниченное количество клиентов.

Будет ли работать в Китае / ОАЭ / Турции?
WireGuard сам по себе часто блокируется, но вы можете использовать маскировку (например, через Shadowsocks поверх WireGuard) или сменить порт на 443/udp.

Можно ли сделать split-tunneling (чтобы только часть трафика шла через VPN)?
Да, в конфиге клиента можно изменить AllowedIPs на нужные подсети. Например, 192.168.1.0/24 — только для доступа к домашней сети.

Как удалить пользователя?
В веб-интерфейсе WGDashboard просто нажмите на корзину рядом с клиентом. Конфиг сразу перестанет работать.

Теперь у вас есть не просто VPN, а целая инфраструктура для приватного и безопасного интернета. И всё это — под вашим полным контролем. 🛡️