Diese Website ist jetzt als Hidden Service im Tor-Netzwerk erreichbar
Self-Hosting on the Dark Web

David Alvarez Rosa hostet seine statische Website nun selbst als Tor-Hidden-Service unter einer .onion-Adresse. Dafür richtet er einen HiddenServiceDir und HiddenServicePort in der torrc ein, leitet den Port 80 auf einen lokalen nginx-Server um und baut die Seite mit Hugo ein zweites Mal mit der .onion-Adresse als baseURL. Die Deploy-Pipeline erzeugt und synchronisiert beide Varianten – Clearnet und Tor – automatisch.
Tor relays and encrypts your traffic as it passes through thousands of volunteer-run servers, so that no single party can link who you are to what you are doing; a hidden service extends that anonymity to the server itself.
- p4bl0
Meine persönliche Website wird seit Jahren über Tor gehostet. Das ist ganz einfach von zu Hause aus möglich, selbst hinter einem NAT, weil es aus deiner Sicht eine ausgehende Verbindung ist (was es auch zu einer großartigen Möglichkeit macht, lokale Dienste verfügbar zu machen, selbst wenn du hinter einem NAT steckst und keine statische IP hast), und deine persönliche IP ist durch das Design vor deinen Besuchern verborgen.
Ich habe vor fast zehn Jahren (schon?!) in 2600 darüber geschrieben. Eine Kopie meines Artikels findest du hier: https://pablorauzy.fr/outreach/2600/how-to-run-a-tor-hidden-...
Wenn du eine Onion-Kopie deiner Website hast, vergiss nicht den Onion-Location HTTP-Header, der Tor-Browser-Nutzer automatisch zur Onion-Version der Website weiterleitet, selbst wenn sie sie unter der Klarnetz-Adresse besuchen.
Falls es Leute interessiert, ich habe auch einen Folgeartikel über I2P: https://pablorauzy.fr/outreach/2600/how-to-run-an-i2p-hidden...
- ivanmontillam
Was ich an Onion-Seiten wirklich liebe, ist, dass Performance-Engineering, wenn sie groß genug sind, wirklich Tor-spezifisch wird. Ein paar Beispiele:
- Assets als base64 einbetten (img src des Header-Logos als base64, alles CSS sollte inline sein usw.).
- CSS so weit wie möglich nutzen (wenn du Animationen und Übergänge verwendest, nutze dafür so weit wie möglich CSS, vermeide JS dafür).
- Stelle sicher, dass deine Website größtenteils im Backend gerendert wird. Wenn du JS haben willst, sollte deine Website auch ohne funktionieren.
- Sicherheit wird WIRKLICH spaßig, im Sinne von: vermeide XSS-, CSRF-, SQL-Injection-Angriffe und jegliche anderen Injektionen so weit wie möglich.
Wie jemand in einem anderen Kommentar[0] zusammenfasst: Halte die Gesprächigkeit so minimal wie möglich. Unter Gesprächigkeit verstehe ich, dass sie meinen, packe so viele Daten wie möglich in dieselbe Keep-Alive-Verbindung. Vermeide so weit wie möglich neue HTTP-Anfragen, da jede einzelne einer neuen Onion-Route zugewiesen werden kann, was die Dinge langsam macht.
Wenn du deine Website in einer einzigen Verbindung zum Browser bringen kannst, hast du gewonnen.
Ich war immer beeindruckt von der Performance dieser großen Onion-Seiten; sie treiben wirklich die Grenzen der Kreativität im Software-Engineering angesichts dieser Einschränkungen und der Natur von Tor.
--
[0]: https://news.ycombinator.com/item?id=49872320
EDIT: Formatierung der Aufzählungspunkte.
- basilikum
Du willst wahrscheinlich den Onion-Location-Header zur Clearnet-Seite hinzufügen, damit der Tor-Browser den Besucher automatisch darüber informieren kann: https://community.torproject.org/onion-services/advanced/oni...
- mzajc
Neben der Verwendung eines separaten Ports würde ich auch vorschlagen, den Hidden Service an eine andere Bind-Adresse als 127.0.0.1 zu binden, nur für den Fall, dass du jemals etwas anderes auf diesem Port hostest und vergisst, den Hidden Service zu deaktivieren:
> HiddenServicePort 80 127.13.37.1:8080
> listen 127.13.37.1:8080;
Auf diese Weise können Fremde keine Verbindung zu einem an 127.0.0.1 gebundenen Dienst herstellen, falls du jemals den Port wiederverwenden solltest und vergisst, den Hidden Service zu deaktivieren.
Du musst auch separate Ports und/oder Bind-Adressen verwenden, wenn du mehrere Hidden Services hostest und nicht willst, dass Leute sie korrelieren können – wenn nginx den Host-Header nicht abgleicht, wird es die Website ausliefern, die alphabetisch zuerst kommt.
- dherls
Was ist der Vorteil, dieselbe Website zweimal mit unterschiedlichen Hostnamen zu bauen, anstatt relative Links zu Inhalten auf derselben Domain zu verwenden?