OffshoreVps
Tutorial3 ott 20267 min di letturaDi il team di OffshoreVps

Come ospitare un server Matrix (Synapse) su un VPS

Esegui il tuo homeserver Matrix con Synapse, PostgreSQL e Docker: configurazione, HTTPS, delega della federazione, utenti e registrazione.

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.

Finestra del terminale su un VPS che mostra i comandi usati per ospitare un server Matrix, a partire da “mkdir -p ~/synapse && cd ~/synapse”
Il tipo di comandi che eseguirai sul tuo server in questa guida.

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
I passaggi di questa guida in ordine: 1. Cosa sapere prima; 2. genera la configurazione; 3. passa a PostgreSQL; 4. HTTPS e federazione; 5. crea utenti e blocca la registrazione; 6. Client e attenzione
I passaggi di questa guida, in ordine.

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.