Skip to content

Forgejo als Tor-Onion-Service betreiben

Innerhalb unseres Hackspaces wird unter anderem gern git verwendet. Anfangs nutzten wir hierfür GitHub und später stiegen wir auf Selbsthosting um.

Die ersten Experimente mit Selbsthosting begannen mit trac. Aus verschiedenen Gründen wurde das jedoch wenig benutzt. Also startete der nächste Versuch mit Gitea. Das wurde deutlich mehr benutzt. Aufgrund der Entwicklungen bei Gitea entschlossen wir uns später, zu Forgejo zu wechseln. Mittlerweile sind alle Repositorys von GitHub umgezogen und die Adresse https://git.kraut.space/ ist der zentrale Ort für die Repositorys des Krautspace sowie von einigen Mitgliedern.

Um das Bild abzurunden, wollte ich die Seite auch als Tor Onion Service verfügbar machen. Einige Personen im Umfeld des Space' nutzen gern Tor und den Tor-Browser. Daher versuchen wir, einige der selbst gehosteten Dienste auch mit Onion-Adressen zu versehen.

Bei der Einrichtung achten wir nicht darauf, den Dienst bzw. dessen IP-Adresse zu verstecken. Wenn man das als “richtigen” Onion-Dienst betreiben will, müsste man noch weitere Einstellungen im Webserver und im Betriebssystem vornehmen.

Die Einrichtung von Forgejo als Tor Onion Service passiert in zwei Schritten:

  1. Konfiguration von Tor
  2. Konfiguration des Webservers

Konfiguration von Tor

Auf unseren Servern kommt Systemd zum Einsatz. Daher richte ich zunächst eine neue Instanz des Tor-Service ein:

tor-instance-create forgejo

Das legt einen neuen Systembenutzer namens _tor-forgejo und Verzeichnisse in /etc sowie /var/lib/tor-instances an. Weiterhin wird von einem Systemd-Template ein neuer Dienst tor@forgejo.service abgeleitet.

Im Verzeichnis /etc/tor/instances gibt es das Unterverzeichnis forgejo und darin liegt die relevante torrc um den Dienst zu konfigurieren.

Üblicherweise würde man dort folgende Zeilen eintragen:

HiddenServiceDir /var/lib/tor-instances/forgejo
HiddenServicePort 80 127.0.0.1:80
HiddenServiceVersion 3

Nach einem Neustart des Systemd-Dienstes wird in obigem Verzeichnis eine Datei namens hostname angelegt. Dort ist die Onion-Adresse.

Ansonsten sorgt Tor dafür, dass alle Anfragen über den virtuellen Port 80 an die Adresse 127.0.0.1 mit Port 80 weitergegeben werden. Damit müsste ein Webserver entsprechend eingestellt werden.

Wir nutzen Forgejo mit einem nginx als Reverse Proxy, d.h. es gibt einen Unix-Socket, über den kommuniziert wird. Diesen kann man natürlich direkt für Tor verwenden:

HiddenServiceDir /var/lib/tor-instances/forgejo
HiddenServicePort 80 unix:/run/forgejo/forgejo.sock
HiddenServiceVersion 3

Nach einem Neustart des Tor-Dienstes wartet dieser nun auf Anfragen.

Konfiguration des Webservers

An sich wäre bei obigem Schritt die Arbeit zu Ende. Allerdings gibt es den HTTP-Header Onion-Location. Damit kann man den Tor-Browser informieren, dass es einen Onion-Dienst gibt und dieser leitet ggf. automatisch auf die Onion-Adresse um.

In den Einstellungen des nginx für den Dienst wird daher noch folgende Zeile eingetragen:

add_header onion-location  http://kqfdxjpzqt345qplxy6yrgkj4rotfokskmxyqz5a4t4yewg6n62ea2ad.onion$request_uri

Nachdem die Konfiguration neu eingelesen wurde, kann man die Adresse https://git.kraut.space aufrufen. Sofern man einen Browser ohne spezifischen “Onion-Fähigkeiten” verwendet, wird einfach die reguläre Seite verwendet. Sollte man einen Tor-Browser oder einen anderen Browser verwenden, der mit Onion-Adressen umgehen kann und den Header kennt, wird man entweder gefragt, ob man zur Onion-Seite weitergeleitet werden möchte oder es wird automatisch gemacht.

Kommunikationswerkzeuge im Jahr 2023

Es wird wieder mal Zeit, die Liste der Kommunikationswerkzeuge zu aktualisieren. Bisher erschienen folgende Beiträge:

Im letzten Jahr stand XMPP/Jabber wegen Spam auf der Abschussliste. Ich habe den XMPP-Server um Spamschutz ergänzt. Dadurch wurde die Lage erträglicher. Dennoch nutze ich das System nahezu überhaupt nicht mehr.

Briar ist mittlerweile in die Riege der nicht mehr benutzten Dienste verschoben worden. Obwohl ich den Messenger an sich wirklich mag und den gern weiter nutzen würde, sind alle Kontakte, die ich dort hatte, nicht mehr vorhanden. Ich könnte also nur noch Selbstgespräche führen. ;-) Aus ähnlichem Grund musste auch Wire gehen.

Twitter/X steht noch mit in der Liste. Allerdings bin ich nur in unregelmäßigen Abständen dort und bekomme eventuell nicht mit, wenn mich jemand anschreibt.

Insgesamt ist die Liste im letzten Jahr etwas kleiner geworden. Derzeit scheint es auch kaum Systeme zu geben, die testenswert sind oder Personen, die testwillig sind. :-)

Nutze ich

  • E-Mail (ist für mich eines der Hauptkommunikationsmittel. Hinweise zum Schlüssel findet ihr auf der Kontaktseite.)
  • Signal
  • Matrix (@qbi:matrix.kraut.space)
  • XMPP/Jabber
  • Threema (PWB22538)
  • Jitsi (meist für Videokonferenzen des Hackspace Jena)
  • BigBlueButton
  • Mumble
  • SMS
  • Twitter/X oder Mastodon DM (nicht aktiv genutzt, wird aber als Kanal genutzt)
  • Zoom
  • Delta.Chat (deltachat[]kubieziel.de ist die korrekte Adresse)
  • SimpleX (Kontakt zum Testen gern auf Anfrage)
  • OnionShare (OnionShare kann seit kurzem auch Chats. Hier finden manchmal kurzzeitig Chats über Onion Services statt.)
  • Auf einem Extra-Rechner kommt für Kundenprojekte noch MS Teams und Google Meet zum Einsatz. Das erwähne ich hier aber eher der Vollständigkeit halber. :-)

Delta.Chat und Wire werden recht selten verwendet. Daher kann es sein, dass die beim nächsten Update in die untenstehende Kategorie verschoben werden.

Nutze ich nicht (mehr)

  • Keybase
  • Mattermost
  • Slack (ist im wesentlichen durch Matrix ersetzt worden)
  • Briar
  • Wire
  • Telegram
  • WhatsApp

Alles, was nicht genannt ist, fällt vermutlich in die Kategorie nicht genutzt. ;-)

cronjob