Eigene Webseite Parallel als Tor Onion - Service Publizieren

HowTo: Die eigene Webseite, welche bereits über Nginx mit HTTPS läuft, soll zusätzlich bzw. parallel über einen Tor Onion Service (.onion-Adresse) erreichbar gemacht werden.

Im folgenden Tutorial wird der nano Editor zum Bearbeiten der jeweiligen Konfigurationsdateien verwendet. Du kannst aber genauso gut enen gui basierenden Texteditor wie, xed, gedit, mousepad ..whatever verwenden.

Tor installieren

Falls noch nicht geschehen, muss zuerst der Tor-Dienst auf dem Server installiert werden.

Paketlisten aktualisieren und Tor installieren:

sudo apt update
sudo apt install tor

Nginx für den lokalen Zugriff anpassen

Wir konfigurieren Nginx so, dass es auf einem zusätzlichen, nicht öffentlichen Port (z.B. 8080) auf lokale Anfragen lauscht und diese direkt beantwortet, ohne die übliche HTTP-zu-HTTPS-Umleitung.

  1. Nginx-Konfigurationsdatei öffnen:

    sudo nano /etc/nginx/sites-available/example.com.conf
    
  2. Konfiguration ergänzen: Füge am Ende der Datei einen neuen server-Block hinzu. Dieser lauscht nur auf dem localhost-Interface (127.0.0.1) auf unserem gewählten Port 8080.

    Die finale, vollständige Konfigurationsdatei sieht danach so aus:

    Nginx
    # Weiterleitung von HTTP auf HTTPS für die öffentliche Domain
    server {
        listen 80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    
    # HTTPS-Konfiguration für die öffentliche Domain
    server {
        listen 443 ssl;
        server_name example.com;
    
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    
        # Geänderter Benutzername im Pfad
        root /home/dein_benutzer/public_html;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ /index.html;
        }
    
        # ... weitere location-Blöcke ...
    }
    
    # --- HINZUGEFÜGTER BLOCK NUR FÜR DEN TOR ONION SERVICE ---
    server {
        # Lauscht nur auf localhost auf dem neuen Port 8080
        listen 127.0.0.1:8080;
        server_name localhost;
    
        # Geänderter Benutzername im Pfad
        root /home/dein_benutzer/public_html;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ /index.html;
        }
    
        # ... weitere location-Blöcke ...
    }
    
  3. Nginx-Konfiguration testen und neu laden: Nach dem Speichern der Datei sind diese beiden Befehle zwingend notwendig. 

    # Testet die Konfiguration auf Fehler
    sudo nginx -t
    
    # Lädt die neue Konfiguration, wenn der Test erfolgreich war
    sudo systemctl reload nginx
    

Schritt 3: Tor Onion Service konfigurieren

Jetzt sagen wir dem Tor-Dienst, dass er einen Onion Service einrichten und Anfragen an unseren neuen lokalen Nginx-Port (8080) weiterleiten soll.

  1. Tor-Konfigurationsdatei öffnen:

    sudo nano /etc/tor/torrc
    
  2. Zwei Zeilen am Ende der Datei hinzufügen:

    HiddenServiceDir /var/lib/tor/hidden_service/
    # Zum bessern verständnis.... # Anfragen an den virtuellen Port 80 des Onion-Dienstes... # werden an den lokalen Port 8080 weitergeleitet, auf dem Nginx..
    # lauscht.
    HiddenServicePort 80 127.0.0.1:8080

Schritt 4: Den richtigen Tor-Dienst verwalten !

Früher wurde Tor mit dem generischen Dienst tor.service gestartet. Neuere Tor-Versionen, insbesondere in distributionsnahen Setups (Debian, Ubuntu, Mint etc.), verwenden Instanznamen, d. h. systemd- Einheiten wie tor@default.service.

Tor wird auf Debian basierenden Systemen per systemd verwaltet. Statt nur tor.service gibt es jetzt standardmäßig: systemctl status tor@default.service
Das ist jetzt der neue Default-Dienst.

  • Dienst starten:

    sudo systemctl start tor@default.service
    
  • Dienst stoppen:

    sudo systemctl stop tor@default.service
    
  • Dienst neustarten:

    sudo systemctl restart tor@default.service
    
  • Dienst für den automatischen Start beim Hochfahren aktivieren:

    sudo systemctl enable tor@default.service
    
  • Status des Dienstes überprüfen (sehr nützlich für die Fehlersuche):

    sudo systemctl status tor@default.service
    

Schritt 5: Finale Überprüfung und Zugriff

    • Onion-Adresse herausfinden: Mit diesem Befehl kannst du dir jederzeit deine einzigartige .onion-Adresse anzeigen lassen.

      sudo cat /var/lib/tor/hidden_service/hostname
      
    • Im Tor Browser aufrufen: Kopiere die Adresse sorgfältig und füge sie in die Adresszeile des Tor Browsers ein.

    • Troubleshooting im Browser: Falls deine Seite nach mehreren Minuten nicht  lädt, obwohl serverseitig alles korrekt läuft, klicke im Tor Browser auf das Besen-Symbol 🧹 ("Neue Identität").

Dies zwingt den Browser, alle alten Verbindungsdaten zu verwerfen und eine komplett neue Route zu deiner Seite aufzubauen ohne sie erneut als fehlerhaft aus dem cache zu laden.

Auch dieser Blog ist im Onion Land unter  http://mhwqq3rzbxp5dhcjzzrrfn62xuljb6kof3a7hkhpazun4sa5f632zyad.onion  zu erreichen.