# WireGuard

**WireGuard c'est quoi ?**  
WireGuard est un protocole de communication et un logiciel libre et open source permettant de créer un réseau privé virtuel (VPN)2. Il est conçu avec les objectifs de facilité d'utilisation, de performances et de surface d'attaque basse. Il vise une meilleure performance3 et une plus grande économie d'énergie que les protocoles IPsec et OpenVPN Tunneling4. Le protocole WireGuard transmet le trafic sur UDP. [(Source - Wikipédia)](https://fr.wikipedia.org/wiki/WireGuard)  
  
**<u>Sommaire :</u>**  
**<u>1/ Création des dossiers</u>**  
**<u>2/ Création du docker-compose</u>**  
**<u>3/ Création du conteneur</u>**  
**<u>4/ Ouverture de port</u>**  
**<u>5/ Récupération des fichiers de configuration des clients</u>**  
  
C'est parti ! ![:giggle:](https://docs.wlan.ovh/uploads/images/gallery/2022-01/embedded-image-pvpohlmn.gif "Giggle    :giggle:")  
  
**<u>1/ Création des dossiers</u>**  
Je vais installer mon serveur WireGuard dans mon dossier **docker**, qui se situe sur **/srv/disk1**, je vais donc créer dans le dossier docker, un dossier wireguard qui contient un dossier config avec la commande suivante :

<div id="bkmrk-code%3A-sudo-mkdir--p-"><div>Code:</div><div>```
sudo mkdir -p /srv/disk1/docker/wireguard/config
```

</div></div>  
  
**<u>2/ Création du docker-compose</u>**  
Maintenant, toujours dans mon dossier **Dashy** :

<div id="bkmrk-code%3A-cd-%2Fsrv%2Fdisk1%2F"><div>Code:</div><div>```
cd /srv/disk1/docker/wireguard
```

</div></div>  
Je crée un fichier docker-compose.yml :

<div id="bkmrk-code%3A-sudo-nano-dock"><div>Code:</div><div>```
sudo nano docker-compose.yml
```

</div></div>  
Avec le contenu suivant :

<div id="bkmrk-code%3A-version%3A-%222.1%22"><div>Code:</div><div>```
version: "2.1"
services:
  wireguard:
    image: ghcr.io/linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - SERVERURL=tuto-evo.fr
      - SERVERPORT=51820
      - PEERS=PC,TEL,PCPRO
      - PEERDNS=auto
      - INTERNAL_SUBNET=10.13.13.0
      - ALLOWEDIPS=0.0.0.0/0
    volumes:
      - /srv/disk1/docker/wireguard/config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    restart: unless-stopped
```

</div></div>  
Ici, plusieurs choses sont a adapter suivant votre installation :  
\- **PUID** et **PGID**sont à modifier suivant les ID de votre utilisateur\*  
\* Pour connaitre le PUID/GUID de l'utilisateur : [\[Tuto\] Connaitre le PUID / PGID d'un utilisateur](https://www.forum-nas.fr/viewtopic.php?f=56&t=13213).  
  
\- **SERVERURL**, ici j'ai indiqué **tuto-evo.fr** comme nom de domaine d'acces a mon serveur. Ceci est a remplacer par votre nom de domaine, si vous avez une IP Fixe, vous pouvez également ici indiquer l'IP Fixe plutot qu'un nom de domaine.  
  
\- **PEERS**, contient soit un nombre soit des valeur texte séparé par une virgule, cela correspond au nombre de configuration client que vous voulez générer à la création du serveur. Ici, je souhaite créer 3 profils : "PC" , "TEL" et "PCPRO". J'aurai également pu indiquer : **<u>PEERS=3</u>** a la seul différence que les 3 profils générer n'ont dans ce cas, pas de nom.  
  
\- **ALLOWEDIPS** correspond à la plage d'IP autorisé a utilisé le VPN. Avec la configuration "0.0.0.0/0" alors le client VPN forcera toutes les connexions a utiliser le VPN.  
  
\- Sur la ligne "/srv/disk1/docker/wireguard/config:/config", **/srv/disk1/docker/wireguard/config** doit correspondre avec le dossier crée a l'étape 1 du tuto.  
  
**<u>3/ Création du conteneur</u>**  
Maintenant, toujours dans mon dossier **wireguard** :

<div id="bkmrk-code%3A-cd-%2Fsrv%2Fdisk1%2F-0"><div>Code:</div><div>```
cd /srv/disk1/docker/wireguard
```

</div></div>  
on execute la commande :

<div id="bkmrk-code%3A-sudo-docker-co"><div>Code:</div><div>```
sudo docker-compose up -d
```

</div></div>  
Une fois fini, la commande renvoi "done", alors le conteneur est bien créé !  
Il faut attendre quelques minutes pour que le conteneur soit bien créer et les configuration générées.  
  
**<u>4/ Ouverture de port</u>**  
Pour fonctionner correctement, Wireguard a besoin que le port **51820 UDP** soit correctement ouvert et redirigé. Pensez donc a bien l'ouvrir/redirigé dans votre box et/ou pare-feu.  
  
**<u>5/ Récupération des fichiers de configuration des clients</u>**  
Dans votre dossier de configuration ( **/srv/disk1/docker/wireguard/config** ), nous allons trouver des dossier commençant par **<u>peer\_</u>**.  
Dans mon cas, 3 dossiers car nous avons configuré 3 clients ! Un dossier peer\_PC, un peer\_TEL et un peer\_PCPRO.  
  
Dans chacun de ces dossiers vous allez trouver un fichier .conf, qui servira a connecté votre client au serveur Wireguard !