>_DerTechAgent
← zurück

Raspberry Pi als Torrent-Box mit VPN

Ein kleiner Rechner, der rund um die Uhr läuft, auf eine externe Festplatte lädt und komplett hinter einem VPN hängt. Gesteuert wird er im Browser, von jedem Gerät in deinem WLAN.

Aufbau: Raspberry Pi 4 mit Netzteil, LAN-Kabel zum Router und externer Festplatte am USB-3.0-Anschluss
Nur für legale Inhalte. Zum Beispiel Linux-Images oder frei lizenzierte Filme. Ein VPN macht Illegales nicht legal.

Das brauchst du

Geht auch ein älterer Pi? Ein Pi 3 geht auch, ist aber langsamer, weil Festplatte und Netzwerk über USB 2 laufen. Eine Festplatte ohne eigenes Netzteil kann am Pi 3 zu wenig Strom bekommen. Dann hilft ein USB-Hub mit Stromversorgung. Pi 1 und 2 reichen nicht, weil diese Anleitung ein 64-Bit-System braucht.

So ist die Box aufgebaut

Auf dem Pi laufen drei Container:

ContainerAufgabeAdresse im WLAN
Gluetunbaut die VPN-Verbindung auf und sperrt allen anderen Verkehr (Kill-Switch)–
qBittorrentlädt die Torrents, hängt komplett hinter Gluetun:8080
Filebrowserzeigt und verschiebt deine Dateien im Browser:8081

Der entscheidende Teil ist --network=container:gluetun bei qBittorrent. Damit hat qBittorrent keine eigene Verbindung ins Internet. Alles geht durch den VPN-Container. Fällt das VPN aus, geht nichts mehr raus.

1 System aufspielen

  1. Den Raspberry Pi Imager von raspberrypi.com/software laden.
  2. Als System Raspberry Pi OS Lite (64-bit) wählen.
  3. In den Einstellungen des Imagers Benutzername, Passwort und WLAN festlegen und SSH einschalten.
  4. Auf die SD-Karte schreiben, Karte in den Pi, Pi starten.

Danach verbindest du dich von deinem Rechner aus. BENUTZER ersetzt du durch den Namen aus dem Imager:

dein Rechner
ssh BENUTZER@raspberrypi.local

2 Docker installieren

dertechagent@raspberrypi: ~
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

Der erste Befehl lädt das offizielle Installationsskript von Docker. Mit dem zweiten darf dein Benutzer Docker ohne sudo verwenden. Danach einmal abmelden (exit) und wieder per SSH anmelden.

3 Festplatte einbinden

Achtung: Der zweite Befehl formatiert die Festplatte. Alle Daten darauf werden gelöscht.

Zuerst den Namen der Platte herausfinden. Meist ist es sda1:

dertechagent@raspberrypi: ~
lsblk

Dann formatieren, einen Ordner anlegen und die Platte so eintragen, dass sie nach jedem Neustart wieder da ist:

dertechagent@raspberrypi: ~
sudo mkfs.ext4 -L platte /dev/sda1
sudo mkdir /mnt/festplatte
echo "LABEL=platte /mnt/festplatte ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab
sudo mount -a
sudo chown $USER /mnt/festplatte
mkdir -p /mnt/festplatte/downloads /mnt/festplatte/config/qbittorrent /mnt/festplatte/config/filebrowser

Die Platte bekommt den Namen platte und wird darüber eingebunden. Das funktioniert auch dann, wenn sie beim nächsten Start einen anderen Gerätenamen bekommt.

4 VPN starten

Bei Mullvad erzeugst du im Konto eine WireGuard-Konfiguration und lädst die Datei herunter. Darin stehen zwei Werte, die du brauchst: PrivateKey und Address (nur die erste Adresse, die mit den Zahlen und /32).

dertechagent@raspberrypi: ~
docker run -d --name gluetun --restart unless-stopped \
  --cap-add=NET_ADMIN --device /dev/net/tun \
  -p 8080:8080 \
  -e VPN_SERVICE_PROVIDER=mullvad \
  -e VPN_TYPE=wireguard \
  -e WIREGUARD_PRIVATE_KEY=DEIN_SCHLUESSEL \
  -e WIREGUARD_ADDRESSES=DEINE_ADRESSE \
  -e SERVER_COUNTRIES=Netherlands \
  qmcgaw/gluetun

Für andere Anbieter stehen die passenden Einstellungen im Gluetun-Wiki: github.com/qdm12/gluetun-wiki

5 qBittorrent hinter dem VPN starten

dertechagent@raspberrypi: ~
docker run -d --name qbittorrent --restart unless-stopped \
  --network=container:gluetun \
  -e PUID=1000 -e PGID=1000 -e TZ=Europe/Berlin \
  -e WEBUI_PORT=8080 \
  -v /mnt/festplatte/config/qbittorrent:/config \
  -v /mnt/festplatte/downloads:/downloads \
  lscr.io/linuxserver/qbittorrent

6 Filebrowser starten

dertechagent@raspberrypi: ~
docker run -d --name filebrowser --restart unless-stopped \
  -p 8081:80 -u 1000:1000 \
  -v /mnt/festplatte:/srv \
  -v /mnt/festplatte/config/filebrowser:/database \
  filebrowser/filebrowser

7 Test: Läuft qBittorrent wirklich über das VPN?

dertechagent@raspberrypi: ~
docker exec qbittorrent curl -s https://am.i.mullvad.net/connected

Das ist die Prüfseite von Mullvad, aufgerufen aus dem qBittorrent-Container heraus. Die Antwort muss mit You are connected to Mullvad beginnen.

Steht dort „not connected“? Dann stimmt etwas mit Schlüssel oder Adresse aus Schritt 4 nicht. Mit docker logs gluetun siehst du die Fehlermeldung.

8 Passwörter

dertechagent@raspberrypi: ~
docker logs qbittorrent
docker logs filebrowser

In beiden Ausgaben steht ein Zufallspasswort für den Benutzer admin.

Wichtig bei qBittorrent: Setz danach unter Einstellungen → Webinterface ein eigenes Passwort. Sonst vergibt qBittorrent bei jedem Neustart ein neues Zufallspasswort.

9 Nach jedem Neustart automatisch

Startet der VPN-Container neu, verliert qBittorrent seine Verbindung, bis es selbst neu gestartet wird. Diese Zeile erledigt das nach jedem Hochfahren des Pi von selbst:

dertechagent@raspberrypi: ~
(crontab -l 2>/dev/null; echo "@reboot sleep 90 && docker restart qbittorrent") | crontab -

10 Zugriff aus dem Heimnetz

Von jedem Gerät im selben WLAN:

WasAdresse
Downloads (qBittorrent)http://raspberrypi.local:8080
Dateien (Filebrowser)http://raspberrypi.local:8081

Klappt der Name nicht, zeigt dir hostname -I auf dem Pi seine Adresse. Die trägst du dann statt raspberrypi.local ein.

Prüfen, ob die Ports offen sind:

dertechagent@raspberrypi: ~
docker ps

Bei gluetun muss 0.0.0.0:8080 stehen, bei filebrowser 0.0.0.0:8081.

Gut zu wissen: Der Raspberry Pi blockiert ab Werk keine Ports. Nur falls du selbst eine Firewall (ufw) installiert hast, gibst du die beiden Ports frei: sudo ufw allow 8080/tcp und sudo ufw allow 8081/tcp.

Gut zu wissen

Zum Video: Diese Anleitung gehört zur Folge „Torrent-Box mit VPN“ von DerTechAgent.