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

Ratio