Matrix è una rete di chat aperta. Quando gestisci un tuo homeserver Matrix, i tuoi messaggi e account vivono sul tuo server e puoi comunque parlare con le persone su altri server Matrix. Questa guida installa Synapse, l’homeserver di riferimento, con Docker e PostgreSQL dietro HTTPS.
Cosa sapere prima
- Federazione. Il tuo server può parlare con gli altri, il che significa che usa banda e disco per memorizzare le stanze a cui partecipi. I piccoli server privati sono leggeri. Entrare in stanze pubbliche molto grandi no.
- Dimensione. 2 vCPU e 4 GB di RAM vanno bene per un piccolo gruppo. Vedi l’hosting per server Matrix.
- Dominio. Ti serve un dominio. Il nome del server (per esempio
example.com) fa parte di ogni ID utente e non si può cambiare in seguito.
Passo 1: genera la configurazione
mkdir -p ~/synapse && cd ~/synapse
docker run -it --rm -v $(pwd)/data:/data \
-e SYNAPSE_SERVER_NAME=example.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate
Passo 2: passa a PostgreSQL
SQLite è l’impostazione predefinita, ma PostgreSQL è meglio per qualsiasi cosa oltre un test. Modifica data/homeserver.yaml e sostituisci il blocco database:
database:
name: psycopg2
args:
user: synapse
password: CHANGE_ME
database: synapse
host: db
cp_min: 5
cp_max: 10
Passo 3: file Compose
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: synapse
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
volumes:
- ./pgdata:/var/lib/postgresql/data
synapse:
image: matrixdotorg/synapse:latest
restart: unless-stopped
depends_on: [db]
ports:
- "127.0.0.1:8008:8008"
volumes:
- ./data:/data
docker compose up -d
docker compose logs -f synapse
Passo 4: HTTPS e federazione
Servi Synapse su matrix.example.com e pubblica un file di delega così che il nome del tuo server resti example.com:
matrix.example.com {
reverse_proxy 127.0.0.1:8008
}
example.com {
handle /.well-known/matrix/server {
header Content-Type application/json
respond `{"m.server": "matrix.example.com:443"}`
}
handle /.well-known/matrix/client {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
}
}
Testa la federazione con il Matrix Federation Tester quando il DNS è attivo.
Passo 5: crea utenti e blocca la registrazione
docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
Lascia enable_registration impostato su false in homeserver.yaml a meno che tu non voglia iscrizioni aperte.
Client e attenzione
Usa Element o qualsiasi client Matrix e accedi con il nome del tuo server. Fai il backup della cartella data e dei dati di Postgres e mantieni Synapse aggiornato. Leggi prima l’hardening del server.