In een vorige blog heb ik uitgelegd hoe je OpenVPN server opzet op een Debian Server. Hierbij moet je alles handmatig doen. Het is natuurlijker veel handiger als je al je certificaten voor OpenVPN Server met een web-browser kunt configureren. Dit is mogelijk met OpenVPN UI.
Installatie
Om dit te installeren kun je het handigste gebruik maken van Docker. In de ‘docker-compose.yml’ file definieer je dan de OpenVPN server en de OpenVPN UI. Bij mij ziet de ‘docker-compose.yml’ file er als volgt uit (verander de directory waar je de configuratie opslaat naar jouw behoeften):
services:
openvpn:
container_name: openvpn
build: ./openvpn-docker
image: d3vilh/openvpn-server:latest
restart: always
privileged: true
environment:
TRUST_SUB: 10.0.70.0/24
GUEST_SUB: 10.0.71.0/24
HOME_SUB: 192.168.1.0/24
ports:
- "1194:1194/udp"
# - "2080:2080/tcp" # management port. uncomment if you would like to share it with the host
volumes:
- /home/henri/docker/openvpn/pki:/etc/openvpn/pki
- /home/henri/docker/openvpn/clients:/etc/openvpn/clients
- /home/henri/docker/openvpn/config:/etc/openvpn/config
- /home/henri/docker/openvpn/staticclients:/etc/openvpn/staticclients
- /home/henri/docker/openvpn/log:/var/log/openvpn
- /home/henri/docker/openvpn/fw-rules.sh:/opt/app/fw-rules.sh
- /home/henri/docker/openvpn/checkpsw.sh:/opt/app/checkpsw.sh
- /home/henri/docker/openvpn/server.conf:/etc/openvpn/server.conf
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
cap_add:
- NET_ADMIN
depends_on:
- "openvpn-ui"
openvpn-ui:
container_name: openvpn-ui
image: d3vilh/openvpn-ui:latest
restart: always
privileged: true
environment:
- OPENVPN_ADMIN_USERNAME=your_name
- OPENVPN_ADMIN_PASSWORD=your_password
ports:
- "3100:8080/tcp"
volumes:
- /home/henri/docker/openvpn/:/etc/openvpn
- /home/henri/docker/openvpn/db:/opt/openvpn-ui/db
- /home/henri/docker/openvpn/pki:/usr/share/easy-rsa/pki
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
Start hierna de Docker containers op met het commando ‘docker compose up -d’. Je kunt vanaf nu de OpenVPN UI benaderen op:
http://localhost:3100
Configureren OpenVPN Server
Voor hoe je jouw OpenVPN server precies instelt verwijs ik je naar de OpenVPN documentatie.
Het hoofdscherm van de OpenVPN UI ziet er als volgt uit:
Het toevoegen van een nieuwe client doe je door in het hoofdmenu ‘Certificates’ te kiezen en dan de [Create Certficate] knop te drukken. Vul vervolgens je gegevens in. De gecreëerde OVPN profile kun je dan bijvoorbeeld naar je betreffende device (b.v. iPhone) emailen en daar importeren in de OpenVPN client.
Instellen port-forward voor OpenVPN Server
Om gebruik te maken van de OpenVPN server op een client moet je nog een port-forward instellen op je router waar je internet binnenkomt. Deze moet dan wijzen naar het IP-adres van je systeem waarop je Dockers draaien. In mijn geval gebruik ik de Unifi omgeving en doe ik dit bij: Settings > Security > Port Forwarding:
Conclusie
Voortaan kan ik heel gemakkelijk grafisch een OpenVPN Server beheren via een web-interface. Als je gebruik maakt van Docker containers kun je dit tevens heel eenvoudig installeren.