Skip to content

Instantly share code, notes, and snippets.

@deviationist
Last active March 29, 2023 12:32
Show Gist options
  • Save deviationist/4529c36a4130e8d106fefc2ad6597929 to your computer and use it in GitHub Desktop.
Save deviationist/4529c36a4130e8d106fefc2ad6597929 to your computer and use it in GitHub Desktop.
A simple OpenVPN-setup with Docker.

OpenVPN with Docker

Prerequisites:

  • A domain that resolves to your public IP address, possibly by using a DDNS client. I'm using this DDNS-client since I'm using Cloudflares name servers.
  • A static local IP address assigned in your DHCP that points to your server
  • Access to your router to open port UDP/1194 and point to the static server IP

Based on guide: https://medium.com/@gurayy/set-up-a-vpn-server-with-docker-in-5-minutes-a66184882c45

Setup steps:

  1. Generate config
docker run -v ~/docker-config/openvpn:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://your-ddns.domain
  1. Initiate PKI
docker run -v ~/docker-config/openvpn:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki

Common name is your DDNS-domain. Setting a password is optional, you can leave it blank.

  1. Start container
docker run --restart=unless-stopped --name=openvpn-server -v ~/docker-config/openvpn:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
  1. Create user With certificate authentication:
docker run -v ~/docker-config/openvpn:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full username nopass

With password authentication:

docker run -v ~/docker-config/openvpn:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full username
  1. Download user config
docker run -v ~/docker-config/openvpn:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient username > username.ovpn
  1. Import username.ovpn to your VPN app and connect! For macOS I would recommend Tunnelblick.

Container SSH login

docker exec -it openvpn-server /bin/bash

Delete user

docker exec -it openvpn-server easyrsa revoke username

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment