Развертывание WireGuard VPN сервера в rootless контейнере podman

Попробую запустить VPN-сервер WireGuard в rootless контейнере (использую podman-контейнеры, которые нативно поддерживаются CentOS). Для конфигурации контейнера буду использовать podman-compose.

Подготовка и настройка системы и компонентов

В системе должны быть установлены podman и podman-compose, открыты порты для VPN и для веб-панели (по умолчанию это 51820/udp и 51821/tcp).
Если установлен firewall-cmd, необходимо открыть порты.

Настройка и запуск контейнера

Для начала необходимо создать директорию wireguard, где будут храниться конфигурации VPN-клиентов, и файл compose.yaml со следующим содержимым:

В compose файле необходимо заменить значения на свои:

  • {WG_PORT} — порт VPN-сервера (по умолчанию 51820)
  • {WEB_PORT} — порт веб-панели, из которой будет производиться настройка сервера (по умолчанию 51821)
  • {HOST_ADDRESS} — имя хоста (домен или IP-адрес сервера)
  • {PASSWORD_HASH} — хеш пароля от веб-панели (если не указать, то панель будет доступна без пароля)

Далее необходимо запустить контейнер командой:

Создание пароля для веб-панели

Хеш пароля необходимо указать в переменной среды PASSWORD_HASH. Если использовать нехешированный пароль в переменной PASSWORD, то получим следующую ошибку:

Причем ссылка уже недоступна, инструкция по генерации хеша пароля доступна на github.

А потому запускаем контейнер без пароля, и запускаем скрипт генерации хеша из контейнера:

Команда выведет хеш пароля, который нужно указать в переменной среды PASSWORD_HASH. Будьте внимательны, когда сохраняете хеш в compose.yaml файле, все символы $ необходимо заменить на $$ , чтоб они не воспринимались интерпретатором как переменные.

Запуск VPN-сервера и создание конфигурации для пользователей

Перезапускаем контейнер с VPN-сервером.

И далее заходим на веб-панель по адресу {HOST_ADDRESS}:{WEB_PORT} (по умолчанию порт 51821), вводим пароль, добавляем пользователей. Подключиться к серверу можно после скачивания ключей доступа либо по QR-коду.

Rate this post

Добавить комментарий