🔎 Server Changelog


Donnerstags wird am Server gearbeitet. Mittlerweile steht die Infrastruktur und die benötigten Services. Nun geht es an die Feinarbeiten.

2021/10/07


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.

Mastodon Rate-Limits
Character Limit Issue auf GitHub
Toots per curl absenden
Prometheus blackbox_exporter
Big Blue Button Open Source Konferenz-Software

2021/09/24


Heute nur ganz kurz die ausstehenden Updates der letzten Woche eingespielt. Gitea, Minecraft und Grafana sind nun wieder aktuell.

2021/09/16


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.

Unsere SearX Instanz
Praktisches Firefox-Plugin fĂŒr eigene Such-Engines
Centos 8 EOL

2021/09/13


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

2021/09/09


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.

Synapse 1.42 Release Notes
Bestehende Lets Encrypt Zertifikate revoken

2021/09/02


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.

Windows 10 CVE Liste
RSS-Plugin fĂŒr Maubot
Synapse 1.41.1 Release Notes mit den CVEs
Der Bibliothekar auf Mastodon

2021/08/26


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
Borg-Backup Issue in Centos8

2021/08/12


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.

Certbot DNS Update fĂŒr NetCup
Ideensammlung zur WetterstatiĂžn 2

2021/07/29


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.

Matrix 1.39 Changelog
element-web 1.7.33 Changelog (identisch mit rc1)
Der mysteriöse S-Bug

2021/07/22


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.

Offener PR bei twins
Weitere Bugs, die wir vermutlich selbst fixen werden
okoyono.de im neuen Gewand

2021/07/15


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.

Unsere Minecraft Welt
twins Docker Image (Sourcecode)
okoyono.de
Borg backup "prune" Befehl
LetsEncrypt certbot

2021/07/01


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.

Buch des Monats auf Mastodon
okoyono.de als Hidden Service im TOR-Netzwerk
Die Suckless Philosophie
tslocum (Rocket Nine Labs)
Unsere offenen Pull Requests bei twins

2021/06/17


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
Maubot

2021/06/10


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.

Jitsi in Docker

2021/06/03


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.

User-customizable CSS
Render images as images instead of links
Path Bug

2021/05/27


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
Twins Docker Image
Project Gemini

2021/05/24


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

2021/05/20


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.

Mastodon 3.4.0 Changelog
Spaces: The next frontier
dismail.de - secure private messaging

2021/05/14


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.

FLoC Opt-Out im Nginx konfigurieren
Docker Swarm EinfĂŒhrung
LetsEncrypt DNS Challenge