Skip to Content
Next Hat / Blog

Votre propre Internet privé avec Nanocl et WireGuard

Vous voulez accéder rapidement et en toute sécurité à votre réseau privé depuis n’importe où ? Vous en avez assez des VPN tiers ? WireGuard et Nanocl vous permettent de lancer votre propre serveur VPN en quelques minutes, sans expertise avancée en administration système !

Dans ce guide, vous apprendrez à :

  • Configurer un serveur VPN WireGuard sur une machine Linux
  • Utiliser Docker et Nanocl pour un déploiement simple et fiable
  • Vous connecter à vos services internes en toute sécurité depuis n’importe où

Nanocl et WireGuard vous permettent de publier et de découvrir vos services internes en toute sécurité, avec un minimum d’administration.

Commençons et reprenez le contrôle de votre confidentialité !

Prérequis

  • Un serveur Linux doté d’une adresse IP publique
    • Il hébergera votre VPN WireGuard et servira de passerelle sécurisée.
  • Docker  installé
    • Docker exécute les services dans des conteneurs isolés.
  • Nanocl  installé
    • Nanocl simplifie l’orchestration des conteneurs et inclut un proxy et un serveur DNS.

Installer Docker

Suivez le guide officiel d’installation Docker  pour votre distribution Linux. C’est simple et rapide !

Installer Nanocl

Téléchargez et installez le binaire CLI Nanocl avec cette commande :

curl -fsSL https://download.next-hat.com/scripts/get-nanocl.sh | sh

Créez ensuite un groupe Nanocl et installez les services internes :

sudo groupadd nanocl sudo usermod -aG nanocl $USER newgrp nanocl nanocl install

Déployer WireGuard (votre VPN privé)

Passons au déploiement ! Nous utiliserons l’image populaire linuxserver/wireguard .

Un Statefile préconfiguré est disponible sur notre registre Nanocl .

Il récupère les utilisateurs à créer dans les variables d’environnement. Créez un fichier .env avec le contenu suivant :

WG_USERS=myuser

Vous pouvez ajouter plusieurs utilisateurs séparés par des virgules :

WG_USERS=user1,user2,user3

Enregistrez le Statefile 0.18 ci-dessous sous wireguard.yml, puis appliquez-le avec :

WG_USERS=myuser nanocl state apply -s ./wireguard.yml

Le manuel de ce Statefile est accessible avec :

nanocl state man -s ./wireguard.yml

Voici le contenu du fichier :

ApiVersion: v0.18 Args: - Name: namespace Kind: String Default: wireguard - Name: puid Kind: String Default: 1000 - Name: pgid Kind: String Default: 1000 - Name: dns Kind: String Default: "1.1.1.1" - Name: config-path Kind: String Default: /opt/containers/wireguard Namespace: ${{ Args.namespace }} Cargoes: - Name: wgsrv PortBindings: 51820/udp: - HostPort: "51820" Dns: # Nanocl replaces $$INTERNAL_GATEWAY with the selected network gateway. - $$INTERNAL_GATEWAY - ${{ Args.dns }} Containers: - Name: wireguard Image: lscr.io/linuxserver/wireguard:latest Cmd: - -c - SERVERURL=$NANOCL_NODE_ADDR sh /init Env: - PUID=${{ Args.puid }} - PGID=${{ Args.pgid }} # Set this to your desired users, they will be created automatically # When the container start # You can add multiple users separated by comma - PEERS=${{ Envs.WG_USERS }} - PERSISTENTKEEPALIVE_PEERS=all HostConfig: CapAdd: - NET_ADMIN Binds: - ${{ Args.config-path }}/config:/config Sysctls: net.ipv4.ip_forward: "1"

Personnalisez l’espace de noms, PUID, PGID, le serveur DNS et le chemin de configuration en les passant en arguments, par exemple :

WG_USERS=myuser nanocl state apply -s ./wireguard.yml -- --config-path /my/custom/path --puid 1001 --pgid 1001 --dns 8.8.8.8

Pour obtenir la configuration de votre client WireGuard, exécutez :

cat /opt/containers/wireguard/config/myuser/myuser.conf

Exemple de configuration :

[Interface] Address = 10.13.13.2 PrivateKey = 4Kgkxcu27g9s69OSYmSbh6jmvu8kCC8h12XxqrI3uH4= ListenPort = 51820 DNS = 10.13.13.1 [Peer] PublicKey = O/xFv4cFdrSok+Ujm9r5J6Laf1PcQv0A4u2T8BWQBQ8= PresharedKey = ZOKnf2Zp30WVuTYgcFO7M0QH5C0c3/XTYqCevC69vOg= Endpoint = 92.161.136.52:51820 AllowedIPs = 0.0.0.0/0, ::/0

Utilisez ce fichier pour vous connecter à votre serveur WireGuard
depuis tout appareil (Windows, Mac, Linux ou mobile) avec le client officiel WireGuard.

Déployer les services internes

Vous pouvez maintenant déployer vos services internes avec Nanocl.
Ils seront accessibles via le VPN WireGuard.
Par exemple, déployons un service simple qui renvoie les en-têtes HTTP.

ApiVersion: v0.18 Namespace: global Cargoes: - Name: deploy-example Containers: - Name: web Image: ghcr.io/next-hat/nanocl-get-started:latest Env: - APP=EXAMPLE Resources: - Name: dns.my-domain.internal Kind: ncdns.io/rule/v0.10 Data: Network: Internal Entries: - Name: my-domain.internal IpAddress: Internal - Name: my-domain.internal Kind: ncproxy.io/rule/v0.15 Data: Rules: - Domain: my-domain.internal Network: Internal Locations: - Path: / Target: Key: global.deploy-example.c Port: 9000

Une fois connecté au VPN, ouvrez http://my-domain.internal .

Service interne


Bonnes pratiques de sécurité

  • Limitez le port UDP 51820 aux IP de confiance à l’aide de votre pare-feu.
  • Gardez vos clés privées secrètes : ne les partagez jamais !
  • Mettez régulièrement à jour les images Docker, Nanocl et WireGuard.
  • Surveillez les journaux du serveur pour repérer les activités suspectes.

Conseils de dépannage

  • Si le conteneur WireGuard ne démarre pas, recherchez les erreurs dans les journaux Nanocl.
  • Vérifiez que votre pare-feu autorise le trafic UDP sur le port 51820.
  • Vérifiez que le chemin de configuration existe et est accessible en écriture.
  • Utilisez nanocl ps et nanocl cargo list --namespace your_namespace pour vérifier les instances actives.

Visualiser votre installation

Schéma WireGuard

Prochaines étapes

Bravo, vous possédez désormais votre propre serveur VPN performant ! Partagez ce guide, publiez votre réussite et aidez d’autres personnes à reprendre le contrôle de leur confidentialité !

Dernière mise à jour le