
Dans ce tutoriel, nous allons configurer Gluetun pour une connexion VPN sécurisée avec support d’autres services comme qBittorrent, le tout dans un environnement Docker. Gluetun est un conteneur VPN avancé qui permet de sécuriser le trafic réseau de vos applications Docker. Associé à qBittorrent, un client BitTorrent populaire, cela garantit confidentialité et performance pour vos téléchargements.
Nous aborderons les étapes nécessaires pour configurer Gluetun avec des fichiers de certificats séparés (client.crt
et client.key
) au lieu d’un fichier .ovpn
.
Gluetun et Qbitorrent, c’est quoi.
alors, je pense que le second n’a pas forcément besoin d’être présenté, Un client BitTorrent open-source apprécié pour sa légèreté, sa prise en charge des extensions comme les flux RSS et ses capacités de gestion à distance via une interface web.
Gluetun par contre est déja plus intéressant, mis dans un container docker, il sert de proxy VPN pour d’autres applications. Il prend en charge plusieurs fournisseurs VPN, la gestion des règles de pare-feu, et permet d’isoler le trafic d’autres services via une connexion sécurisée.
pré-requis
- Un serveur avec Docker et Docker Compose installé.
- les acces root
- un fichier ovpn (openvpn) généré par votre fournisseur vpn
- un OS
Un peu d’histoire personnel.
Lors de ma reprise d’étude, j’ai voulu faire un projet qui pouvait m’être utile. Les bloqueurs de pub ou auter fail2ban ne sont pas ininteressant, mais difficile d’en faire une conversation funky autour de la dinde de Noël.
De fil en aiguille, un ami (Eloïd, si tu passes par la) m’avait donné un acces Plex.
une fois cette accès tari (il était en train de changer de serveur) me suis posé la question d’en faire de même. Mais… payer pour le transcodage GPU? bof bof (addendum, je fais des dons aux artisans du libre hein ;))
Donc je suis parti vers une solution libre. Et Jellyfin revenait dans beaucoup de conversations. Je me suis payé un synology DS224+ qui en plus de son faible encombrement et de son silence, permet de lancer des containers. Et j’ai crée mon premier serveur de film personnel. Au passage pour les ayatollahs de la piraterie, mes films sont ceux que je possede également en DVD.
Un jour, au détour d’un repas, un ami me dit que lui il n’utilise son NAS désormais que pour stocker, et que le reste passe par un serveur physique. J’ai donc décidé de lui emboiter le bas avec un Mini pc elite pro de chez hp pour faire de même.
donc désormais, je tourne sur
proxmox avec des containers LXC et des VM, sous debian ou alpine la plupart du temps.
installation de Docker et Docker-compose
et bien ca tombe bien, parce que j’ai déja fait un tuto la dessus
le docker-compose.
Qu’est-ce que Docker Compose ?
Docker Compose est un outil puissant qui permet de définir et de gérer des applications multi-conteneurs Docker à l’aide d’un fichier de configuration YAML. Avec Docker Compose, il est possible de décrire les services, les réseaux, et les volumes nécessaires à une application, et de les lancer simultanément avec une seule commande.
pour l’instant, on va juste utiliser Gluetun pour la partie VPN, et qbitorrent pour la partie torrent.
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- 8888:8888/tcp # HTTP proxy
- 8388:8388/tcp # Shadowsocks
- 8388:8388/udp # Shadowsocks
- 8090:8090 # port for qbittorrent
- 8191:8191/tcp #flaresolverr
- 9696:9696/tcp #prowlarr
volumes:
- /gluetun:/gluetun
environment:
#- PUID=1000 #METTEZ VOTRE UID (1000 pour le root)
#- PGID=100 #METTEZ VOTRE GID (100 pour le root)
- TZ=Europe/Paris #METTEZ VOTRE TIMEZONE
- VPN_SERVICE_PROVIDER=nom_provider_vpn (nordvpn, vpn unlimited etc)
- VPN_TYPE=openvpn
- OPENVPN_CUSTOM_CONFIG=/gluetun/unlimited.ovpn
- OPENVPN_USER=adresse_user@website.com
- OPENVPN_PASSWORD=y0ur_p@55w0rd
- SERVER_COUNTRIES="vpn_location"
- HTTPPROXY=off #change to on if you wish to enable
- SHADOWSOCKS=off #change to on if you wish to enable
- FIREWALL_OUTBOUND_SUBNETS=172.20.0.0/16,192.168.0.0/24 #change this in line with your subnet see note on guide.
# - FIREWALL_VPN_INPUT_PORTS=12345 #uncomment this line and change the port as per the note on the guide
# - FIREWALL_VPN_INPUT_PORTS=12345 #uncomment this line and change the port as per the note on the guide
network_mode: bridge
labels:
- com.centurylinklabs.watchtower.enable=false
security_opt:
- no-new-privileges:true
restart: always
qbittorrent:
image: linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
#- PUID=1000 # METTEZ VOTRE UID (1000 pour le root)
#- PGID=100 # METTEZ VOTRE GID (100 pour le root)
- TZ=Europe/Paris # METTEZ VOTRE TIMEZONE
- WEBUI_PORT=8090
- UMASK=022
volumes:
- /docker-projects/qbittorrent:/config
- /data/torrents:/data/torrents
network_mode: service:gluetun # run on the vpn network
depends_on:
gluetun:
condition: service_healthy
security_opt:
- no-new-privileges:true
restart: always
Specificité Proxmox
pour avoir acces à /dev/tun pour le tunnel, il convient de lui donner l’instruction dans le container.
rendez-vous dans la console de votre node proxmox
nano /etc/pve/lxc/numero_container.conf
et ajoutez ces lignes
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
ensuite il faut redemarrer le container, vous pouvez le faire en interface graphique, mais au besoin
pct stop numero_container
pct start numero_container