Salta al contenuto principale

Element + Matrix: installazione e gestione di una rete di messaggistica libera e federata

element

Matrix è un protocollo aperto per la comunicazione in tempo reale: decentralizzato, sicuro e totalmente libero. Element è il suo client principale, multipiattaforma e open source, ideale per sostituire soluzioni come Slack, Teams o Telegram in ambienti privati o comunitari.

Matrix è una rete federata. Ogni utente si collega a un server (detto homeserver), ma può comunicare con utenti di altri server, proprio come accade per le email. I messaggi, gli allegati e le chiamate sono gestiti in modo distribuito, senza un punto centrale di controllo.

  • Synapse – server Matrix di riferimento, scritto in Python

  • Element – client web/desktop/mobile basato su React

  • PostgreSQL – database raccomandato per Synapse

  • Nginx + certbot – proxy e certificato TLS/HTTPS

  • coturn (opzionale) – server TURN/STUN per chiamate e video

Installazione di un server Matrix su Debian 12

1️⃣ Aggiorna il sistema

sudo apt update && sudo apt upgrade -y

2️⃣ Installa le dipendenze principali

sudo apt install -y lsb-release wget apt-transport-https gnupg nginx python3-venv python3-pip postgresql

3️⃣ Aggiungi il repository ufficiale di Matrix Synapse

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

4️⃣ Installa Synapse

sudo apt install matrix-synapse-py3 -y

Durante l’installazione ti verrà chiesto:

  • il nome di dominio del server (es. matrix.tuodominio.it)

  • se vuoi abilitare la telemetria → scegli No

Configurazione del database PostgreSQL

sudo -u postgres createuser --pwprompt synapse_user
sudo -u postgres createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse_user synapse

Modifica il file /etc/matrix-synapse/homeserver.yaml:

database:
  name: psycopg2
  args:
    user: synapse_user
    password: "LA_TUA_PASSWORD"
    database: synapse
    host: localhost

Attivazione HTTPS con Nginx e Certbot

Crea un virtual host Nginx in /etc/nginx/sites-available/matrix.conf:

server {
    listen 80;
    server_name matrix.tuodominio.it;

    location /.well-known/acme-challenge/ {
        root /var/www/matrix;
    }
}

Abilita e ottieni il certificato:

sudo mkdir -p /var/www/matrix
sudo certbot certonly --webroot -w /var/www/matrix -d matrix.tuodominio.it

Configura il proxy HTTPS:

server {
    listen 443 ssl;
    server_name matrix.tuodominio.it;

    ssl_certificate /etc/letsencrypt/live/matrix.tuodominio.it/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matrix.tuodominio.it/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }
}
sudo ln -s /etc/nginx/sites-available/matrix.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx
sudo systemctl enable matrix-synapse

Creazione dell’utente amministratore

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
New user localpart: enzo
Password: ******
Make admin [no]: yes

Installazione di Element Web

sudo mkdir -p /var/www/element
cd /var/www/element
sudo wget https://github.com/vector-im/element-web/releases/latest/download/element-v*.tar.gz
sudo tar -xzf element-v*.tar.gz --strip-components=1

Crea il file config.json:

{
  "default_server_config": {
    "m.homeserver": {
      "base_url": "https://matrix.tuodominio.it",
      "server_name": "tuodominio.it"
    }
  },
  "disable_custom_urls": true,
  "brand": "Element Hop Frog",
  "show_labs_settings": false
}

Configura Nginx per Element:

server {
    listen 443 ssl;
    server_name chat.tuodominio.it;

    root /var/www/element;
    index index.html;

    ssl_certificate /etc/letsencrypt/live/chat.tuodominio.it/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/chat.tuodominio.it/privkey.pem;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

Opzionale: installare un server TURN per le chiamate (coturn)

sudo apt install coturn -y
sudo nano /etc/turnserver.conf
listening-port=3478
fingerprint
use-auth-secret
static-auth-secret=CHIAVE_SEGRETA
realm=tuodominio.it

Collega la configurazione in homeserver.yaml sotto turn_uris: e riavvia Synapse.

Sicurezza e manutenzione

  • Aggiorna Synapse regolarmente: sudo apt update && sudo apt upgrade

  • Usa ufw per consentire solo le porte 80, 443, 3478

  • Esegui backup di /etc/matrix-synapse e del database PostgreSQL

  • Monitora i log: journalctl -u matrix-synapse

Federazione e interoperabilità

Matrix consente di federare il tuo server con altri del mondo, permettendo ai tuoi utenti di comunicare tramite indirizzi tipo:

@enzo:tuodominio.it

Puoi anche collegarti a:

  • Server pubblici (matrix.org)

  • Bridge verso IRC, Slack, Telegram o Discord

  • Reti interne (scuole, associazioni, comunità)


Configurare un server Matrix + Element significa costruire la propria rete di comunicazione indipendente, sicura e federata. Ogni comunità può così comunicare senza dipendere da piattaforme chiuse, mantenendo la piena sovranità sui propri dati.

🧠 Libertà digitale significa anche libertà di parola — su server liberi, con software libero.