Wg-Easy — свой VPN Wireguard с веб-интерфейсом в Docker
Введение
В данной заметке разберем установку своего VPN сервиса Wireguard с удобным веб-интерфейсом с помощью Docker под названием — Wg-Easy
Для этого мы будем использовать VPS заграницей, я пользуюсь VDSina (есть сервера в Амстердаме или Нидерландах 1gb оперативной памяти, 1 ядро, 30gb NVMe, 32tb трафика в месяц за 5р в день), вы можете выбрать любимого хостера и повторить все из данной инструкции.
Вам понадобиться свой домен (рекомендую), так же будет вариант без своего домена, установленный Docker и копипаста из данной заметки.
Установке Wg-Easy со своим доменом и выпуск SSL сертификата
Я буду производить установку на Debian 11, в данной связке будем использовать два контейнера Wg-Easy и Nginx
1. Для начала установим Docker с помощью официального скрипта (если не установлен):
curl https://get.docker.com -o install.sh && sh install.sh
systemctl enable docker.service systemctl enable docker
usermod -aG docker $USER
2. Далее создадим нужные нам директории и наш docker-compose.yml:
mkdir -p /app/wg-easy/nginx/servers/
cd /app/wg-easy/
Сгенерируем хеш для нашего пароля:
docker run -it ghcr.io/wg-easy/wg-easy wgpw ВАШ_ПАРОЛЬ #PASSWORD_HASH ='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.$Iu7OOA2/ZIboHN6/oyxca3MWo7fW#39;
Каждый знак $ надо обернуть еще одним знаком $, пример пароля выше:
$2b$12$coPqCsPtcFO.Ab99xylBNOW4.$Iu7OOA2/ZIboHN6/oyxca3MWo7fW$
nano docker-compose.yml
3. Копируем туда содержимое ниже, меняем — WG_HOST на ваше доменное имя и — PASSWORD_HASH на свой пароль для веб-интерфейса:
version: "3.8" services: wg-easy: environment: - WG_HOST=ВАШ_ДОМЕН.ru - PASSWORD_HASH=ВАШ_ХЕШ_ПАРОЛЬ image: ghcr.io/wg-easy/wg-easy container_name: wg-easy hostname: wg-easy volumes: - ./data:/etc/wireguard ports: - "51820:51820/udp" restart: unless-stopped cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1 nginx: image: weejewel/nginx-with-certbot container_name: nginx hostname: nginx volumes: - ./nginx/servers/:/etc/nginx/servers/ - ./nginx/letsencrypt/:/etc/letsencrypt/ ports: - "80:80/tcp" - "443:443/tcp" restart: unless-stopped
4. Создаем конфигурационный файл для Nginx, меняем значение в server_name на ваше доменное имя:
nano /app/wg-easy/nginx/servers/wg-easy.conf
server { server_name ВАШ_ДОМЕН.ru; location / { proxy_pass http://wg-easy:51821/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; } }
docker compose up -d
Выпускаем бесплатный SSL сертификат для нашего домена
1. Подключаемся в наш контейнер командой ниже:
docker exec -it nginx /bin/sh
2. Меняем в команде ниже значения почты и домена на ваши и вставляем в терминал:
certbot --nginx --non-interactive --agree-tos -m ВАША@ПОЧТА.com -d ВАШ_ДОМЕН.ru
3. Перезагружаем Nginx и выходим из контейнера:
nginx -s reload exit
4. Переходим в браузер по адресу https://ВАШ_ДОМЕН.ru и вводим пароль который указали в docker-compose.yml файле выше
В самом веб-интерфейсе сложного ничего нет, поэтому останавливаться на нем не буду
Установке Wg-Easy без своего домена
1. Для начала установим Docker с помощью официального скрипта (если не установлен):
curl https://get.docker.com -o install.sh && sh install.sh
systemctl enable docker.service systemctl enable docker
usermod -aG docker $USER
2. Далее создадим нужные нам директории и наш docker-compose.yml:
mkdir -p /app/wg-easy
cd /app/wg-easy/
nano docker-compose.yml
3. Копируем туда содержимое ниже, меняем — WG_HOST на ваш IP, а — PASSWORD на свой пароль для веб-интерфейса:
version: "3.8" services: wg-easy: environment: - WG_HOST=ВАШ_IP - PASSWORD=ВАШ_ПАРОЛЬ image: ghcr.io/wg-easy/wg-easy container_name: wg-easy hostname: wg-easy volumes: - ./data:/etc/wireguard ports: - "51820:51820/udp" - "51821:51821/tcp" restart: unless-stopped cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1
docker compose up -d
Готово, теперь можно перейти в наш веб-интерфейс по адресу ниже и вести пароль который мы указали в docker-compose.yml:
http://ВАШ_IP:51821/
В самом веб-интерфейсе сложного ничего нет, поэтому останавливаться на нем не буду
Клиенты для использования Wireguard
Клиентов для Windows, macOS, Android, IOS, Linux можно скачать на официальном сайте.
Вывод
В данной небольшой заметке разобрали установку Wg-Easy, своего VPN сервиса Wireguard в Docker с удобным веб-интерфейсом на своем домене и выпустили на него бесплатный SSL сертификат
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT, а так же посетить мой сайт, откуда и взята данная заметка, спасибо за потраченное время на чтение и доброго времени суток!)