Wireguard — установка своего VPN с помощью Docker
Введение
В данной заметке разберем установку своего 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
1. Остановим наш контейнер с Wireguard:
docker stop wireguard
docker rm wireguard
docker rmi ghcr.io/linuxserver/wireguard
4. Удалим директорию с конфигурационными файлами Wireguard:
rm -rf /app/wireguard
Клиенты для использования Wireguard
Клиентов для Windows, macOS, Android, IOS, Linux можно скачать на официальном сайте.
Вывод
В данной небольшой заметке разобрали установку своего VPN в Docker под названием Wireguard
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT или посетите мой сайт, откуда и взята данная заметка, спасибо за потраченное время на чтение и доброго времени суток!)