Una cosa che si sottovaluta è l’importanza di contribuire al protocollo Bittorrent quando lo si usa per scaricare qualcosa, per questo motivo ho deciso di sfruttare la mia connessione per fare seed dei torrent che scarico e per farlo avevo bisogno di fare hosting di una seedbox.
Una seedbox è un servizio remoto che mette a disposizione una banda ad elevate prestazioni per fare seed dei torrent agevolmente, nel mio caso però la ospiterò nel mio homelab con Proxmox.
Un aspetto importante è quello di come preservare il proprio anonimato e non esporre l’IP della propria connessione, per questo è necessario utilizzare una VPN.
La VPN deve supportare port forwarding così da avere migliori performance con il protocollo Bittorrent.
Per fare seed è infatti fondamentare fare port forwarding e avere la possibilità di ricevere più connessioni, per funzionare il protocollo ha bisogno che almeno una delle due parti abbia una porta aperta.
Deploy
Ho scelto di utilizzare docker-transmission-openvpn, un container Docker per avviare Transmission con la sua WebUI e OpenVPN.
Questo progetto fa si che transmission si avvi solo dopo che OpenVPN si è connesso alla VPN che abbiamo configurato e forza l’utilizzo solo di questa connessione evitando quindi possibili leak del nostro IP.
Io utilizzerò un container Debian LXC non privilegiato su Proxmox, per far funzionare OpenVPN è necessario seguire questi passaggi nella wiki.
Il mio file di docker-compose sarà questo partendo dalla documentazione
version: "3.3"
services:
transmission-openvpn:
container_name: transmission
restart: always
cap_add:
- NET_ADMIN
devices:
- "/dev/net/tun:/dev/net/tun"
volumes:
- './protonvpn/:/etc/openvpn/custom/'
- '/home/pietro/transmission/data/:/data'
- '/home/pietro/transmission/config/:/config'
environment:
- OPENVPN_PROVIDER=custom
- OPENVPN_CONFIG=
- OPENVPN_USERNAME=
- OPENVPN_PASSWORD=
- LOCAL_NETWORK=10.14.0.0/24
- CREATE_TUN_DEVICE=false
logging:
driver: "json-file"
options:
max-size: 10m
ports:
- 9091:9091
image: haugene/transmission-openvpn
Il vostro file sarà differente per la parte di OpenVPN in base a quale provider VPN userete, in LOCAL_NETWORK
dovrete inserire la vostra rete così da essere in grado di raggiungere la WebUi di Transmission anche quando il tunnel VPN è instaurato.
Nel mio caso utilizzo CREATE_TUN_DEVICE=false
per il fatto che questo container viene eseguito dentro un container LXC e in questo caso il dispositivo TUN viene passato dall’host alla voce devices:
, in una configurazione senza LXC non è necessario.
Avvaindolo con docker compose up -d
la WebUi sarà accessibile all’indirizzo
http://<ip>:9091/transmission/web/
Se la WebUi non si avvia cercare errori tra i log con docker compose logs
.
Conclusioni
Se si ha una buona connessione e la si vuole sfruttare aiutando un protocollo che si utilizza può essere un idea interessante.
Quando si vede un certo ratio si hanno anche delle soddisfazioni