Einfacher Start mit ZeroNet

Was ist ZeroNet?

Nun… ääähm… wozu das Rad neu erfinden? Um die Idee hinter ZeroNet und die Eigenschaften zu erläutern greife ich hier einfach auf die offizielle Dokumentation zurück, die ich hier einmal übersetzt habe.

Inoffizielle Übersetzung der ZeroNet-Dokumentation (https://zeronet.readthedocs.io/en/latest/):


Was ist ZeroNet?

ZeroNet verwendet Bitcoin-Kryptographie und Bittorrent-Technologie, um ein dezentrales, zensurresistentes Netzwerk aufzubauen.

Benutzer können statische oder dynamische Websites in ZeroNet veröffentlichen und Besucher können auswählen, ob sie die Website auch anbieten möchten. Websites bleiben auch dann online, wenn sie nur von einem Peer angeboten werden.

Wenn eine Website von ihrem Eigentümer aktualisiert wird, erhalten alle Knoten, die diese Website anbieten (frühere Besucher), nur die inkrementellen Aktualisierungen des Website-Inhalts.

ZeroNet verfügt über eine eingebaute SQL-Datenbank. Dies macht die Entwicklung von inhaltslastigen Websites einfach. Die DB wird auch mit Hosting-Knoten mit inkrementellen Updates synchronisiert.

Warum?

  • Wir glauben an offene, freie und unzensierte Kommunikation.
  • Keine Zensur: Nachdem etwas veröffentlicht wurde, gibt es keine Möglichkeit, es zu entfernen.
  • Kein Single Point of Failure: Inhalte bleiben online, auch wenn nur ein Peer sie anbietet.
  • Unmöglich abzuschalten: Es ist nirgendwo, weil es überall ist. Die Inhalte werden von jedem Benutzer, der dies wünscht, bereitgestellt.
  • Schnell: ZeroNet nutzt die Bittorrent-Technologie, um Inhalte schneller bereitzustellen als zentralisierte Server.
  • Funktioniert offline: Sie können auf die Seite zugreifen, auch wenn Ihr Internet nicht verfügbar ist.
  • Sicher: Das Eigentum an Inhalten wird mit derselben Kryptographie gesichert, die auch Ihre Bitcoin-Geldbörse schützt.

Eigenschaften

  • Einfache, konfigurationsfreie Einrichtung.
  • Passwortlose BIP32-basierte Autorisierung: Ihr Konto ist durch die gleiche Kryptographie geschützt, wie Ihre Bitcoin-Geldbörse.
  • Aktualisierte Seiten in Echtzeit.
  • Unterstützung für Namecoin.bit-Domains.
  • SQL-Datenbank-Unterstützung: Ermöglicht eine einfachere Website-Entwicklung und schnellere Seitenladezeiten.
  • Anonymität: Volle Tor-Netzwerkunterstützung mit versteckten Diensten (.onion) statt ipv4-Adressen
  • TLS-verschlüsselte Verbindungen.
  • Automatische Öffnung des uPnP-Ports.
  • Plugin für Multiuser-Unterstützung (openproxy).
  • Funktioniert mit jedem Browser/OS.

Wie funktioniert es?

Nachdem Sie ZeroNet installiert und ausgeführt haben, öffnen Sie eine Website unter: http://127.0.0.1:43110/{zeronet_site_address} (z.B. http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D).
ZeroNet wird dann das Bittorrent-Netzwerk verwenden, um Peers zu finden, die die Site verteilen, und den Inhalt der Site (HTML, CSS, JS…) von diesen Peers herunterladen.
Jede besuchte Seite wird auch von Ihnen angeboten.
Jede Website enthält eine Liste aller Dateien, die in der Website in einem SHA512-Hash verwendet werden, und eine Signatur, die mit dem privaten Schlüssel des Website-Eigentümers generiert wird.
Wenn der Website-Eigentümer die Website ändert, dann unterschreibt er/sie eine neue Liste und veröffentlicht sie an die Peers. Nachdem die Peers die Integrität der Dateiliste überprüft haben (mit Hilfe der Signatur), laden sie die geänderten Dateien herunter und veröffentlichen den neuen Inhalt an andere Peers.


Ok… jetzt soll es aber endlich losgehen!

Wer auf dieses kleine Tutorial verzichten möchte, der kann natürlich auch die Dokumentation verwenden: https://zeronet.readthedocs.io/en/latest/

Ansonsten: Anschnallen… ZeroNet hebt jetzt ab!

Installation

Die Installation ist, wie ich schon im Artikel Zeit für Alternativen angemerkt habe, ausgesprochen einfach.

Zunächst besorgt man sich das passende Programmpaket (Bundle) für Windows, macOS, Linux64 oder Linux32 und entpackt es an einer beliebigen Stelle.

Nun startet man unter Windows das enthaltene Programm ZeroNet.exe, unter macOS das Programm ZeroNet.app oder unter Linux ZeroNet.sh.

Erster Start

Tja… und dann läuft es auch schon. Startet man nun einen Webbrowser und gibt in der Adresszeile http://127.0.0.1:43110/ ein, so landet man auf der Seite ZeroHello.

Links findet man eine Seitenleiste mit dem ZeroNet-Logo und einem Menü (⁝). Darunter findet man diverse Links zu ZeroNet-Seiten (Zites). Rechts oben gibt es ein Symbol, über das man das Projekt durch Spenden unterstützen kann, sowie zwei Statusfelder. Das erste ist mit “Port:” bezeichnet und sollte im Idealfall den Status “opened” zeigen. Daneben wird der Status des Tor-Netzwerkes (zur Anonymisierung) gezeigt (“Tor:”). Dort sollte “available” stehen.

Rechts neben den Statusanzeigen findet man noch ein Icon “O”… fährt man mit dem Mauszeiger darüber, so ändert es sich in das Bekannte “Hamburger-Menü” (☰). Ein Klick darauf führt immer zur Seite ZeroHello. Dieses Icon findet man auf jeder Zite, so dass man darüber immer mit einem einfachen Klick zur “Startseite” ZeroHello gelangen kann.

Das Menü hat weist aber noch eine Besonderheit auf. Man kann es mit gedrückter Maustaste nach links ziehen und öffnet damit eine weitere Seitenleiste (rechts), mit Status-Informationen über die Seite, das Netzwerk, verbundene Peers etc., sowie einigen Einstellmöglichkeiten.

Hat man nun die Seite ZeroHello aufgerufen, so kann es sein, dass beim Staus “Port:” leider “closed” steht. Es ist sinnvoll noch ein wenig zu warten und die Seite ggf. zu aktualisieren, weil ZeroNet versucht, den benötigten Port 15441 per UPnP zu öffnen, was manchmal ein wenig dauert. Klappt das nicht, so sollte man zunächst seinen Router dahingehend überprüfen, ob UPnP aktiviert ist. Ist das nicht der Fall, sollte man UPnP in den Router-Einstellungen erlauben und ZeroNet erneut starten. Bringt auch das keinen Erfolg, so muss man den Port 15441 in den Router-Einstellungen unter “port forwarding” freigeben. Das ist von Router zu Router verschieden. Bei YouTube findet man aber zu sehr vielen Routern Anleitungen (z. B. https://www.youtube.com/watch?v=aQXJ7sLSz14).
Allerdings funktioniert die Freigabe via UPnP bei den meisten Routern problemlos, weshalb dieses Problem eher selten ist.

ZeroNet und Tor

Wird ein Fehler beim Status “Tor:” gezeigt, dann kann man ZeroNet natürlich ganz normal nutzen, muss sich aber im Klaren darüber sein, dass man nicht anonym unterwegs ist. Grundsätzlich ist die Idee von ZeroNet ja auch nicht, ein “Darknet” zu bieten, sondern ein verteiltes Netzwerk, bei dem man von Hostern unabhängig ist und wo Zensur oder Unterdrückung von Inhalten praktisch nicht möglich ist. Die Option, Tor zu nutzen, fügt dem Konzept das Onion-Routing-Prinzip zu, wodurch die eigene Identität verschleiert wird.

Unter Linux und macOS muss man dazu Tor installiert haben. Wie das funktioniert, sollte bekannt sein… bei Linux hängt es ja auch von der gewählten Distribution und deren Paketmanagement ab.

Bei Debian und Ubuntu (sowie deren “Ablegern”) sollte man, um immer die aktuellste Version von Tor zu nutzen, das entsprechende Repository zur Quell-Liste hinzufügen.

Dies geschieht durch Zufügen von

deb http://deb.torproject.org/torproject.org <DISTRIBUTION> main

zur Datei /etc/apt/sources.list (<DISTRIBUTION> durch die Bezeichnung der eigenen Distribution ersetzen).

Nun benötigt man noch die Signatur-Schlüssel für das Repo, das man durch

gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

dem Schlüsselring “unterhilft”.

Dann

apt update

zum Aktualisieren der Repo- und Paket-Listen und schließlich mit

apt install tor

Tor installieren. Beachte: Diese Schritte muss man “als root” durchführen!

Nun muss man die Konfiguration von Tor noch anpassen. Man editiert die Datei /etc/tor/torrc und entfernt bei den auskommentierten Zeilen

ControlPort 9051

und

CookieAuthentication 1

die “#” am Zeilenanfang.

Um die entsprechenden Leserechte für die benötigten Verzeichnisse zu erhalten, muss man seinen (Linux-) Benutzer noch der entsprechenden Gruppe zuweisen.
Die Gruppe (bei Debian ist das z. B. debian-tor) findet man mittels

ls -al /var/run/tor/control.authcookie

heraus. Die Zuweisung erfolgt dann durch

usermod -a -G <Benutzergruppe für Tor> [deinlinuxbenutzer]

Durch ein beherztes

/etc/init.d/tor restart

oder (bei systemd)

systemctl restart tor

wird der Dienst gestartet.

Wer Arch (oder einen Ableger… für mein Manjaro musste ich es auch so machen) nutzt, muss ein wenig anders vorgehen:

usermod -a -G Tor [deinlinuxbenutzer]

Dann in der Datei /etc/tor/torrc die “#” vor

ControlPort 9051

und

CookieAuthentication 1

entfernen

und die Zeilen

DataDirectoryGroupReadable 1
CookieAuthFileGroupReadable 1
CookieAuthFile /var/lib/tor/control_auth_cookie

anfügen.

Tor neu starten (s. o.) und nach einem Neustart sollte ZeroNet auch mit Tor laufen.

Windows-Nutzer können sich das sparen, weil Tor durch das ZeroNet-Bundle beim ersten Start automatisch installiert wird.

Um ZeroNet mit dem Tor-Browser zu nutzen, muss man dort in den Einstellungen für den Proxy

127.0.0.1

unter “Kein Proxy für” / “no proxy for” eintragen und den Browser anschließend neu starten.

Nun sollte ZeroNet mit offenem Port und (im Idealfall) mit Tor laufen…

Eine ID zulegen!

Als nächsten Schritt sollte man sich eine ZeroID zulegen… das ist quasi eine Benutzerkennzeichnung, die man für etliche Seiten benötigt. Mit dieser ID kann man z. B. ZeroMail verwenden und sich auf vielen Seiten “einloggen”, um z. B. zu Kommentieren, Postings abzusetzen etc. Dies geschieht auf der Seite ZeroID. Der Prozess, um sich eine ID anzulegen, ist sehr einfach.

Und nun kann man fröhlich stöbern. Welche Seiten für den Einstieg interessant sind, habe ich ja schon HIER erzählt.

Eigene Seite

Wen man nun Lust bekommen hat, eine eigene Seite anzubieten, kann man ganz flott eine “leere” Seite anlegen, indem man auf der Seite ZeroHome im Menü den Punkt “Create new, empty site” auswählt oder ZeroNet beendet, in das Programmverzeichnis (Eingabeaufforderung / Terminal) wechselt und dort

zeronet.py siteCreate

eingibt.

ZeroNet teilt einem dann den öffentlichen (Site address… man kann seine Seite bei ZeroNet dann mit http://127.0.0.1:43110/<Site address> aufrufen) und auch den privaten Schlüssel mit und bestätigt die Erzeugung der leeren Seite:

- Site private key: .................................
- Site address: ..................................

- Site created!

Im Datenverzeichnis von ZeroNet findet man nun ein Unterverzeichnis, das den Namen der “Site address” trägt… dort hinein kann man nun seinen Content schreiben, der nach Aufruf der Adresse gezeigt wird.

Das Verzeichnis enthält zunächst die Dateien

content.json

und

index.html

sowie das Verzeichnis

js

In der Datei content.json kann man einige Einstellungen vornehmen… z. B. den Seitennamen und einiges mehr.

Die Datei ZeroFrame.js im Verzeichnis js sollte man nicht löschen.

Klonen

Einfacher ist es, wenn man eine vorhandene Seite klont. Hat man eine Seite gefunden, die man klonen möchte (geeignet für den Einstieg sind die Beispielseiten ZeroBoard, ZeroBlog, ZeroTalk, ZeroMe… ), so findet man sie bei ZeroHome ja auch in der linken Seitenleiste. Ein klick auf das Menü der jeweiligen Seite, öffnet damit das Drop-Down-Menü, wo man den Eintrag “Clone” findet und auswählt.

Nun hat man eine eigene (man kann sie also selbst verändern) Kopie der gewählten Seite. Jetzt muss man sie noch anpassen… z. B. beim Blog das Logo ändern oder den Titel anpassen, unerwünschte Inhalte löschen etc. Ein paar Beispiele zur Modifikation dieser Seiten folgen als neue kurze Artikel hier.
Am besten, man experimentiert ein wenig und schaut sich die im jeweiligen Seiten-Verzeichnis vorhandenen Dateien einmal an. Hat man was versaubeutelt, so löscht man einfach das Verzeichnis der eigenen Seite und startet ZeroNet neu.

Ja… nun haben wir unser eigenes Angebot “erschaffen”… aber sehen kann das noch niemand.

Signieren und veröffentlichen

Man muss die Zite zunächst noch signieren und veröffentlichen.

Von der Befehlszeile aus macht man das mit den Befehlen

zeronet.py siteSign <Site address>

und

der Eingabe des anschließend abgefragten privaten Schlüssels.

Ein

zeronet.py sitePublish <Site address>

veröffentlicht die Seite schließlich.

Von ZeroHello aus geht das auch, indem man die “0” von rechts nach links zieht und unten auf den Button “sign and publish” klickt.

Sie ist zwar jetzt verfügbar, aber es kennt noch niemand die Seitenadresse. Die muss man also noch publik machen.

Ein guter Schritt dazu ist es, die Seitenadresse (ggf. mit einer kurzen Beschreibung) auf der Seite 0list (http://127.0.0.1:43110/0list.bit/) zu posten. Sehr rasch wird die Seite dann von anderen Peers aufgerufen und verteilt sich damit im Netz.

So… das sollte für den Einstieg genügen… weiter ins Detail gehe ich in weiteren Artikeln zu ZeroNet…

 

Diskutiere bei Hubzilla

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.