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/openvpn
Na 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_initpki
Agora inicie o container:
docker compose up -d
Para 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