💾 Archived View for okoyono.de › ~f › server-changelog › 2021.gmi captured on 2022-04-28 at 18:27:21. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2022-01-08)
-=-=-=-=-=-=-
Das Jahr 2021 war ein etwas anderes Jahr für uns. Normalerweise bekommen wir eine Hand voll Treffen (oder mehr) im Jahr koordiniert und treffen uns zusätzlich auf diversen Veranstaltungen. Im zweiten Corona-Jahr war dies leider nicht möglich und so haben wir viel Zeit online verbracht. Unsere sehr regelmäßigen Treffen Donnerstag 21 Uhr haben wir beibehalten und einiges auf die Beine gestellt. So haben wir mittlerweile einige dezentrale Dienste, die wir in unser tägliches Leben eingebunden haben. Hierzu zählt auf jeden Fall Mastodon und Matrix, was sich schon im erweiterten Freundeskreis und den Familien integriert hat. Aber auch Gitea hat Github komplett ersetzt, SearX wurde zum Daily Driver und Jitsi als Kommunikationsplattform war nicht mehr wegzudenken. Letzteres haben wir aber vor Kurzem durch BigBlueButton ersetzt, da dies um einiges besser und stabiler läuft. Mit unseren Services haben wir uns selbst unabhängit von großen Konzernen wie Twitter, Facebook und Google gemacht. Nach über einem Jahr lässt sich sagen: Es ist eine Bereicherung, kein Verlust!
Technisch haben wir eine stabile Infrastruktur geschaffen, die es uns erlaubt, Dienste sicher und zuverlässig zu hosten und auch aktuell zu halten. Alle öffentliche Dienste laufen in Docker Containern, sind nach Aussen über einen Reverse-Proxy erreichbar, der auch die SSL-Termination übernimmt. Interne Tools sind nur über einen Wireguard-Tunnel erreichbar. Monitoring haben wir über Prometheus gelöst, für diesen wir einige Exporter selbst gebaut haben. Das Alerting erfolgt über Matrix und Pushover.
Die einzelnen Dienste haben wir mittlerweile gut miteinander verbunden. So kommen Alertings direkt in einem Matrix-Channel, ebenso Änderungen im Issue-Tracker. Unsere Website und die User-Websites sind gleichzeitig über HTTP/HTTPS, Gemini und Tor erreichbar. Über eine RSS-Bridge werden wir zuverlässig über neue Releases und CVEs der von uns eingesetzten Software informiert. So können wir schnell handeln.
Da wir mit unserem Setup sehr flexibel sind, testen wir regelmäßig neue Software-Projekte aus, die evtl. für uns nützlich sein könnten. So haben wir auch Projekte wie Pixelfed oder Jitsi wieder abgeschaltet, da sie noch nicht ausgereift genug waren oder nicht zu uns passten. Für die nächsten Monate haben wir Funkwhale, Owncaset, Bookwyrm und MooseFS auf der Testbank.
In diesem Sinne war das Jahr 2021 ein erfolgreiches Jahr, in dem wir unsere Infrastruktur professionalisiert, und uns damit ein Stück unabhängiger gemacht haben.
Der letzte Eintrag für dieses Jahr. Minecraft und Gitea bekamen ihre Streicheleinheit. Zudem haben wir uns unsere BigBlueButton-Instanz vorgenommen und etwas an der Config justiert. Der Gitea Webhook Trigger war auch noch nicht sauber auf dem neuen Server eingerichtet. Vor Abschluss des Jahres haben wir noch etwas Ordnung im Issue-Tracker gemacht.
Parallel dazu lief die rc3, eine virtuelle Ersatzveranstaltung zum CCC Congress. Wir haben hier mit einem Assembly teilgenommen, einiges an Badges verteilt und hatten auch so viel Spaß. Stand jetzt haben 506 unterschiedliche Menschen unser Assembly besucht (visitor Badge), 110 waren in jedem Winkel der Map (explorer Badge), 6 haben ein Badge im Gästebuch gefunden, ebenfalls 6 haben ein Badge auf Mastodon gefunden und 28 Menschen haben sich bis ins 6. Keller-Level durchgekämpft (kellerkind Badge). Unser Assembly (ohne Keller-Level) kann man hier noch einmal in Ruhe anschauen, auch wenn die rc3.world am 1.1.2022 von einem Meteroit getroffen wird.
økoyono Assembly Eingang gefunden
Die rc3.world wird von einem Meteoriten getroffen
Ein verfrühtes Weihnachtsgeschenk machte uns Big Blue Button. Die Version 2.4 ist nun endlich released und wir haben natürlich gleich zugegriffen. Leider gab es keinerlei Dokumentation zum nginx als Reverse Proxy, so mussten wir selbst ran. Die Neue Version ist wirklich beeindruckend. Jitsi hat damit endgültig ausgedient. Ein paar Kleinigkeiten nach der Server-Migration mussten wir noch nachziehen, sowie das Alerting anpassen (hier demnächst mehr).
Und auch an die rc3-Welt mussten wir nochmal dran, hier gab es einige Linting-Errors, die wir schnell gefixt hatten.
Big Blue Button 2.4 Release Notes
Die üblichen Updates wurden wieder eingespielt. Unser Prometheus Monitoring läuft nach der Umstellung auf AlpineLinux noch nicht ganz rund. Der node-exporter mag noch nicht alle collectors sauber starten und für OpenRC (die Alternative zu Systemd) brauchen wir nun einen extra exporter. Hier gibt es schon ein kleines Projekt, das als Ausgangspunkt verwendet werden kann. Hier ist aber noch etwas Arbeit erforderlich.
Da die diesjährige Remove Chaos Experience (rc3_21) immer näher rückt und wir auch einen Teil der Welt beisteuern wollen, haben hier hier mal nach dem aktuellen Stand geschaut. Unsere Welt ist immer noch im falschen Status im Maschinenraum, deshalb haben wir hier mal das c3assemblies Team angeschrieben.
Oh, und ein großes DANKESCHÖN an das Sticker Operation Center, welches uns schon jetzt mit einem Sack voll Sticker versorgt hat.
Unser Beitrag zur rc3 World (Work in Progress)
OpenRC als simple Alternative zu Systemc
Glücklicherweise arbeiten bei Netcup auch am Sonntag fähige Leute und so konnte uns der ca. 140GB große qcow2 Snapshot auf einem FTP bereitgestellt werden. Den konnten wir dann lokal mounten, die kaputten Datenbanken herausziehen und per scp auf den Server kopieren. Matrix/Synapse läuft wieder, Mastodon muss sich allerdings noch bis morgen gedulden, da die Datenbank sehr groß ist. Die Internetverbindung ist hier aktuell der Flaschenhals.
Auch keine Mühe mehr hatten wir in Jitsi gesteckt. Hier hoffen wir auf das finale 2.4er Release, das hoffentlich die Tage kommt.
Mit guestmount qcow2 Images mounten
Heute haben wir mit der Neuinstallation des Servers von CentOS 8 auf AlpineLinux begonnen. Die selbstauferlegte Challgne, alles aus einem Backup wiedererzustellen und so einen "Ernstfall" zu Testen, hat bis auf zwei Ausnahmen gut funktioniert. Nachdem wir AlpineLinux in der aktuellen Version installiert und das Netzwerk konfiguriert hatten, installierten wir die Basis-Tools sowie docker/docker-compose. Das Borg Backup mounteten wir direkt über ssh, was wirklich praktisch ist. Nach und nach konnten wir so (fast) alle Services wiederherstellen. Ein paar Details mussten wir anpassen (sudo nach doas gewechselt, Systemd nach OpenRC gewechselt etc.). Unser Prometheus Monitoring war uns hier eine echte Hilfe, so konnten wir ähnlich wie beim Rot/Grün Unit-Testing wieder alles auf grün bringen.
Leider hatten wir einen entscheidenden Fehler beim Backup gemacht (bzw. bestand schon immer). Wir haben das Backup im laufenden Betrieb erstellt. Und so kam es, dass die Datenbanken im Backup von Mastodon und Matrix/Synapse korrupt waren, da sie während des Backups genutzt wurden. Hier hatten wir keine andere Möglichkeit, als auf ein Snapshot zurückzugreifen, den wir vor der Neuinstallation angefertigt hatten. Leider schlug der Export des Snapshots fehl und wir mussten auf den Netcup-Support warten. Morgen geht es hier also weiter.
Auch uns hat die Sicherheitslücke von log4j heute beschäftigt. Das Minecraft-Update war ein No-Brainer. Etwas versteckter war ElasticSearch in Mastodon. Mit einer jvm.option lässt sich wohl die Sicherheitslücke schließen, leider ist das Dockerfile von ElasticSearch extrem komplex aufgebaut und nicht direkt ersichtlich, wie man eigene Java-Optionen mit einbindet. Aus diesem Grunde haben wir uns dazu entschlossen, ElasticSearch temporär zu deaktivieren, bis es hier ein offizielles Update gibt. Dies sollte nicht all zu lange dauern.
Eine kurze Downtime am Mittwoch (2021/12/08) hatte uns kalt erwischt, und das Monitoring hat leider durch die Verkettung von Umständen versagt. Das Wildcard-Zertifikat wirde korrekt erneuert, doch Nginx wurde danach nicht neu gestartet und arbeitete weiterhin mit dem alten -- welches dann am Mittwoch ausgelaufen ist. Das Monitoring schlug an, doch der Alarm traf nie bei uns ein, da wir Matrix als AlertManager Receiver eingetragen haben, welches wiederum wegen des ungültigen SSL-Zertifikats nicht erreichbar war. Um dieses Problem für die Zukunft zu lösen, wird Nginx nach jedem Zertifikatswechel neu geladen. Zudem benötigen wir einen weiteren (unabhängigen) AlertManager Reveiver, der auf jeden Fall warnt. Da haben wir schon ein paar Pläne :)
Da wir morgen die geplante Neuinstallation des Servers vornehmen wollen (ab ca. 20:30 Uhr bis 23:00 Uhr), haben wir heute kurz das Vorgehen besprochen, nochmal ordendlich Speicherplatz freigemacht um ein Snapshot anzulegen, das Backup kontrolliert, den Schlüssel zum Backup gesichert (sind ja nicht doof :D), und ein paar weitere Vorkehrungen getroffen. Zum Hintergrund: Auf dem oko-Server läuft immer noch ein CentOS 8, für das ab Januar die Sicherheitsupdates auslaufen. Um unsere Infrastruktur zu vereinheitlichen, werden wir auf AlpineLinux wechseln, da wir damit gute Erfahrungen gesammelt haben.
Unsere Linux Distribution der Wahl
Updates von Maubot, Element Web und Etherpad Lite standen an. Das Admin-Panel von Maubot haben wir ins VPN verlegt. Mastodon hat auch eine neue Version released (dieses Mal sogar auf Docker Hub), welches wir natürlich gleich eingespielt haben. Sieht alles irgend wie eckiger aus :)
Da AlpineLinux die Version 3.15 Released hat, haben wir unserem Backup-server ein Release-Upgrade spendiert, was problemlos funktioniert hat. AlpineLinux hat sich für uns als Server-Distribution in so vielen Situationen schon gelohnt.
Mastodon Released wieder neue Versionen auf Docker Hub
Updates für das Matrix Frontend (Element Web) wurden eingespielt. Ebenso die System-Updates. Da Kernel, systemd, NetworkManager etc. dabei waren, haben wir den Server direkt rebootet. Dies war auch ein wunderbarer Test für unser Monitoring. Hier fiel auf, dass wir einige Services die auf das Docker Bridge Interface angewiesen sind zu früh starten. Da Docker einige Zeit braucht zum starten, ist das Bridge Interface nicht direkt verfügbar und somit Probleme bei anderen Services verursacht. Wir haben alle von Docker abhängigen Services etwas pausiert, dies sollte beim nächsten Reboot helfen.
Unsere Mastodon-Instanz ist seit zwei minor Releases veraltet. Dies liegt leider an GitHub, welche die Preisstruktur verändert haben und damit die automatisierten Docker builds kaputtgemacht haben. An einem Workaround wird gearbeitet.
Das Prometheus Monitoring ist nun im Grundaufbau fertig. Es fehlt noch eine Matrix-Integration, für die wir schon alles vorbereitet haben.
Offener PR für die neuen Mastodon Docker images
Schlanker Matrix Alertmanager Receiver
Das aktuelle Synapse-Update (Matrix Backend) wurde eingespielt. Hier gab es keine nennenswerten neuen Features.
Das "Buch des Monats"-Projekt hat diverse Hooks, die bei jedem Git push getriggert werden. Dies ist zum einen eine Notification in unserem Matrix-Channel und zum Anderen ein Toot auf Mastodon. Letzteres hat unser schon so einige graue Haare bereitet, und so auch heute wieder. Der Toot-Text enthielt & und =, so dass cURL dies als seine eigene Parameter interpretierte. Mit dem "--data-raw" statt "-d" war das Problem grlöst. Warten wir auf den Dezember, ob es bis dahin immer noch toot :)
Als kleine Fingerübung haben wir einen neuen Service installiert: Den CyberChef. Mit diesem universellen "Datenverarbeitungstool" lassen sich Eingabedaten mit Standardwerkzeugen bearbeiten. Klingt abstrakt, ist aber extrem nützlich. Einfach mal austesten.
An der Prometheus Konfiguration geht es auch weiter. Der Alertmanager ist nun auch korrekt eingerichtet.
CyberChef, das schweizer Taschemnesser für Daten
Heute nicht viel. Nur die üblichen Updates. Prometheus hat die daten nur im Container persistiert, so dass sie nach dem update weg waren. Das Problem war schnell gelöst.
Nach den obligatorischen System-Updates haben wir heute Grafana, Minecraft, Searx, Element (Matrix-Frontend) und Synapse (Matrix-Backend) ein Update verpasst. Da wir schon an Searx dran waren, haben wir hier die kaputten Plugins rausgeworfen. Leider lassen sich ganze Kategorien nicht so einfach verstecken, so dass wir nur die Sortierreihenfolge verändert haben. Wer die Kategorien verstecken will, muss in den Einstellungen alle Plugins einer Kategorie deaktivieren. So verschwindet auch die Kategorie.
Ein ebenso zur Routine übergegangener Task ist das Prüfen aller nach aussen offenen Ports. Hier sind wir am überlegen, ob wir ein paar in das interne WireGard-VPN Netz legen, um so die Angriffsfläche noch weiter zu minimieren. Eine ebenso präventive Maßnahme haben wir unserer Mastodon-Instanz unterzogen: Hier haben wir die von Tonald Drump angekündigte Instanz gleich mal geblockt.
an der Prometheus-Front geht es auch weiter. Hier fehlt es eigentlich nur noch an einem Set von Regeln und einen geeigneten Alerting-Mechanismus. Hier sind wir uns noch nicht ganz einig, wie wir dies realisieren. Die bestehenden Lösungen sind leider nicht ganz so schön.
Und ja, wir warten weiterhin gespannt auf die 1.4 von BBB. Und was ist eigentlich mit Mastodon? Letztes Release war vor 7 Monaten. Vielleicht wird es ja nächste Woche was.
Alertmanager für Matrix -- gibts das auch ohne node.js?
Updates für Matrix (Backend + Frontend) und Grafana standen an. Ebenso System-Updates für den Server + den Backup-Server. In dem Zuge haben wir auch getestet, ob der Server noch reboot-fest ist. Hier sind uns zwei Kleinigkeiten aufgefallen, die wir gleich gefixt haben. Der Gitea Webhook Service startet vor dem Docker-Daemon und kann sich so nicht auf die Docker IP binden. Hier gibt es zum Glück eine entsprechende Option in Systemd.
Um einen Toot in Mastodon abzusetzen wenn es ein neues Buch des Monats gibt, nutzen wir ein kleines Docker-Image, welches dies für uns erledigt. Allerdings ist uns dies nun schon zum zweiten Mal auf die Füße gefallen, so dass wir es nun mit einem simplen Bash-Script gelöst haben. Im Kern besteht es nur aus einem curl-Aufruf. Wieder eine wackelige Dependency weg.
Eine wichtige Komponente bei uns ist unsere Jitsi-Instanz. Leider haben wir hiermit immer wieder Probleme. Hauptsächlich mit der Tonqualität und der Bildschirmfreigabe. Mittlerweile haben wir die Konfiguration soweit, dass es halbwegs benutzbar ist, doch waren wir vom letzten Senfcall Last-Test so beeindruckt, dass wir demnächst mal Big Blue Button als Alternative anschauen werden.
Da wir sowieso schon an Mastodon dran waren, wollten wir noch zwei lange auf unserer TODO-Liste stehende Einstellungen vornehmen: Das Character-Limit der Toots erhöhen und das Rate-Limit auf API-Seite für einzelne IPs abschalten. Leider ist beides nur durch Codeänderung möglich. Das ist sehr schade, so müssen wir einen Weg finden, wie wir dies machen, ohne uns die Update-Fähigkeit zu verbauen.
Zur Überwachung unserer Services haben wir uns entschieden, Prometheus einzusetzen. Hier haben wir heute den blackbox_exporter konfiguriert. Mehr dazu nächste Woche.
Character Limit Issue auf GitHub
Big Blue Button Open Source Konferenz-Software
Heute nur ganz kurz die ausstehenden Updates der letzten Woche eingespielt. Gitea, Minecraft und Grafana sind nun wieder aktuell.
Ein neuer Service reit sich in unser Portfolio: SearX, die privacy-first Meta-Suchmaschine. Aufgesetzt war sie schnell, an der Konfiguration hatten wir etwas geschraubt. Wikipedia ist wohl etwas wählerisch was den User-Agent angeht :) Mit einem kleinen Firefox-Plugin lässt sich sogar unsere SearX-Instanz als Default-Suchmaschine einstellen. Sehr convenient.
Auch hatten wir uns geeinigt, wie wir mit Centos 8 ab nächstem Jahr verfahren, da am 31.12.2021 EOL erreicht ist. Wir werden alles auf AlpineLinux migrieren.
Praktisches Firefox-Plugin für eigene Such-Engines
Mehrere Matrix-Frontends haben eine Sicherheitslücke, die heute bekannt gegeben wurde -- incl. einem Patch. Für unser element-web Frontend haben wir dies direkt eingespielt. Allgemein waren wir beeindruckt, mit welcher Professionalität die Sicherheitslücke angegangen wurde. Die bekanntesten Clients wurden vorab über die Lücke informiert, um dann an einem Sticktag ein Release zu veröffentlichen. Zeitgleich wurden alle vorgewarnt, an diesem Tag ihre Clients zu updaten. So wurde sichergestellt, dass wenig Zeit blieb, um die Lücke auszunutzen.
Sicherheitslücke in mehreren Matrix-Frontends
Diese Woche kam tatsächlich das 1.42er Release von Synapse, welches wir direkt eingespielt haben. Gitea hatte ein kleines Problem beim Anlegen von Issues, welches mit einem Update behoben wurde. Ein etwas größerer Umbau war heute mit dem TLS/SSL-Zertifikats-Chaos angesagt: Wir hatten einige Sub-Domains, für diese wir jeweils ein LetsEncrypt-Zertifikat ausgestellt hatten. Diese haben wir heute durch ein einziges Wildcard-Zertifikat ersetzt, was so gut wie jede Komponente betroffen hat. Die Migration verlief glücklicherweise reibungslos.
Bestehende Lets Encrypt Zertifikate revoken
Das Matrix-Backend Synapse hatte zwei offene CVEs, die in Version 1.41.1 gefixt wurden. Wir sind deshalb auf den entsprechenden Tag gewechselt. Auch element-web, gitea und Minecraft haben ein update erhalten. In diesem Zuge wollten wir die ungepatchten CVEs der von uns verwendeten Software-Komponenten überwachen. cvedetails.com bietet hier (ziemlich versteckt) die Möglichkeit an, zu einzelnen Produkten einen RSS-Feed zu abonnieren. Mit unserem maubot eine feine Sache, so werden wir direkt in Matrix von neu gemeldeten CVEs informiert. Um das Setup zu testen haben wir noch den Windows10 RSS-Feed mit aufgenommen. Hier wird bestimmt die nächsten Wochen mal ein CVE aufschlagen :)
Unser Webhook-Trigger für gitea war leider nach einem Neustart nicht mehr gestartet, so konnte das neue Buch und Comic des Monats nicht publiziert werden. Das war schnell gefixt. Auch kam heute Abend die Idee auf, eine Art Wartungsplan oder "TÜV" zu etablieren, bei der eine Checkliste für den Server in regelmäßigen Abständen durchgeführt werden soll. Hierzu werden wir nächste Woche ein paar Ideen sammeln.
Synapse 1.41.1 Release Notes mit den CVEs
Heute standen wieder ein paar Updates im Haus: jitsi, synapse und element-web bekamen ein update. Auch gitea haben wir auf Version 1.15.0 gehoben und die OS-Updates sind ebenfalls wieder aktuell. Ein Reboot des Servers ließ sich nicht aufschieben (Kernel update). Was an sich nicht schlecht ist, dies in regelmäßigen Abständen zu testen. Leider gab es ein paar Probleme mit dem Borg Backup Paket, welches auf eine alte python-Version basiert. Abhilfe fand sich schnell im Bug-Tracker.
Gitea Changelog von Version 1.15
Nach einem routinemäßigen Update von Grafana haben wir uns dem Wildcard-Zertifikat angenommen. Um dieses automatisiert zu erneuern, ist etwas mehr Arbeit notwendig als bei den Subdomains. Es muss bei jedem renew ein DNS-Record gesetzt werden. Hierfür gibt es mehrere Plugins für die bekannten Provider, leider ist hier Netcup nicht dabei. Wir hatten schon begonnen, ein eigenes Plugin zu schreiben, als wir auf ein kleines Projekt aufmerksam wurden, das uns die Arbeit komplett abnimmt. Ein paar Zeilen Bash und einen Cronjob später und das Problem war gelöst.
Wir spielen schon länger mit dem Gedanken, eine zweite Version unserer Wetterstatiøn zu bauen, die allerdings ein paar anderen Grundvorraussetzungen unterlegen soll: Version 1 war stark auf den Energieverbrauch und ein geringes Budget gemünzt. So kann sie mehrere Wochen mit einer Akku-Zelle Daten senden, sich selbst per Solarzelle aufladen und zur Not auch in einen Tiefschlafmodus wechseln. Version 2 soll eher im Fokus von Langlebigkeit, Stabilität und Zuverläsigkeit stehen. IP65-Gehäuse, zuverlässiger Sensor, Konnektivität an verschiedene Bus-Systeme, evtl. PoE, Webinterface, API. Hierzu haben wir angefangen ein paar Ideen zu sammeln.
Ideensammlung zur Wetterstatiøn 2
Das Matrix Backend (Synapse) hat heute sein Update auf 1.39 bekommen, was hauptsächlich aus Bugfixes bestand. In diesem Zuge haben wir auch element-web auf den aktuellen Stand gebracht und die Ermittlung der aktuell installierten Version (gar nicht so einfach) dokumentiert. Leider ist in Version 1.7.33 immer noch kein Fix für mein Problem mit der Verifizierung der Logins enthalten. Da heißt es weiter warten.
Ein sehr misteriöser Bug tauchte in unserem Mastodon-Bot vom Buch des Monats auf. Dieser verschluckte ein "S" :) Nach einigem Suchen fanden wir den Kern des Problems: In dem von uns verwendeten Docker image ist tatsächlich ein S zu viel. Einen entsprechenden Pull Request haben wir aufgemacht.
element-web 1.7.33 Changelog (identisch mit rc1)
Neuen Kernel + Systemd installiert, gefolgt von einem Reboot. okoyono.de hat ein Facelift bekommen und sieht jetzt auch als HTML-Seite gut aus. Um Bilder darzustellen, mussten wir etwas improvisieren, da unsere Patches noch nicht akzeptiert wurden. So haben wir unser Docker Image entsprechend gepatched. Der Autor von twins -- unserem gemini und http server für okoyono.de -- ist leider nur sehr selten an der Tastatur, so dass wir teilweise Wochen auf eine Antwort warten. Hier sind wir am überlegen, das Projekt zu forken und es nach unseren Wünschen weiterentwickeln.
Der Text auf okoyono.de wurde in dem Zuge nun auch endlich mal überarbeitet. Der alte Text entsprach nicht mehr der aktuellen Situation.
Weitere Bugs, die wir vermutlich selbst fixen werden
System-Updates auf dem Backup-Server, sowie auf dem Hauptserver waren wieder an der Reihe. Auch die Services Grafana, Gitea, Synapse, Element-Web, und Etherpad wurden wieder auf Stand gebracht. Das Etherpad haben wir etwas aufgehübscht (ein paar Config-Variablen gesetzt), ebenso Gitea (Icons, Detail-Text auf der Startseite ausgetauscht, Shortcuts für Admins eingebaut).
Die Minecraft Overview-Map renderte seit einiger Zeit nicht mehr sauber. Hier haben wir etwas an den Optionen gespielt, ein neues Texture-Pack eingebaut (Version 1.17 bekam neue Blöcke) und den Cronjob angepasst. Die komplette Map genert nun über Nacht komplett neu, so dass die neuen Texturen überall verteilt sind. Nachdem der initiale Render erledigt ist, werden anschließend nur noch die Changes aktualisiert. Hierzu probieren wir einen anderen Schalter (--check-tiles statt --no-tile-checks).
Da wir immer noch auf einen Merge eines Pull Requests bei twins warten, haben wir uns dazu entschlossen, ihn nun per Patchfile direkt ins Docker image zu integrieren. Damit können wir nun endlich unsere gemini seiten auf okoyono.de (https) ausliefern. Hierzu nutzen wir den http proxy von twins und routen alles durch nginx (TLS). Nun fehlt nur noch ein hübsches CSS. Mit einem einfachen Trigger und 3 Zeilen Bash aktualisiert sich nun die Webseite (gemini sowie https) automatisch nach jedem Push.
Ein kleins Überbleibsel der vergangenen Tage war noch das Aufräumen des Backup-Hosts. Mit dem "prune" Befehl von Borg werden nun nicht mehr benötigte Backups automatisch entfernt. Ebenso gab es ein kleines Problem mit dem certbot, der nicht sauber ausgeführt wurde. Das Problem wurde ebenfalls behoben.
twins Docker Image (Sourcecode)
Einige loose Enden sind heute zusammengeführt worden. Ein vor zwei Wochen angefangenes "Hook Framework" haben wir heute fertig gestellt. Nach einem git push können nun beliebige Scripte ausgeführt werden. Damit aktualisieren wir nun die okoyono.de Website und posten neue Einträge vom Buch des Monats auf Mastodon. Sozusagen unsere flexible und einfache CI im Suckless-Style. Zum Testen der Hooks haben wir gleich noch ein paar kleine Fixes für Buch/Comic des Monats nachgeschoben. Die obligatorischen Updates des Systems haben wir ebenfalls eingespielt.
Auch neu hinzu gekommen ist heute die Möglichkeit, okoyono.de als Hidden Service im TOR-Netzwerk zu nutzen. Dazu haben wir den tor-Client installiert, nginx entsprechend konfiguriert und die Seite als Hidden Service eingebunden.
Leider warten wir immer noch darauf, dass sich tslocum zu unseren offenen PRs meldet. Wenn die Kontaktaufnahme per E-Mail auch umbeantwortet bleibt, müssen wir wohl die beiden Projekte forken und einen eigenen Branch pflegen. Das versuchen wir so weit es geht zu vermeiden.
okoyono.de als Hidden Service im TOR-Netzwerk
Unsere offenen Pull Requests bei twins
Heute standen wieder ein paar obligatorische Updates an. Maubot, Jitsi und Synapse. Vom Jitsi-Release hatten wir uns etwas mehr erwartet, da wir aktuell einige Probleme haben. Die Updates liefen reibungslos. Anschließend arbeiteten wir weiter am webhook für gitea. Hier fehlte noch ein Dockerfile und ein docker-compose.yml. Das fertige Image ist auf hub.docker.com zu finden.
Gitea Webhook Trigger Docker Image
System-Update auf das letzte CentOS 8 Release + anschließendem Server-Reboot. Das war ein guter Test, ob der Server Reboot-Fest ist. Test bestanden :) Weiter gab es Updates auf Grafana 8 (Fancy stuff) und Minecraft 1.17 (neue Blöcke). Da Jitsi viele Fehlermeldungen auf der Developer-Console ausgibt, haben wir hier einige Zeit verbracht nach dem Fehler zu suchen. Leider (noch) erfolglos.
Wir haben weiter an unserem Gemini-Experiment gearbeitet. Ziel zoll sein, dass nach einem Push im website-Projekt ein gitea-hook alles aktualisiert. Um das generell zu managen, haben wir begonnen, einen generellen hook-Mechanismus zu programmieren (kleines Go-Tool, welches einen Webserver öffnet und beliebige Scripts ausführen kann. Da das Tool nur intern im VPN und auch nur von uns verwendet werden kann, können wir auf ein umfangreiches Sicherheitskonzept verzichten.
An unserem Gemini-Server twin fanden wir Bugs, die wir gemeldet haben (und begonnen haben selbst zu fixen). Ebenso brauchen wir ein paar einfache Features (custom CSS und Bilder), für welche wir beide Tickets aufgemacht haben. Zudem bekam Mastodon ein Update auf 3.4.1.
Render images as images instead of links
Diese Woche haben wir das E-Mail Problem endlich gelöst. Lokale Mails sollen über ein SMTP-Relay verschickt werden, so dass wir keinen eigenen Postausgangs-Server betreiben müssen (was generell eine schlechte Idee ist). Leider gibt es Nullmailer nicht für CentOS (warum eigentlich nicht?), so dass wir auf Postfix ausweichen mussten. Wir hatten letzte Woche schon einen Account bei Dismail.de beantragt, aber bisher keine Informationen erhalten. Heute hat sich unser Verdachte bestätigt, dass Dismail keine neuen Anmeldungen annimmt. Wir sind dann auf web.de umgesattelt. Hier hatten wir mit POP over SMTP zu kämpfen. Was nun noch ausstelt ist die Konfiguration der Docker-Container, so dass der lokale Mailserver des Hostsystems genutzt wird.
Auch haben wir ein lange überfälliges ToDo angegangen: die okoyono.de Website. Inhalt total veraltet und der automatische Update-Mechanismus funktioniert seit dem Server-Umzug nicht mehr. Hier wollen wir einen anderen Ansatz probieren: Twins (unser Gemini Server) hat eine GeminiToHTML-Funktion, mit der wir unsere Gemini-Seite auch als HTML-Seite ausliefern können. So sparen wir uns die doppelte Pflege und alles wir etwas einfacher.
Keine Neuanmeldungen auf Dismail.de mehr möglich
Nullmailer, leider nicht für CentOS
Postfix als E-Mail Relay nutzen
Kurze Emergency-Session mit dem Core-Team :) Element-Web hat ein Security-Update erhalten und Nginx leitet nun alle Subdomains korrekt weiter. Alle Services (bis auf einen) sind nun nicht mehr per HTTP erreichbar und werden direkt auf HTTPS umgeleitet.
Element Web, Security Patch auf Version 1.7.29
Patchday. Mastodon bekam ein größeres Update, ebenso Matrix (das Synapse-Backend und auch das Frontend Element). Den Geschwindigkeits-Boost bei Mastodon wird sich noch rausstellen, in Element lassen sich nun die Spaces beta-Testen. Auch Grafana wurde auf die neueste Stable-Version updated. Etwas aufgehalten hat das Wildcard-Zertifikat für okoyono.de, mit dem wir die Nginx-Config endlich abschließen konnten. Für diverse "Passwort-Vergessen"- und "Registrieren"-E-Mails benötigen wir einen lokalen SMTP-Server. Diesen wollen wir aber nicht selbst betreiben. Haben uns dafür bei dismail.de registriert, aber warten hier auf eine XMPP-Nachricht :) Ein paar Pläne für die Umgestaltung der okoyono.de Website sind ebenfalls in der Pipeline, dazu dann nächste Woche mehr.
dismail.de - secure private messaging
Die Services gitea, grafana, synapse und element-web wurden auf die neueste stable version updated. Nginx leitet nun alle nicht bekannten Domains auf okoyono.de weiter. Für https brauchen wir noch einen DNS-Eintrag (wildcard-Zertifikat von LetsEncrypt). Dafür wurde alles vorbereitet. Zudem haben alle Services den FLoC-Header erhalten. Für die Resourcen-Begrenzung von docker containern müssen wir uns weiter in docker swarm mode einarbeiten.