Перейти к основному содержимому

OpenVPN сервер через Docker

· 2 мин. чтения

UPD 2023.12.15

Статья морально устарела. Сейчас модно использовать Tailscale (база – wireguard), либо хотя бы сам WireGuard. Еще можете погуглить Outline.

Кстати, напишите в ЛС, если каким-то образом попали сюда. Не знаю, кто в 2023 мог сюда попасть и очень интересно как именно.


Здесь написано о запуске через docker compose. Я пишу об установке в качестве сервиса systemd

Если сервис "упадет" (Будь то убийство процесса или краш), он перезапустится через 10 секунд

Создаем и запускаем сервис OpenVPN

Создаем volume с названием ovpn-data-NAME, где NAME - название контейнера, которое во всех последующих действиях должно быть одинаковым

OVPN_DATA="ovpn-data-example" docker volume create --name $OVPN_DATA

Здесь название это example. Дальше оно и будет использоваться

Генерируем данные (Замените HOST_OR_IP на адрес сервера) При вводе 2 команды нужно будет дважды ввести пароль, который стоит запомнить. Он еще потребуется при завершении выполнения команды. Название сертификата можно ввести любое или просто .

docker run --rm -v $OVPN_DATA:/etc/openvpn kylemanna/openvpn ovpn_genconfig -u udp://HOST_OR_IP docker run --rm -v $OVPN_DATA:/etc/openvpn -it kylemanna/openvpn ovpn_initpki

Скачиваем docker-openvpn@.service в /etc/systemd/system

curl -L https://raw.githubusercontent.com/kylemanna/docker-openvpn/master/init/docker-openvpn%40.service | sudo tee /etc/systemd/system/docker-openvpn@.service

Запускаем:

systemctl enable --now docker-openvpn@example.service

Статус сервиса : systemctl status docker-openvpn@example.service Лог сервиса : journalctl --unit docker-openvpn@example.service Остановка : systemctl stop docker-openvpn@example.service

Создаем клиентские конфиги

Чтобы подключиться к VPN потребуется конфигурация. Заменяем CLIENTNAME в первой строчке

CLIENTNAME=home_pc docker run --rm -v $OVPN_DATA:/etc/openvpn -it kylemanna/openvpn easyrsa build-client-full $CLIENTNAME nopass docker run --rm -v $OVPN_DATA:/etc/openvpn kylemanna/openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn

На Windows ее нужно поместить в C:\Program Files\OpenVPN\config

Полезные ссылки