Crie um arquivo chamado docker-compose.yml com o seguinte conteúdo:
services:
openvpn:
cap_add:
- NET_ADMIN
image: kylemanna/openvpn
container_name: openvpn
environment:
- PUID=0
- PGID=0
- TZ=America/Sao_Paulo
ports:
- "1194:1194/udp"
restart: always
volumes:
- ./openvpn:/etc/openvpnNa mesma pasta desse arquivo execute os comandos abaixo, trocando os parâmetros:
minha.vpn.com - hostname utilizado na conexão da VPN
-N -d -D - parâmetro para não enviar todo tráfego para a VPN (se deseja enviar todo tráfego, remova esses parâmetros)
-p 'route 172.18.0.0 255.255.0.0' - rota para a rede docker (necesário para acessar outros containers no mesmo host).
Também pode adicionar outras rotas repetindo esse argumento.
-2 - parâmetro para utilizar OTP (One Time Password) na autenticação remova esse parâmetro se não quer utilizar OTP
docker compose run --rm openvpn ovpn_genconfig -N -d -D -u udp://minha.vpn.com -2 -C AES-256-GCM -p 'route 172.18.0.0 255.255.0.0'
docker compose run --rm openvpn ovpn_initpkiAgora inicie o container:
docker compose up -dPara criar um usuário execute os comandos abaixo.
usuario-vpn nome usuário da VPN (também é o Username utilizado no OTP)
Se não deseja utilizar senha de certificado, adicione o argumento nopass no comando easyrsa build-client-full
Se não deseja utilizar OTP, não execute a linha com o comando ovpn_otp_user
export CLIENTNAME="usuario-vpn"
docker compose run --rm openvpn easyrsa build-client-full $CLIENTNAME
docker compose run --rm openvpn ovpn_otp_user $CLIENTNAME
docker compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn