Tags
  1. https://web-docs.element.dev/Element%20Web/index.html 
  2. wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
  3. wget -O /usr/share/keyrings/element-io-archive-keyring.gpg https://packages.element.io/debian/element-io-archive-keyring.gpg
  4. echo "deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main" | sudo tee /etc/apt/sources.list.d/element-io.list
  5. 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
  6. adu -y; ai matrix-synapse-py3 libpq5 postgresql coturn pwgen element-web nginx autopostgresqlbackup yamllint
  7. sc-status postgresql
  8. su - postgres
    1. createuser --pwprompt DBUSER
    2. createdb --encoding=UTF8 --locale=C --template=template0 --owner=DBUSER DBNAME

vim /etc/postgresql/15/main/pg_hba.conf

host    DBNAME         DBUSER         127.0.0.1/32            md5
  1. cp /etc/matrix-synapse/conf.d/server_name.yaml /etc/matrix-synapse/conf.d/SUB.DOM.TLD.yaml

vim /etc/matrix-synapse/conf.d/matrix.DOM.TLD.yaml

---
server_name: matrix.DOM.TLD
bind_addresses: ['0.0.0.0']
database:
 name: psycopg2
 args:
  user: DBUSER
  password: 
  dbname: DBNAME
  host: 127.0.0.1
  cp_min: 5
  cp_max: 10
macaroon_secret_key: openssl rand -base64 32
registration_shared_secret: openssl rand -hex 32
  1. yamllint /etc/matrix-synapse/conf.d/SUB.DOM.TLD.yaml
  2. journalctl -xeu matrix-synapse.service
  3. sc-status matrix-synapse.service
  4. journalctl -u coturn

vim /etc/turnserver.conf

listening-ip=
external-ip=
use-auth-secret
no-tcp-relay
allowed-peer-ip=
  1. sc-restart coturn.service
  2. sc-status coturn.service
  3. lsof -Pni G 8008
  4. sc-restart matrix-synapse.service
  5. pwgen -s 16 1
  6. /opt/venvs/matrix-synapse/bin/register_new_matrix_user -c /etc/matrix-synapse/conf.d/SUB.DOM.TLD.yaml
  7. cp /etc/element-web/config.json /etc/element-web/config.element.DOM.TLD.json

vim /etc/element-web/config.json

base_url
server_name
room_directory/servers
jitsi/preferred_domain

vim /etc/nginx/sites-available/element

server {
   listen 80;
   server_name element.DOM.TLD;
   root /usr/share/element-web;
   index index.html;
   location / {
       try_files $uri $uri/ =404;
   }
   location /_matrix {
       proxy_pass https://matrix.DOM.TLD;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }
   error_page 404 /index.html;
}
  1. ln -s /etc/nginx/sites-available/element /etc/nginx/sites-enabled/
  2. nginx -t
  3. nginx -s reload

vim /etc/matrix-synapse/homeserver.yaml

    # bind_addresses: ['::1', '127.0.0.1']

Administration

  1. /opt/venvs/matrix-synapse/bin/register_new_matrix_user -k SHAREDSECRET
  2. <admin_access_token> klick on profile > All settings > Help & About > Advanced > Access Token
  3. curl --header "Authorization: Bearer <admin_access_token>" -X GET "http://127.0.0.1:8008/_synapse/admin/v2/users?from=0&limit=10&guests=false"
  4. curl --header "Authorization: Bearer <admin_access_token>" -X GET "http://127.0.0.1:8008/_synapse/admin/v2/@root:matrix.DOM.TLD
  5. curl -X POST "http://127.0.0.1:8008/_synapse/admin/v1/deactivate/%40<USERNAME>%3Amatrix.DOM.TLD" \
       -H "Authorization: Bearer <admin_access_token>" \
       -H "Content-Type: application/json" \
       -d '{"erase": true}'
  6. curl -X POST "http://127.0.0.1:8008/_synapse/admin/v1/reset_password/@user:matrix.DOM.TLD" \
        -H "Authorization: Bearer <admin_access_token>" \
        -H "Content-Type: application/json" \
        -d '{
          "new_password": "1234",
          "logout_devices": true
        }'