Введение
В данной заметке разберем установку своего VPN сервиса Wireguard с помощью Docker, для этого мы будем использовать VPS заграницей, я пользуюсь VDSina (есть сервера в Амстердаме или Нидерландах 1gb оперативной памяти, 1 ядро, 30gb NVMe, 32tb трафика в месяц за 5р в день), вы можете выбрать любимого хостера и повторить все из данной инструкции.
Подготовка к установке Wireguard
Я буду производить установку на Debian 11
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/wireguard
nano /app/wireguard/docker-compose.yml
Установка Wireguard с помощью Docker
1. Будем использовать docker-compose.yml следующего содержания:
version: "2.1"
services:
wireguard:
image: ghcr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- SERVERURL=auto
- SERVERPORT=51820
- PEERS=10
- PEERDNS=auto
- INTERNAL_SUBNET=10.13.13.0
- ALLOWEDIPS=0.0.0.0/0
volumes:
- ./config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: always
Немного о параметрах нашего docker-compose.yml файла:
- PUID=1000 – ID пользователя запускающего наш контейнер (смотрим командой id -u от нашего пользователя)
- PGID=1000 – ID группы от которой запускаем контейнер (смотрим командой id -u от нашего пользователя)
- TZ=Europe/London – указываем часовой пояс (например Europe/London)
- SERVERURL=auto – вписываем свой домен для удобства или оставляем auto
- SERVERPORT=51820 – порт wireguard
- PEERS=10 – количество конфигов которые будут созданы, можно вписать именами (например tel, homepc, denis и т.д.)
- PEERDNS=auto – можем вписать известный вам DNS (8.8.8.8, 1.1.1.1 и т.д.) или оставить значение auto
- INTERNAL_SUBNET=10.13.13.0 – внутренняя виртуальная сеть
- ALLOWEDIPS=0.0.0.0/0 – диапазоны ip к которым узлы смогут подключаться с помощью VPN
- ./config:/config – место для хранения конфигов нашего контейнера
2. Далее запускаем наш контейнер:
docker compose up -d
Готово, конфиги наших клиентов хранятся в директории /app/wireguard/config/, можем скопировать файл конфигурации клиента peerНОМЕР.conf с сервера с помощью WinSCP или другим удобным для вас способом или вывести QR код прямо в терминале командой приведенной ниже
Полезные команды
Показать QR код клиента в терминале:
docker exec -it wireguard /app/show-peer НОМЕР_ИЛИ ИМЯ
Просмотр логов контейнера для отладки проблем:
docker logs -f wireguard
Подключиться в сам контейнер:
docker exec -it wireguard /bin/bash
Как обновить Wireguard в Docker
1. Переходим в нашу директорию с Wireguard:
cd /app/wireguard
2.Скачиваем новый образ, пересобираем контейнер и чистим от старых образов:
docker compose pull wireguard
docker compose up -d wireguard
docker image prune
Как удалить Wireguard
Остановим наш контейнер с Wireguard:
docker stop wireguard
Удалим контенер:
docker rm wireguard
Удалим образ Wireguard:
docker rmi ghcr.io/linuxserver/wireguard
Удалим директорию с конфигурационными файлами Wireguard:
rm -rf /app/wireguard
Клиенты для использования Wireguard
Клиентов для Windows, macOS, Android, IOS, Linux можно скачать на официальном сайте.
Вывод
В данной небольшой заметке разобрали установку своего VPN в Docker под названием Wireguard
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT, спасибо за потраченное время на чтение и доброго времени суток!)
Так же вы можете отблагодарить автора материально: