Matrix/Element Chat Server

Hab mal nen synapse auf der parabox deployed.

Die Home Server URL für mobile clients ist https://matrix.it-syndik.at, die user IDs haben dann aber die schön kurtze it-syndik.at domain, so wie zb. @dxld:it-syndik.at.

Registrierung is für alle mit *@it-syndikat.org mail addresse offen falls wer mal probieren mag. Den webclient ist unter https://riot.it-syndik.at/ da kann man sich auch direkt registrieren.

Wer ne *@it-syndikat.org mail addresse oder einfach nur nen matrix account braucht will bitte bei @dxld melden.

TODO:

  • IRC bridge für #itsyndikat?, Done.
  • TURN server für VoIP calls
  • Aktuell hat er nur so 512M RAM und sqlite db, mal schauen wie viele user das aushaltet. Hat jetzt 1.5G wenn man #matrix:matrix.org joined sauft der synapse sofort wie sau.
  • Media repo aufräumen wenn der platz ausgeht, siehe Synapse Media Admin API: Delete local media by date or size
  • Von SQLite auf Postgres DB migrieren. Da gibts ein script synapse_port_db
  • DB backup machen/automatisieren
  • doku, doku, doku

Doku

Deployment, updates unso

  • Synapse läuft auf matrix.parabox.it-syndikat.org. Auto-update läuft via unattended-upgrades mit auto-reboot und dem Debian packet aus buster-backports.
  • Aktuell laufende Synapse version checken: curl https://matrix.it-syndik.at/_synapse/admin/v1/server_version
  • Riot/Element-web liegt aufm yxorp in /var/www/riot/. Das muss noch manuell geupgraded werden via update.sh in dem ordner. Das lädt den tarball von Github runter, verifiziert die gpg signatur, packts aus und biegt den /var/www/riot/riot-live symlink um wenn alles gut is.

Matrix HTTP dschungel

  • Der synapse server hocht auf synapse.it-syndik.at:8448 (aka matrix.parabox.it-syndik.at) und zwar auf seiner nativen IPv6 addr und mit port forwarding auch auf unserer public IPv4 addr. TLS cert kommt hier direkt vom matrix server mit eigener certbot instanz.
  • Der yxorp horcht dann als reverse proxy auf matrix.it-syndik.at:443 mit IPv4 und v6 und schickt das zu synapse.it-syndik.at rein über v6 weiter das TLS cert kommt hier dann aber von seiten yxorp.
  • Unter https://it-syndik.at/.well-known/matrix/client werden clients dazu angehalten doch bitte mit https://matrix.it-syndik.at:443 zu reden wenn sie it-syndikat.at haben wollen.
  • Unter https://it-syndik.at/.well-known/matrix/server werden andere matrix server (federation) ganz nett gefragt doch bitte direkt mit synapse.it-syndik.at:8448 zu reden. Das dass ein anderes TLS cert is als unter matrix.it-syndik.at is wurscht weil die server nicht mit dem client endpoint reden.
3 Likes

So riot/element-web gibts jetzt auch: https://riot.it-syndik.at/

Cool! Und wo trifft man sich? :slight_smile:

Ich hab jetzt mal den #lobby:it-syndik.at public room gemacht mit der intention den dann zum #itsyndikat IRC channel zu bridgen. Da muss aber noch ein OP ein OPt-in machen :slight_smile:

Ist der Matrix Server denn föderiert?
Ich versuch dem Raum zu joinen…

Das Element sagt:
"

#lobbyt:it-syndik.at existert nicht.

Dieser Raum existiert nicht. Bist du sicher dass du hier richtig bist?
"

Typo: “lobby” ohne *t, also: #lobby:it-syndik.at

Aber du solltest es auch bei Explore rooms finden wenn den it-syndik.at server rein tust.

Hab grad bemerkt dass das upgrade von 1.21.2-1~bpo10+1 auf 1.23.0-1~bpo10+1 nicht automatisch passiert is. Turns out: man muss da im Unattended-Upgrade::Origins-Pattern den “Debian Backports” origin auskommentieren, sonst ignoriert unattended-upgrades zeug aus backports einfach.

diff --git a/apt/apt.conf.d/50unattended-upgrades b/apt/apt.conf.d/50unattended-upgrades
index 6abe00b..0c81626 100644
--- a/apt/apt.conf.d/50unattended-upgrades
+++ b/apt/apt.conf.d/50unattended-upgrades
@@ -38,7 +38,7 @@ Unattended-Upgrade::Origins-Pattern {
 //      "o=Debian,a=stable";
 //      "o=Debian,a=stable-updates";
 //      "o=Debian,a=proposed-updates";
-//      "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
+        "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
 };
 
 // Python regular expressions, matching packages to exclude from upgrading

Synapse 1.24.0 is heute im debian-backports gelandet. Mal schauen ob das update diesmal wirklich passiert.

Siehe: https://tracker.debian.org/news/1200918/accepted-matrix-synapse-1240-1bpo101-source-into-buster-backports/

So kann man checken welche version grade läuft:

curl https://matrix.it-syndik.at/_synapse/admin/v1/server_version

Hab element-web gerade auch noch von 1.7.13 auf 1.7.15 geupgraded. In dem release hat sich der tarball name zu element-$v.tar.gz geändert und ich hab das update.sh angepasst.

Die 1.7.14 version haben wir gar übersprungen. Muss noch irgendwas aufsetzen das motzt wenn die version out of date is, oder einfach auch auto-update machen.


/var/www/riot/update.sh:

#!/bin/sh

set -eu

IFS=

ver=$1; shift || { echo "Usage $0 NEW_VERSION"; exit 1; }

cd "$(dirname "$0")"

verlte() {
    [  "$1" = "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)" ]
}

if verlte 1.7.15 $ver; then
	dir=element-v$ver
	tarball=$dir.tar.gz
else
	dir=riot-v$ver
	tarball=$dir.tar.gz
fi

wget -c https://github.com/vector-im/element-web/releases/download/v$ver/$tarball.asc
wget -c https://github.com/vector-im/element-web/releases/download/v$ver/$tarball

if ! gpgv --keyring ${PWD}/trustedkeys.kbx $tarball.asc $tarball; then
	echo
	echo Verifying tarball signature failed! Refusing to unpack.
	echo
	exit 1
fi

tar --one-top-level -xaf $tarball

ln -snf $dir riot-live.tmp
mv -T riot-live.tmp riot-live

echo
echo All good, update is live.

Das update ist jetzt immer noch nicht automatisch passiert. Diesmal hat die APT::Periodic:: config im apt.conf gefehlt. Das kann man entweder mit dpkg-reconfigure unattended-upgrades oder direkt über

/etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

einschalte. dpkg-reconfigure schreibt auch einfach in das file.

Zusätzlich ist mir dann noch eingefallen dass ja der synapse service nicht unbedingt restarted wird bei dem upgrade. Dabei kann warscheinlich needrestart helfen. Da bin ich drauf gestoßen dass das ding ne config option hat für “restart zeug einfach”:
/etc/needrestart/needrestart.conf:

# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
#   
# ATTENTION: If needrestart is configured to run in interactive mode but is run
# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode$
#
$nrconf{restart} = 'a';

Ich bin noch nicht sicher ob das den synapse dann wirklich neu startet wenn die maschiene nicht sowieso wegen nem kernel update rebootet. Sehen wir beim nächsten update :slight_smile:

Jetzt haben wir auf jeden fall mal synapse 1.24.0.