
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, 3478Esegui backup di
/etc/matrix-synapse
e del database PostgreSQLMonitora 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.