{"id":710,"date":"2025-04-08T11:57:11","date_gmt":"2025-04-08T11:57:11","guid":{"rendered":"https:\/\/www.cssec.de\/blog\/?p=710"},"modified":"2025-04-08T11:57:11","modified_gmt":"2025-04-08T11:57:11","slug":"synapse-matrix-server-tipps-fuer-admin-sachen","status":"publish","type":"post","link":"https:\/\/www.cssec.de\/blog\/2025\/04\/08\/synapse-matrix-server-tipps-fuer-admin-sachen\/","title":{"rendered":"Synapse Matrix-Server &#8211; Tipps f\u00fcr Admin-Sachen"},"content":{"rendered":"<p>Hallo zusammen,<\/p>\n<p>ich habe mir vor ca. 3 Jahren ein Synapse\/Matrix-Server aufgesetzt. Dank Docker \/ docker-compose ist das kinderleicht, auch wenn ich aktuell noch keine (Video-)Telefonate durchf\u00fchren kann, da ich noch keinen coturn-Server hinzugef\u00fcgt habe.<br \/>\nNichts desto Trotz ist es als reiner Messenger echt Gold wert, vor allem in der Familie nutzen wir das ganze intensiv.<\/p>\n<p>Das regelm\u00e4\u00dfige Problem:<\/p>\n<p>Wenn eines meiner Familienmitglieder ein neues Handy hat, braucht man die Zugangsdaten, da man das Passwort nur einmalig eingibt, hat man das nach jahrelanger Nicht-Eingabe vergessen.<br \/>\nNeulich war es wieder so weit, leider hatte ich gerade Stress und keine Zeit, so habe ich mit Biegen und Brechen irgendwie schnell einen neuen Nutzer eingerichtet, anstatt das Kennwort des bestehenden Nutzers zu \u00e4ndern, obwohl das relativ einfach ist.<\/p>\n<p>Damit ich das beim n\u00e4chsten Mal wieder nicht vergessen, hier ein kurzer Artikel dazu.<\/p>\n<p>Mein Synapse\/Matrix l\u00e4uft wie oben erw\u00e4hnt als Docker\/docker-compose-Image. Bevor ich nun das Passwort resetten kann, brauche ich einen Admin-Access-Token. Dazu logge ich mich in meinen (Linux-)Server ein und schaue erst mal, welche Container-ID mein docker-Container besitzt:<\/p>\n<pre lang=\"bash\">  docker ps\r\n<\/pre>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-711\" src=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-docker-ps.png\" alt=\"\" width=\"1662\" height=\"188\" srcset=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-docker-ps.png 1662w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-docker-ps-300x34.png 300w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-docker-ps-1024x116.png 1024w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-docker-ps-768x87.png 768w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-docker-ps-1536x174.png 1536w\" sizes=\"(max-width: 1662px) 100vw, 1662px\" \/><\/p>\n<p>Anschlie\u00dfend logge ich mich auf dem Docker-Container ein mit:<\/p>\n<pre code=\"bash\">docker exec -it 4cf9380e590d \/bin\/bash\r\n<\/pre>\n<p>Jetzt muss ich mir \u00fcber die sqlite-Datenbank einen token ermitteln. Interessanterweise hatte mein Docker-Image keine sqlite-Installation daher musste ich das entsprechend nachinstallieren:<\/p>\n<pre lang=\"bash\">  apt update &amp;&amp; apt -y install sqlite3\r\n<\/pre>\n<p>Nun m\u00fcsst ihr Euch in die Datenbank einloggen:<\/p>\n<pre lang=\"bash\">  sqlite3 \/data\/homeserver.db\r\n<\/pre>\n<p>Ggf. habt ihr andere Pfade, aber wenn ihr das Docker-Image und docker-compose.yml nutzt, sollte die Datenbank im \/data-Verzeichnis liegen.<br \/>\nRuft nun die f\u00fcr euch g\u00fcltigen Tokens ab:<\/p>\n<pre lang=\"sql\">  select token from access_tokens where user_id='&lt;eureNutzerId&gt;';\r\n<\/pre>\n<p>Dabei ist wichtig, dass ihr als &#8222;&lt;eureNutzerId&gt;&#8220; entsprechend die NutzerId in der Form: @nutzername:servername angebt.<br \/>\nAu\u00dferdem muss dieser Nutzer ein Admin-Nutzer sein. In der Regel erhaltet ihr mehr als einen Token, kopiert Euch einfach einen (z.B. den ersten) davon.<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-712\" src=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-token.png\" alt=\"\" width=\"972\" height=\"478\" srcset=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-token.png 972w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-token-300x148.png 300w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-token-768x378.png 768w\" sizes=\"(max-width: 972px) 100vw, 972px\" \/><\/p>\n<p>Wenn Ihr euch das rauskopiert habt, k\u00f6nnt ihr die SQL-Sitzung mit .exit oder mit Ctrl + D verlassen.<\/p>\n<p>Nun k\u00f6nnt ihr \u00fcber ein Webservice-Testtool (SoapUI, Postman, &#8230;) aber nat\u00fcrlich auch \u00fcber curl entsprechend die Daten abrufen. Gebt dabei das kopierte Token als Bearer-Token f\u00fcr den entsprechenden Request an. Nur so k\u00f6nnt ihr dann auch die Daten abrufen.<\/p>\n<p>Eine \u00dcbersicht \u00fcber m\u00f6gliche Befehle findet ihr hier:\u00a0 <a href=\"https:\/\/matrix-org.github.io\/synapse\/latest\/usage\/administration\/admin_api\/index.html\">https:\/\/matrix-org.github.io\/synapse\/latest\/usage\/administration\/admin_api\/index.html<\/a><\/p>\n<p>Am Beispiel von Postman hier mal, wie man ein Passwort zur\u00fccksetzt:<\/p>\n<ol>\n<li>Macht einen neuen Request auf, w\u00e4hlt als Art POST auf. Gebt die entsprechende URL an https:\/\/&lt;serverName&gt;\/_synapse\/admin\/v1\/reset_password\/&lt;nutzerId&gt;<\/li>\n<li>W\u00e4hlt unter &#8222;Authorization&#8220; : Bearer Token und tragt als Token den im vorherigen Schritt kopierten Token ein\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-713\" src=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-header.png\" alt=\"\" width=\"1009\" height=\"565\" srcset=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-header.png 1009w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-header-300x168.png 300w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-header-768x430.png 768w\" sizes=\"(max-width: 1009px) 100vw, 1009px\" \/><\/li>\n<li>w\u00e4hlt unter Body als Typ: raw aus, w\u00e4hlt dann als &#8222;Format&#8220; json und packt in den Body ein Json-Objekt mit den Daten\n<ol>\n<li>&#8222;new_password&#8220;: &#8222;&lt;euerNeuesPasswort&gt;&#8220;<\/li>\n<li>&#8222;logout_devices&#8220;: true\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-714\" src=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-body.png\" alt=\"\" width=\"969\" height=\"599\" srcset=\"https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-body.png 969w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-body-300x185.png 300w, https:\/\/www.cssec.de\/blog\/wp-content\/uploads\/2025\/04\/matrix-postman-body-768x475.png 768w\" sizes=\"(max-width: 969px) 100vw, 969px\" \/><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Wenn ihr das absendet, soll als Ergebnis (unterer Bereich) i.d.R. ein leeres Objekt zur\u00fcckkommen. Ist irgendetwas schief gelaufen, sollten dann irgendwelche Fehler angezeigt werden.<\/p>\n<p>Ich werde in K\u00fcrze mal ein Tutorial zum Aufsetzen eines Matrix-Servers mit CoTurn online stellen, damit ihr dann selbst einen entsprechenden Server bereitstellen k\u00f6nnt.<\/p>\n<p>Bis dahin, machts gut.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hallo zusammen, ich habe mir vor ca. 3 Jahren ein Synapse\/Matrix-Server aufgesetzt. Dank Docker \/ docker-compose ist das kinderleicht, auch wenn ich aktuell noch keine (Video-)Telefonate durchf\u00fchren kann, da ich noch keinen coturn-Server hinzugef\u00fcgt habe. Nichts desto Trotz ist es als reiner Messenger echt Gold wert, vor allem in der Familie nutzen wir das ganze [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":715,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63,15],"tags":[],"_links":{"self":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/710"}],"collection":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/comments?post=710"}],"version-history":[{"count":1,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/710\/revisions"}],"predecessor-version":[{"id":716,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/710\/revisions\/716"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media\/715"}],"wp:attachment":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media?parent=710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/categories?post=710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/tags?post=710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}