Torrentezni akarunk az otthoni szerverünkön, elvégre bármikor szükségünk lehet néhány Linux ISO-ra. Az ilyen műveletekhez VPN-szolgáltatást veszünk igénybe, amelyet a Gluetun VPN-klienssel érünk el, Docker használatával. A választott torrent-kliensünk a Transmission, ehhez a LinuxServer.io projekt Docker-image-ét szemeltük ki.

A compose.yaml konfig:

services:

  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - TZ=${TIMEZONE}
      - VPN_SERVICE_PROVIDER=mullvad
      - VPN_TYPE=wireguard
      - WIREGUARD_PRIVATE_KEY=${MULLVAD_WG_PRIVATE_KEY}
      - WIREGUARD_ADDRESSES=${MULLVAD_WG_ADDRESSES}
      - SERVER_COUNTRIES=${MULLVAD_SERVER_COUNTRIES}
      - OWNED_ONLY=yes
    volumes:
      - ./gluetun:/gluetun
    ports:
      # transmission
      - ${TRANSMISSION_WEB_UI_PORT}:9091
      - 51413:51413/tcp
      - 51413:51413/udp

  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    restart: unless-stopped
    network_mode: service:gluetun
    user: 1000:1000
    environment:
      - TZ=${TIMEZONE}
      - PUID=1000
      - PGID=1000
      - USER=${TRANSMISSION_WEB_UI_USER}
      - PASS=${TRANSMISSION_WEB_UI_PASS}
    volumes:
      - ./transmission:/config
      - ${BASE_DIR}/servarr/torrents:/servarr/torrents

A változókhoz, titkokhoz a .env:

TIMEZONE=Europe/Copenhagen
MULLVAD_SERVER_COUNTRIES=Denmark
MULLVAD_WG_ADDRESSES=12.34.56.78/32
MULLVAD_WG_PRIVATE_KEY="ezittkamukulcs"
BASE_DIR=/srv
TRANSMISSION_WEB_UI_USER=myuser
TRANSMISSION_WEB_UI_PASS="ezittkamujelszo"
TRANSMISSION_WEB_UI_PORT=9091

Létrehozzuk a szükséges mappákat, elindítjuk a szolgáltatásokat, majd a http://homeserver:9091 URL-en érjük el a torrent kliensünket.

$ chmod 600 .env
$ mkdir {gluetun,transmission}
$ docker compose up -d
$ docker compose down

A mappabeállításokat módosítanunk kell a transmission/settings.json fájlban (ezt nem szkripteltem):

{
    "download-dir": "/servarr/torrents/complete",
    "incomplete-dir": "/servarr/torrents/incomplete"
}

Így tesztelhetjük, hogy működik-e a VPN:

$ docker compose exec transmission sh -c "curl -s ipinfo.io" | jq