Skip to content

Transmission

Service BitTorrent sécurisé via VPN ProtonVPN.

Accès

Méthode URL Statut
Tailscale transmission.talloires.tailfd281f.ts.net ✅ Autorisé
LAN transmission.talloires.local ❌ Bloqué
Go-link go/torrent ✅ Redirige vers TS

Architecture de sécurité

┌─────────────────────────────────────────────────────────────────┐
│                         INTERNET                                 │
└─────────────────────────────────────────────────────────────────┘
         │                                    ▲
         │ Torrent traffic                    │ VPN tunnel
         ▼                                    │
┌─────────────────┐                 ┌─────────────────┐
│  ProtonVPN LU   │◄───────────────►│   WireGuard     │
│  5.253.204.x    │    encrypted    │   container     │
└─────────────────┘                 └────────┬────────┘
                                             │
                                    ┌────────┴────────┐
                                    │  Transmission   │
                                    │   container     │
                                    │ (network_mode:  │
                                    │  wireguard)     │
                                    └────────┬────────┘
                                             │
                              ┌──────────────┴──────────────┐
                              │                             │
                    ┌─────────┴─────────┐         ┌────────┴────────┐
                    │   Tailscale DNS   │         │    LAN DNS      │
                    │  .ts.net résolu   │         │  .local résolu  │
                    │  uniquement sur   │         │  sur réseau     │
                    │  devices TS       │         │  local          │
                    └─────────┬─────────┘         └────────┬────────┘
                              │                            │
                              ▼                            ▼
                    ┌─────────────────┐         ┌─────────────────┐
                    │    Authelia     │         │   403 Blocked   │
                    │  + Transmission │         │  "Use Tailscale"│
                    └─────────────────┘         └─────────────────┘

Pourquoi cette configuration ?

1. VPN obligatoire (WireGuard → ProtonVPN)

Transmission utilise network_mode: service:wireguard. Tout le trafic réseau passe par le conteneur WireGuard, qui :

  • Chiffre tout le trafic vers ProtonVPN Luxembourg
  • Applique un kill switch : si le VPN tombe, aucun trafic ne sort
  • Masque l'IP réelle du serveur aux trackers et peers

IP publique visible : 5.253.204.x (ProtonVPN LU)

2. Accès Tailscale uniquement

Risque Mitigation
Quelqu'un sur le LAN voit les torrents Accès LAN bloqué (403)
Quelqu'un sur le LAN ajoute des torrents Accès LAN bloqué (403)
Quelqu'un hors Tailscale accède DNS .ts.net non résolvable hors TS
Quelqu'un sur Tailscale non autorisé Authelia (login requis)

Principe : Le DNS *.tailfd281f.ts.net n'est résolvable que par les devices connectés au tailnet. C'est une première couche de sécurité "gratuite". Authelia ajoute l'authentification.

3. Pourquoi pas d'accès LAN ?

Le LAN est considéré moins sûr que Tailscale pour Transmission :

  • Un appareil compromis sur le LAN pourrait scanner les ports
  • Les guests WiFi pourraient potentiellement accéder
  • Pas de logs d'authentification côté LAN

Tailscale garantit que seuls les devices explicitement autorisés dans le tailnet peuvent même résoudre le nom DNS.

Risques résiduels

Risque Probabilité Impact Mitigation
Compromission d'un device TS Faible Moyen Authelia 2FA recommandé
Fuite IP si WireGuard crash Très faible Élevé Kill switch iptables
Contenu illégal téléchargé Variable Élevé Responsabilité utilisateur
DMCA notice Faible (VPN) Faible ProtonVPN no-logs policy

Configuration technique

WireGuard kill switch

# /home/lionel/lake/p2p/wireguard/wg_confs/wg0.conf
PostUp = iptables -I OUTPUT -o eth0 -d 5.253.204.162 -j ACCEPT
PostUp = iptables -I OUTPUT -o eth0 -d 172.18.0.0/16 -j ACCEPT
PostUp = iptables -I OUTPUT -o eth0 -d 172.19.0.0/16 -j ACCEPT
PostUp = iptables -A OUTPUT -o eth0 -j REJECT

Seuls autorisés : - L'endpoint VPN ProtonVPN - Les réseaux Docker internes (pour que Caddy puisse atteindre Transmission)

Caddy configuration

# LAN - Bloqué
transmission.talloires.local {
    respond "Access denied - Use Tailscale" 403
}

# Tailscale - Authelia + Transmission
transmission.talloires.tailfd281f.ts.net {
    import authelia
    reverse_proxy wireguard:9091
}

Docker network

# Transmission utilise le réseau de WireGuard
transmission:
  network_mode: service:wireguard
  depends_on:
    - wireguard

# WireGuard est sur lake_net pour être joignable par Caddy
wireguard:
  networks:
    - lake_net

Utilisation

  1. Aller sur go/torrent (depuis un device Tailscale)
  2. S'authentifier via Authelia
  3. Ajouter un torrent via l'interface web (magnet link ou fichier .torrent)
  4. Les téléchargements arrivent dans /mnt/mediaserver/transmission/downloads/

Vérification VPN

Pour confirmer que le trafic passe bien par le VPN :

# IP publique vue par Transmission
docker exec wireguard curl -s https://ifconfig.me
# Devrait retourner 5.253.204.x (ProtonVPN LU)

Fichiers

Fichier Description
~/lake/p2p/docker-compose.yml Config Docker WireGuard + Transmission
~/lake/p2p/wireguard/wg_confs/wg0.conf Config WireGuard + kill switch
~/lake/p2p/transmission/settings.json Config Transmission
/mnt/mediaserver/transmission/downloads/ Dossier téléchargements