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.