Das Fediverse und die Blogs

Vor einem Jahr habe ich mit den hervorragenden Plugins von Matthias Pfefferle scaldra.net ins Fediverse gebracht. Oder anders gesagt: WordPress mit einer ActivityPub-Schnittstelle versehen. Aber bereits zu dem Zeitpunkt fragte ich mich, wie denn ein Blogpost am besten zu z.B. Mastodon geteilt wird. Wirklich im Volltext oder doch besser nur mit einem Teaser?

Inzwischen sehe ich den Blogpost als so etwas wie einen Vortrag: Jemand erzählt und einige/viele hören zu. Ein Blog mit Kommentarfunktion ist dann so etwas wie ein Vortrag mit anschließender Diskussion. Dagegen ist das, was auf den ActivityPub-getriebenen Plattformen wie Mastodon stattfindet, eine Unterhaltung. Jeder trägt kurze Schnipsel bei und wenn es in einen länglichen Monolog ausartet, dann wird es nervig.

Als Konsequenz sind die alten Plugins jetzt weg und wurden durch Mastodon Autopost ersetzt. Der Blogpost wird einfach nur automatisch – sozusagen in einem Satz – in meinem Account bekannt gegeben. Denn das war eine weitere Irritation: Das Blog hatte seine eigene beschränkte Social Media Identität und daneben hatte ich noch meinen normalen Mastodon-Account. Das passte einfach nicht zusammen.

Und es kann durchaus sein, dass ich demnächst an dieser Stelle auf jede Automatisierung verzichte und meine „Vorträge“ lieber manuell verbreite.

Eine Brücke zu Tor

Nachdem in den letzten Tagen viele Erwähnungen von Snowflake durch meine Timeline purzelten, habe ich mich endlich einmal genauer mit dem Thema befasst. Es geht darum, Menschen im Iran – und natürlich auch Russland, China usw. – einen sicheren Zugang zum Internet zu geben, der nicht überwacht, zensiert oder eingeschränkt ist. Dafür gibt es bekanntlich das Tor-Netzwerk.

Mit Snowflake erschaffen Freiwillige zusätzliche Zugangspunkte zum Tor-Netzwerk und unterminieren so die Bemühungen der Zensoren alle IPs zu sperren, die einen Zugang zu Tor bieten. Es arbeitet als Browser-Plugin und ist durch die ständig wechselnden IPs der privaten Anschlüsse nicht in den Griff zu bekommen.

Das ist schon ganz prima, aber ich hatte da noch einen Server, der nicht so recht ausgelastet ist. Auch dort könnte man Snowflake installieren, aber empfohlen wird für Server die Einrichtung einer obfs4 Bridge, das auch deutlich besser konfigurierbar ist.

Das ist mit Ubuntu trivial, die Anleitung gibt es hier. Eigentlich nur ein apt Aufruf und die Anpassung der Konfiguration /etc/tor/torrc.

Also erst einmal

apt install tor obfs4proxy

und dann die /etc/tor/torrc anpassen. Das sind effektiv nur sechs Zeilen.

Ich habe die knappe Beispielkonfiguration noch um zwei Dinge ergänzt.

  • Normalerweise werden alle Meldungen in das syslog geschrieben. Das fand ich unübersichtlich und habe es in eine andere Logdatei umgeleitet
  • Ich habe Netzwerkdurchsatz auf 500GB pro Woche beschränkt. Die Brücke ist ja nicht alleine auf der Maschine und sollte dem Rest nicht zu viele Resourcen

Zum Schluss tor starten. Ein Blick in das Log zeigt, dass der Start erfolgreich war

Oct 02 11:02:04.000 [notice] Bootstrapped 15% (handshake_done): Handshake with a relay done
Oct 02 11:02:04.000 [notice] Bootstrapped 75% (enough_dirinfo): Loaded enough directory info to build circuits
Oct 02 11:02:04.000 [notice] Bootstrapped 90% (ap_handshake_done): Handshake finished with a relay to build circuits
Oct 02 11:02:04.000 [notice] Bootstrapped 95% (circuit_create): Establishing a Tor circuit
Oct 02 11:02:07.000 [notice] Bootstrapped 100% (done): Done
Oct 02 11:02:07.000 [notice] Now checking whether IPv4 ORPort XXX.XXX.XXX.XXX:YYYYY is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
Oct 02 11:02:07.000 [notice] Now checking whether IPv6 ORPort [XXXX:XXX:XXX:XXXX::X]:YYYYY is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
Oct 02 11:02:09.000 [notice] Self-testing indicates your ORPort  XXX.XXX.XXX.XXX:YYYYY is reachable from the outside. Excellent.
Oct 02 11:02:09.000 [notice] Self-testing indicates your ORPort [XXXX:XXX:XXX:XXXX::X]:YYYYY is reachable from the outside. Excellent. Publishing server descriptor.
Oct 02 11:02:11.000 [notice] Performing bandwidth self-test...done.

Alle sechs Stunden kommt dann eine Meldung über die Nutzung des Dienstes

Oct 02 17:02:04.000 [notice] Heartbeat: Tor's uptime is 6:00 hours, with 56 circuits open. I've sent 2.21 GB and received 2.23 GB. I've received 229 connections on IPv4 and 22 on IPv6. I've made 1851 connections with IPv4 and 500 with IPv6.
Oct 02 17:02:04.000 [notice] While not bootstrapping, fetched this many bytes: 13666060 (server descriptor fetch); 353 (server descriptor upload); 809017 (consensus network-status fetch); 82233 (microdescriptor fetch)
Oct 02 17:02:04.000 [notice] Heartbeat: In the last 6 hours, I have seen 59 unique clients.

Die Maschine, auf der meine Tor-Bridge läuft, ist jetzt ein Eingangsknoten oder sie hilft als Zwischenstation den Traffic zu anonymisieren. Aber sie ist kein Exit-Node, also ein Knoten von dem aus der Traffic wieder ins normale Internet gelangt. Denn das wäre mir zu gefährlich: Tor wird ja auch gelegentlich für Sachen benutzt, die nichts mit politischen Freiheiten oder Angst vor Verfolgung zu tun haben. Beispielsweise Urheberrechtsverletzungen, die hierzulande gerne mit der dicken Keule verfolgt werden. Das ist dann doch eher etwas für Profis.


Smartphone Recycling

Das sind die Smartphones, die mich seit 2011 begleitet haben.

Die beiden ganz links (Geeksphone Zero und bq E4) sind jetzt auf dem Weg zum NABU, um recycled zu werden. Ich war zufällig an meinem Arbeitsplatz über eine Spendenbox gestolpert und fand es besser auf diese Weise eine Minispende zu machen als es unserer lokalen Müllentsorgung zu übergeben.

Das Telefon ganz rechts (Nokia. 5.4) habe ich aktuell im Einsatz zusammen mit der Garantie für drei Jahre Updates. Schöner wäre eine deutlich längere Updatezeit, denn eigentlich möchte ich ein Smartphone – wie alle anderen Geräte – länger benutzen. Denn bisher waren es nie Defekte oder ein ohh-ich-will-was-neues-haben, die mich zum Kauf eines neuen Smartphones brachten. Es war immer der Zustand des Betriebssystems. Das ist sehr unbefriedigend. Auf unseren beiden fast 10 Jahre alten Notebooks läuft ein aktuelles Ubuntu und ich bin mir sicher, dass es nicht am Betriebssystem liegen wird, wenn sie eines Tages aussortiert werden, sondern dass sie dann tatsächlich kaputt sein werden.

Ein reines Linux-Smartphone wäre mir zwar am Liebsten, aber noch sind sie leider noch nicht alltagstauglich genug für mich. Wobei sich die meisten Apps inzwischen gut durch PWAs ersetzen lassen. Aber leider nicht alle.

Das vorletzte Telefon (bq Aquaris U2) dient übrigens als Backupgerät. Es ist fast immer aus, kann nur noch WLAN und beherbergt z. B. einige Zweitfaktoren. Vielleicht ist das schon der Ansatz für die Zukunft : ein Android-Gerät, Banking-Apps und ähnliches enthält, nur dafür verwendet wird und ansonsten aus ist. Und für das Alltägliche ein Linux-Handy. Aber da wäre es schon schön, wenn es nicht nur das Librem und das Pinephone gäbe.

Knifflig.


Das Blog im Fediverse

Dieses Blog ist seit einigen Wochen Teil des Fediverse dank des ActivityPub-Plugins von Matthias Pfefferle.

Für alle, die sich angesichts der seltsamen Begriffe verwundert am Kopf kratzen und sich fragen „Was will mir der Autor sagen?“, erst einmal ein paar Worte der Erklärung.

Das Fediverse  ist eine sehr lebendige Verknüpfung von sozialen Netzwerken, die wiederum aus vielen unabhängigen Instanzen bestehen. Es ist der Gegenentwurf zu Twitter, Instagram und Co. Hinter den einzelnen Instanzen, die manchmal nur einen, aber auch Tausende Benutzer haben können, stehen reale Menschen und keine gewinnmaximierende Konzerne. Und die Moderation erfolgt nicht durch eine seltsame KI, sondern ebenfalls durch Menschen. Wobei sich ohnehin alle deutlich freundlicher verhalten, als ich es aus dem kommerziellen Bereich kenne. Ein Grund dafür dürfte sein, dass die Timeline nicht durch Algorithmen auf maximale Aufregung optimiert wird, sondern schlicht zeitlich sortiert ist. Wer technisches Vorwissen hat, kann selbst die passende Software aufsetzen und alle anderen sind jederzeit auf den vielen Instanzen von Mastodon, Friendica, Pixelfed etc. willkommen. Insgesamt eine sehr offene Struktur.

Damit diese verschiedenen sozialen Netzwerke miteinander sprechen wurde das ActivityPub-Protokoll entwickelt und vom W3C normiert.

Und dank des Plugins von Matthias Pfefferle spricht inzwischen auch WordPress ActivityPub. Auf diese Weise nimmt mein Blog wie ein normaler User am Fediverse teil: andere Menschen können es abonnieren, in ihrem sozialen Netzwerk auf meine Posts antworten und diese Antworten erscheinen wiederum bei mir im Blog als Kommentar. Ziemlich cool.

Noch eine technische Notiz für alle WordPress-User, die es selbst mal ausprobieren wollen: SEO-Plugins wie Yoast besser ausschalten, denn sie greifen recht hässlich in die Linkstruktur ein und verhindern so die Teilnahme am Fediverse.

Über eine Sache grübelte ich überraschend lange nach. Das Plugin bietet verschiedene Möglichkeiten einen Post zu teilen: vom knappen Link bis zum Volltext. Was passt am Besten zu den doch sehr unterschiedlichen Netzwerken, die ja zum Teil eher aus der Microbloggingecke kommen? Ein nackter Link ist mir zu nichtssagend, aber komplette Posts sind wiederum zu lang. Und da ich oft Fotos dazwischen habe fällt das Ergebnis auf den verschiedenen Plattformen manchmal überraschend aus. Letztlich habe ich die Form Teasertext und Link gewählt. Ich glaube, dass das am Besten funktioniert .

Smart Egg Timer

Es gibt tatsächlich Software, die Probleme aus der wirklichen Welt löst. Mein aktueller Favorit in dieser Kategorie ist der Smart Egg Timer. Er sagt mir auf die Sekunde genau, wie lange ein Ei kochen muß, bis es genau die Konsistenz hat, die mir gefällt. In einem Kochbuch las ich vor vielen Jahren, dass es dafür keine Regeln gäbe, das Ergebnis sei immer etwas vom Glück abhängig. Erfreulicherweise sehen Naturwissenschaftler das anders und haben das Ergebnis in eine Formel gegossen.

Und ein freundlicher Mensch hat daraus eine Android-App gebaut. Die gibt es bei FDroid

Wer den Screenshot genauer studiert, der sieht, dass bei uns die Eier aus dem Kühlschrank kommen, keine Normeier sind, mehr als 100 Meter über der Nordseeküste gekocht wurden und ich sie mit einer Kerntemperatur von 70 Grad besonders schätze.


Des Blogs neue Kleider

Alle paar Jahre ist es an der Zeit, dass sich dieses Blog verändert. Ich wollte weg von dem hinter den Kulissen viel zu komplexen kommerziellen Theme, das ich hier verwendet habe, hin zu etwas einfacheren. Und ich wollte in Zukunft Asides benutzen, um auch mal kurz zwischendurch was zu schreiben (Eigentlich ist das ja eher etwas für Mastodon oder Twitter, aber das Blog ist der Sammelpunkt für alles, das ich nicht verlieren will. Daher bleibt das „Original“ hier und geht per Crossposting auf die Reise).

Die Wahl eines Themes war eher einfach: Ich wollte wieder ein klassisches Blogdesign haben und Anders Norén hat dabei etwas Hübsches im Angebot: Hemingway. Mit einigen winzigen Modifikationen tut es jetzt hier seinen Dienst.

Die Zitrone, die einige Zeit prominent dieses Blog zierte, ist bis auf Weiteres im Vorruhestand.


Mit dem Daumen bloggen

Seitdem ich dieses Blog vor gut einem Jahr wieder aus dem Dornröschenschlaf erweckt habe entstehen die Artikel fast ausschließlich mit dem Daumen. Das mobile Datengerät ist mein Mittel der Wahl. Es ist immer zur Hand,, ich kann das Schreiben unterbrechen und bei nächster Gelegenheit wieder aufnehmen, sogar mal unterwegs einen Artikel im Nachhinein umformulieren. Dabei entsteht gelegentlich die Situation, daß ich einen Satz beginne, unterbrochen werde, bei nächster Gelegenheit weiter schreiben will und nicht den Hauch einer Ahnung habe, was ich mit diesem Fragment anfangen soll. Was gar kein Problem ist, denn der neue Satz ist bestimmt besser. Bestimmt.

Leicht irritierend finde ich die Beobachtung, daß die mit dem Daumen getippten Posts gerne mal länger sind, als die ganz klassisch auf der Tastatur entstandenden. Die Wortvorhersage von SwiftKey hat sicher ihren Anteil daran, denn nur mit Daumen und einzelnen Buchstaben bewaffnet ist das dann doch etwas zu zähflüssig. So aber scheine ich zu einer Formulierungsgeschwindigkeit zu kommen, die meinen Gedanken während des Tippens genug, aber nicht zu viel Freiheit lässt.

Selbstverständlich wurde auch dieser Post mit dem Daumen geschrieben, redigiert und ergänzt.


Wenn MySQL stirbt…

Es begann harmlos: In meiner Friendica-Instanz wurde ein Bild nicht geladen. Als ich mir das genauer ansah, stellte sich heraus, dass das Bild aus der Datenbank gezogen wurde und dabei ein Mysql Server gone produzierte. Im Log von MySQL tauchten dazu so hässliche Meldungen wie diese auf:

[...]
Some pointers may be invalid and cause the dump to abort.
Query (7feb68c6ba50): is an invalid pointer
Connection ID (thread ID): 6
Status: NOT_KILLED
[...]

Bei dem NOT_KILLED blieb es nicht immer, nach ein paar weiteren Versuchen war der MySQL-Server tatsächlich tot … liess sich aber noch neu starten. Die naheliegende Rettungsmöglichkeit Backup einspielen scheiterte daran, dass seit einiger Zeit das Backup via mysqldump abgebrochen war und zwar in der Friendica-Tabelle conversation.

Also musste ich reparieren.

Um nicht noch mehr Datenverlust zu riskieren, habe ich erst mal das Datenverzeichnis kopiert:

cp -rfv /var/lib/mysql /var/lib/mysql$(date +%s)

Danach veruschte ich zu retten, was zu retten ist. Im Error-Log von MySQL wurde ich auf http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html verwiesen … das funktionierte nur leider nicht.

Nächster Versuch: da ich durch das Backup etwa wusste, ab welchem Datensatz etwas kauptt war, versuchte einfach ab dort ein paar Datensätze zu löschen. Ergebnis: der MySQL Server fiel komplett aus und lissß sich nicht mehr starten. In dem Moment war ich wirklich froh vorher das Datenverzeichnis in Sicherheit gebracht zu haben.

Die Lösung war dann recht rüde: ich habe conversation per TRUNCATE geleert und danach noch photo (gleicher Fehler).Jetzt liess sich endlich ein Dump ziehen. Noch schnell die Datenbank gelöscht und via Dump neu aufgesetzt. Alles lief danach wieder normal … magischerweise sogar Friendica, jedenfalls weitestgehend.

Was habe ich daraus gelernt?

  1. Mache von jeder Datenbank auf deinem Server ein einzelnes Backup (--all-databases ist eine schlechte Idee)
  2. Kontrolliere den Rückgabestatus von mysqldump

Oder als Skript (vereinfachte Kurzfassung):

doBackup () {
   mysqldump -u $1 -p$2 $3 > $3.dump
   if [[ $? -eq 0 ]]; then
     gzip $3.dump
   else
     echo >&2 "backup of $3 failed"
     exit 1
   fi
 }

doBackup "USER" "PASSWORD" "DB
 […]