Skip to content

OpenVPN

Einfacher und selbst gehosteter OpenSource VPN Dienst.

Auf Basis dessen, was man mit dem OpenVPN Server vorhat, empfehlen wir diesen nicht in einem Docker Container zu betreiben. Alternativen zu dem Docker Container wären es entweder direkt auf dem Host zu installieren oder eine vorhandene Infrastruktur zu verwenden (z. B. einen Router wie pfSense oder VyOS)

version: '3.9'

services:
  openvpn:
    image: kylemanna/openvpn
    restart: always
    ports:
     - "1194:1194/udp"
    cap_add:
     - "NET_ADMIN"   
    volumes:
     - "/srv/openvpn:/etc/openvpn"

Zuerst muss man die Konfigurationsdateien und Zertifikate initialisieren:

docker compose run --rm openvpn ovpn_genconfig -u udp://vpn.domain.de
docker compose run --rm openvpn ovpn_initpki

Danach kann der Server gestartet werden

docker compose up -d openvpn

Die Zertifikate werden wie folgt generiert:

export CLIENTNAME="your_client_name"
# with a passphrase (recommended)
docker compose run --rm openvpn easyrsa build-client-full $CLIENTNAME
# without a passphrase (not recommended)
docker compose run --rm openvpn easyrsa build-client-full $CLIENTNAME nopass

Die Konfigurationsdatei für den Client kann wie folgt gespeichert werden:

docker compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn

Um ein Client Zertifikat zu widerrufen:

# Keep the corresponding crt, key and req files.
docker compose run --rm openvpn ovpn_revokeclient $CLIENTNAME
# Remove the corresponding crt, key and req files.
docker compose run --rm openvpn ovpn_revokeclient $CLIENTNAME remove