JDownloader anonym über Tor auf Linux: Docker-Compose-Anleitung für Ubuntu, Debian & Co.
Ein Linux-Server mit Docker reicht aus, um JDownloader 2 vollständig durch das Tor-Netzwerk zu tunneln. Diese Anleitung zeigt Schritt für Schritt das Compose-Setup auf Ubuntu, Debian oder einer verwandten Distribution – vom Docker-Install über die Konfiguration mit SOCKS5-Proxy bis zur Tunnel-Verifikation.

JDownloader 2 ist das De-facto-Standardtool, um große Dateien von Filehostern, Mediatheken oder Wissenschafts-Archiven zu laden. Wer den Verkehr vollständig über das Tor-Netzwerk schicken möchte – für Privacy-Recherchen, Whistleblower-Workflows oder schlicht zur IP-Anonymisierung gegenüber den Server-Logs der Quellen – kann das auf jedem Linux-Server mit zwei Docker-Containern erledigen. Die Anleitung zeigt das komplette Setup unter Ubuntu, Debian oder einer verwandten Distribution.
Was Tor leistet – und was nicht
Vor dem Setup ein paar ehrliche Hinweise, damit die Erwartungen passen:
- Tor verbirgt deine IP-Adresse gegenüber der Quelle. Aus deren Sicht kommt der Download von einem Tor-Exit-Knoten irgendwo auf der Welt.
- Tor ist nicht für Bulk-Downloads optimiert. Realistisch sind 0,5–5 MB/s, oft weniger. Wer eine Gigabit-Leitung ausreizen will, ist mit einem klassischen VPN besser bedient.
- Tor.org rät von BitTorrent ab, weil dieser Traffic das Netz belastet. JDownloader nutzt HTTP/S, also kein BitTorrent – trotzdem bewusst und maßvoll fahren.
- Tor schützt nicht vor schadhaften Quellen. Anonymität ersetzt keine Sorgfalt. Antiviren-Prüfung am Endgerät bleibt Pflicht.
- Rechtliche Verantwortung bleibt beim Nutzer. Anonymität ist kein Freibrief für unrechtmäßige Quellen – Urheberrecht, Marken-, Persönlichkeitsrecht gelten unverändert.
Architektur in einem Satz
Zwei Container in einem isolierten Docker-Netzwerk: Der Tor-Gateway-Container stellt einen SOCKS5-Proxy auf Port 9050 bereit, der JDownloader-Container ist per Java-Proxy-Variable so konfiguriert, dass jeder ausgehende Verbindungsversuch durch diesen SOCKS5-Proxy läuft.
Voraussetzungen
- Linux-Server mit aktuellem Kernel (Ubuntu 22.04/24.04, Debian 12, Alma/Rocky 9, Fedora etc.)
- Root-Rechte oder sudo-Zugriff
- Mindestens 2 GB freier RAM, 4 GB sind komfortabler
- Ein freier TCP-Port
5801für das JDownloader-Web-UI - SSH-Zugang zum Server
Schritt 1: Docker und Docker Compose installieren
Auf einem frischen Server schnell mit dem offiziellen Convenience-Script:
curl -fsSL https://get.docker.com | sudo shfür die ganze Anleitung --> LINK
Anschließend den eigenen Benutzer der docker-Gruppe hinzufügen, damit docker compose ohne sudo läuft. Nach dem Befehl einmal aus- und wieder einloggen:
sudo usermod -aG docker $USERDocker-Daemon aktivieren und beim Boot starten:
sudo systemctl enable --now dockerTest:
docker --version
docker compose versionSchritt 2: Verzeichnis-Struktur anlegen
sudo mkdir -p /opt/jdownloader-tor/data
sudo mkdir -p /opt/jdownloader-tor/output
sudo chown -R $USER:$USER /opt/jdownloader-tor
cd /opt/jdownloader-tordata/– persistente JDownloader-Konfigurationoutput/– Download-Ziel
Wer die Downloads lieber in /home/$USER/Downloads haben möchte, ändert den Volume-Pfad im Compose-File entsprechend.
Schritt 3: Eigene User-ID und Gruppen-ID ermitteln
Damit die Container-Prozesse Schreibrechte auf das Output-Verzeichnis haben, müssen USER_ID und GROUP_ID im Compose-File mit dem Linux-Benutzer übereinstimmen:
idDie Werte hinter uid= und gid= notieren – auf den meisten Systemen 1000 und 1000.
Schritt 4: docker-compose.yml anlegen
Im Verzeichnis /opt/jdownloader-tor eine docker-compose.yml mit folgendem Inhalt anlegen (nano docker-compose.yml). USER_ID und GROUP_ID vor dem Speichern auf die eigenen Werte setzen:
services:
tor-gateway:
image: dperson/torproxy:latest
container_name: tor-gateway
restart: unless-stopped
environment:
- TZ=Europe/Berlin
ports:
- "9050:9050"
- "8118:8118"
networks:
tor_net:
ipv4_address: 10.10.200.10
jdownloader:
image: jlesage/jdownloader-2:latest
container_name: jdownloader-tor
restart: unless-stopped
depends_on:
- tor-gateway
environment:
- TZ=Europe/Berlin
- USER_ID=1000
- GROUP_ID=1000
- UMASK=0022
- KEEP_APP_RUNNING=1
- JAVA_TOOL_OPTIONS=-DproxySet=true -DsocksProxyHost=tor-gateway -DsocksProxyPort=9050
volumes:
- ./data:/config:rw
- ./output:/output:rw
ports:
- "5801:5800"
shm_size: "512mb"
networks:
tor_net:
ipv4_address: 10.10.200.30
networks:
tor_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.10.200.0/24
gateway: 10.10.200.1Wichtige Punkte:
JAVA_TOOL_OPTIONSsetzt die JVM systemweit auf den SOCKS5-Proxytor-gateway:9050.depends_ongarantiert, dass der Tor-Container vor JDownloader hochfährt.- Das eigene Bridge-Netz
tor_net(Subnetz10.10.200.0/24) isoliert den Stack sauber vom Host-Netz. - Port
5801ist das JDownloader-Web-UI auf dem Host. - Bei Verwendung einer Firewall (z. B.
ufw) Port 5801 nur lokal oder im LAN freigeben, niemals ungeschützt zum Internet öffnen.
Schritt 5: Stack starten
docker compose up -dDer erste Start lädt die zwei Images (ca. 200 MB zusammen) und startet beide Container. Status prüfen:
docker compose psBeide Container müssen den Status running zeigen.
Schritt 6: Tor-Verbindung testen
docker exec jdownloader-tor curl -s --socks5-hostname tor-gateway:9050 https://check.torproject.org/api/ipDie Antwort muss "IsTor":true enthalten – damit ist der Tunnel zwischen dem JDownloader-Container und dem Tor-Netzwerk verifiziert.
Schritt 7: JDownloader-Web-UI öffnen
Im Browser auf:
http://SERVER-IP:5801Die noVNC-basierte Oberfläche zeigt nach ein paar Sekunden den JDownloader-Setup-Assistenten – Sprache, Lizenz, fertig.
Schritt 8: JDownloader konfigurieren
Zwei Einstellungen vor dem ersten Download:
- Download-Verzeichnis: Einstellungen → Allgemeine Einstellungen → Standard-Download-Ordner auf
/outputsetzen – das ist im Container der Pfad, der auf/opt/jdownloader-tor/outputzeigt. - MyJDownloader (optional): Wer das System von unterwegs steuern will, kann sich kostenlos bei my.jdownloader.org registrieren und das Konto verknüpfen. Die Steuerung läuft dann über die JDownloader-Cloud – die Downloads selbst bleiben anonym über Tor.
Schritt 9: Anonymität verifizieren
Die zuverlässigste Verifikation läuft direkt im JDownloader-Container und nutzt das offizielle Check-API des Tor-Projekts:
docker exec jdownloader-tor curl -s --socks5-hostname tor-gateway:9050 https://check.torproject.org/api/ipDie Antwort ist ein kompaktes JSON-Objekt:
{"IsTor":true,"IP":"185.220.101.34"}Zwei Werte sind entscheidend:
IsTor: true– damit bestätigt der Tor-Projekt-Server direkt, dass die Anfrage über einen Tor-Exit-Knoten reinkam.IPist die aktuelle Exit-Node-Adresse, auf keinen Fall die eigene öffentliche IP des Servers.
Wer den Befehl mehrfach in kurzer Folge ausführt, bekommt unterschiedliche Exit-Node-IPs zu sehen – das zeigt die normale Tor-Circuit-Rotation. Liefert die Antwort dagegen IsTor: false oder eine IP aus dem eigenen Provider-Range, ist der SOCKS5-Tunnel nicht aktiv – in diesem Fall die Compose-Datei prüfen und den Stack mit docker compose down und docker compose up -d komplett neu starten.
Autostart absichern
Da beide Container mit restart: unless-stopped laufen und Docker selbst als systemd-Service aktiviert ist (sudo systemctl enable docker), startet der komplette Stack nach einem Server-Reboot automatisch wieder. Ein expliziter systemd-Unit ist nicht nötig.
Updates und Wartung
Update-Routine:
cd /opt/jdownloader-tor
docker compose pull
docker compose up -d
docker image prune -fNach jedem Update einmal Schritt 6 ausführen, um den Tor-Tunnel erneut zu prüfen. Das Verzeichnis /opt/jdownloader-tor (inklusive data/) gehört in den regelmäßigen Backup-Job – damit lassen sich JDownloader-Account-Manager, Download-Historie und Plugin-Einstellungen im Notfall wiederherstellen.
Troubleshooting
docker: permission deniedbeim Aufruf vondocker compose: Der Benutzer ist (noch) nicht in der Gruppedocker. Nachusermod -aG docker $USEReinmal komplett abmelden und neu einloggen.- JDownloader öffnet sich, aber Downloads laufen nicht an: Tor-Gateway hat noch keine stabile Circuit-Verbindung. Container
tor-gatewayneu starten, eine Minute warten. - Captchas funktionieren nicht: Manche Captcha-Provider blockieren Tor-Exit-Nodes. Andere Filehoster wählen oder den Captcha-Schritt manuell außerhalb des Stacks lösen.
IsTor: falsebei der Verifikation: Die VariableJAVA_TOOL_OPTIONSist nicht korrekt gesetzt. Compose-Datei prüfen, Stack neu starten.- Permission denied im Output-Ordner:
USER_ID/GROUP_IDstimmen nicht. Mitiddie echten Werte ermitteln und in der Compose-Datei einsetzen. - Sehr langsame Downloads: Erwartbares Tor-Verhalten – siehe Praxis-Hinweise oben.
Fazit
Auf einem klassischen Linux-Server reicht eine einzige Compose-Datei, um JDownloader vollständig durch das Tor-Netzwerk zu tunneln. Das Setup überlebt Reboots durch die Restart-Policy und braucht im Alltag nur regelmäßige Image-Updates. Wer maximale Anonymität ohne Cloud-VPN-Abo benötigt und mit der reduzierten Geschwindigkeit leben kann, hat hier einen robusten, selbstgehosteten Stack.
Dieselbe Architektur für andere Plattformen: JDownloader anonym über Tor auf der Synology .
Weitere Linux- und Container-Anleitungen in den Kategorien Linux und Docker.
Quellen: The Tor Project, jlesage/jdownloader-2 auf Docker Hub, dperson/torproxy auf Docker Hub