… oder: Krisenmanagement für arme Admins. Für ganz, ganz Arme.
Am Mittwoch geht es für mich auf zum diesjährigen Summer Breeze Metal Open Air in Dinkelsbühl. Das bedeutet leider nicht nur Genuss für meine Ohren, sondern auch Stress: Der Admin in mir macht sich Gedanken, ob denn auch alle Server ohne Störungen über die Festivalzeit kommen werden. Unterwegs habe ich nur mein Smartphone mit einer wackeligen Mobilfunkverbindung. Darauf ist ein SSH-Client installiert, der mir Zugriff auf meine Server erlaubt. Und weil mir alleine der Gedanke daran schon weh tut, root-Login darauf zu ermöglichen, kann sich das Smartphone nur als normaler Benutzer zum Server verbinden. Via Publickey-Auth, versteht sich.
Nun stehe ich allerdings vor dem Problem, dass ja ein normaler Benutzer keine Dienste neu starten kann, weil ihm die Rechte dazu fehlen. Möglicherweise werde ich beispielsweise meinen XMPP-Server einmal neu starten müssen, weil die zuletzt getroffenen Maßnahmen nicht gewirkt haben und er wieder einmal keine Logins mehr zulässt. Ein „systemctl restart prosody“ ist mit diesem Account nicht möglich. Nun könnte man mit sudo arbeiten und die Ausführung des Kommandos speziell für diesen User erlauben. Meine Debian-Server kommen allerdings ohne sudo und das soll auch so bleiben. Also kein sudo für mich.
Für den XMPP-Server Prosody habe ich gestern ein kleines Modul „mod_userstats“ entwickelt, welches Zahlen zu den aktuell registrierten Nutzern und den gerade angemeldeten Nutzern zur Verfügung stellen kann. Die Nutzerzahlen können über XMPP Adhoc-Kommandos und eine HTTP JSON-Schnittstelle abgerufen werden. Vor allem über letztere kann man die aktuellen Zahlen sehr einfach auf einer Website darstellen.
Mit dem Modul ist es mir möglich, nicht nur die Zahl der registrierten Nutzer, sondern endlich auch die Zahl der eingeloggten User unter https://trashserver.net/xmpp/userstats/ anzuzeigen.
Wer auch eine solche Übersicht basteln will, kann sich das Modul auf GitHub herunterladen: https://github.com/ThomasLeister/prosody_mod_userstats. Sollte das Plugin bei mehreren Usern gut funktionieren, werde ich es in das offizielle Prosody Modul-Repository aufnehmen lassen, sodass es vielleicht eine größere Verbreitung erreichen wird. Rückmeldung dazu wäre hilfreich.
Heute bin ich via E-Mail gefragt worden, ob man meinen XMPP-Server nicht auch über einen TOR Hidden Service erreichen könne. Das sei zuverlässiger und schneller, als der übliche Zugriff via TOR und dem normalen DNS. Deshalb habe ich kurz recherchiert, wie ich das Feature anbieten kann – und so geht’s:
Tor installieren:
apt install tor
/etc/tor/torrc bearbeiten und diese Zeilen einfügen:
Mit der Zeit sammeln sich in /var/lib/prosody/http_upload jede Menge hochgeladener Dateien an. Bei mir wurde mittlerweile die Gigabyte-Grenze erreicht, sodass ich mich dazu entschlossen habe, alte Uploads meiner XMPP-User zu entfernen. Uploads, die älter als 90 Tage sind, werden sicherlich nicht mehr gebraucht (da sie ohnehin schon auf die Endgeräte heruntergeladen sein sollten). Die folgende Befehlskette räumt auf:
Prosody ist ein inzwischen weit verbreiteter, moderner und meinen Erfahrungen nach zuverlässiger XMPP-Server, der durch zahlreiche Module erweitert werden kann. Geschrieben ist Prosody in der Skriptsprache Lua. Zur Installation habe ich vor 3 Jahren schon einmal eine Anleitung geschrieben. Dieser Beitrag soll die etwas veraltete Version ersetzen.
Bis gestern habe ich meinen trashserver.net XMPP Server unter Prosody Version 0.10 (Nightly) laufen lassen, um einige neue Module nutzen zu können, die zu früheren Zeitpunkten nur für die Nightly-Version verfügbar waren. Alle von mir verwendeten Module gibt es mittlerweile auch für die stabile Prosody Version 0.9.10, sodass ich ein Downgrade durchführen wollte, um von der stabileren Version (und weniger Updates!) profitieren zu können. Letzte Woche hatte ich bereits einen Versuch gewagt, auf die stabile Version umzusteigen. Dabei kam es jedoch zu Problemen mit der UTF-8 Codierung der Datenbank.
Das Blog „Digitales Echo“ hat soeben den aktuellen XMPP Servercheck veröffentlicht und präsentiert in einem Blogbeitrag die 15 besten XMPP-Server im deutschsprachigen Raum. „Die besten“ heißt hier: Besonders sicher und Datenschutz-freundlich. Voraussetzung für die Aufnahme in die Liste ist ein Doppel-A-Ranking auf xmpp.net – dazu kommen weitere Bewertungskriterien, die im verlinkten Beitrag erklärt sind. Auch mein trashserver.net ist in der Liste vertreten und schneidet mit einem „exzellent“ ab, was mich natürlich besonders freut. Seht euch die Liste einmal an – vielleicht wollt ihr ja zu einem anderen XMPP Server wechseln?
Standardmäßig ist das Prosody Modul „mod_register_web“ (ermöglichst die Registrierung von XMPP Accounts über ein Webinterface) nicht besonders hübsch. Statt der default-Templates kann man aber auch ohne Eingriff in den Modul-Sourcecode eigene HTML-Dateien zur Gestaltung verwenden. Möglich macht das die undokumentierte Konfigurationsvariable „register_web_template“, die man in der /etc/prosody/prosody.cfg.lua nur zu definieren braucht.
Malte Kiefer hat bereits ein kleines, Bootstrap-basiertes Template geschrieben und unter einer freien Lizenz veröffentlicht: https://github.com/beli3ver/Prosody-Web-Registration-Theme
Ich habe mir ein neues Verzeichnis /etc/prosody/register-templates/ erstellt und das Template von Malte dort hineinkopiert:
mkdir /etc/prosody/register-templates/
cd /etc/prosody/register-templates
git clone https://github.com/beli3ver/Prosody-Web-Registration-Theme
In der /etc/prosody/prosody.cfg.lua wird dann einfach der Pfad zum Template angegeben:
-- Register Web Template files
register_web_template = "/etc/prosody/register-templates/Prosody-Web-Registration-Theme";
… dann noch ein Prosody Neustart:
prosodyctl restart
… und das neue Webinterface zur Registrierung sollte erscheinen.