Seit nun 2 Wochen hat Magdeburg eine „offiziell“ inoffizielle Mastodon Instanz. Betrieben wird das Ganze von einem Kommilitonen und meiner Wenigkeit.

Man mag sich Fragen, warum ich denn ausgerechnet jetzt einen Beitrag hier auf meiner Seite mache. Nun die Antwort ist das ich zum einen, wie schon im Titel zu erkennen einen kleinen Zwischenstand bringen wollte, und zum andern auch mal meiner Website ein wenig leben einhauchen wollte…

TL;DR am Ende

Setup

Was das Setup einer Mastodoninstanz angeht gibt es Leute im Netz, die das um einiges besser können als ich. Darum werde ich hier nur kurz die Schritte beschreiben, die ich/wir unternommen habe/n:

  1. Domain kaufen. Das war in unserem fall halt http://machteburch.social
  2. Server besorgen. Ob Baremetal oder VM ist egal, Hauptsache der Server hat mindestens 2 Kerne und 2 GB RAM. Falls der Server wirklich nur 2 GB RAM hat, denkt dran Swap zu aktivieren. Ich denke auch, es würde auch mit nur einem Kern gehen, aber Vorsicht sei geboten …
  3. Postgres installieren. Bei Ubuntu schon vorinstalliert. Fragt mich nicht warum…
  4. Mastodon einrichten. Wer das auch mal Probieren will, und sei es nur aus Jux und Tollerei, sollte sich das offizielle Tutorial (en) dazu durchlesen.
  5. Backups einrichten. Auch hierzu gibt es Empfehlungen von Mastodon (en).
  6. Und zu guter Letzt, auch wenn es mit der 5. tauschbar wäre: Mailserver einrichten. Damit habe ich definitv auch am längsten gehardert, was allerdings mehrere Gründe hatte.

Wer mehr Infos will, kann mir gerne auf allen möglichen Platformen schreiben.

Unser Server im Speziellen wird bei Scaleway in Amsterdam gehostet. Dort habe ich einen der START 1-S, die mit 2 Kernen und 2 GB RAM genau in das Spektrum fallen.

2-Wochen-Rückblick

Wie eingangs schon erwähnt läuft der Server jetzt ziemlich exakt 2 Wochen. In diesen 2 Wochen haben wir es geschafft auf insgesamt 10 Nutzer + 1 Adminaccount zu kommen. Nach Stand der Veröffentlichung dieses Beitrags haben wir 131 Statusmeldungen. Des Weiteren haben wir sowohl auf Reddit als auch auf Twitter einen Post abgesetzt, um die Instanz ein wenig zu bewerben. Mit eher magerem Erfolg. Aber hey! Immerhin überhaupt Erfolg! 😀

Und um noch minimal Meta-Content/technische Aspekte zu liefern:

  • Die Instanz wurde das erste Mal am 22.01.2019 um 16:10 gestartet.
  • Wir hatten eine Erreichbarkeit von 99.85 % mit einer überschätzen Downtime von 30 min.
  • Diese Downtime haben wir einem Bug in der Software Whalebird zu verdanken und einem Update, von Mastodon v2.7.0 auf v2.7.1, welches überraschend viel RAM brauchte.
  • Unserer Mailserver ist momentan der kostenlose Plan von Zoho, was aber irgendwann noch auf einen Selbstgehosteten umgestellt werden soll.

Exkurs 1 – „Der Bug“ oder auch „It’s over 9000“

Wer nicht gerade bereits auf den Link geklickt hat und trotzdem mehr darüber Erfahren will, kann hier gerne weiterlesen.

Erstmal: Was ist Whalebird? Whalebird ist eine plattformunabhängige (natürlich auf Electron-Basis) Clientsoftware für Mastodon. Vom Aufbau ist sie Slack zum Verwechseln ähnlich, läuft aber trotz Electron mindestens 3x so gut. Man kann mehrere Konten von verschiedenen Instanzen in einer recht schönen UI unter einen Hut bringen. Hier loggt man sich übrigens nicht ein, sondern, wie bei jedem anderen Mastodonclient auch, die Software authentifiziert sich über einen OAuth Token. Wie das funktioniert ist allerdings eine Geschichte für einen anderen Tag.

Nun zum Bug: Damit der Client auch immer schön alle Beiträge anzeigt, wird über die Mastodon API alle paar Sekunden nach gefragt, ob sich was geändert hat. Die Entwickler haben aber scheinbar Probleme mit diesem Feature und haben deshalb als alternative auch eine Websocketverbindung implementiert. Und genau hier haben wir den Knackpunkt. Scheinbar hat sich in der Implementierung ein Fehler eingeschlichen so das alle paar Sekunden (1 – 2 Sek) eine neue TCP-Verbindung zum Websocket geöffnet wird, anstatt die alte(n) zu benutzen. Leider werden die alten Verbindungen auch nicht geschlossen, was dazu führt, das sich mit der Zeit immer mehr offene TCP-Verbindungen die sich entweder im State „ESTABLISHED“ oder „CLOSED-WAIT“ befinden, was auf Dauer den RAM des Servers zumüllt. Und jetzt hier kann man noch einen draufsetzten: aktiviert und deaktiviert man diese Funktion ein paar mal, „stackt“ sich der Effekt und es werden in einer wahnsinnigen Geschwindigkeit neue TCP-Verbindungen geöffnet.

Nur so als Referenz: Die halbwegs konstante Verbindungszahl die man links und rechts der Berge sehen kann liegen bei ca. 100 simultanen Verbindungen. Und der max. Peak in diesem Bild liegt bei 13000. Von einem (!) Whalebirdclient.

Exkurs 2 – „Update-Time“ oder „Get outta my Swap!“

Unsere zweite Downtime haben wir einer Mischung aus Scaleways Ubuntu-Image, NodeJS builds und meiner Blödheit zu verdanken.

Ich dachte mir heute Morgen, als ich durch Github gestreift bin: „Hey, gab es eigentlich schon ein Mastodon Update?“ Ja! Zwar nur von v2.7.0 auf v2.7.1, aber Bugfixes sind Bugfixes. Ich also schnell in den Docs von Mastodon geschaut und herausgefunden das Updaten echt einfach ist.

  1. Lokale Dateien aktualisieren. Mit Git so einfach wie einen Kaffe schlürfen.
  2. Einen kurzen Befehl ausführen, um die JS-Asstes zu kompilieren. Auch nicht weiter wild.
  3. Sidekiq (der Federation-Dienst) neustarten und Puma (der Web-Dienst) reloaden.

Gesagt getan. Ergebnis: „Yay, hat alles gekla.. Warum sind wir immernoch auf der gleichen Version?!“

Also schnell mal geschaut. „Ach verdammt. Vergessen nach dem git fetch noch den checkout zu machen. Ok, erledigt. Jetzt wieder Assests kompelieren und… Fehler?! Was?! Aber das sollte doch keine Probleme machen…“ Nach wenigen Sekunden herumsuchen gefunden das in den Releasenotes steht das ich Plugins nachinstallieren muss. Das also auch noch schnell gemacht. Jetzt aber die Assets! Jawoll, funktio… Ach verdammt! Noch ein Fehler?! Was den jetzt? ‚Out of memory‘. Och nööööö…“ Na gut also Sidekiq, Postgres und Caddy (mein Webserver) ausgeschaltet. Und siehe da: Es funktionierte immer noch nicht. Dann habe ich durch Zufall gesehen: Hey, warum wird mir denn in htop gar kein Swap angezeigt? Und es stellte sich heraus, dass Scaleway ihre Images ohne vorkonfigurierten Swap ausliefert. Swap aktiviert und endlich funktionierte es.

Was ist jetzt die Moral? Erst lesen, dann tippen! Und bei wenig RAM immer Swap aktivieren…

TL;DR/Conclusion

Ein Mastodon Server aufzusetzten ist recht simpel. Und das ist gut so, wenn man jedem Hinz und Kunz erlauben will sich slbst eine Instanz aufzusetzten, was je der Sinn hinter dem Fediverse ist. Auch wenn wir ein paar Schwierigkeiten hatten und uns auch jetzt noch kleine Sachen trietzen werde ich mit Freude den Server weiter betreiben und hoffentlich kann ich dann auch meine 6-Monate-Review schreiben.

Und ganz zum Schluss: Ist euch aufgefallen dass man im Titelbild den Toot sehen kann, den ich auf Mastodon gepostet habe, wo ich diesen Blogbeitrag beworben habe? So Meta … o.o

Schreib einen Kommentar

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