diff --git a/group_vars/all/main.yml b/group_vars/all/main.yml
new file mode 100644
index 0000000..7df1a6c
--- /dev/null
+++ b/group_vars/all/main.yml
@@ -0,0 +1,3 @@
+# Matrix configuration
+matrix_domain_name: "matrix.n39.eu"
+matrix_admin_password: "{{ lookup('password', '/dev/null length=32 chars=ascii_letters,digits') }}" 
\ No newline at end of file
diff --git a/host-pottwal.yml b/host-pottwal.yml
index c6b97ad..faa71f5 100644
--- a/host-pottwal.yml
+++ b/host-pottwal.yml
@@ -26,6 +26,7 @@
           - name: "{{ grafana_domain_name }}"
           - name: "{{ homebox_domain_name }}"
           - name: spaceapi.n39.eu
+          - name: "{{ matrix_domain_name }}"
     - role: penguineer.dehydrated_cron
     - role: dd24_dyndns_cron
       # variables are set in the inventory
@@ -38,6 +39,15 @@
         cleanuri_api_domain: uritools-api.n39.eu
         cleanuri_api_host_port: 8091
         # RabbitMQ setup can be found in the inventory
+    - role: netz39.matrix_synapse
+      vars:
+        matrix_server_name: "{{ matrix_domain_name }}"
+        matrix_database_host: "localhost"
+        matrix_register_admin: true
+        matrix_admin_password: "{{ matrix_admin_password }}"
+        matrix_ssl_enabled: true
+        matrix_ssl_cert_path: "/etc/letsencrypt/live/{{ matrix_domain_name }}/fullchain.pem"
+        matrix_ssl_key_path: "/etc/letsencrypt/live/{{ matrix_domain_name }}/privkey.pem"
 
   tasks:
 
diff --git a/requirements.yml b/requirements.yml
index 769e481..b9211ba 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -17,6 +17,9 @@ roles:
   - name: netz39.host_docker
     src: git+https://github.com/netz39/ansible-role-host-docker.git
     version: v0.5.0
+  - name: netz39.matrix_synapse
+    src: git+https://github.com/netz39/ansible-role-matrix-synapse.git
+    version: v0.1.0
 
 collections:
   - name: community.grafana