Tor Relay mit Privoxy und Nyx als Docker einrichten und nutzen
Tor steht für „The Onion Router“ – und das beschreibt das Prinzip schon ziemlich gut: Daten werden in mehreren Schichten verschlüsselt (wie bei einer Zwiebel) und über mindestens drei zufällige Relays geleitet. Jeder Knoten kennt dabei immer nur seinen Vorgänger und seinen Nachfolger, aber nie die komplette Strecke. Das macht es extrem schwer, nachzuvollziehen, wer mit wem kommuniziert – und schützt die Privatsphäre auf einem sehr hohen Niveau.
Vielleicht hast du in dem Zusammenhang auch schon mal vom „Darknet“ gehört. Technisch gesehen ist das nichts anderes als ein Teil des Internets, der nicht über klassische Domains wie .com
oder .de
zugänglich ist. Stattdessen gibt es dort .onion
-Adressen, die nur über Tor erreichbar sind. Das ist aber nur ein kleiner Ausschnitt. Tor wird von Journalisten, Aktivisten, Wissenschaftler – und ganz normalen Menschen wie dir und mir genutzt. Sei es zum Schutz vor Überwachung, zur Zensurumgehung oder einfach, um sich freier im Netz zu bewegen.
Ich hatte Tor schon vor langer Zeit einmal als klassische Bare-Metal-Installation laufen – damals noch ohne Docker und mit viel Handarbeit. Als ich dann über den großartigen Beitrag von Tom gestolpert bin, hatte ich direkt Lust, sowas noch einmal aufzusetzen, diesmal containerbasiert.
👉 Anonym, Sicher, Frei: Tor-Netzwerk
Danke Tom, für die super Einführung und den kleinen Anstoß zur richtigen Zeit!
🔄 Was ist ein Tor Relay eigentlich?
Ein Tor Relay ist ein Knotenpunkt im dezentralen Tor-Netzwerk. Die Nutzer von Tor bauen über diese Relays verschlüsselte Verbindungen auf. Dabei gibt es drei Arten:
- Entry Relays – hier beginnt der Tor-Traffic. Der Knoten ist das erste Glied in der Kette.
- Middle Relays – sie leiten den Verkehr anonym weiter. Du weißt nicht, woher er kommt, und auch nicht, wohin er geht.
- Exit Relays – hier verlässt der Traffic das Tor-Netzwerk und betritt das „normale“ Internet.
Ich persönlich betreibe nur ein Middle Relay – und genau das empfehle ich dir auch, wenn du neu dabei bist. Warum? Weil es ein guter Kompromiss zwischen Unterstützung und Risiko ist. Du hilfst, das Netz zu stabilisieren, ohne dass dein Knoten als „Absender“ der Daten sichtbar ist.
🧩 Warum ein Relay betreiben?
Es gibt viele gute Gründe, ein Relay zu hosten:
- Du stärkst digitale Freiheit – gerade für Menschen in autoritären Staaten ist das überlebenswichtig.
- Du schützt andere – je mehr Relays, desto schwerer wird es, Tor-Nutzer zu enttarnen.
- Du setzt ein Zeichen – für Privatsphäre, für Menschenrechte, für ein freies Netz.
Und ganz nebenbei: Der Betrieb ist technisch spannend und mit Docker sogar ziemlich unkompliziert.

🛠️ Los geht’s: Docker-Setup für dein eigenes Relay
Ich habe ein Git-Repository erstellt, in dem du alle nötigen Dateien und Konfigurationen für den Betrieb deines eigenen Tor-Relays findest – inklusive Dockerfile
, Beispiel-Konfigurationen und docker-compose.yaml
.
👉 Repository: torproject-docker
Ich hab das Setup bewusst einfach gehalten. Du kannst es direkt klonen:
git clone https://git.techniverse.net/scriptos/torproject-docker.git
Das Herzstück ist die Datei config/torrc
. Dort legst du fest, wie sich dein Relay im Netzwerk verhält. Ein gutes Beispiel für einen Middle Relay sieht so aus:
## Tor Relay Konfiguration – Middle Relay ohne Exit RunAsDaemon 1 # === ORPort: Annahme eingehender Verbindungen von anderen Relays === ORPort 9001 IPv4Only # === Nickname für Relay === Nickname DEIN-NICKNAME # === Kontaktinfo für Fehlermeldungen (zum Beispiel Abuse Reports) === ContactInfo Admin <mail@domain.com> # === ControlPort: Schnittstelle für Tools wie Nyx / Steuerung === ControlPort 9051 CookieAuthentication 1 # === Bandbreitenlimitierung === RelayBandwidthRate 4480 KBytes # 35 Mbit/s dauerhaft RelayBandwidthBurst 6400 KBytes # 50 Mbit/s für kurze Bursts # === ExitPolicy === ExitPolicy reject *:* # === Directory Mirror: Tor-Metadaten bereitstellen === DirPort 9030 # === Logging === Log notice file /var/log/tor/notices.log # === DNS-Namen für Relay hast === Address relay.domain.com # === DataDirectory explizit setzen, sonst Standard (zum Beispiel /var/lib/tor) === DataDirectory /var/lib/tor
Ein kurzer Hinweis zur Zeile ORPort 9001 IPv4Only
in der Konfiguration:
Wenn dein Server ausschließlich über IPv4 erreichbar ist, solltest du den Zusatz IPv4Only
verwenden – das verhindert, dass Tor versucht, auch eine IPv6-Adresse zu nutzen.
Falls du jedoch sowohl IPv4 als auch IPv6 unterstützen möchtest, genügt ein einfaches ORPort 9001
. Tor erkennt dann automatisch beide Adresstypen und bindet entsprechend.
👉 Damit das auch im Docker-Container zuverlässig funktioniert, solltest du diesen im network_mode: host
betreiben. Nur so kann Tor die echten Netzwerkinterfaces deines Hosts vollständig erkennen – insbesondere bei IPv6.
In der mitgelieferten docker-compose.yaml
ist dieser Modus bereits korrekt gesetzt – du musst dich darum also nicht mehr kümmern.
🧱 Sicherheit: Bitte kein Exit ohne Ahnung!
Wenn du vorhast, ein Exit-Relay zu betreiben – also der letzte Knoten im Tor-Netzwerk, über den die Verbindung ins „normale“ Internet geht – dann solltest du dir vorher gut überlegen, was das bedeutet. Denn als Exit-Relay-Betreiber bist du im Zweifel der sichtbare Absender für den Internetverkehr. Das kann bei bestimmten Zielseiten oder Diensten zu Missverständnissen oder sogar Beschwerden führen.
Für den Anfang empfehle ich daher ganz klar, ein Middle Relay zu betreiben. Damit unterstützt du das Netzwerk, ohne selbst als Exit-Punkt aufzutreten. In der torrc
-Datei stellst du das so ein:
ExitPolicy reject *:*
Du verhinderst damit, dass über deinen Node direkter Internetzugang möglich ist – was gerade für den Einstieg absolut sinnvoll ist. Wenn du dich später doch mit dem Thema Exit-Relay beschäftigen willst: Es gibt viele gute Ressourcen und Erfahrungsberichte online, die sich mit den rechtlichen und praktischen Fragen ausführlich auseinandersetzen.
🧩 Ports freigeben
Damit dein Tor Relay von außen erreichbar ist, musst du bestimmte Ports in deiner Firewall freigeben. Das betrifft deine Netzwerkumgebung – je nach Setup kann das die lokale UFW-Firewall, Portfreigaben im Router oder eine Cloud-Firewall (z. B. bei Hetzner oder Netcup) sein.
Die relevanten Ports sind:
- 9001/tcp # ORPort – nimmt eingehende Verbindungen anderer Relays an - 9030/tcp # DirPort – spiegelt Tor-Verzeichnisinformationen - 8118/tcp # Privoxy – lokale Proxy-Schnittstelle (optional!)
mit UFW werden die Ports folgendermaßen freigegeben:
sudo ufw allow 9001/tcp comment 'Tor ORPort' sudo ufw allow 9030/tcp comment 'Tor DirPort'
Wichtig beim Port 8118:
Das ist der Zugang zu deinem Privoxy-Proxy. Wenn du diesen Port einfach offen lässt, kann theoretisch jeder im Internet deinen Proxy benutzen – und das willst du garantiert nicht. Also: Nur für eigene IP-Adressen freigeben! Zum Beispiel mit UFW:
sudo ufw allow from <deine-ip> to any port 8118 proto tcp comment 'Privoxy HTTP Proxy'
Oder eben in deiner Router- oder Cloud-Firewall entsprechend filtern. Andernfalls riskierst du Missbrauch und unnötigen Ärger.
📦 Die Inbetriebnahme
Du hast zwei Wege, dein Tor-Relay mit Privoxy und Nyx in Docker zum Laufen zu bringen.
Wenn du das Setup aus dem Repository klonst, kannst du das Docker-Image anhand des Dockerfiles ganz einfach selbst bauen:
docker build -t tor-docker:latest .
Oder du sparst dir den Aufwand und nutzt mein bereits gebautes Image. Dieses habe ich in der docker-compose.yaml
bereits vordefiniert:
docker pull repo.techniverse.net/docker-hosted/tor-docker:latest
Sobald du deine Konfiguration in der torrc
abgeschlossen und die nötigen Ports in der Firewall freigegeben hast, startest du deinen Container mit:
docker compose up -d
Deine Daten werden dabei automatisch im Data
-Ordner gespeichert – auch ein Neustart ist also kein Problem. Wenn du später etwas an der Konfiguration änderst, genügt ein einfacher:
docker compose restart
Und damit bist du offiziell Teil des Tor-Netzwerks.
🧰 Mit Privoxy ins TOR-Netzwerk einsteigen
Privoxy ist ein optionaler HTTP-Proxy mit Filterfunktionen. Er nimmt Webanfragen entgegen, prüft sie, und reicht sie dann – in unserem Fall – an das Tor-Netzwerk weiter. Ideal, wenn du z. B. einen lokalen Proxy suchst, über den deine Anwendungen anonymisiert ins Netz gehen sollen.
Kombiniert mit Tor wird daraus ein mächtiges Duo: Du nutzt Privoxy als Einstiegsproxy, und der gesamte Verkehr läuft danach verschlüsselt durch das Tor-Netzwerk. Der Clou: Du musst deine Programme nur auf den Port 8118 deines Privoxys zeigen lassen – den Rest erledigt der Proxy dann selbst.
Ich habe Privoxy erfolgreich mit meiner Firefox Extension FoxyProxy getestet. Die Einstellungen zeige ich dir nachfolgend in einem Screenshot, damit du nicht lange rumprobieren musst:

Eine Abfrage auf MyIP.is bestätigte mir, dass die Verbindung über mein Tor-Relay mit FoxyProxy funktioniert.

👀 Monitoring mit Nyx
Um zu sehen, was dein Relay eigentlich macht, empfehle ich dir Nyx. Das ist ein Terminal-Tool mit Live-Daten zu deinem Tor-Knoten. Das Tool habe ich bereits mit in mein Docker Image eingebaut.

Du startest es ganz einfach mit:
docker exec -it tor-project nyx
Voraussetzung ist, dass ControlPort
und CookieAuthentication
in deiner torrc
-Datei gesetzt sind. Nyx zeigt dir Verbindungsdaten, Load, Uptime, Bandbreite und vieles mehr – extrem hilfreich, um einen Überblick zu behalten.
📊 Stats & Transparenz: Dein Relay öffentlich sichtbar
Wenn dein Relay läuft, kannst du nach ein paar Tagen unter
👉 https://metrics.torproject.org/
nach deinem Nickname suchen. Dort siehst du dann öffentliche Metriken: wie viel Bandbreite du spendierst, wie viele Verbindungen über deinen Node laufen und wie stabil dein Relay ist.

🔚 Fazit
Ein Tor Relay zu betreiben ist kein Hexenwerk – aber es ist ein Beitrag zur digitalen Selbstbestimmung. Du stärkst ein Netz, das Menschen weltweit schützt. Mit Docker und ein wenig Konfiguration geht das schneller als gedacht.
Mach’s einfach. Aber mach’s bewusst.
👥 Techniverse Community
Matrix, Selfhosting, smarte IT-Lösungen und jede Menge Nerd-Talk – das findest du in der Techniverse Community.
Komm vorbei, tausch dich aus und werde ein Teil von uns.
👉 Unsere Gruppe auf Matrix: #community:techniverse.net
Wir freuen uns auf dich!