Optimiser qBittorrent avec NordVPN sur NAS Synology
0 / 7
← Tous les guides

Optimiser qBittorrent avec NordVPN sur NAS Synology

Configuration Docker + GlueTUN + NordLynx. Simple à mettre en place mais sans port forwarding, les débits et ratio seront limités.

Choisissez votre guide

Ce guide a un but éducatif. monratio.fr n'encourage en aucun cas le piratage ou le téléchargement illégal de contenus protégés par le droit d'auteur.

À lire avant de commencer : NordVPN ne supporte PAS le port forwarding

Contrairement à ProtonVPN, NordVPN a supprimé le port forwarding en 2023. Concrètement, sur votre NAS : aucun peer ne pourra initier une connexion vers vous, la flamme de qBittorrent restera orange, vos débits seront limités et votre ratio progressera lentement.

Ce guide fonctionne et sécurise vos téléchargements, mais si votre objectif est la performance maximale sur un tracker privé, ProtonVPN sur NAS Synology reste nettement plus adapté (port forwarding natif via NAT-PMP, débits ×8).

Setup testé dans ce guide

Synology DS418play (Intel Celeron J3355, 2 Go de RAM), HDD classiques en SHR, fibre 800 Mb/s, Docker avec GlueTUN + qBittorrent + NordVPN (serveur P2P France).

Résultat mesuré : débits stables autour de 8 à 12 Mo/s, limités par l'absence de port forwarding.

1

🐢 Pourquoi votre NAS rame avec OpenVPN

Votre NAS télécharge à 2-3 Mo/s alors que vous avez une fibre à 800 Mb/s ? Le coupable principal n'est pas NordVPN ni votre connexion. C'est le protocole VPN que vous utilisez.

Il existe deux grandes technologies pour chiffrer votre trafic VPN :

Comparaison OpenVPN vs NordLynx (WireGuard) sur NAS :

OpenVPN (l'ancien)
Tourne comme un programme classique. Votre CPU doit faire tout le chiffrement. Sur un petit CPU type Celeron, il sature à 100% et freine tout.
CPU : 100% · Débit : 2-3 Mo/s
NordLynx (WireGuard repackagé par Nord)
Tourne au cœur du système (kernel). Quasi aucune charge CPU. Même sur un petit NAS, il délivre.
CPU : 15% · Débit : 8-12 Mo/s

Sur NordVPN, le protocole moderne s'appelle NordLynx. C'est simplement WireGuard avec une couche maison pour gérer l'authentification. Dans GlueTUN, on peut l'utiliser en mode wireguard. C'est LA première chose à activer si vous voulez des débits corrects.

Attention : même avec NordLynx parfaitement configuré, les débits resteront inférieurs à ce qu'on obtient avec ProtonVPN + port forwarding. C'est une limite structurelle de NordVPN, pas un problème de config.

OpenVPN = chiffrement userland, overhead CPU massif sur Celeron. NordLynx = WireGuard kernel-level, zéro overhead. Résultat mesuré : ×3 à ×4 en débit sur le même serveur NordVPN (limite réelle = absence de port forwarding).

Benchmark DS418play (Celeron J3355) :

# OpenVPN (avant)
$ top
CPU : 98.2% user, openvpn pid 1234
$ iperf3 -c test.nordvpn
[  5]   0.00-10.00  sec   28 MBytes   24 Mbits/sec

# NordLynx / WireGuard (après)
$ top
CPU : 14.8% user, wireguard kernel
$ iperf3 -c test.nordvpn
[  5]   0.00-10.00  sec  120 MBytes  100 Mbits/sec

# Note : plafond ~100 Mbits/s côté P2P NordVPN
# car pas de port forwarding = moins de peers entrants

Pourquoi la différence est si grande ? OpenVPN fait passer chaque paquet réseau par plusieurs couches logicielles avant de le chiffrer. NordLynx (WireGuard) intercepte les paquets directement dans le noyau du système, là où c'est le plus rapide. Sur un PC avec un CPU puissant, vous ne verrez pas la différence. Mais sur un petit NAS, c'est le jour et la nuit.

2

🔑 Récupérer vos identifiants NordVPN

GlueTUN a besoin d'identifiants spécifiques pour se connecter à NordVPN. Attention : ce ne sont pas vos identifiants NordVPN classiques (email + mot de passe). Ce sont des identifiants de service dédiés à la configuration manuelle.

  1. Connectez-vous sur nordaccount.com/dashboard/nordvpn/manual-configuration
  2. Cherchez la section "Service credentials" (identifiants de service)
  3. Copiez le username et le password affichés. Ils sont longs et aléatoires, c'est normal.
  4. Gardez ces deux valeurs sous la main pour l'étape suivante.

Ce que vous devez récupérer :

Service username abcd1234efgh5678…
Service password xyzw9876abcd5432…
⚠️ Ces identifiants sont différents de ceux utilisés pour l'application NordVPN officielle.

Option NordLynx (WireGuard natif) : si vous voulez utiliser NordLynx plutôt qu'OpenVPN, il faut récupérer votre clé privée WireGuard. La procédure officielle est simple mais un peu technique :

Extraire la clé privée NordLynx via Docker (temporaire) :

# Lancer un conteneur Nord temporaire pour extraire la clé
docker run --rm --cap-add=NET_ADMIN \
  -e NORDVPN_LOGIN_TOKEN=<votre_token> \
  ghcr.io/bubuntux/nordlynx \
  sh -c "nordvpn login --token $NORDVPN_LOGIN_TOKEN && \
         wg showconf nordlynx | grep PrivateKey"

# Token récupérable sur nordaccount.com → Accès tokens

Si cette manip vous semble trop technique, restez sur OpenVPN avec vos identifiants de service : plus lent mais bien plus simple à configurer. C'est ce qu'on utilise par défaut dans le docker-compose ci-dessous.

Sur nordaccount.com/dashboard/nordvpn/manual-configuration → section Service credentials :

# GlueTUN OpenVPN
OPENVPN_USER=<service_credential_user>
OPENVPN_PASSWORD=<service_credential_password>

# GlueTUN NordLynx (WireGuard)
# → extraire la clé via conteneur nordlynx temporaire
WIREGUARD_PRIVATE_KEY=<clé_extraite>
# Address WireGuard = 10.5.0.2/16 (par défaut Nord)

NB : ces identifiants sont distincts du login Nord classique. Ne pas réutiliser email/password compte.

Pourquoi des identifiants séparés ? NordVPN utilise un jeton différent pour les accès manuels (OpenVPN, WireGuard, routeurs). Ça leur permet de révoquer un accès sans vous forcer à changer votre mot de passe principal. Notez-les dans votre gestionnaire de mots de passe : vous en aurez besoin à chaque redéploiement Docker.

3

🐳 Créer le docker-compose GlueTUN + qBittorrent

Docker est déjà installé sur votre Synology (depuis DSM 7.2, c'est Container Manager). On va utiliser Docker Compose qui permet de lancer plusieurs conteneurs en une seule commande.

On va lancer 2 conteneurs qui travaillent ensemble :

🔒 GlueTUN
Gère la connexion VPN. Crée le tunnel OpenVPN (ou WireGuard) vers NordVPN.
→
📥 qBittorrent
Le client torrent. Passe par le réseau de GlueTUN. Aucun accès direct à Internet.

Créez un fichier docker-compose.yml dans /volume1/docker/qbittorrent/ et collez le code ci-dessous. Remplacez les deux lignes OPENVPN_USER et OPENVPN_PASSWORD par vos identifiants de service récupérés à l'étape 2.

docker-compose.yml (version OpenVPN, la plus simple) :

services:
  gluetun:
    image: qmcgaw/gluetun:latest
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn
      - VPN_TYPE=openvpn
      - OPENVPN_USER=VOTRE_SERVICE_USERNAME
      - OPENVPN_PASSWORD=VOTRE_SERVICE_PASSWORD
      - SERVER_COUNTRIES=France
      - OPENVPN_CATEGORIES=P2P
      - TZ=Europe/Paris
    ports:
      - 9775:9775
    volumes:
      - /volume1/docker/gluetun:/gluetun
    restart: always

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    network_mode: "service:gluetun"
    depends_on:
      gluetun:
        condition: service_healthy
    environment:
      - PUID=1026
      - PGID=100
      - TZ=Europe/Paris
      - WEBUI_PORT=9775
    volumes:
      - /volume1/docker/qbittorrent:/config
      - /volume1/docker/qbittorrent/downloads:/downloads
    restart: always

Si vous préférez utiliser NordLynx (WireGuard, plus rapide), remplacez le bloc environment de GlueTUN par la version ci-dessous (clé privée extraite à l'étape 2) :

Variante NordLynx / WireGuard :

    environment:
      - VPN_SERVICE_PROVIDER=nordvpn
      - VPN_TYPE=wireguard
      - WIREGUARD_PRIVATE_KEY=VOTRE_CLE_PRIVEE_NORDLYNX
      - WIREGUARD_ADDRESSES=10.5.0.2/32
      - SERVER_COUNTRIES=France
      - TZ=Europe/Paris

Lancez ensuite les conteneurs. Dans Container Manager (DSM 7.2+), cliquez sur "Project" puis "Create", sélectionnez votre fichier docker-compose.yml et validez.

Décortiquons les lignes les plus importantes :

  • VPN_SERVICE_PROVIDER=nordvpn : indique à GlueTUN qu'il doit utiliser les serveurs NordVPN et la bonne méthode d'authentification.
  • OPENVPN_CATEGORIES=P2P : ligne cruciale. Sans elle, GlueTUN peut vous connecter à un serveur qui bloque le BitTorrent. Cette variable force Nord à ne sélectionner que des serveurs marqués "P2P autorisé".
  • network_mode: "service:gluetun" : qBittorrent utilise le réseau de GlueTUN. Si le VPN tombe, qBittorrent perd Internet. C'est votre kill switch automatique.
  • PUID=1026 PGID=100 : les identifiants utilisateur/groupe sur Synology. Vérifiez les vôtres en SSH avec id.
  • Absence de VPN_PORT_FORWARDING : NordVPN ne supporte pas cette fonctionnalité. On n'en met pas, c'est volontaire. Si vous ajoutez ces variables quand même, GlueTUN les ignorera.

Fichier /volume1/docker/qbittorrent/docker-compose.yml :

services:
  gluetun:
    image: qmcgaw/gluetun:latest
    container_name: gluetun
    cap_add: [NET_ADMIN]
    devices: [/dev/net/tun:/dev/net/tun]
    environment:
      - VPN_SERVICE_PROVIDER=nordvpn
      - VPN_TYPE=openvpn           # ou wireguard pour NordLynx
      - OPENVPN_USER=<service_user>
      - OPENVPN_PASSWORD=<service_pass>
      - SERVER_COUNTRIES=France
      - OPENVPN_CATEGORIES=P2P     # IMPORTANT
      # Variante NordLynx :
      # - VPN_TYPE=wireguard
      # - WIREGUARD_PRIVATE_KEY=<key>
      # - WIREGUARD_ADDRESSES=10.5.0.2/32
    ports: [9775:9775]
    volumes: [/volume1/docker/gluetun:/gluetun]
    restart: always

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    network_mode: "service:gluetun"
    depends_on: { gluetun: { condition: service_healthy } }
    environment:
      - PUID=1026
      - PGID=100
      - WEBUI_PORT=9775
    volumes:
      - /volume1/docker/qbittorrent:/config
      - /volume1/docker/qbittorrent/downloads:/downloads

Déploiement :

# En SSH sur le NAS
cd /volume1/docker/qbittorrent
docker-compose up -d
docker logs -f gluetun   # Vérifier "VPN is up"
# NB : pas de "port forwarded" dans les logs → normal sur Nord

Le kill switch automatique. Grâce à network_mode: "service:gluetun", qBittorrent ne peut passer que par le VPN. Si GlueTUN s'arrête ou perd la connexion, qBittorrent perd Internet instantanément. Aucun risque de fuite de votre vraie IP, même pendant une fraction de seconde. C'est le seul vrai avantage de ce setup vs l'app Nord officielle sur PC.

4

💾 Régler qBittorrent pour HDD classiques

Les disques durs mécaniques sont le deuxième goulot d'étranglement après le VPN. Un HDD lit/écrit à 100-150 Mo/s quand les données sont séquentielles. Mais BitTorrent télécharge par petits morceaux en désordre : c'est ce qu'on appelle les écritures aléatoires, et ça tue les performances.

L'astuce : utiliser la RAM du NAS comme tampon pour absorber ces écritures en vrac, puis les écrire sur le disque de façon plus ordonnée.

Connectez-vous à l'interface web de qBittorrent (http://IP-NAS:9775), puis allez dans Paramètres → Avancé :

Paramètres → Avancé :

Fils d'E/S asynchrones 10
Fils de hachage 2
Taille file d'attente disque 1024 Kio
Type d'E/S du disque Compatible POSIX
Mode d'écriture E/S disque Cache du système ⭐
Mode de lecture E/S disque Cache du système
Affinité par extension de morceau Oui
⭐ Le plus important : le "cache du système" utilise la RAM libre du NAS comme tampon d'écriture.

Puis dans Comportement :

Paramètres → Comportement :

Limite mémoire physique 128 Mio (2Go RAM) / 512 Mio (4+Go)
Mémoire en suspens (vérification) 128 Mio
Interface réseau 🛡️ tun0 (obligatoire)
🛡️ Interface tun0 = kill switch de qBittorrent. Si le VPN tombe, aucun trafic ne sort.

Paramètres → Avancé :

  • Fils d'E/S asynchrones : 10
  • Fils de hachage : 2
  • Taille file disque : 1024 Kio
  • Type E/S : Compatible POSIX
  • Mode R/W E/S : Cache du système d'exploitation
  • Affinité extension : Oui

Comportement :

  • Limite mémoire : 128 Mio (2Go) / 512 Mio (4+Go)
  • Mémoire vérification : 128 Mio
  • Interface réseau : tun0 (kill switch)

Pourquoi upgrader la RAM fait une différence. Plus votre NAS a de RAM libre, plus le cache d'écriture peut absorber de données avant de les écrire sur le disque. Sur DS418play, passer de 2 Go à 6 Go coûte ~20€ et double facilement les débits sur HDD. C'est l'upgrade avec le meilleur rapport qualité/prix.

5

🎯 Limiter les torrents actifs

Ça peut sembler contre-intuitif : pourquoi limiter le nombre de téléchargements si on veut aller vite ? Parce que chaque torrent actif écrit sur le disque en même temps. Plus il y en a, plus le disque doit sauter entre des fichiers différents, et plus il ralentit.

C'est comme un serveur dans un restaurant : s'il sert 3 tables, tout va bien. S'il en sert 15, tout le monde attend.

Allez dans Paramètres → BitTorrent → File d'attente :

Téléchargements actifs max 3
Envois actifs max 5
Torrents actifs max 8
En vérification max 1

Résultat concret : passer de 15 torrents actifs à 3 peut doubler votre débit effectif sur HDD, y compris avec NordVPN.

Paramètres → BitTorrent → File d'attente :

  • DL actifs : 3
  • UL actifs : 5
  • Total actifs : 8
  • Vérification : 1

Moins de torrents parallèles = I/O plus séquentielles = ×2 débit sur HDD.

6

📦 Préallouer l'espace disque

Dans Paramètres → Téléchargements, cochez "Préallouer l'espace disque pour tous les fichiers".

Que fait cette option ? Quand vous lancez un torrent de 20 Go, qBittorrent réserve immédiatement 20 Go d'espace continu sur le disque, avant même de commencer le téléchargement. Sans ça, les morceaux du fichier atterrissent un peu partout (fragmentation), ce qui ralentit tout : le téléchargement, le seeding, et même la lecture si vous utilisez Plex.

Sans préallocation
Fichier éparpillé sur le disque
Avec préallocation
Fichier continu, lecture rapide

Le seul inconvénient : le démarrage d'un torrent prend quelques secondes de plus. Mais le gain en performance sur la durée en vaut largement la peine.

Paramètres → Téléchargements → cocher Préallouer l'espace disque pour tous les fichiers. Réduit la fragmentation HDD, améliore les perfs de seeding et de lecture Plex/Jellyfin.

7

🟠 Vérification : la flamme orange est normale

Une fois tout lancé, regardez en bas à droite de l'interface web de qBittorrent. Vous y verrez une petite icône de connexion. Avec NordVPN, elle restera orange, et c'est normal.

🟠 Orange : port fermé (état normal avec NordVPN)
Personne ne peut initier une connexion vers vous. Seules les connexions que vous initiez vers les peers fonctionnent. Débits limités mais fonctionnel.
🟢 Verte : port ouvert (inaccessible sur NordVPN)
Nécessite le port forwarding, que NordVPN ne propose pas. Impossible à obtenir avec ce setup, quelle que soit votre configuration.
ℹ️ Sur ProtonVPN, la flamme verte est atteignable via NAT-PMP. Sur NordVPN, non. Ce n'est pas un bug de configuration.

Ce qui est important à vérifier, c'est que le VPN est bien actif et que votre vraie IP ne fuit pas :

  1. Vérifiez les logs GlueTUN : dans Container Manager, ouvrez les logs du conteneur gluetun. Cherchez une ligne type VPN is up ou Connected to. C'est la preuve que le tunnel est établi.
  2. Vérifiez votre IP publique : dans qBittorrent, allez dans Outils → Vérification IP (ou passez par un service comme ipleak.net via le WebUI). L'IP affichée doit être celle d'un serveur NordVPN en France, pas la vôtre.
  3. Vérifiez l'interface tun0 : Paramètres → Avancé → Interface réseau = tun0. Si la case n'est pas cochée, qBittorrent peut passer par votre IP réelle en cas de chute du VPN.
✅
Setup NordVPN opérationnel
VPN actif, kill switch en place, IP masquée, débits stables autour de 8-12 Mo/s.
Flamme orange → c'est le comportement attendu, pas une erreur.

Limites à accepter avec ce setup : votre ratio progressera plus lentement qu'avec un VPN qui supporte le port forwarding. Sur les trackers privés exigeants (TL, PTP, BTN…), ça peut devenir un vrai handicap. Voir le bloc de recommandation en bas de page si c'est votre cas.

Icône de connexion qBittorrent sur NordVPN :

  • 🟠 Orange : port fermé = état normal et attendu (pas de port forwarding chez Nord)
  • 🟢 Verte : impossible à obtenir sans port forwarding côté VPN

Vérifications essentielles :

# 1. VPN actif
docker logs gluetun 2>&1 | grep -E "VPN is up|Connected"

# 2. IP publique vue depuis le conteneur
docker exec gluetun wget -qO- https://ipinfo.io/ip
# → doit être une IP NordVPN, pas la vôtre

# 3. Interface réseau qBittorrent
curl http://NAS_IP:9775/api/v2/app/preferences \
  | jq .current_network_interface
# → "tun0"

# 4. Test kill switch (stopper gluetun)
docker stop gluetun
curl -m 5 http://NAS_IP:9775    # → timeout attendu

Ratio impact : sans PF, uniquement connexions sortantes. Attendez-vous à ~30-50% du débit d'un setup ProtonVPN équivalent sur trackers privés.

Résultats mesurés sur le setup testé. Avant : OpenVPN + réglages par défaut + Nord = 2-3 Mo/s. Après : NordLynx + réglages optimisés HDD = 8-12 Mo/s. C'est ×3 à ×4, mais on plafonne à cause du port forwarding absent.

Pour aller plus loin : si les débits restent insuffisants ou si votre ratio n'avance pas sur un tracker privé, envisagez ProtonVPN (port forwarding natif) ou, pour les volumes vraiment importants, une seedbox dédiée.

Vous êtes sur un tracker privé exigeant ?

Si votre objectif est de maximiser votre ratio et de tenir le rythme sur des trackers comme TL, PTP ou BTN, NordVPN va vous brider à cause de l'absence de port forwarding. ProtonVPN Plus supporte NAT-PMP nativement dans GlueTUN : flamme verte garantie, peers entrants, débits ×8 sur le même hardware.

Voir le guide NAS Synology + ProtonVPN →
🤝
Besoin d'un coup de main ?

Je peux vous aider à configurer tout ça à distance. Petit forfait ou au chapeau, on s'arrange.

Me contacter