Для начала создаем сеть с помощью команды docker network create vpn. Далее, на основе образа Debian, подготавливаем окружение для Wireguard, устанавливая необходимые пакеты. После очистки временных файлов, вносим патч для исправления возможной ошибки с sysctl.
Создаем рабочую директорию и загружаем dnscrypt-proxy, который будет использоваться для обработки DNS-запросов. Затем копируем необходимые конфигурационные файлы. Вместо создания собственного образа можно воспользоваться готовым linuxserver/wireguard.
В файле docker-compose.yml определяем сервис Wireguard, добавляя необходимые права и настройки. Важно указать переменные среды, такие как WG_ADDRESS, WG_PRIVATEKEY и другие. Эти переменные будут использоваться для генерации конфигурации Wireguard.
Запускаем сборку и поднимаем сервис с помощью команд docker compose build и docker compose up -d. Для использования Wireguard с другим приложением, создаем отдельный сервис и устанавливаем зависимость от Redis.
Проверяем доступ к сети через тоннель и убедимся, что приложение может взаимодействовать с Redis. Настройка network_mode: «container:vpn» позволяет контейнеру иметь доступ к сети Wireguard. Важно помнить о настройках DNS, чтобы запросы шли через туннель.
При перезагрузке контейнера Wireguard, приложение может потерять доступ к сети. Этот вопрос требует дальнейшего изучения.