Введение
В данной заметке разберем установку своего 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/
nano docker-compose.yml
3. Копируем туда содержимое ниже, меняем – WG_HOST на ваше доменное имя и – PASSWORD на свой пароль для веб-интерфейса
version: "3.8"
services:
wg-easy:
environment:
- WG_HOST=ВАШ_ДОМЕН.ru
- PASSWORD=ВАШ_ПАРОЛЬ
image: weejewel/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;
}
}
5. Собираем наши контейнеры:
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: weejewel/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, спасибо за потраченное время на чтение и доброго времени суток!)
Так же вы можете отблагодарить автора материально:
Здравствуйте, подскажите пожалуйста последовательность действий или команду, который можно обновлять сертификат SSL после того как он истечет?
Должен обновиться через 3 месяца сам, если не выйдет, то повторить команды ниже
docker exec -it nginx /bin/sh
certbot --nginx --non-interactive --agree-tos -m ВАША@ПОЧТА.com -d ВАШ_ДОМЕН.ru
nginx -s reload
exit