El fallo típico de un cliente de descargas conectado a una VPN por fuera del contenedor es que, si la VPN se cae, el tráfico sigue saliendo por tu IP real sin que te enteres. Gluetun resuelve esto poniendo el túnel VPN en su propio contenedor con kill-switch de verdad: si la VPN se cae, nada que comparta su red puede salir a Internet, punto. qBittorrent cuelga de esa red; Jellyfin, que no necesita ir por la VPN, vive aparte y sirve el resultado ya descargado a cualquier dispositivo de tu red.
Descargas privadas y streaming en tu red: qBittorrent tras VPN con Gluetun + Jellyfin
Objetivo
Aislar tu cliente de descargas tras un túnel VPN con kill-switch y servir ese contenido en streaming a toda tu red con Jellyfin, sin que un fallo de VPN exponga tu IP real.
Componentes
Base · Almacenamiento
Almacenamiento existente (NAS o disco del servidor)
Base · Túnel VPN con kill-switch
Servicio principal · Cliente de descargas
Streaming · Servidor multimedia
Cómo se conecta

Haz clic para ampliar
Ensamblaje
Cómo encajan las piezas
Gluetun expone su propia red de contenedor con el túnel VPN ya activo. qBittorrent no tiene red propia: se cuelga de la de Gluetun (
network_mode: service:gluetun), así que todo su tráfico sale forzosamente por el túnel. Jellyfin no necesita VPN — sirve contenido ya descargado a tu propia red —, así que va en su red normal, con acceso de solo lectura a la misma carpeta de descargas completas.Configurar Gluetun
services: gluetun: image: qmcgaw/gluetun cap_add: - NET_ADMIN environment: - VPN_SERVICE_PROVIDER=tu_proveedor - VPN_TYPE=wireguard - WIREGUARD_PRIVATE_KEY=tu_clave_privada - WIREGUARD_ADDRESSES=10.x.x.x/32 ports: - "8080:8080" # WebUI de qBittorrent, publicada aquí porque comparte red con Gluetun restart: unless-stoppedColgar qBittorrent de la red de Gluetun
services: qbittorrent: image: lscr.io/linuxserver/qbittorrent network_mode: "service:gluetun" depends_on: - gluetun volumes: - ./qbittorrent/config:/config - /ruta/descargas:/downloads restart: unless-stoppedAl no declarar puertos ni red propia, qBittorrent usa exactamente la pila de red de Gluetun — incluido su kill-switch. Si Gluetun se cae, qBittorrent se queda sin conectividad por completo, no sale por la red normal del host.
Levantar Jellyfin con acceso a las descargas completas
services: jellyfin: image: jellyfin/jellyfin ports: - "8096:8096" volumes: - ./jellyfin/config:/config - /ruta/descargas:/data/media:ro restart: unless-stoppedComprobar que el kill-switch funciona de verdad
docker compose exec qbittorrent wget -qO- ifconfig.me # debe ser la IP del proveedor VPN, no la tuya docker compose stop gluetun docker compose exec qbittorrent wget -qO- --timeout=5 ifconfig.me # debe fallar, no debe responder
Si la segunda comprobación responde con éxito, el kill-switch no está funcionando — revisa que qBittorrent no tenga ninguna configuración de red propia que se solape con la de Gluetun antes de dar el montaje por bueno.
Conclusión
Para comprobar que funciona de verdad, no basta con ver que qBittorrent descarga: hay que confirmar que su IP pública es la del proveedor VPN (no la tuya) y que, si detienes el contenedor de Gluetun, qBittorrent se queda sin red en vez de seguir descargando por tu conexión normal. Con eso verificado, reproducir algo recién descargado desde Jellyfin en otro dispositivo de la red cierra el circuito completo.



