Am 29.11.2022 stürzte der Mastodon Server auf fimidi.com ab – einfach so. Keine Auffälligkeiten in den Logfiles, genug Plattenplatz, keine Lastprobleme und gehackt wurde er auch nicht. Nach allen möglichen Forschungen habe ich dann zähneknirschend beschlossen den Server am 02.12.2022 neu aufzusetzen. Hier ein wenig mehr Informationen zu den Hintergründen.
Ich betreibe diesen Server seit vier Jahren. Im Blog Post aus Dezember 2018 erkläre ich ein wenig, wie es dazu kam: fimidi.com Mastodon Server.
Es war so ein klassische Side-Project und ich erwartete nicht, dass es überhaupt vier Jahre läuft. Ich hatte wenig Erfahrung mit den verwendeten Technologien (Ruby, PostgreSQL, Redis, Node.js, ElasticSearch, etc), fand die Idee dieses Fediverses aber so verführerisch, dass ich da unbedingt mitmachen und mehr verstehen wollte.
Vor vier Jahren war die Mastodon Software noch recht neu. Ich benutzte damals Linux Ubuntu 18.04 und hatte 100 GB Plattenplatz. Die Updates von Mastodon gestalteten sich manchmal einfach, manchmal war es aber auch schwieriger, weil die verwendeten Technologien Updates verlangten, die etwas tricky waren, wenn man sich da nicht auskennt.
Da die fimidi.com Instanz nicht beworben wird, entdeckten sie nicht viele. Maximal gab es 700 Benutzerkonten gleichzeitig, es waren aber auch manche “schrägen” Accounts (vermutlich SPAM) dabei. Wenn ein User 12 Monte inaktiv ist, lösche ich das Konto. Also das ist dann nicht gleich weg. Der User bekommt eine E-Mail und hat 30 Tage Zeit darauf zu reagieren. Erst wenn nichts kommt in dieser Zeit wird das Konto “wirklich” gelöscht. Im Jahr 2022 blieb so ein “harter” Kern von etwa 70 Usern über und alles plätscherte so vor sich hin.
Dann beschloss Elon Musk auf eine dramatische Art Twitter zu kaufen. Mastodon galt und gilt als Alternative zu Twitter und so wurde es in Wellen voller im Fediverse, besonders auf Mastodon Instanzen.
Ich war zu dieser Zeit unterwegs ohne Laptop und konnte nicht wirklich fimidi.com überwachen. In der Shell auf dem Telefon bemerkte ich aber, dass die Platte trotz “Reinigungs” Cron Jobs immer voller wurde.
Mitte November war ich wieder daheim und machte ein Distributionupdate auf Ubuntu 22.04 und ein Update auf Mastodon 4.0.2 weil ich dachte:
räum da mal auf, wer weiss, wie das weiter geht
Die Updates liefen wunderbar durch.
Das Einzige, worum ich mich in diesen vier Jahren überhaupt nicht gekümmert hatte, war die Mastodon Datenbank, die auf PostgreSQL läuft. Ich hatte vorher nur mit MySQL/MariaSQL zu tun und war glücklich, wenn die DB Migrate Skripte des Mastodon Updates problemlos durchliefen.
Was mir entgangen war, das ich über die Jahre und Distributions-Updates mehrere PostgreSQL Versionen auf unterschiedlichen Ports am Laufen hatte (PostgreSQL 10, 12, 14 und 15), die Daten allerdings im alten PostgreSQL 10 Cluster verblieben.
Ich weiss das nur noch so schemenhaft, aber ich startete wohl mit PostgreSQL 9 und hatte mit den ersten Mastodon Updates grosse Probleme. PostgreSQL hatte wiederum damals wohl einen Umstieg auf UTF8 oder irgendwelche Änderungen die die “locale” betrafen. Mein Datenbank-Cluster blieb also alt, die ausführende PostgreSQL Version veränderte sich aber. Zum Schluss habe ich mit der Version 15 auf die DB in der Version 10 zugegriffen. Naja, und das war vermutlich das Problem. Über die Jahre wurden immer mehr UTF8 Zeichen abgespeichert. Ab dem Update Mitte November 2022 war es dann nicht mehr möglich Indizes zu reindizieren, auch ein Dump der Daten stürzte ab, so das ich kein SQL Backup erstellen konnte.
Ich habe allerdings tägliche Serverbackups und konnte einen separaten Server aus dem Backup erstellen. Auf diesem Server habe ich dann mit Wuffel, den ich auf dem Fedicamp kennenlernte und der sich gut mit PostgreSQL auskennt, die Tiefen meiner Datenbank erforscht (danke für die Mühe). Es stellte sich raus, dass der Patient (die Mastodon DB) in den letzten Jahren täglich ein wenig mehr verstorben war und das es extrem aufwendig und mühselig gewesen wäre, die DB zu reparieren. Falls es überhaupt möglich gewesen wäre.
Dann beschloss ich den Server aus Zeit- und Budgetgründen neu aufzusetzen. Das war allerdings auch nicht so einfach möglich, denn fimidi.com war und ist ja ein Teil des Fediverse. Das heisst die anderen zigtausend Server versuchten meine Instanz zu erreichen und wunderten sich schon, was los ist.
Ich fand heraus (Danke an jj), das es irgendwelche Schlüssel gibt, auf deren Basis die Server einander vertrauen. Ich fand und sicherte die Schlüssel, setzte den Server neu auf und registrierte das erste Konto (meins). Nach ein bisschen Fummelei startete ich dann die Mastodon Services und der Sidekiq Service erzeugte sofort etwas Last. Auf meinem Telefon ging es ping, ping, ping und ich bekam jede Menge Nachrichten, das Accounts meinem neuen Mastodon User folgten.
fimidi.com war gewissermassen wieder “back on stage”, sagte bei den anderen Fediverse Server hallo und zack, ruckelte sich das automatisch wieder hin – da war ich froh.
Naja, und dann waren da ja noch die anderen User auf dem Server. Wir haben einen gemeinsamen Chat und es war ein wenig wie ein soziales Experiment. Schliesslich war ja jetzt alles mal weg. Vermutlich war Mastodon in der Wichtigkeit der anderen User nicht ganz so hoch aber das nun alle Daten weg waren, das machte einige doch ziemlich fertig.
Von daher war die Freude allgemein gross, das nach der Registrierung eines jeweils gleichnamigen Kontos die Follower automatisch wiederkamen. 19 Konten sind schon wieder hergestellt :)
Es tut mir leid für die ganze Panik aber letztlich war die Aktion auch wie ein reinigendes Gewitter. Ich habe viel gelernt in den letzten Tagen und bin froh jetzt mit einer frischen Installation in die Zukunft zu starten.
Wir haben zur Not immer noch das Backup vom 27.11. in dem die meisten alten Daten noch erreichbar sind. Wenn ihr also spezielle Sachen sucht, dann können wir da gemeinsam gucken. Der Server für das Backup wird bis Ende Dezember 2022 online bleiben
Tja und nun – sach ich mal …
Und wenn ihr jetzt neugierig geworden seid, schaut einfach auf unsere About-Page, in das Profil Verzeichnis und die aktuelle öffentliche Timeline. Und wenn euch das gefällt, dann werdet ein Teil des neuen (alten) #fimidiverse
Leave a Reply