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.

Leitfaden für Mastodon

Vor etwa einem Jahr schrieb ich hier einen Beitrag zu Mastodon und der DSGVO. Darin beschrieb ich, was Betreiber:innen zur Einhaltung der DSGVO zu beachten haben. Daraufhin wurde ich von der Stiftung Datenschutz kontaktiert. Sie wollten gern einen Leitfaden zum Datenschutz bei Mastodon schreiben und fragten mich, ob ich gern daran mitarbeiten wolle. Natürlich wollte ich. wink

So entstand in einer Zusammenarbeit mit Rebecca Sieber und Malte Engeler der Leitfaden als PDF-Datei sowie weitere sehr hilfreiche Dokumente. Ich habe die Zusammenarbeit sehr genossen und insbesondere der wissenschaftliche Aufsatz von Rebecca Sieber bringt viele interessante Aspekte beim Betrieb des Dienstes ans Licht.

Wenn also jemand von euch Mastodon betreibt, kann ich euch die Lektüre der Dokumente bzw. die Umsetzung unserer Hinweise nur raten. Viele der Hinweise lassen sich auch auf andere Dienste im Fediverse übertragen. Das heißt, auch hier bieten die Dokumente einen Mehrwert. Wenn ihr Fragen, Hinweise oder Kommentare habt, freue ich mich sehr über einen Kommentar hier im Blog. Ihr könnt natürlich auch die Stiftung Datenschutz gern direkt kontaktieren.

Viel Spaß beim Lesen und Umsetzen. :-)

Continue reading "Leitfaden für Mastodon"

Aktualisierung von Mastodon auf Version 4.2.0

Mastodon ist ein soziales Netzwerk zum Selberbasteln. :-) So oder ähnlich lautet eine der Versprechungen des Dienstes. Wer mag, kann einen eigenen Server betreiben und sich somit dem Fediverse vernetzen. Daher betreibe ich Anfang 2023 auch einen Server. Der ist unter den Adressen

erreichbar.

Seit kurzem gibt es nun die Version 4.2.0, die recht viele Verbesserungen bietet. Also wollte ich die Software aktualisieren. Bei Mastodon erfolgen Aktualisierungen in der Regel über git. Das heißt, mittels git fetch wird das Repository aktualisiert und dann wird die “richtige” Version ausgecheckt. Eventuell sind noch Pakete zu aktualisieren und das wars im Wesentlichen.

Als ich das bei meinem Server versuchte, stellte ich fest, dass einige Programme veraltet waren. Das Image, was ich zur Installation verwendete, basiert auf Debian bullseye. Mittlerweile ist Debian bookworm aktuell. Vor dem Update von Mastodon stand also ein Update von Debian. In der Regel ist ein Update von der Vor- zur nächsten Debian-Version recht unproblematisch. So auch hier. Das Update war schnell gemacht.

Also gab ich ein git fetch && git checkout v4.2.0 ein und startete so die Aktualisierung von Mastodon. Danach mussten die Befehle

  • bundle install
  • yarn install --frozen-lockfile

durchgeführt werden. Bei letzten Kommando sagte mir mein System, dass dieser Befehl nicht verfügbar sei. Allerdings lag im Unterverzeichnis bin/ eine ausführbare Datei namens yarn. Als ich diese direkt ausführte, war die Ausgabe wieder, dass Yarn nicht verfügbar sei. Yarn wurde mittels corepack installiert. Aber corepack war auch nicht verfügbar. Damit musste ich noch einen Schritt zurückgehen: zur Installation von node.js selbst.

Hier lag dann die Lösung: Beim Update von Debian wurde auch node.js aktualisiert. In dem Update war vermutlich corepack und anderes nicht mit eingeschlossen. Ich deinstallierte also node.js, aktualisierte die sources.list-Datei und installierte node.js wieder. Damit waren corepack und yarn auch wieder verfügbar und der obige Befehl lief problemlos durch.

Die letzte Hürde bestand im Neustart der Mastodon-Dienste. Ich hatte diese mittels systemctl restart mastodon-* neu gestartet. Dies führte zu Connection refused-Meldungen. Der Streaming-Dienst unter Port 4000 war nicht erreichbar. Dies lag daran, dass der Systemd-Service mastodon-streaming erneuert wurde. Also fehlte noch ein systemctl daemon-reload gefolgt vom Neustart.

Das war dann der Punkt, an dem der Server mit Version 4.2.0 anstandslos weiterlief. :-)

Farben bei Logseq

In meinem Beitrag zum einjährigen Jubiläum von Logseq war unter anderem auch der damalige Graph zu sehen. Mittlerweile ist der natürlich weiter gewachsen. Hier ist eine aktuelle Ansicht.

Logseq-Graph von Anfang Mai 2023
Logseq-Graph von Anfang Mai 2023

Die meisten der Knoten sind weiß oder eher grau. Allerdings haben einige auch Farbe. Mich interessiert nun schon eine Weile, was die Farben bedeuten. Leider fand ich bisher keine Doku dazu. In einem Forum findet sich nur eine unbeantwortete Frage.

Ich habe mal die eingefärbten Knoten angeschaut und hatte eine Idee. Zu Testzwecken legte ich nun einen leeren Graphen an und experimentierte mit Logseq. Das sind meine aktuellen Erkenntnisse:

  • Seiten ohne weitere Eigenschaften haben eine weiße oder gräuliche Farbe. Dies ändert sich auch nicht, wenn die Seiten untereinander verlinkt sind.
  • Wenn man die tags::-Eigenschaft auf einer Seite verwendet, so färbt sich der Knoten der getaggten Seite gelb.
    Graph mit gelbem Knoten
    Graph mit gelbem Knoten
  • Ich nutze recht häufig Hierarchien innerhalb von Logseq. Beispielsweise habe ich eine Seite zur DSGVO und Seiten über Artikel der DSGVO sind dann untergeordnet. Diese Hierarchie wird in Logseq mit einem Slash markiert. Das heißt, ich könnte folgende Seiten haben:
    • [[DSGVO]]
    • [[DSGVO/Kapitel 1]]
    • [[DSGVO/Kapitel 10]]
    • usw.
    Damit sind die Seiten der DSGVO-Seite zugeordnet und von dort erreichbar. Das kann man dann über mehrere Hierarchie-Ebenen machen. Die Seiten unterhalb der Hauptebene werden bunt gemacht. Jede Unterseite bekommt eine eigene Farbe. Vermutlich werden die Farben nach einem Schema vergeben. Das konnte ich bisher nicht herausfinden.
    Graph mit einigen bunten Knoten
    Graph mit einigen bunten Knoten

Die oben genannten Möglichkeiten sind bisher die einzigen, die ich fand, die Farben verteilen. Kennt ihr andere? Sollte ich von euch noch Beispiele hören oder selbst etwas finden, ergänze ich den Artikel.

ChatGPT und Informationssicherheitsmanagementsysteme

ChatGPT ist derzeit in aller Munde. Hin und wieder spiele ich auch damit herum. Bisher bin ich jedoch “underwhelmed” von der “Intelligenz” dieses Systems. Die Anzahl an falschen oder verwirrenden Antworten auf meine Fragen ist mir zu hoch. Das folgende Beispiel belegt das recht schön.

Aus einer Laune heraus fragte ich nach der Anzahl der Buchstaben des Wortes “Informationssicherheitsmanagementsysteme”:

Erster Teil des Dialogs (ISMS hat 37 Buchstaben)

Ich nahm natürlich an, dass ein “Computer” eine derart einfache Aufgabe korrekt bearbeiten kann. Dennoch habe ich versucht, ChatGPT von meiner (falschen) Meinung zu überzeugen.

Zweiter Teil des Dialogs (ISMS hat nun 39 Buchstaben)

Nun teilte ich ChatGPT mit, dass diese Antwort nicht stimmt und so versuchte sich die Software auch an einer neuen Raterunde.

Dritter Teil des Dialogs (ISMS ist auf 36 Buchstaben geschrumpft)

Erst beim letzten Versuch zählte ChatGPT die Buchstaben des Worts “Informationssicherheitsmanagementsysteme” aus und präsentierte das korrekte Ergebnis.

Vierter Teil des Dialogs (ISMS hat nun 40 Buchstaben)

Die Linux-Kommandozeile benötigte nur einen Versuch: ;-)

:~$ echo -n Informationssicherheitsmanagementsysteme | wc
      0       1      40

Failed to create a mountpoint for revokefs-fuse

Ich habe im Blog schon einige Male über Logseq geschrieben. Ich habe die Software über Flatpak installiert, ähnlich wie schon OnionShare. Hin und wieder muss die Software aktualisiert werden. Dies passiert über den Befehl 

flatpak update com.logseq.Logseq

Alternativ kann man auch den Namen einer anderen Software oder auch nichts angeben. Im letzteren Fall aktualisiert FlatPak alle installierte Software.

Als ich das nun heute versuchte, begrüßte mich FlatPak mit einer Fehlermeldung:

Warnung: Failed to create a mountpoint for revokefs-fuse: Can't create temporary directory
Warning: Can't create temporary directory

Tja, was tun? Der erste Versuch war, FlatPak mit einer Verbose-Option zu mehr Ausgabe zu überreden. Dies sagte mir nur, Calling system helper. Das ist für die Fehlersuche wenig hilfreich.

Also habe im nächsten Versuch mal eine Suchanfrage gestartet. Hier gab es ein paar Hinweise auf fusermount, ein paar Beiträge empfehlen, die Rechte von Verzeichnissen zu ändern oder es wird den Fragenden gleich empfohlen, eine andere Art der Installation zu wählen. Insgesamt war die Ausbeute wenig hilfreich.

Viel hilfreicher war ein Blick auf das Dateisystem. Neben dem FlatPak-Updates gab es auch Updates meines Betriebssystems. Und die große Menge an Dateien hatte die Partition, die /var beinhaltet, gefüllt. Also flugs aufgeräumt:

apt autoremove

Damit war das var-Verzeichnis wieder frei und das Update von FlatPak lief problemlos durch. Falls ihr also auch die Meldung erhaltet, könnte es sich lohnen, einen Blick auf das Dateisystem zu werfen.

Ich überlege noch, ob es nicht sinnvoll wäre, wenn FlatPak dies auch als Fehler meldet und werde diesbezüglich eventuell einen Bugreport einreichen.

Ein Jahr Logseq

Letztes Jahr entschied ich mich, Obsidian und Logseq auszuprobieren und entschied mich im Anschluss, mit Logseq weiterzumachen. Ich benutze die Software mittlerweile nicht nur für das im Artikel angesprochene Projekt, sondern auch für andere Sachen. Es ist also Zeit für einen Rückblick.

So sieht das Projekt heute aus:

Logseq-Graph vom März 2023
Logseq-Graph vom März 2023

Der Graph ist über das letzte Jahr definitiv gewachsen. Insgesamt sind ca. 600 Artikel in Logseq hinzu gekommen. Das sind sowohl solche, die ich als atomar bezeichnen würde. Das heißt, Artikel über einen Begriff, wie er in dem Projekt genutzt wird. Daneben gibt es Dokumente, die bestimmte Arbeitsschritte umfassen oder komplexere Sachen erklären.

Als ich meinen Artikel schrieb, gefiel mir die Konzentration auf das Journalling nicht allzusehr. Nach einem Jahr Benutzung muss ich sagen, dass das Journal doch ein zentraler Punkt für mich geworden ist. Die Software ist nicht nur eine einfache Dokumentation der Software, sondern ich schreibe im Journal auf, was ich getan habe und zu tun gedenke. Dort lege ich manchmal einen neuen Artikel an und springe vom Journal aus dahin. Insofern hat sich meine Benutzung ein wenig angepasst.

Im Laufe der Zeit habe ich in die Artikel Meta-Angaben eingebaut. Also beispielsweise arbeite ich viel mit Alias-Seiten. Dort gibt es eine Seite, die den Inhalt enthält und ich kann Aliase anlegen, unter der die Seite auch erreichbar ist. So könnte es etwa eine Seite namens »Auftrag« geben und eine Alias-Seite namens »Aufträge«. Beide kann ich verlinken und über den Link komme ich wieder zur Seite »Auftrag«. Weiterhin habe ich Tags verwendet und einige eigene Meta-Angaben definiert. Letztere nutze ich um, über Suchen (Querys) Informationen zu sammeln.

Insgesamt hat mir Logseq schon sehr oft geholfen, Informationen wiederzufinden und Wissen zu kombinieren. Insofern erfüllt die Software genau den Zweck, für die es gebaut wurde.

Insgesamt habe ich mich gut an die Software gewöhnt und die Kritikpunkte aus meinem ersten Artikel stellen sich als nicht so stark dar, wie gedacht.

Ich wollte damals die Benutzung mit git ausprobieren. Das habe ich nie gemacht. Allerdings teile ich den Graphen (also alle Dateien) über NextCloud mit anderen. Hier gibt es immer nur getrennte Schreibzugriffe. Daher hatte ich nie Konflikte. Für mich funktioniert dieses Teilen bisher problemlos.

Alles in allem nutze ich die Software mit großer Zufriedenheit und werde das auch weiterhin tun. :-)

cronjob