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
- Aller sur go/torrent (depuis un device Tailscale)
- S'authentifier via Authelia
- Ajouter un torrent via l'interface web (magnet link ou fichier .torrent)
- 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 |