Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Linux 30.05.2026 · 6 min Lesezeit

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.

Linux-Mini-PC mit Netzwerkkabel und Linux-Terminal im Hintergrund – Symbolbild für JDownloader anonym über Tor

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:

  1. Tor verbirgt deine IP-Adresse gegenüber der Quelle. Aus deren Sicht kommt der Download von einem Tor-Exit-Knoten irgendwo auf der Welt.
  2. 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.
  3. 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.
  4. Tor schützt nicht vor schadhaften Quellen. Anonymität ersetzt keine Sorgfalt. Antiviren-Prüfung am Endgerät bleibt Pflicht.
  5. 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

  1. Linux-Server mit aktuellem Kernel (Ubuntu 22.04/24.04, Debian 12, Alma/Rocky 9, Fedora etc.)
  2. Root-Rechte oder sudo-Zugriff
  3. Mindestens 2 GB freier RAM, 4 GB sind komfortabler
  4. Ein freier TCP-Port 5801 für das JDownloader-Web-UI
  5. 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 sh

fü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 $USER

Docker-Daemon aktivieren und beim Boot starten:

sudo systemctl enable --now docker

Test:

docker --version
docker compose version

Schritt 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-tor
  1. data/ – persistente JDownloader-Konfiguration
  2. output/ – 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:

id

Die 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.1

Wichtige Punkte:

  1. JAVA_TOOL_OPTIONS setzt die JVM systemweit auf den SOCKS5-Proxy tor-gateway:9050.
  2. depends_on garantiert, dass der Tor-Container vor JDownloader hochfährt.
  3. Das eigene Bridge-Netz tor_net (Subnetz 10.10.200.0/24) isoliert den Stack sauber vom Host-Netz.
  4. Port 5801 ist das JDownloader-Web-UI auf dem Host.
  5. 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 -d

Der erste Start lädt die zwei Images (ca. 200 MB zusammen) und startet beide Container. Status prüfen:

docker compose ps

Beide 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/ip

Die 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:5801

Die 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:

  1. Download-Verzeichnis: Einstellungen → Allgemeine Einstellungen → Standard-Download-Ordner auf /output setzen – das ist im Container der Pfad, der auf /opt/jdownloader-tor/output zeigt.
  2. 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/ip

Die Antwort ist ein kompaktes JSON-Objekt:

{"IsTor":true,"IP":"185.220.101.34"}

Zwei Werte sind entscheidend:

  1. IsTor: true – damit bestätigt der Tor-Projekt-Server direkt, dass die Anfrage über einen Tor-Exit-Knoten reinkam.
  2. IP ist 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 -f

Nach 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

  1. docker: permission denied beim Aufruf von docker compose: Der Benutzer ist (noch) nicht in der Gruppe docker. Nach usermod -aG docker $USER einmal komplett abmelden und neu einloggen.
  2. JDownloader öffnet sich, aber Downloads laufen nicht an: Tor-Gateway hat noch keine stabile Circuit-Verbindung. Container tor-gateway neu starten, eine Minute warten.
  3. 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.
  4. IsTor: false bei der Verifikation: Die Variable JAVA_TOOL_OPTIONS ist nicht korrekt gesetzt. Compose-Datei prüfen, Stack neu starten.
  5. Permission denied im Output-Ordner: USER_ID/GROUP_ID stimmen nicht. Mit id die echten Werte ermitteln und in der Compose-Datei einsetzen.
  6. 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