To install the latest release:
sudo apt install -y lsb-release wget apt-transport-https
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list
sudo apt update
sudo apt install matrix-synapse-py3
Install prerequisites:
sudo apt install -y build-essential python3-dev libffi-dev python3-pip python3-setuptools sqlite3 libssl-dev virtualenv libjpeg-dev libxslt1-dev postgresql
To setup delegation add these lines to the the nginx configuration of dodekaeder.name:
location /.well-known/matrix/server {
default_type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '{"m.server":"synapse.dodekaeder.name"}';
}
location /.well-known/matrix/client {
default_type application/json;
add_header Access-Control-Allow-Origin *;
return 200 '{ "m.homeserver":{ "base_url": "https://matrix.dodekaeder.name"}, "m.identity_server": { "base_url": "https://matrix.dodekaeder.name"}}';
}
Add reverse proxy entry:
server {
listen 8448 ssl http2;
listen [::]:8448 ssl http2;
server_name matrix.dodekaeder.name;
location ~ ^(/_matrix|/_synapse/client) {
client_max_body_size 50M;
proxy_pass http://192.168.31.208:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_http_version 1.1;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/cloud.dodekaeder.name/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/cloud.dodekaeder.name/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = matrix.dodekaeder.name) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name matrix.dodekaeder.name;
listen 80;
return 404; # managed by Certbot
}
Authentificate as postgres user:
sudo -u postgres bash
Create user and database:
createuser --pwprompt synapse_user
createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse
When you are ready to start using PostgreSQL, edit the database section in your config file to match the following lines:
database:
name: psycopg2
args:
user: <user>
password: <pass>
dbname: <db>
host: 127.0.0.1
cp_min: 5
cp_max: 10
This to your config:
email:
smtp_host:
smtp_port: 587
smtp_user:
smtp_pass:
require_transport_security: true
force_tls: false
notif_from: ""
Add a shared secret for registration
enable_registration: false
registration_shared_secret: ""
listeners:
- bind_addresses:
- 0.0.0.0
and restart and register user:
sudo systemctl restart matrix-synapse
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Create drectory:
sudo mkdir -p /opt/mautrix-whatsapp
sudo chown matrix-synapse:matrix-synapse /opt/mautrix-whatsapp
cd /opt/mautrix-whatsapp
Grab latest release:
sudo wget https://github.com/mautrix/whatsapp/releases/download/v0.2604.0/mautrix-whatsapp-amd64
sudo chmod +x mautrix-whatsapp
Create database with sudo -u postgres psql:
CREATE USER whatsapp_user WITH PASSWORD 'your‑strong‑password';
CREATE DATABASE whatsapp OWNER whatsapp_user;
Create configuration with sudo ./mautrix-whatsapp -e and edit those configs:
bridge:
permissions:
"*": relay
"dodekaeder.name": user
"@elias:dodekaeder.name": admin
database:
uri: postgres://user:pswd@localhost/database?sslode=disable
homeserver:
adress: http://localhost:8008
domain: dodekaeder.name
Create registration file:
sudo ./mautrix-whatsapp-amd64 -g /opt/mautrix-whatsapp/registration.yaml
sudo cp /opt/mautrix-whatsapp/registration.yaml /etc/matrix-synapse/whatsapp-registration.yaml
sudo chown matrix-synapse /opt/mautrix-whatsapp/config.yaml
sudo chown -R matrix-synapse /etc/matrix-synapse/
Add the following lines to /etc/matrix-synapse/homeserver.yaml:
app_service_config_files:
- /etc/matrix-synapse/whatsapp-registration.yaml
Restart matrix-synapse:
sudo systemctl restart matrix-synapse
Create systemd service by writing te following lines with sudo nvim /etc/systemd/system/mautrix-whatsapp.service:
[Unit]
Description=Mautrix WhatsApp Bridge
After=network.target
[Service]
Type=simple
User=matrix-synapse
WorkingDirectory=/opt/mautrix-whatsapp
ExecStart=/opt/mautrix-whatsapp/mautrix-whatsapp-amd64 -c /opt/mautrix-whatsapp/config.yaml
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Start the service with:
sudo systemctl daemon-reload
sudo systemctl enable mautrix-whatsapp
sudo systemctl start mautrix-whatsapp.service