June 21, 2023

Wireguard — установка своего VPN с помощью Docker

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 код прямо в терминале командой приведенной ниже

Wireguard — установка своего VPN с помощью Docker

Полезные команды

Показать 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

2. Удалим контенер:

docker rm wireguard

3. Удалим образ Wireguard:

docker rmi ghcr.io/linuxserver/wireguard

4. Удалим директорию с конфигурационными файлами Wireguard:

rm -rf /app/wireguard

Клиенты для использования Wireguard

Клиентов для Windows, macOS, Android, IOS, Linux можно скачать на официальном сайте.


Вывод

В данной небольшой заметке разобрали установку своего VPN в Docker под названием Wireguard

Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT или посетите мой сайт, откуда и взята данная заметка, спасибо за потраченное время на чтение и доброго времени суток!)