opened image

Веб-портал WireGuard GUI

WireGuard — это новейший VPN-сервер, привлекающий внимание своей высокой производительностью, безопасностью и простотой настройки. Однако управление WireGuard может стать еще проще, если использовать графический интерфейс пользователя (GUI) в среде Docker. В этом руководстве мы рассмотрим, как установить и настроить WireGuard GUI с помощью Docker и Docker-compose.

 

1. Подготовка к установке Docker:

 

Перед тем как начать, обновим пакетный менеджер и установим необходимые компоненты:

apt-get update 
apt-get install ca-certificates curl gnupg

 

Следующий этап — добавление ключа репозитория Docker:

 

install -m 0755 -d /etc/apt/keyrings 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

 

Теперь добавим сам репозиторий Docker:

 

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

Обновляем и устанавливаем Docker:

 

apt-get update 
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

Для проверки успешности установки:

docker --version

 

 

Активируем автозапуск Docker при загрузке системы:

systemctl enable docker

 

 

2. Установка Docker-compose:

Для установки Docker-compose выполним следующие команды:

 
curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 
chmod +x /usr/local/bin/docker-compose

 

Для проверки:

 

docker-compose --version

 

 

3. Установка и настройка WireGuard GUI:

Перейдите или создайте каталог для конфигурации:

mkdir -p /home/wireguard && cd /home/wireguard

 

Создайте файл docker-compose.yaml:

vim docker-compose.yaml

 

Вставьте в файл следующую конфигурацию:

 
volumes:
  etc_wireguard:

services:
  wg-easy:
    environment:
      # Change Language:
      # (Supports: en, ua, ru, tr, no, pl, fr, de, ca, es, ko, vi, nl, is, pt, chs, cht, it, th, hi, ja, si)
      - LANG=en
     
      - WG_HOST=SERVER_IP

      # Optional:
      - PASSWORD_HASH=YOUR_ADMIN_PASSWORD
      # - PORT=51821
      # - WG_PORT=51820
      # - WG_CONFIG_PORT=92820
      - WG_DEFAULT_ADDRESS=10.8.0.x
      - WG_DEFAULT_DNS=1.1.1.1
      - WG_MTU=1420
      # - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
      # - WG_PERSISTENT_KEEPALIVE=25
      # - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
      # - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
      # - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
      # - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt
      # - UI_TRAFFIC_STATS=true
      # - UI_CHART_TYPE=0 # (0 Charts disabled, 1 # Line chart, 2 # Area chart, 3 # Bar chart)
      # - WG_ENABLE_ONE_TIME_LINKS=true
      # - UI_ENABLE_SORT_CLIENTS=true
      # - WG_ENABLE_EXPIRES_TIME=true
      # - ENABLE_PROMETHEUS_METRICS=false
      # - PROMETHEUS_METRICS_PASSWORD=$$2a$$12$$vkvKpeEAHD78gasyawIod.1leBMKg8sBwKW.pQyNsq78bXV3INf2G # (needs double $$, hash of 'prometheus_password'; see "How_to_generate_an_bcrypt_hash.md" for generate the hash)

    image: ghcr.io/wg-easy/wg-easy
    container_name: wg-easy
    volumes:
      - etc_wireguard:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
      # - NET_RAW # ⚠️ Uncomment if using Podman
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

 

 

Не забудьте заменить YOUR_SERVER_IP и YOUR_ADMIN_PASSWORD на соответствующие значения.

YOUR_ADMIN_PASSWORD - нужно генерировать хеш пароль через bcrypt​​​​​​​.

 

Чтобы сгенерировать хэш пароля bcrypt с помощью docker, выполните следующую команду:​​​​​​​

 

docker run -it ghcr.io/wg-easy/wg-easy wgpw YOUR_PASSWORD
PASSWORD_HASH='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW' // literally YOUR_PASSWORD

 

Важно: Обратите внимание: не заключайте сгенерированный хеш-пароль в одинарные кавычки при использовании docker-compose.yml. Вместо этого замените каждый $символ двумя $$символами.

 

В разделе environment в docker-compose.yml файле вы можете добавить следующие переменные:

 
environment:
  - WG_HOST=vpn.myserver.com # Публичное доменное имя вашего VPN-сервера.
  - PASSWORD=foobar123       # Пароль для входа в Web UI.
  - WG_PORT=12345            # Публичный UDP-порт вашего VPN-сервера. WireGuard всегда будет слушать на порту 51820 внутри Docker-контейнера.
  - WG_MTU=1420              # MTU, который будут использовать клиенты. Сервер использует MTU по умолчанию от WireGuard.
  - WG_PERSISTENT_KEEPALIVE=25 # Значение в секундах для поддержания "соединения" открытым.
  - WG_DEFAULT_ADDRESS=10.6.0.x  # Диапазон IP-адресов клиентов.
  - WG_DEFAULT_DNS=8.8.8.8, 8.8.4.4 # DNS-сервер, который будут использовать клиенты.
  - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24 # Разрешенные IP-адреса, которые будут использовать клиенты.

 

WG_ALLOWED_IPS определяет, какие IP-адреса и сети разрешены для трафика через WireGuard. Это определение того, какой трафик будет направляться через VPN.

 

Когда вы подключаетесь к VPN, ваше устройство отправляет трафик в интернет через этот VPN-сервер. Но не весь трафик обязательно должен проходить через VPN; вы можете определить, какой именно трафик следует направлять через VPN, используя разрешенные IP-адреса.

Пример:

  • WG_ALLOWED_IPS=0.0.0.0/0, ::/0: Это значит, что весь трафик (IPv4 и IPv6) будет направляться через VPN. 0.0.0.0/0 охватывает все IPv4-адреса, а ::/0 охватывает все IPv6-адреса.
  • WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24: Это значит, что только трафик, предназначенный для IP-адресов в диапазонах 192.168.15.0 - 192.168.15.255 и 10.0.1.0 - 10.0.1.255, будет направляться через VPN. Весь остальной трафик будет идти напрямую, минуя VPN.

Таким образом, WG_ALLOWED_IPS позволяет вам контролировать, какой именно трафик будет передаваться через VPN-туннель. Это может быть полезно, например, если вы хотите, чтобы только определенные приложения или устройства использовали VPN, а остальной трафик шел напрямую.

 

Важно также учесть, что если вы меняете значение WG_PORT, то также необходимо изменить настроенные порты в разделе ports вашего docker-compose.yml файла. Например, если вы устанавливаете WG_PORT=12345, то порты должны выглядеть так:

ports:
  - "12345:51820/udp"
  - "12345:51821/tcp"

 

 

Затем просто запустите WireGuard GUI:

 

docker-compose up -d

 

 

Теперь у вас есть функционирующий WireGuard с графическим интерфейсом пользователя, доступным через ваш браузер! 

Вы можете подключиться по IP:PORT. В этом случае IP:55444 Пароль в панель мы задали в блоке environment.

 

 

 


 

WireGuard GUI в среде Docker предоставляет простое и эффективное решение для управления вашим VPN. Это руководство поможет вам быстро настроить и начать использовать этот инструмент, обеспечивая высокую степень безопасности и удобства для вашей сети.

 

Также предлагаем рассмотреть другие полезные статьи: