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.
- 10 Schritte
- ca. 45 Minuten
- Beispiel-VPN: Mullvad
Das brauchst du
- Raspberry Pi 4 oder 5 mit Netzteil
- microSD-Karte (16 GB reichen)
- externe Festplatte oder SSD mit USB
- ein VPN-Abo, das WireGuard unterstützt (diese Anleitung nutzt Mullvad als Beispiel)
- einen Rechner, von dem aus du den Pi einrichtest
So ist die Box aufgebaut
Auf dem Pi laufen drei Container:
| Container | Aufgabe | Adresse im WLAN |
|---|---|---|
| Gluetun | baut die VPN-Verbindung auf und sperrt allen anderen Verkehr (Kill-Switch) | – |
| qBittorrent | lädt die Torrents, hängt komplett hinter Gluetun | :8080 |
| Filebrowser | zeigt 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
- Den Raspberry Pi Imager von raspberrypi.com/software laden.
- Als System Raspberry Pi OS Lite (64-bit) wählen.
- In den Einstellungen des Imagers Benutzername, Passwort und WLAN festlegen und SSH einschalten.
- 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:
ssh BENUTZER@raspberrypi.local
2 Docker installieren
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
Zuerst den Namen der Platte herausfinden. Meist ist es sda1:
lsblk
Dann formatieren, einen Ordner anlegen und die Platte so eintragen, dass sie nach jedem Neustart wieder da ist:
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).
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
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
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?
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.
docker logs gluetun siehst du die Fehlermeldung.8 Passwörter
docker logs qbittorrent docker logs filebrowser
In beiden Ausgaben steht ein Zufallspasswort für den Benutzer admin.
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:
(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:
| Was | Adresse |
|---|---|
| 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:
docker ps
Bei gluetun muss 0.0.0.0:8080 stehen, bei filebrowser 0.0.0.0:8081.
sudo ufw allow 8080/tcp und sudo ufw allow 8081/tcp.Gut zu wissen
- Die Box nicht ins Internet freigeben. Keine Portweiterleitung im Router für 8080 oder 8081. Die Oberflächen sind nur fürs eigene Netz gedacht.
- Kein Download-Ordner sichtbar? In qBittorrent ist der Speicherort
/downloads. Das ist der Ordnerdownloadsauf deiner Festplatte. - Platte heißt nicht sda1? Dann in Schritt 3 den Namen aus
lsblkeinsetzen. - Updates:
docker pullfür das jeweilige Image, dann den Container löschen und mit demselben Befehl neu starten. Einstellungen und Downloads liegen auf der Festplatte und bleiben erhalten.