Dieser Leitfaden zeigt dir, wie du einen Onion-Dienst für deine Website einrichtest. Die technischen Details zur Funktionsweise des Onion-Dienst-Protokolls findest du auf unserer Seite zum Onion-Dienst-Protokoll.

Schritt 0: Tor zum Funktionieren bringen

Im Rahmen dieser Anleitung gehen wir davon aus, dass du ein funktionierendes Tor in deinem Rechner hast. Um Tor einzurichten, folge bitte der Tor-Installationsanleitung. Damit diese Anleitung funktioniert, muss Tor korrekt gestartet und in Betrieb sein. Du solltest auch wissen, wo sich die Konfigurationsdateien von Tor befinden.

Schritt 1: Bringe einen Webserver zum Laufen

Als ersten Schritt solltest du einen Webserver lokal einrichten, wie Nginx, Apache oder deinen bevorzugten Webserver. Die Einrichtung eines Webservers kann komplex sein. Wenn du nicht weiterkommst oder mehr tun willst, suche dir einen Freund, der dir helfen kann, oder melde dich auf unserer Tor-Onions-Mailingliste an, um mit anderen Betreibern zu sprechen.

Als Beispiel werden wir die Einrichtung einer Onion-Site mit Nginx und Apache unter Debian behandeln. Wir empfehlen dir, einen neuen, separaten Web-Server für deinen Onion-Dienst zu installieren, denn selbst wenn du schon einen hast, wirst du ihn vielleicht für eine reguläre Website nutzen (oder später nutzen wollen).

Die Befehle auf dieser Seite zur Verwaltung des Web-Servers basieren auf Debian-ähnlichen Betriebssystemen und können von anderen Systemen abweichen. Prüf die Dokumentation deines Webservers und deines Betriebssystems.

Apache

Apache ist im Haupt-Repository mehrerer Linux- und *BSD-Distributionen verfügbar. So installierst du das Paket apache2:

$ sudo apt install apache2

Nginx

Nginx ist im Haupt-Repository mehrerer Linux- und *BSD-Distributionen verfügbar. So installierst du das Paket nginx:

$ sudo apt install nginx

Standardmäßig wird der Web-Server am Ende der Installation auf localhost:80 laufen. Wenn du eine Fehlermeldung erhältst, ist etwas schiefgelaufen und du kannst nicht fortfahren, bis du herausgefunden hast, warum es nicht funktioniert hat.

Sobald dein Web-Server eingerichtet ist, überprüfe, ob er funktioniert: Öffne deinen Browser und gehe zu http://localhost/. Versuche dann, eine Datei in das HTML-Hauptverzeichnis zu legen, und vergewissere sich, dass sie angezeigt wird, wenn du die Website aufrufst.

Schritt 2: Konfiguriere deinen Tor-Onion-Dienst

Der nächste Schritt ist das Öffnen der Konfigurations-Datei von Tor (torrc) und die Durchführung der entsprechenden Konfigurationen, um einen Onion-Dienst einzurichten. Abhängig von deinem Betriebssystem und deiner Einrichtung kann deine Tor-Konfigurations-Datei an einem anderen Ort sein oder anders aussehen.

Du musst die folgenden beiden Zeilen deiner torrc-Datei hinzufügen:

 HiddenServiceDir /var/lib/tor/my_website/
 HiddenServicePort 80 127.0.0.1:80

Die Zeile HiddenServiceDir gibt das Verzeichnis an, das Informationen und kryptographische Schlüssel für deinen Onion-Dienst enthalten soll. Du wirst die Zeile HiddenServiceDir ändern wollen, so dass sie auf ein tatsächliches Verzeichnis zeigt, das für den Benutzer, der Tor ausführen wird, lesbar/schreibbar ist.

Die Zeile HiddenServicePort gibt einen virtuellen Port an (d.h. den Port, den die Besucher deines Onion-Dienstes benutzen werden), und im obigen Fall besagt sie, dass jeglicher Verkehr, der an Port 80 deines Onion-Dienstes ankommt, nach 127.0.0.1:80 umgeleitet werden soll (wo der Web-Server aus Schritt 1 lauscht).

Tipp: Um zu vermeiden, dass ein Onion-Dienst in ein lokales Netz gelangt, ist es eine gute Praxis, Onion-Dienste über Unix-Sockets statt über TCP-Sockets laufen zu lassen. Du musst die folgenden beiden Zeilen deiner torrc-Datei hinzufügen:

HiddenServiceDir /var/lib/tor/my-website/
HiddenServicePort 80 unix:/var/run/tor/my-website.sock

Schritt 3: Starte Tor neu und überprüfe, ob es funktioniert

Nun speichere einen torrc und starte Tor neu.

$ sudo systemctl restart tor

Wenn Tor wieder startet, großartig. Andernfalls stimmt etwas nicht. Sieh zuerst in deinen Protokolldateien nach Hinweisen. Es werden einige Warnungen oder Fehlermeldungen ausgegeben. Das sollte dir eine Vorstellung davon geben, was falsch gelaufen ist. Typischerweise gibt es Tippfehler in der torrc oder falsche Verzeichnisberechtigungen (siehe den Protokollierungs-F&A-Eintrag, wenn du nicht weißt, wie du deine Protokolldatei aktivieren oder finden kannst.)

Wenn Tor startet, wird es automatisch das HiddenServiceDir erstellen, das du angegeben hast (falls nötig). Vergewissere dich, dass dies der Fall ist.

Schritt 4: Teste, ob dein Onion-Dienst funktioniert

Um deine Onion-Dienst-Adresse zu erhalten, gehe in dein HiddenServiceDir-Verzeichnis und suche eine Datei namens Hostname. Die Datei Hostname in deinem Onion-Dienst-Konfigurations-Verzeichnis enthält den Hostnamen für deinen neuen Onion-v3-Dienst. Bei den anderen Dateien handelt es sich um deine Onion-Dienst-Schlüssel, diese müssen unbedingt privat gehalten werden. Wenn deine Schlüssel durchsickern, können sich andere Leute als dein Onion-Dienst ausgeben, wodurch er kompromittiert, nutzlos und gefährlich zu besuchen wird.

Jetzt kannst du dich mit dem Tor-Browser mit deinem Onion Dienst verbinden und du solltest die HTML-Seite erhalten, die du in Schritt 1 eingerichtet hast. Wenn es nicht funktioniert, suche in deinen Protokollen nach Hinweisen und spiel so lange damit, bis es funktioniert.

Es ist wichtig zu beachten, dass ein so konfigurierter Onion-Dienst von jedem gelesen werden kann, der die Adresse kennt oder herausfindet. Du kannst dafür sorgen, dass die Onion-Dienste eine Authentifizierung erfordern, so dass nur Benutzer mit einem privaten Schlüssel auf den Dienst zugreifen können. Du erfährst mehr in der Client-Autorisierungs-Dokumentation.

(Optionaler) Schritt 5: Betreiben mehrerer Onion-Dienste

Wenn du mehrere virtuelle Ports für einen einzigen Onion-Dienst weiterleiten willst, füge einfach weitere HiddenServicePort-Zeilen hinzu. Wenn du mehrere Onion-Dienste von einem Tor-Client aus betreiben willst, füge einfach eine weitere HiddenServiceDir-Zeile hinzu. Alle folgenden HiddenServicePort-Zeilen beziehen sich auf diese HiddenServiceDir-Zeile, bis du eine weitere HiddenServiceDir-Zeile hinzufügst:

 HiddenServiceDir /var/lib/tor/onion_service/
 HiddenServicePort 80 127.0.0.1:80

 HiddenServiceDir /var/lib/tor/other_onion_service/
 HiddenServicePort 6667 127.0.0.1:6667
 HiddenServicePort 22 127.0.0.1:22

Wenn du mehrere Onion-Websites auf demselben Web-Server betreibst, musst du die virtuelle Host-Datei deines Web-Servers bearbeiten und die Onion-Adresse für jede Website hinzufügen. Bei Nginx und bei Verwendung von Tor mit Unix-Sockets würde die Konfiguration zum Beispiel so aussehen:

server {
        listen unix:/var/run/tor/my-website.sock;
        server_name <your-onion-address>.onion;
        access_log /var/log/nginx/my-website.log;
        index index.html;
        root /path/to/htdocs;
}

Or in Apache with Tor service listening on port 80:

     <VirtualHost *:80>
       ServerName <your-onion-address.onion>
       DocumentRoot /path/to/htdocs
       ErrorLog ${APACHE_LOG_DIR}/my-website.log
     </VirtualHost>

Schritt 6: Sicherheitshinweise und weitere Tipps

Die Standardversion der Onion Dienste ist Version 3 und ihre Adresse ist 56 Zeichen lang, ohne die Teile http:// und .onion. Die Version 2 der Onion-Dienste ist veraltet und wird seit der Tor-Version 0.4.6.1-alpha im Jahr 2021 nicht mehr unterstützt. Bitte lies den Blogeintrag Zeitplan für die Abschaffung von Onion-Dienst-Versionen für weitere Informationen.

Einige Betreiber von Onion-Seiten möchten möglicherweise den Standort ihres Onion-Dienstes nicht preisgeben. Daher musst du deinen Web-Server so konfigurieren, dass er keine Informationen über dich, deinen Computer oder deinen Standort preisgibt. Das ist keine leichte Aufgabe, und diese Ressourcen werden dir dabei helfen, dies zu erreichen:

Zu guter Letzt, wenn du vorhast, deinen Dienst für eine lange Zeit verfügbar zu halten, solltest du eine Sicherungskopie deiner private_key-Datei irgendwo anlegen.

Nachdem du nun eine funktionierende Onion-Seite hast, möchtest du vielleicht Onion-Location einsetzen oder Werkzeuge wie Docker, Heroku, Terraform, Ansible oder Stem verwenden, um die Verwaltung deiner Onion-Dienste zu automatisieren. Wenn du eine statische Website hast, aber nie Nginx oder Apache installiert hast, ist ein weiteres Projekt, das du ausprobieren kannst, OnionShare, wo das Betreiben einer Onion-Seite einfacher ist: geführt mit einer grafischen Oberfläche und mit minimaler Konfiguration.