💾 Archived View for okoyono.de › ~f › server-changelog.gmi captured on 2021-12-04 at 18:04:22. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
Donnerstags wird am Server gearbeitet. Mittlerweile steht die Infrastruktur und die benötigten Services. Nun geht es an die Feinarbeiten.
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.