Onion-Website erstellen: Tor Onion Service einrichten
Eine Onion-Website ist ein ganz normaler Webauftritt, der über das Tor-Netzwerk erreichbar ist und dessen Adresse auf .onion endet. Der Reiz liegt nicht im „Darknet“-Image, sondern in einer technischen Eigenschaft: Der Datenverkehr verlässt das Tor-Netzwerk nie über einen Exit-Knoten, sondern ist zwischen Besucher und Server durchgehend verschlüsselt – ohne dass Sie ein TLS-Zertifikat brauchen. Nach diesem Artikel haben Sie einen funktionierenden v3-Onion-Service, kennen die torrc-Konfiguration, wissen, wie Sie den Webserver so binden, dass er Ihre echte IP nicht verrät, und wie Sie die Adresse bekannt machen.
Was einen Onion-Service technisch ausmacht
Anders als bei einer Klarnetz-Website gibt es keinen DNS-Eintrag und keine registrierbare Domain. Die Adresse ist ein 56 Zeichen langer Base32-String, der direkt aus dem öffentlichen Schlüssel des Dienstes abgeleitet wird (v3, ed25519). Diese kryptografische Bindung bedeutet: Wer die Adresse kennt, kann sich nicht mit einem falschen Server dazwischenschalten.
Zwei Punkte sind zentral:
- v3 statt v2. Die alten, 16-stelligen v2-Adressen sind seit Tor 0.4.6 (Juli 2021 keine Neuanlage mehr, ab Oktober 2021 in stabilen Clients komplett deaktiviert) nicht mehr erreichbar. Erstellen Sie ausschließlich v3-Dienste – das passiert bei aktuellen Tor-Versionen ohnehin automatisch.
- Kein Exit-Knoten. Der Verkehr bleibt im Tor-Netz. Ein TLS-Zertifikat ist deshalb für die Transportverschlüsselung nicht nötig; die Verbindung ist bereits Ende-zu-Ende verschlüsselt. Zertifikate für
.onionexistieren zwar (etwa für Vertrauensanzeigen im Browser) – ausgestellt aktuell nur von HARICA (DV, günstiger) und DigiCert (nur EV, teurer); Let’s Encrypt unterstützt.onionbislang nicht –, sind aber optional.
Besucher benötigen den Tor Browser; mit einem normalen Browser ist die Seite nicht erreichbar.
Voraussetzungen
- Ein Server oder VPS mit Linux (die Beispiele nutzen Debian/Ubuntu) und root- bzw. sudo-Zugriff. Ein datenschutzfreundlicher Anbieter ist sinnvoll, aber nicht Teil der technischen Einrichtung.
- Das Paket
tor– also der Tor-Daemon, nicht der Tor Browser. - Ein Webserver, hier Nginx.
Installation:
sudo apt update
sudo apt install tor nginx
Für eine aktuelle Tor-Version lohnt sich das offizielle Repository des Tor-Projekts statt der oft älteren Distributionspakete. Die genaue Repo-Zeile hängt von der Distribution ab.
Schritt 1: Onion-Service in der torrc konfigurieren
Die zentrale Konfigurationsdatei ist /etc/tor/torrc. Ergänzen Sie zwei Zeilen:
HiddenServiceDir /var/lib/tor/onion_service/
HiddenServicePort 80 127.0.0.1:8080
Das bedeutet: Tor legt unter dem angegebenen Verzeichnis die Schlüssel und die Adresse ab und leitet Anfragen, die auf dem virtuellen Onion-Port 80 ankommen, an Ihren lokalen Webserver auf 127.0.0.1:8080 weiter. Der Onion-Port muss nicht mit dem lokalen Port übereinstimmen.
Danach den Dienst neu starten:
sudo systemctl restart tor
Tor erzeugt das Verzeichnis mit den korrekten Rechten (700, Eigentümer debian-tor). Ändern Sie diese Rechte nicht manuell – falsche Berechtigungen sind der häufigste Grund, warum der Dienst nicht startet.
Schritt 2: Die .onion-Adresse auslesen
Die generierte Adresse steht in der Datei hostname:
sudo cat /var/lib/tor/onion_service/hostname
Die Ausgabe ist Ihre öffentliche Adresse, zum Beispiel abcd...xyz.onion (56 Zeichen vor .onion).
Im selben Verzeichnis liegen hs_ed25519_secret_key und hs_ed25519_public_key. Der Secret Key ist Ihre Identität. Wer ihn kopiert, kann Ihren Dienst übernehmen. Sichern Sie das Verzeichnis; verlieren Sie den Schlüssel, ändert sich die Adresse unwiderruflich.
Schritt 3: Webserver an localhost binden
Der wichtigste Sicherheitspunkt: Der Webserver darf ausschließlich auf 127.0.0.1 lauschen. Lauscht er zusätzlich auf der öffentlichen IP, kann jemand Ihren echten Server über das Klarnetz finden und die Anonymität des Dienstes aushebeln.
Ein minimaler Nginx-Server-Block (/etc/nginx/sites-available/onion):
server {
listen 127.0.0.1:8080;
server_name _;
server_tokens off; # Versions-Banner ausblenden
root /var/www/onion;
index index.html;
access_log off; # keine Zugriffslogs mit Zeitstempeln
}
Aktivieren und neu laden:
sudo ln -s /etc/nginx/sites-available/onion /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
server_tokens off verhindert, dass die Antwort die Nginx-Version verrät. Prüfen Sie zusätzlich, dass keine Standardseite auf 0.0.0.0 ausgeliefert wird, und deaktivieren Sie Module, die Serverinformationen preisgeben (etwa autoindex oder Status-Endpunkte).
Legen Sie eine Testseite an:
sudo mkdir -p /var/www/onion
echo '<h1>Onion-Service läuft</h1>' | sudo tee /var/www/onion/index.html
Rufen Sie die .onion-Adresse nun im Tor Browser auf – die Seite sollte erscheinen.
Inhalte und CMS: worauf Sie achten sollten
Für statische Inhalte reicht HTML/CSS. Setzen Sie ein CMS wie WordPress ein, achten Sie darauf, dass keine absoluten Klarnetz-URLs in Seiten, Themes oder eingebundenen Ressourcen stecken – jede extern geladene Schrift, jedes CDN-Skript und jeder Analytics-Aufruf kann die Verbindung deanonymisieren oder im Tor Browser blockiert werden. Hosten Sie alle Assets lokal. Praktisch gedacht ist ein Onion-Service damit die Extremform einer Seite ohne eigene Domain: Statt eines gekauften Namens tritt die kryptografische Adresse an ihre Stelle. Was ein Root-Server oder VPS für den Webserver im Hintergrund kostet, sehen Sie unter Serverkosten im Monat.
Ein spezielles Werkzeug für bestehende Seiten ist das Enterprise Onion Toolkit (EOTK), das eine Klarnetz-Website als Onion-Spiegel bereitstellt und URLs automatisch umschreibt.
Adresse bekannt machen
Onion-Adressen sind nicht merkbar. Zwei praktikable Wege:
-
Onion-Location-Header. Betreiben Sie parallel eine Klarnetz-Seite, verweisen Sie per HTTP-Header auf die Onion-Variante. Entscheidend: Der Tor Browser wertet den Header nur aus, wenn die Klarnetz-Seite über HTTPS ausgeliefert wird – im HTTP-Block (Port 80) bleibt er wirkungslos. Setzen Sie ihn deshalb im HTTPS-Server-Block:
add_header Onion-Location http://IHRE-ADRESSE.onion$request_uri;Der Tor Browser blendet dann eine „.onion available“-Schaltfläche ein. Alternativ funktioniert ein
<meta http-equiv="onion-location" content="http://IHRE-ADRESSE.onion" />im HTML – dieser leitet allerdings immer auf die Startadresse, nicht auf die konkret aufgerufene Unterseite. -
Vanity-Adressen. Mit Werkzeugen wie
mkp224oerzeugen Sie Adressen mit einem lesbaren Präfix (z. B.shop…). Das ist reine Rechenarbeit: Jede zusätzliche Wunschstelle vervielfacht den Aufwand – vier, fünf Zeichen sind in Minuten gefunden, längere Präfixe dauern Stunden bis Tage.
Typische Fehler und Lösungen
- „Unable to connect“ im Tor Browser: In der Regel lauscht der Webserver nicht auf dem in
HiddenServicePortangegebenen lokalen Port. Prüfen Sie mitsudo ss -tlnp | grep 8080. - Tor startet nicht nach der Änderung: Meist falsche Rechte am
HiddenServiceDir. Mitsudo journalctl -u tordie Logs prüfen; Verzeichnis aufdebian-tor:debian-torund700zurücksetzen. - Seite lädt endlos oder halb: Externe Ressourcen (Fonts, Skripte, Bilder) werden aus dem Klarnetz geladen. Alles lokal einbinden.
Rechtliches
Der Betrieb eines legalen Onion-Dienstes ist in Deutschland nicht verboten – die Technik ist neutral. Verantwortlich sind Sie für die Inhalte. Verarbeiten Sie personenbezogene Daten (etwa über ein Kontaktformular), gilt die DSGVO unverändert; wie Sie das etwa bei einem Kontaktformular korrekt umsetzen, steht unter DSGVO-konform mit Kunden kommunizieren. Informieren Sie sich zusätzlich über die Rechtslage in Ihrem Land, bevor Sie einen Dienst öffentlich anbieten.
FAQ
Brauche ich für eine .onion-Seite ein SSL-Zertifikat? Nein. Die Verbindung über das Tor-Netzwerk ist bereits Ende-zu-Ende verschlüsselt, und die Adresse ist kryptografisch an den Schlüssel des Dienstes gebunden. Ein Zertifikat ist nur für zusätzliche Vertrauensanzeigen relevant und optional.
Kann ich denselben Server für Klarnetz und Onion nutzen?
Ja, technisch. Sie müssen dann aber sicherstellen, dass der Onion-Webserver ausschließlich auf 127.0.0.1 lauscht und keine Inhalte, Header oder Logs die Verbindung zwischen beiden Auftritten offenlegen. Sauberer ist ein getrennter Server-Block oder eine getrennte Instanz.
Was passiert, wenn ich den Schlüssel verliere?
Die .onion-Adresse leitet sich direkt aus dem Schlüsselpaar ab. Ohne hs_ed25519_secret_key lässt sich dieselbe Adresse nicht wiederherstellen – Sie erhalten beim nächsten Start eine neue. Sichern Sie das gesamte HiddenServiceDir an einem geschützten Ort.