In dieser Anleitung zeige ich euch, wie ihr den Matrix Chatserver mittels Docker und Traefik bereitstellen könnt. Im Unterschied zur damaligen Matrix Anleitung, werden hier mehr Dienste bereitgestellt und es lässt sich insgesamt einfacher warten und updaten.
Datum | Änderungen |
17.09.2022 | Erstellung dieser Anleitung |
18.09.2022 | Kapitel 15, 16, 17, 18 hinzugefügt |
26.09.2022 | Kapitel 19 bearbeitet. |
08.12.2022 | Kapitel 8 hinzugefügt. Matrix Docker Variable angepasst |
15.12.2022 | Kapitel 19 angepasst, Matrix Docker Variable angepasst |
29.03.2023 | Kapitel 4 und 7 angepasst an die neue Version |
25.04.2023 | Kapitel 4 erweitert. Danke an @drr00t |
29.05.2023 | Anpassungen an neue Traefik Anleitung |
07.08.2023 | Kapitel 5 an Debian 12 angepasst, Kapitel 7 Traefik Pfad angepasst. Danke an @gokala |
29.09.2023 | Kapitel 4.1 Sliding Sync hinzugefügt |
10.01.2024 | Kapitel 16 wurde angepasst. Danke an @nightshifter |
30.01.2024 | Traefik Labels wurden für die aktuelle Matrix Version angepasst |
04.02.2024 | Kapitel 7.1 hinzugefügt |
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
2. Verzeichnis anlegen
Im ersten Schritt legen wir uns ein Verzeichnis an.
mkdir -p /opt/containers/matrix
3. Aktuelle Version herunterladen
Nun kopieren wir uns die aktuelle Version von git.
git clone https://github.com/spantaleev/matrix-docker-ansible-deploy.git /opt/containers/matrix
4. Beispielkonfiguration kopieren und anpassen
Nun kopieren wir uns die Beispielkonfiguration. Dazu erstelle ich ein neues Verzeichnis mit dem Namen meiner Domain “matrix.euredomain.de”. Wichtig ist, dass das Verzeichnis den korrekten Namen der Domain tragen muss, da es sonst später nicht funktioniert. Die Subdomain “matrix” ist in dem Skript vorgegeben. Diese kann aber angepasst werden. Details dazu findet ihr auf der Projektwebseite.
cd /opt/containers/matrix/ mkdir -p inventory/host_vars/matrix.euredomain.de cp examples/vars.yml inventory/host_vars/matrix.euredomain.de/
Nun erstellen wir noch zwei sichere 64 Zeichen lange Passwörter:
#pwgen installieren apt -y install pwgen #Passwort generieren pwgen -s 64 1 pwgen -s 64 1 #Beispiel Ausgabe 44Xip7SIVBdgveI7HPL44N50atqtBpvtI04aWdWVqOZAHgHHpTpkUlmeodqZkhfA GXdVTyLLqeBV3jddQLdWuUWFkIRYiLaFFXzO9f94x6GoYH5qRRTI1CHa81qVcu6B
Nun öffnen wir unsere eben kopierte Konfigurationsdatei und passen diese an:
nano inventory/host_vars/matrix.euredomain.de/vars.yml
Folgendes müsst ihr dort anpassen:
matrix_domain: YOUR_BARE_DOMAIN_NAME_HERE matrix_homeserver_generic_secret_key: '' devture_postgres_connection_password: '' matrix_playbook_reverse_proxy_type: playbook-managed-traefik
Am Ende fügt ihr dann noch folgende Zeile hinzu:
matrix_playbook_docker_installation_enabled: false
So sieht es dann bei mir aus:
matrix_domain: euredomain.de matrix_homeserver_generic_secret_key: '44Xip7SIVBdgveI7HPL44N50atqtBpvtI04aWdWVqOZAHgHHpTpkUlmeodqZkhfA' devture_postgres_connection_password: 'GXdVTyLLqeBV3jddQLdWuUWFkIRYiLaFFXzO9f94x6GoYH5qRRTI1CHa81qVcu6B' matrix_playbook_reverse_proxy_type: other-traefik-container matrix_playbook_docker_installation_enabled: false
4.1 Sliding Sync aktivieren (optional)
Es gibt eine neue Funktion Sliding Sync, welche euch unter anderem Vorteile bei sehr vielen Nutzern bringt. Hier bekommt ihr mehr Informationen: Quelle1 Quelle2. Aktuell funktioniert die Funktion nur mit folgenden (Beta Versionen) von Element X iOS und Element X Android.
Um die Funktion zu aktivieren gebt ihr folgendes ein:
nano inventory/host_vars/matrix.euredomain.de/vars.yml
Hier fügt ihr folgendes hinzu:
matrix_sliding_sync_enabled: true matrix_sliding_sync_container_labels_traefik_entrypoints: websecure matrix_sliding_sync_container_labels_traefik_tls_certResolver: http_resolver
5. Ansible installieren
Nun müssen wir uns noch Ansible installieren. Dies kann auf eurem PC oder auf dem Server selbst sein. Ich zeige euch hier, wie ihr es auf dem Server selbst installiert.
5.1 Debian 12
Hier gebt ihr folgenden Befehl ein:
apt update apt install python3-pip -y
Nun gebt ihr folgendes ein:
pip3 install --break-system-packages ansible pip3 install --break-system-package docker
5.2 andere Linux Distributionen
Dazu gebt ihr zuerst folgendes ein:
python3 -m pip -V
Wenn ihr nun folgende Meldung seht, dann führt ihr den nachfolgenden Code aus:
Meldung: /usr/bin/python3: No module named pip --> pip installieren: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py rm get-pip.py Meldung: pip 22.x from xxxxx --> alles okay
Nun können wir Ansible installieren. Gebt dazu folgendes ein:
python3 -m pip install ansible pip install docker
6. Ansible Hosts anpassen
Nun müssen wir noch die Ansible Hosts Datei anpassen. Dazu gebt ihr folgendes ein:
cp examples/hosts inventory/hosts nano inventory/hosts
Nun seht ihr folgendes:
[matrix_servers] matrix.<your-domain> ansible_host=<your-server's external IP address> ansible_ssh_user=root Dies passt ihr entsprechend eures Servers an: matrix.euredomain.de ansible_host=93.23.12.12 ansible_ssh_user=root ansible_connection=local ansible_connection=local --> dies fügt ihr noch hinzu, da ihr Ansible direkt auf dem Server startet ansible_host --> diese IP Adresse bekommt ihr beispielsweise wenn ihr euren Server pingt
7. Traefik Anpassungen vornehmen
Nun müssen wir noch Anpassungen für Traefik vornehmen. Dazu öffnen wir folgende Datei:
nano inventory/host_vars/matrix.euredomain.de/vars.yml
Hier fügt ihr folgendes hinzu:
# Disable Coturn because it needs SSL certs # (Clients can, though exposing IP address, use Matrix.org TURN) matrix_coturn_enabled: false #Traefik Anpassungen matrix_client_element_container_labels_traefik_entrypoints: websecure matrix_client_element_container_labels_traefik_tls_certResolver: http_resolver matrix_playbook_reverse_proxyable_services_additional_network: proxy devture_traefik_certs_dumper_ssl_dir_path: "/opt/containers/traefik-crowdsec-stack/traefik/" devture_traefik_certs_dumper_ssl_acme_file_name: "acme_letsencrypt.json" matrix_synapse_container_labels_traefik_docker_network: proxy matrix_synapse_container_labels_traefik_entrypoints: websecure matrix_synapse_container_labels_traefik_tls_certResolver: http_resolver matrix_static_files_container_labels_traefik_docker_network: proxy matrix_static_files_container_labels_traefik_entrypoints: websecure matrix_static_files_container_labels_traefik_tls_certResolver: http_resolver matrix_federation_traefik_entrypoint_name: synapse
7.1 weitere Labels hinzufügen (optional)
Ich nutze selbst Matrix nicht aktiv bzw. mit allen möglichen Plugins. Für jedes Plugin muss man aber die Labels anpassen. Bisher habe ich selbst noch keine Anleitung des Herstellers gefunden, wo dies genau dokumentiert ist. Daher zeige ich euch, wie ich die Labels “rausgesucht” habe.
Zuerst starte ich Traefik. Dort schaue ich mir die Entrypoints an, welche Matrix erzeugt. Hier sind schon alle angepasst. Ursprünglich hießen einige “web-secure”.
Nun gehe ich in folgendes Verzeichnis:
cd /opt/containers/matrix/roles
Hier suche ich nun nach dem entsprechende Entrypoint. Dazu gebe ich folgendes ein:
grep -rnwi './' -e 'Name des Entrypoints' also konkret: grep -rnwi './' -e 'web-secure'
Dies zeigt mir nun alle Dateien an, wo dieser Name verwendet wird:
Nun gehe ich in die Datei, die “wie mein Plugin” heißt. Also wenn ich irgendetwas mit Facebook machen will, dann trägt wahrscheinlich die Datei auch diesen Namen. In der Datei sehe ich dann wie genau das Label heißt. Dieses Label kopiere ich mir dann wie im Schritt 7 beschrieben in die vars.yml Datei. Wichtig ist, dass ihr danach immer Schritt 9 durchführt.
8. Ansible Abhängigkeiten installieren
Nun installieren wir alle Ansible Abhängigkeiten. Dazu installieren wir zuerst make.
apt install -y make
Nun gebt ihr folgendes ein:
cd /opt/containers/matrix make roles
9. Installation per Ansible durchführen
Dazu gebt ihr einfach folgenden Befehl ein:
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all
Nach einigen Minuten sollte es dann in etwa so aussehen bei euch:
10. Traefik anpassen
Damit Matrix korrekt mit Traefik funktioniert, müssen wir hier noch einige Änderungen vornehmen. Dazu öffnen wir folgende Datei:
nano /opt/containers/traefik-crowdsec-stack/docker-compose.yml
Hier fügt ihr folgendes hinzu:
... ... traefik: container_name: ${SERVICES_TRAEFIK_CONTAINER_NAME:-traefik} .. .. .. ports: - "8448:8448" - "8008:8008"
Bei mir sieht es also so aus:
Nun müssen wir noch einen EntryPoint hinzufügen. Dazu öffnet ihr folgende Datei:
nano /opt/containers/traefik-crowdsec-stack/traefik/traefik.yml
Hier fügt ihr folgendes hinzu:
matrix-internal-matrix-client-api: address: ":8008" synapse: address: ":8448"
Bei mir sieht es dann so aus:
Nun müssen wir Traefik noch neu starten, damit die Änderungen übernommen werden.
docker compose -f /opt/containers/traefik-crowdsec-stack/docker-compose.yml up -d --force-recreate
11. Matrix starten
Dazu gebt ihr einfach folgenden Befehl ein:
ansible-playbook -i inventory/hosts setup.yml --tags=start
Hier solltet ihr wieder eine solche Ausgabe sehen:
12. Systemcheck durchführen
Dazu geht ihr auf folgende Webseite: https://federationtester.matrix.org
Gebt nun hier eure Domain ein, zum Beispiel: matrix.euredomain.de
Wenn alles gut ist, dann solltet ihr folgende Ausgabe sehen:
13. Benutzer anlegen
Nun legen wir unseren ersten Benutzer an. Dazu gebt ihr folgendes ein:
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=BENUTZER password=PASSWORT admin=yes' --tags=register-user Hier gibt es die Möglichkeit auch Benutzer ohne Admin Rechte anzulegen (admin=no)
14. Element Webclient nutzen
Nun nutzen wir unseren Element Webclient. Geht dazu auf folgende Seite matrix.euredomain.de
Hier sollte nun folgendes erscheinen:
Klickt nun auf anmelden. Der Server sollte nun bereits eingetragen sein und ihr gebt einfach die Daten des Benutzers an, welchen ihr eben angelegt habt.
Wenn alles korrekt war, dann solltet ihr folgendes sehen:
15. Möglichkeiten der Benutzerverwaltung
Nun könnt ihr noch Synapse Admin zur Benutzerverwaltung installieren. Eine Anleitung dazu findet ihr hier.
Zusätzlich habe ich euch hier noch einige weitere Möglichkeiten zusammengefasst.
16. Matrix E-Mail aktivieren
Ihr könnt euren E-Mail Account hinzufügen, damit Matrix E-Mails senden kann. Dazu öffnet ihr folgende Datei. Wichtig ist, dass ihr hier das Verzeichnis entsprechend eurer Domain anpassen müsst.
nano /opt/containers/matrix/inventory/host_vars/matrix.euredomain.de/vars.yml
Nun fügt ihr folgendes hinzu:
exim_relay_sender_address: "absender@euredomain.de" exim_relay_relay_use: true exim_relay_relay_host_name: "mail.euredomain.de" exim_relay_relay_host_port: 587 exim_relay_relay_auth: true exim_relay_relay_auth_username: "absender@euredomain.de" exim_relay_relay_auth_password: "euerPasswort"
Nun müsst ihr noch folgenden Befehl ausführen, damit Matrix eure Einstellungen übernimmt:
cd /opt/containers/matrix ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
17. Matrix updaten
Updates könnt ihr sehr schnell durchführen. Dazu gebt ihr einfach folgenden Befehl ein:
cd /opt/containers/matrix git pull
Nun wurden alle Updates heruntergeladen. Jetzt solltet ihr euch die Änderungen anschauen. Dies kann wichtig sein, falls etwas grundsätzliches Verändert wurde. Dazu gebt ihr folgendes ein:
nano CHANGELOG.md
Jetzt könnt ihr das Installationsskript ausführen und anschließend Matrix erneut starten.
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
18. Matrix stoppen / beenden
Wenn ihr Matrix beenden möchtet, so gebt ihr einfach folgenden Befehl ein:
cd /opt/containers/matrix ansible-playbook -i inventory/hosts setup.yml --tags=stop
19. Matrix deinstallieren / löschen
Wenn ihr Matrix komplett löschen wollt, so müsst ihr nur folgenden Code ausführen:
/matrix/bin/remove-all
Jetzt seht ihr folgenden Dialog:
WARNING! You are about to remove everything the playbook installs for matrix.euredomain.de: matrix, docker images,... If you're sure you want to do this, type: 'Yes, I really want to remove everything!'
Gebt also nun “Yes, I really want to remove everything!” ein, um Matrix zu deinstallieren.
20. WhatsApp / Telegram / … Gateway
Hier findet ihr die Anleitung, wie ihr Gateways zu euren bisherigen Chat Diensten integrieren könnt. Ich habe diese Integration beispielhaft für WhatsApp und Telegram durchgeführt.
Hallo
Ich habe einen neuen Versuch gestartet und jetzt bekomme ich folgende Meldung:
[WARNING]: Unable to parse /opt/containers/matrix/inventory/hosts as an
inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match ‘all’
[WARNING]: Could not match supplied host pattern, ignoring: matrix_servers
Was kann ich tun?
Grüße
smarty70
Hallo
Ich habe heute versucht Matrix zu installieren. Beim starten bekomme ich eine Fehlermeldung. Was kann ich tun?
TASK [galaxy/postgres : Ensure managed Postgres databases prepared] ***************************************************************************
fatal: [matrix.teachsax.de]: FAILED! =>
msg: |-
The conditional check ‘devture_postgres_managed_databases|length > 0’ failed. The error was: An unhandled exception occurred while templating ‘{{ devture_postgres_managed_databases_auto + devture_postgres_managed_databases_additional }}’. Error was a <class ‘ansible.errors.AnsibleError’>, original message: An unhandled exception occurred while templating ‘{{
([{
‘name’: matrix_synapse_database_database,
‘username’: matrix_synapse_database_user,
‘password’: matrix_synapse_database_password,
}] if (matrix_synapse_enabled and matrix_synapse_database_host == devture_postgres_connection_hostname) else [])
+
([{
‘name’: matrix_dendrite_federation_api_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_key_server_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_media_api_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_room_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_sync_api_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_user_api_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_relay_api_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_push_server_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
},{
‘name’: matrix_dendrite_mscs_database,
‘username’: matrix_dendrite_database_user,
‘password’: matrix_dendrite_database_password,
}] if (matrix_dendrite_enabled and matrix_dendrite_database_hostname == devture_postgres_connection_hostname) else [])
+
([{
‘name’: matrix_sliding_sync_database_name,
‘username’: matrix_sliding_sync_database_username,
‘password’: matrix_sliding_sync_database_password,
}] if (matrix_sliding_sync_enabled) else [])
+
([{
‘name’: matrix_ma1sd_database_name,
‘username’: matrix_ma1sd_database_username,
‘password’: matrix_ma1sd_database_password,
}] if (matrix_ma1sd_enabled and matrix_ma1sd_database_engine == ‘postgres’ and matrix_ma1sd_database_hostname == devture_postgres_connection_hostname) else [])
+
([{
‘name’: matrix_bot_matrix_reminder_bot_database_name,
‘username’: matrix_bot_matrix_reminder_bot_database_username,
‘password’: matrix_bot_matrix_reminder_bot_database_password,
}] if (matrix_bot_matrix_reminder_bot_enabled and matrix_bot_matrix_reminder_bot_database_engine == ‘postgres’ and matrix_bot_matrix_reminder_bot_database_hostname == devture_postgres_connection_hostname) else [])
+
……
‘. Error was a <class ‘ansible.errors.AnsibleError’>, original message: An unhandled exception occurred while templating ‘{{ ‘%s’ | format(matrix_homeserver_generic_secret_key) | password_hash(‘sha512’, ‘synapse.db’, rounds=655555) | to_uuid }}’. Error was a <class ‘ansible.errors.AnsibleFilterError’>, original message: Unable to encrypt nor hash, passlib must be installed. No module named ‘passlib’. Unable to encrypt nor hash, passlib must be installed. No module named ‘passlib’
The error appears to be in ‘/opt/containers/matrix/roles/galaxy/postgres/tasks/install.yml’: line 88, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
– name: Ensure managed Postgres databases prepared
^ here
Hallo miteinander!
Also wie einige schon bemerkt haben ( 2TAP2B DJ3MG eldov pkirsche ), gibt es Probleme mit der Federation, .well-known etc.
Es hat sich beim Playbook wieder was geändert, hier die aktuelle Anleitung:
https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-own-webserver.md#traefik-managed-by-you
Das heißt, man muss in der vars.yml folgendes hinzufügen:
matrix_playbook_reverse_proxy_container_network: proxy
matrix_playbook_reverse_proxy_hostname: traefik
Dann noch mit diesem Befehl im Terminal alles neu aufstetzen und starten:
ansible-playbook -i inventory/hosts setup.yml –tags=setup-all,start
Danach sollte der Federationtester wieder grünes Licht geben!
Ein Selbsttest gibt auch Auskunft darüber, ob alles ok ist (Quelle):
ansible-playbook -i inventory/hosts setup.yml –tags=self-check
Christian vielleicht magst du das verifizieren und die Anleitung anpassen. Du hast da einen besseren Überblick, evtl. kann man an der vars.yml noch etwas optimieren?!
Moin,
hab mich mal an die Anleitung gewagt. Und ja es läuft, ABER…
Federationtester gibt einen Fehler auf den ich nicht verstehe….
Matrix läuft auf matrix.domain.de die domain.de zeigt A-Record auf die feste IP des Servers und die element.domain.de läuft mit cname auch sauber mit.
Raff ich nicht den Fehler…
Jemand ne Idee?
Grüße
Tobi
Hallo, vielen Dank für die Anleitung.
Leider schlägt der Federationtest immer fehl.
Ich bekomme folgende Fehlermeldung:
Connection Errors
Non-200 response 404 from remote server
Im JSON report steht:
result “No .well-known found”
Hatte jemand ein ähnliches Problem und konnte dies schon erfolgreich lösen?
VG Michael
Wollte schon lange mal Matrix-Server selber hosten, aber wie ich sehe ist der Aufwand immens und erinnert mich an die andere populäre Bloatware Nextcloud.
Vielleicht könnte man Dendrite als Matrix Server anstelle von Synapse vorstellen.
Ich muss leider noch einmal lästig sein mit einer Bitte.
Klappt bei euch die Federation-Verifizierung in Schritt 12 mit den letzten Anpassungen noch?
Ich hoffe, ich nerve nicht bereits, aber die Matrix-Anleitung hier ist für mich persönlich die wichtigste Anleitung im Blog, da ich darüber mit Family und Freunden kommuniziere.
Installation hat nur einmal bei mir geklappt auf dem gleichen Server.
Beim zweiten Mal komme ich nicht mehr auf die Startseite und bekomme nur einen SSL Fehler. Einen Systemcheck durchführen führt zu einem SRV Fehler. Dann gab es noch einen Datenbankfehler. Ich gebe leider auf…!
I know its a bit off Topic but maybe someone found a Solution.
When using the Element app installed by Google Play Store you only can choose the “Notification Method”-> “Google Services” when using Element from F-Droid you only have the Option “Background Synchronization” which is Battery Consuming if you want a short Sync Intervall.
I tried ntfy as a Notification Method and it seems to work good and is less intense on Battery.
BUT All my friend are just ok with installing the Element App from the Play store, I would not be able to get them to also install and configure ntfy.
So does anyone found a way to make “Google Services” as Notification method working with this Matrix Synapse Server Setup ?
Vielen Dank für die Anleitung!
Leider ist sie seit dem 15.1.2024 veraltet, nginx wurde komplett aussortiert, und funktioniert nicht mehr.
Wäre toll, wenn der Autor ein Update machen könnte. Danke!
Hallo zusammen,
vielen Dank für die tollen Step by Step Anleitungen 👍
Mir ist eine kleine Änderung bei der Einbindung des Mailversand aufgefallen.
Laut Fehlermeldung wurde auf Exim umgestellt
Fehlermeldung:
The matrix-mailer role in the playbook has been replaced with the exim-relay role
Das ganze lässt sich wirklich leicht anpassen, aber eventuell könnte man die Anleitung mal anpassen?
ALT:
matrix_mailer_sender_address: “eMail@Domain.de”
matrix_mailer_relay_use: true
matrix_mailer_relay_host_name: “FQDN”
matrix_mailer_relay_host_port: 587
matrix_mailer_relay_auth: true
matrix_mailer_relay_auth_username: “login”
matrix_mailer_relay_auth_password: “passwort”
NEU:
exim_relay_sender_address: “eMail@Domain.de”
exim_relay_relay_use: true
exim_relay_relay_host_name: “FQDN”
exim_relay_relay_host_port: 587
exim_relay_relay_auth: true
exim_relay_relay_auth_username: “login”
exim_relay_relay_auth_password: “passwort”
Hallo Meine Freunde 🙂
Nach 5 Wochen endlich aus dem Krankenhaus herausen .
Weiß einer ob es irgend eine Änderung gab?
Weil ich kam jetzt grad nach hause .. Und wollte gleich meinen Server komplett up-to-date machen.
Soweit hat alles funktioniert. Nur wenn ich den Matrix ordner mit gitpull up-to-date bringen will . Bricht er mir die ganze sache ab wegen einen Merge Fehler
Hatte das schon mal jemand?
Kann mir da jemand weiterhelfen.. Hab angst das am ende alles weg ist.
Nachdem beim zerstörten Server der Umzug vom Matrix samt Daten reibungslos geklappt hat. Wäre das jetzt nicht so prickelnd ^^
Wäre fuer jede Hilfe Dankbar :/
Und natürlich nachträglich noch an alle Ein wunderschönes Neues Jahr 🙂
Hoffe ihr habt schön fleißig gefeiert
greez Gn0me
Problem hat sich gelöst. git reset –hard
und dann git pull. Fehler behoben alles läuft wies soll :>
Hallo Christian.
Ich habe auf meinem Server Mastodon laufen – meinedomain.de. Kann ich dann paralell dazu mit deiner Anleitung einen Matrix Server auf matrix.meinedomain.de betreiben?
huhu Christian . ICh hätte mal eine frage. Und zwar hat es mir vor paar tagen meinen server zerlegt. der neue steht schon mit traefik und crowd…. Jetzt aber meine frage.. jetzt hät ich versuch meine matrix installation auf den neuen server umzuziehen..
Mit den ordner /opt/containers/..
hat soweit ich auch super funktioniert.. Nur leider sind dann alle registrierten daten weg. Kann das sein das ich irgend was überseh ? :>
Schönes wochenende noch 🙂
Hallo zusammen. Leider bekomme ich beim installieren diesen Fehler. Wäre super wenn mir jemand helfen könnte. Danke 🙂
TASK [galaxy/com.devture.ansible.role.postgres : Ensure Postgres systemd service installed]
***
An exception occurred during task execution. To see the full traceback, use -vvv. The error
was: ansible.errors.AnsibleError: An unhandled exception occurred while templating ‘{{ devtu
re_postgres_postgres_process_extra_arguments_auto + devture_postgres_postgres_process_extra_
arguments_custom }}’. Error was a <class ‘ansible.errors.AnsibleError’>, original message: A
n unhandled exception occurred while templating ‘[“-c ‘max_connections={{ devture_postgres_m
ax_connections|int }}'”, “-c ‘shared_buffers={{ (devture_postgres_shared_buffers|int/1024)|i
nt }}MB'”, “-c ‘effective_cache_size={{ (devture_postgres_effective_cache_size|int/1024)|int
}}MB'”, “-c ‘maintenance_work_mem={{ (devture_postgres_maintenance_work_mem|int/1024)|int }
}MB'”, “-c ‘checkpoint_completion_target={{ devture_postgres_checkpoint_completion_target }}
‘”, “-c ‘wal_buffers={{ (devture_postgres_wal_buffers|int/1024)|int }}MB'”, “-c ‘default_sta
tistics_target={{ devture_postgres_default_statistics_target|int }}'”, “-c ‘random_page_cost
={{ devture_postgres_random_page_cost }}'”, “-c ‘effective_io_concurrency={{ devture_postgre
s_effective_io_concurrency|int }}'”, “-c ‘work_mem={{ devture_postgres_work_mem|int }}kB'”,
“-c ‘huge_pages={{ devture_postgres_huge_pages }}'”, “-c ‘min_wal_size={{ (devture_postgres_
min_wal_size|int/1024)|int }}MB'”, “-c ‘max_wal_size={{ (devture_postgres_max_wal_size|int/1
024)|int }}MB'”, “-c ‘max_worker_processes={{ devture_postgres_max_worker_processes|int }}'”
, “-c ‘max_parallel_workers={{ devture_postgres_max_parallel_workers|int }}'”, “-c ‘max_para
llel_workers_per_gather={{ devture_postgres_max_parallel_workers_per_gather|int }}'”, “-c ‘m
ax_parallel_maintenance_workers={{ devture_postgres_max_parallel_maintenance_workers|int }}’
“]’. Error was a <class ‘ansible.errors.AnsibleError’>, original message: An unhandled excep
tion occurred while templating ‘{{ ’64’ if devture_postgres_work_mem_raw|int <= 64 else devt
ure_postgres_work_mem_raw|int }}’. Error was a <class ‘ansible.errors.AnsibleError’>, origin
al message: An unhandled exception occurred while templating ‘{{ ((devture_postgres_memtotal
_kb|int – devture_postgres_shared_buffers|int)/(devture_postgres_max_connections|int*3))/dev
ture_postgres_max_parallel_workers_per_gather|int }}’. Error was a <class ‘ansible.errors.An
sibleError’>, original message: An unhandled exception occurred while templating ‘{{ (‘4’ if
ansible_processor_nproc/2 > 4 else ansible_processor_nproc|int/2) | round(0, ‘ceil’) | int
}}’. Error was a <class ‘ansible.errors.AnsibleError’>, original message: Unexpected templat
ing type error occurred on ({{ (‘4’ if ansible_processor_nproc/2 > 4 else ansible_processor_
nproc|int/2) | round(0, ‘ceil’) | int }}): must be real number, not str. must be real number
, not str
fatal: [matrix.x.art]: FAILED! => changed=false
msg: ‘AnsibleError: An unhandled exception occurred while templating ”{{ devture_postgres
_postgres_process_extra_arguments_auto + devture_postgres_postgres_process_extra_arguments_c
ustom }}”. Error was a <class ”ansible.errors.AnsibleError”>, original message: An unhand
led exception occurred while templating ”[“-c ”max_connections={{ devture_postgres_max_con
nections|int }}””, “-c ”shared_buffers={{ (devture_postgres_shared_buffers|int/1024)|int }
}MB””, “-c ”effective_cache_size={{ (devture_postgres_effective_cache_size|int/1024)|int }
}MB””, “-c ”maintenance_work_mem={{ (devture_postgres_maintenance_work_mem|int/1024)|int }
}MB””, “-c ”checkpoint_completion_target={{ devture_postgres_checkpoint_completion_target
}}””, “-c ”wal_buffers={{ (devture_postgres_wal_buffers|int/1024)|int }}MB””, “-c ”defau
lt_statistics_target={{ devture_postgres_default_statistics_target|int }}””, “-c ”random_p
age_cost={{ devture_postgres_random_page_cost }}””, “-c ”effective_io_concurrency={{
devture_postgres_effective_io_concurrency|int }}””, “-c ”work_mem={{ devture_postgres_
work_mem|int }}kB””, “-c ”huge_pages={{ devture_postgres_huge_pages }}””, “-c ”min_wal_s
ize={{ (devture_postgres_min_wal_size|int/1024)|int }}MB””, “-c ”max_wal_size={{ (devture_
postgres_max_wal_size|int/1024)|int }}MB””, “-c ”max_worker_processes={{ devture_postgres_
max_worker_processes|int }}””, “-c ”max_parallel_workers={{ devture_postgres_max_parallel_
workers|int }}””, “-c ”max_parallel_workers_per_gather={{ devture_postgres_max_parallel_wo
rkers_per_gather|int }}””, “-c ”max_parallel_maintenance_workers={{ devture_postgres_max_p
arallel_maintenance_workers|int }}””]”. Error was a <class ”ansible.errors.AnsibleError”
>, original message: An unhandled exception occurred while templating ”{{ ”64” if devture
_postgres_work_mem_raw|int <= 64 else devture_postgres_work_mem_raw|int }}”. Error was a <c
lass ”ansible.errors.AnsibleError”>, original message: An unhandled exception occurred
while templating ”{{ ((devture_postgres_memtotal_kb|int – devture_postgres_shared_buffe
rs|int)/(devture_postgres_max_connections|int*3))/devture_postgres_max_parallel_workers_per_
gather|int }}”. Error was a <class ”ansible.errors.AnsibleError”>, original message: An u
nhandled exception occurred while templating ”{{ (”4” if ansible_processor_nproc/2 > 4 el
se ansible_processor_nproc|int/2) | round(0, ”ceil”) | int }}”. Error was a <class ”ansi
ble.errors.AnsibleError”>, original message: Unexpected templating type error occurred on (
{{ (”4” if ansible_processor_nproc/2 > 4 else ansible_processor_nproc|int/2) | round(0, ”
ceil”) | int }}): must be real number, not str. must be real number, not str’
Hallo Christian,
hast Du Erfahrung mit Matrix unter OpenMediaVault. Hier scheint es wohl Probleme zu geben. Das Standardmäßig GIT nicht installiert ist mahct ja zunächst nichts. Kann man ja nachholen. Sobald es aber mit PIP los geht kommen Warnmeldungen. Es geht da um Berechtigungen mit dem Nutzen Root die zu einem inkompatiblen Systen führen können. Ich habe das mal ignoriert mit dem Ergebins dass Ansible nicht zu instllieren ist. Schlimmer war das OMV nicht mehr funktionierte. Ich musste ein Komplettes Restore machen. Hast Du da eine Idee. Kann vielleicht deine vorherige Anleitung funktionieren. (nach Anpassung auf die neu Traefik Konfi). Danke für eine Rückmeldung.
Ich habe diese Meldung in /var/log/syslog des servers:
Daraufhin habe ich mir das Playbook genauer angeguckt. In der Datei:
wird unterschieden zwischen “ssl_dir_path” und “ssl_acme_file_name” :
Ich habe also in
die Zeilen angepasst bzw. hinzugefügt:
ich bin aktuell im urlaub. Und via wireguard zu mir nachhause. Ich komm intern auf kein Traefik.dashboard mehr. matrix verbindungen werden komplett geblockt. Webclient schreit : forbidden…
Und das seit dem debian update, Traefik.log kein error kein nichts. ( mein eigener Bouncer Bannt mich seitdem letzten update?) <- das mal schräg bin ich grad per zufall drauf gestoßen.
Die frage ist warum?
Werd jetzt mal schauen das ich das aus der Ferne umbau . Das ich zumindest wieder chatten kann :>
falls jemand das selbe problem hat. Und eine lösung parat bitte melden :F
Ich sitz aktuell paar hundertkilometer weiter im Urlaub -_-
Guten Abend und vielen Dank für die Anleitung. Leider bekomme ich einen Fehler beim installieren des Matrixservers. Folgender Fehler erscheint:
Leider finde ich ein solchen Eintrag nirgends. Kann jemand helfen? Vielen Dank
Gruß
Martin
Vielen Dank für die Anleitung, funktioniert soweit sehr gut! Da bin ich doch gleich mal Supporter via Paypal geworden 😀
Einen kleinen Schönheitsfehler hat dieses Tutorial allerdings, und zwar die bedingte Kompatibilität mit anderen Anleitung hier auf goneuland. Wenn man z.B. wordpress, LAMP-Stack oder einen anderen Webserver (z.B. nginx) in einem anderem Stack betreibt, und auf z.B. “domain.de” (also keine Subdomain) per Traefik routet, hat man hier ein Problem mit der Federation von Matrix, da die auch über die Hauptdomain “domain.de” läuft (und nicht über die Subdomain matrix.domain.de).
Kurz zusammengefasst: In der jetzigen Fassung der Anleitung ist es nicht möglich, matrix und eine website auf “domain.de” bereitzustellen.
Christian könntest du bitte die Anleitung dahingehend updaten oder hier kurz antworten, wie man das am besten anstellt?
Vielen Dank!
EDIT:
20 Stunden später, meine Recherche hat ergeben, dass es definitiv möglich ist:
https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-base-domain-serving.md#serving-a-static-website-at-the-base-domain
Und weiter:
https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-own-webserver.md
Christian wäre super wenn du das noch ergänzen könntest! Danke!
Die alte Anleitung lief nach der letzten Anpassung wie Butter. Bei der neuen laufe ich leider direkt wieder auf einen Fehler.
TASK [galaxy/com.devture.ansible.role.postgres : Execute Postgres managed database initialization SQL file for synapse] ***
fatal: [matrix.xxx.xxx]: FAILED! => changed=true
cmd:
– /usr/bin/env
– docker
– run
– –rm
– –user=998:1001
– –cap-drop=ALL
– –env-file=/matrix/postgres/env-postgres-psql
– –network=matrix
– –mount
– type=bind,src=/tmp/matrix-postgres-init-managed-db-user-and-role.sql,dst=/matrix-postgres-init-managed-db-user-and-role.sql,ro
– –entrypoint=/bin/sh
– docker.io/postgres:15.3-alpine
– -c
– psql -h matrix-postgres –file=/matrix-postgres-init-managed-db-user-and-role.sql
delta: ‘0:00:00.476289’
end: ‘2023-06-06 08:57:03.130014’
msg: non-zero return code
rc: 2
start: ‘2023-06-06 08:57:02.653725’
stderr: ‘psql: error: connection to server at “matrix-postgres” (172.22.0.2), port 5432 failed: FATAL: password authentication failed for user “matrix”‘
stderr_lines: <omitted>
stdout: ”
stdout_lines: <omitted>
PLAY RECAP *********************************************************************
matrix.xxx.xxx : ok=61 changed=3 unreachable=0 failed=1 skipped=69 rescued=0 ignored=0
Hat hier jemand zufällig wieder einen großartigen Einfall? Ich habe bereits 3x von vorne angefangen und laufe immer auf den gleichen Fehler.
Ich habe ein ähnliches Problem wie boba, nur mit einer anderen Fehlermeldung. Bei mir lautet sie:
Got 0 connection report. This usually means at least one error happened.
Connection Errors
Non-200 response 404 from remote serverNon-200 response 404 from remote server
DNS resultsNo SRV records found
Muss ich die SRV in den DNS-Einstellungen ergänzen? Das ist kein Problem. Aber reicht das? Laut json Report fehlen auch die Einträge in .well-known: “No .well-known found”.
Würde mich über Hilfe freuen.
Ich habe heute die Installation durchgeführt und Matrix an sich läuft. Was aber nicht funktioniert ist die Server Delegation. Der Federationstest schlägt fehl mit “Connection ErrorsGet “https://xx.xxx.xx.xx:8448/_matrix/key/v2/server”: remote error: tls: unrecognized name”
Die .well-known/matrix/server Datei finde ich nur unter matrix.meineDomain.de aber nicht unter meinerDomain.de nicht. Hat jemand ein Tipp?
Hallo Christian, da der Matrix-Server seit Installation absolut perfekt läuft. noch einmal ein DANKE an dieser Stelle.
Ein kleines Problem mit dem beschriebenen Updateprozess gibt es derzeit allerdings.
Seitens des Playbook-Erstellers wurde nun von nginx auf traefik gewechselt als Proxy. Damit bricht nun der Update-Vorgang, da weitere Parameter definiert werden müssen.
Kannst du hier eventuell in einer ruhigen Minute einen Blick darauf werfen?
Hier die Infos zum Change:
https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-own-webserver.md#traefik-managed-by-the-playbook
Vielen Dank für die tolle Anleitung. Damit funktioniert Matrix unter Traefik als Homeserver wunderbar.
Was ich noch nicht hinbekommen habe, ist die Funktion des Email-Plugin.
Sowie die Ergänzung der Email im Profil als auch die Benachrichtigung des Matrix-Server funktionieren noch nicht.
Es gibt folgende Fehlermeldung:
Falls das schon jemand hinbekommen hat, wäre ich über einen Tip sehr dankbar.
In der homeserver.yaml habe ich folgenden Eintrag ergänzt. Die Zugangsdaten zum Google-Account sind hier gefakt und funktionieren ansonsten einwandfrei.
Hallo Zusammen,
ich habe mal eine Frage zu Matrix:
Und zwar gibt es da eine Möglichkeit ein Backup zu machen von den Usern und Chaträumen / Space? Wenn ja, wie geht das und wie kann ich es wieder einspielen, wenn ich zum Beispiel den Server neu aufgesetzt habe? Gibt es da eine Möglichkeit?
Danke
Gruß
Hoschy
Hej Leute,
tritt bei euch in Schritt 8 auch dieser Fehler auf?
sudo make roles
Output wie folgt:
rm -rf roles/galaxy
ansible-galaxy install -r requirements.yml -p roles/galaxy/ –force
make: ansible-galaxy: No such file or directory
make: *** [Makefile:8: roles] Error 127
habt ihr nen Plan?
Viele Grüße
Jetzt läuft die Installation! Danke 🙂
Eine Sache ist seltsam. Einstellungen die gesetzt werden, werden irgendwie nicht gespeichert. Nach jedem Abmelden und Anmelden muss das Gerät wieder verifiziert werden und die Einstellungen sind verschwunden. Hat jemand das gleiche Problem?
Hallo Christian,
könntest du bitte die Anleitung erneut aktualisieren, da man wohl jetzt in die vars.yml eine postgres Datenbank mit angeben muss. Geht um das hier:
https://github.com/devture/com.devture.ansible.role.postgres
und um das ( Backup ).
https://github.com/devture/com.devture.ansible.role.postgres_backup
Wäre super, wenn du das in der Anleitung mit hinzufügen könntest, weil ich steige nicht ganz so durch.
Danke
Gruß
Hoschy
Ich habe alles noch einmal neu aufgesetzt und komme bis zum Punkt 12.
Ich habe 2 Subdomains angelegt, die auf meinen Server zeigen:
(<– Wird diese überhaupt benötigt?)
Wenn ich nun auf der Testseite meine Hauptdomain eingebe: meinedomain.de, so bekomme ich einen Connection Error. Außerdem wird die IP des Servers der Hauptdomain angezeigt.
Nach einem Neustart meines VPS mit matrix kann ich diesen jedoch über die Adresse matrix.meinedomain.de erreichen. Allerdinge musste ich den VPS dafür einmal neustarten.
Hallo,
ich komme nicht weiter, wenn ich diesen Befehl ausführe:
Dann kommt dies in der Console:
Was muss ich tun, damit der Befehl ausgeführt wird?
Danke
Hallo Zusammen,
wenn ich die Anleitung bis zum Punkt 8. Installation per Ansible durchführen befolge und dann am Ende von Punkt 8 angekommen bin funktioniert es so wie es in der Anleitung steht. Wenn ich dann bei Punkt 9. Traefik anpassen weitermache und alles so eintrage und dann Punkt 10. Matrix starten ausführe, dann erhalte ich das als Ergebnis.
Könnte mir jemand sagen, was ich da falsch gemacht habe?
Danke
Gruß
Hoschy
Hallo Christian,
nach
ansible-playbook -i inventory/hosts setup.yml –tags=setup-all
erhalte ich folgende Meldung:
[WARNING]: * Failed to parse /opt/containers/chat/inventory/hosts with yaml plugin: We were unable to read either as JSON nor YAML, these are the
errors we got from each: JSON: Expecting value: line 1 column 1 (char 0) Syntax Error while loading YAML. did not find expected <document start>
The error appears to be in ‘/opt/containers/chat/inventory/hosts’: line 18, column 17, but may be elsewhere in the file depending on the exact syntax
problem. The offending line appears to be: [matrix_servers]. ^ here
[WARNING]: * Failed to parse /opt/containers/chat/inventory/hosts with ini plugin: host range must be begin:end or begin:end:step
[WARNING]: Unable to parse /opt/containers/chat/inventory/hosts as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match ‘all’
[WARNING]: Could not match supplied host pattern, ignoring: matrix_servers
Mein Matrix Container heißt chat, weil ich schon einen Matrix Container nach Deiner alten Anleitung zu laufen habe. Nun wollte ich diese Version hier probieren.
Kannst Du hier helfen?
Gruß
Ronald
Moin, bei mir führt leider der letzte Schritt im ansible playbook immer zu folgendem Fehler.
TASK [matrix-base : Ensure lsb-release installed] **********************************************************
fatal: [matrix*************]: FAILED! => changed=false
msg: ‘E:Widersprüchliche Werte gesetzt für Option Signed-By betreffend die Quelle https://download.docker. com/linux/ubuntu/ jammy: /usr/share/keyrings/docker-ce-archive-keyring.gpg != , E:Die Liste der Quellen konn te nicht gelesen werden.’
danach geht auch immer kein sudo apt update mehr, erst wenn ich etc/apt/sources.list.d/docker.list lösche sowie /etc/apt/sources.list.d/docker.list/etc/apt/sources.list.d/docker.list
Ich nutze ubuntu 22.04 und habe Docker auch schon einmal neu installiert nach der Anleitung von dieser Seite sowie einmal nach der Anleitung:
https://cloudcone.com/docs/article/how-to-install-docker-on-ubuntu-22-04-20-04/
Sobald ich das playbook ausführe erhalten ich immer denselben Fehler.
Ich weiß leider nicht mehr weiter :-/
Viele Grüße