Un serveur OpenVPN avec Docker

Si vous avez besoin d'un serveur OpenVPN à installer très simplement. Voici comment j'ai procédé pour déployer le mien avec Docker.

Tout d'abord vous aurez besoin de Docker et Docker Compose. Ce dernier est dans l'absolu facultatif, mais va nous permettre de déployer notre stack Docker beaucoup plus facilement.

1. Créer un nouveau nom de domaine

Pour faire les choses proprement j'ai choisi de créer un domaine spécialement pour notre serveur OpenVPN, il nous permettra de le configurer plus facilement. J'ai simplement ajouté un champ de type A pointant sur mon serveur dans la zone DNS de mon hébergeur.

2. Préparer le terrain

Sur votre serveur, dans l'emplacement de votre choix, créez un dossier openvpn/ puis à l'intérieur un dossier data/ et un fichier docker-compose.yml comme suit :

mkdir openvpn
mkdir openvpn/data
touch openvpn/docker-compose.yml

Le dossier data/ contiendra les fichiers relatifs à chaque utilisateur, de manière locale et donc persistante. Quant à notre fichier docker-compose.yml il contiendra la configuration du docker permettant de faire fonctionner OpenVPN.

3. On préconfigure OpenVPN

On doit lancer une première vague de commande pour préconfigurer notre serveur OpenVPN et surtout générer notre clé de sécurité ! Remplacez le '/home/monuser/openvpn/data' par le chemin absolu de votre dossier "openvpn/data" et remplacer "votredomain.tld" par votre domaine configuré la l'étape 1.

docker run -v /home/monuser/openvpn/data:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://votredomain.tld
docker run -v /home/monuser/openvpn/data:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

Pendant la procédure, n'oubliez pas de préciser une passe-phrase de sécurité. Suivant votre serveur la génération de la clé ça peut prendre pas mal de temps.

4. Faire le fichier docker-compose.yml

On a presque fini ! Dans le fichier docker-compose.yml créé plus haut, nous allons simplement écrire la procédure de lancement de notre Docker :

app:
  image: 'kylemanna/openvpn'
  volumes:
    - './data:/etc/openvpn'
  ports:
    - "1194:1194/udp"
  cap_add:
    - NET_ADMIN
  restart: always

Voilà, c'est déjà terminé. Il ne vous reste plus qu'à démarrer votre serveur VPN. Vous devrez toujours vous positionner dans le dossier "openvpn" puis taper la commande :

docker-compose up -d

Créer un utilisateur

Pour créer un nouvel utilisateur il vous suffira de lancer la commande suivante en remplaçant VOTRELOGIN par le nom d'utilisateur que vous souhaitez:

docker run -v /home/monuser/openvpn/data:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full VOTRELOGIN nopass

Récupérer le fichier .ovpn de l'utilisateur

Pour pouvoir connecter vos devices à votre serveur VPN, vous aurez besoin du fichier .ovpn correspondant à l'utilisateur que vous avez créé, pour le récupérer c'est très simple : 

docker run -v /home/monuser/openvpn/data:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient VOTRELOGIN > VOTRELOGIN.ovpn

Vous obtenez ainsi un fichier du type VOTRELOGIN.ovpn

Commentaires