Come configurare un server Matrix dietro un proxy Cloudflare

Un server Matrix può trovarsi dietro Cloudflare, ma la configurazione dipende da come i client e gli altri server domestici lo rilevano. Il proxy HTTP standard di Cloudflare supporta HTTPS sulla porta 443; la federazione Synapse utilizza solitamente la porta 8448 come predefinita, che non è presente nell'elenco standard delle porte proxy di Cloudflare. Una soluzione affidabile consiste nell'esporre Synapse tramite un reverse proxy sulla porta 443 e pubblicare record DNS noti di Matrix che indirizzino i client e il traffico di federazione a tale hostname. In alternativa, è possibile mantenere la federazione sulla porta 8448 e impostare il record DNS corrispondente come solo DNS.

Questa guida utilizza Synapse, l'implementazione ufficiale di Matrix per i server domestici, con gli ID Matrix @alice:example.come l'endpoint client di esempio matrix.example.com. Sostituisci questi nomi e indirizzi con i tuoi. Le istruzioni presuppongono che Synapse e un proxy inverso HTTPS siano già installati. Non si applicano senza modifiche a tutte le implementazioni di server domestici. Verificato rispetto alla documentazione aggiornata di Cloudflare ed Element Synapse il 6 ottobre 2026.

Scegliere la configurazione di rete corretta

Il proxy orange-cloud di Cloudflare è un proxy inverso HTTP/HTTPS. Si interpone tra i client e il server di origine per le richieste web inoltrate; non funge da proxy per tutte le porte TCP. Le sue porte HTTPS standard includono la 443 e la 8443, ma non la porta di federazione 8448, comunemente utilizzata da Synapse. Consulta l' elenco delle porte di rete supportate da Cloudflare e le limitazioni del proxy .

DisposizioneCloudflare DNSScoperta della FederazioneUsalo quando
Federazione su HTTPS 443matrix.example.comproxyexample.com/.well-known/matrix/serverindica amatrix.example.com:443Desideri che il traffico client e di federazione passi attraverso il normale proxy HTTP di Cloudflare.
Federazione su 8448Nome host del client con proxy; nome host di federazione solo DNSPubblicizza il server sulla porta 8448 oppure utilizza l'apposita destinazione di delega.Si desidera mantenere la porta di federazione predefinita di Synapse e accettare connessioni dirette all'origine per la federazione.

Il primo layout viene utilizzato di seguito. Un record DNS con proxy non configura di per sé il rilevamento Matrix, il reverse proxying, TLS o le policy del firewall.

1. Decidere il nome del server Matrix prima di configurare il DNS

Il nome del server Matrix è la parte che segue i due punti nell'ID utente. In questo esempio è example.com, quindi gli utenti hanno ID come @alice:example.com. Il nome host tecnico del client è matrix.example.com. Questa separazione consente al dominio utilizzato negli ID utente di rimanere stabile mentre il traffico viene delegato a un altro nome host. Se Synapse è già inizializzato, non modificarlo server_namecasualmente: fa parte dell'identità dell'utente e della stanza e la sua modifica è una migrazione, non una regolazione del proxy.

Prevedi di servire due piccoli documenti di individuazione JSON dal dominio del nome server:

  • https://example.com/.well-known/matrix/clientdice ai client compatibili di usare https://matrix.example.com.
  • https://example.com/.well-known/matrix/serverdice agli altri homeserver di raggiungere la federazione a matrix.example.com:443.

Il documento client necessita di Access-Control-Allow-Origin: *un'intestazione di risposta. La guida alla delega di Synapse include esempi di questi record e della loro struttura prevista: Delega di federazione Synapse .

2. Crea i record DNS di Cloudflare

In Cloudflare DNS, crea un Arecord con un nome matrixche punti all'indirizzo IPv4 pubblico del server. Aggiungi un AAAArecord solo se l'origine ha una connettività IPv6 funzionante e un firewall configurato per IPv6. Imposta lo stato del proxy del nome host web su Proxied (nuvola arancione). Se anche il dominio radice punta a questo server e servirà i file noti, configura come proxy anche il suo record web.

Mantieni i record non correlati, inclusi i record di posta elettronica, con le impostazioni DNS-only appropriate. I record MX e TXT non vengono inoltrati tramite proxy. Cloudflare spiega che un record A, AAAA o CNAME inoltrato tramite proxy instrada le richieste HTTP/HTTPS attraverso Cloudflare, mentre il DNS-only restituisce direttamente l'indirizzo di origine: Comportamento dello stato del proxy di Cloudflare .

Consenti il ​​traffico HTTPS in entrata da Cloudflare verso l'origine. Per una maggiore protezione, limita il firewall di origine agli intervalli IP pubblicati da Cloudflare e mantieni tali intervalli aggiornati. Se l'indirizzo IP del server era esposto prima dell'attivazione della zona, il proxying DNS non invalida il vecchio indirizzo; valuta la possibilità di modificare l'indirizzo IP di origine dopo l'attivazione. Non dare per scontato che la sola nuvola arancione impedisca l'accesso diretto all'origine.

3. Configurare HTTPS tra Cloudflare e l'origine

Nelle impostazioni SSL/TLS di Cloudflare, utilizzare la modalità Completa (rigorosa) quando l'origine presenta un certificato valido per il nome host, ad esempio un certificato pubblicamente attendibile o un certificato CA di origine di Cloudflare. La modalità Completa (rigorosa) crittografa la connessione da Cloudflare all'origine e convalida il certificato di origine; la modalità Flessibile non fornisce lo stesso percorso TLS end-to-end. Consultare la documentazione di Cloudflare relativa alla modalità Completa (rigorosa) .

Installare il certificato e la chiave privata sul reverse proxy, non necessariamente in Synapse. Il reverse proxy deve rimanere in ascolto sulla porta pubblica 443 e inoltrare internamente le richieste Matrix al listener HTTP di Synapse, solitamente sulla porta 8008. Non esporre pubblicamente il listener di Synapse se il reverse proxy è destinato a essere l'unico punto di accesso.

4. Indica a Synapse che si trova dietro un proxy inverso affidabile.

Nel listener HTTP pertinente in homeserver.yaml, abilita la gestione dell'intestazione inoltrata. Un esempio semplificato per un server non containerizzato è:

listeners:
  - port: 8008
    type: http
    tls: false
    x_forwarded: true
    bind_addresses: ['127.0.0.1']
    resources:
      - names: [client, federation]
        compress: false

Integra queste impostazioni nel listener esistente anziché sostituire l'intera configurazione. La documentazione di Synapse raccomanda x_forwarded: truedi utilizzare un reverse proxy e suggerisce di associare il listener a localhost quando il proxy è in esecuzione sullo stesso host. In caso di implementazione in container, associare Synapse all'interfaccia di loopback del container può impedire al proxy dell'host di raggiungerlo; in tal caso, utilizza l'indirizzo di rete del container o del servizio e proteggi tale percorso con un firewall. Consulta la guida aggiornata di Synapse per il reverse proxy prima di modificare le impostazioni del listener.

Le intestazioni inoltrate sono attendibili solo quando Synapse accetta traffico dal proxy controllato. Se Cloudflare è l'unico percorso accessibile da Internet, impedisci l'accesso pubblico diretto all'origine e configura il proxy in modo che trasmetta l'indirizzo client corretto. $remote_addrAltrimenti, l'indirizzo IP di Nginx sarà un indirizzo Cloudflare perché Cloudflare è connesso a Nginx. Configura il modulo real-IP di Nginx in modo che si fidi solo degli intervalli di indirizzi IP pubblicati da Cloudflare prima di utilizzarlo CF-Connecting-IP; non fidarti mai di quell'intestazione proveniente da client Internet arbitrari. Mantieni privata l'API di amministrazione di Synapse a meno che tu non abbia un motivo specifico per esporla.

5. Percorsi della matrice di instradamento senza riscriverli

Configura il tuo reverse proxy per inviare entrambi /_matrixi parametri /_synapse/clienta Synapse. Mantieni l'URI della richiesta esattamente come è scritto. Le firme delle richieste di federazione di Synapse potrebbero non funzionare se un proxy decodifica o normalizza i segmenti di percorso codificati.

Ecco un esempio compatto di Nginx matrix.example.com. Si presume che le direttive del certificato TLS siano già configurate per questo blocco di server e che il reverse proxy e Synapse siano in esecuzione sullo stesso host:

server {
    listen 443 ssl;
    server_name matrix.example.com;

    location ~ ^(/_matrix|/_synapse/client) {
        proxy_pass http://127.0.0.1:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        client_max_body_size 50M;
    }
}

Non aggiungere un suffisso URI alla posizione di questa espressione regolare proxy_pass. La documentazione proxy di Synapse indica la canonizzazione dell'URI come causa di errori nella firma di federazione. Regola inoltre il valore client_max_body_sizein modo che corrisponda al limite di caricamento di Synapse e a qualsiasi limite del piano Cloudflare applicabile alla tua zona. Il 50Mvalore sopra riportato è solo un esempio, non una raccomandazione universale.

Cloudflare supporta i WebSocket nei suoi piani e i client Matrix possono utilizzare connessioni a lunga durata. Verifica che il tuo proxy consenta l'aggiornamento e che eventuali WAF o regole di limitazione della frequenza non rifiutino le richieste Matrix legittime. La documentazione di Cloudflare sui WebSocket descrive la gestione delle connessioni aggiornate.

6. Pubblicare le risposte più note

Invia le seguenti due risposte tramite example.comHTTPS. Puoi restituirle dal tuo server web, da un host statico o da un host virtuale separato. Mantieni distinti i documenti del client e della federazione:

GET /.well-known/matrix/client
HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin: *

{"m.homeserver":{"base_url":"https://matrix.example.com"}}
GET /.well-known/matrix/server
HTTP/1.1 200 OK
Content-Type: application/json

{"m.server":"matrix.example.com:443"}

Non utilizzare un reindirizzamento a un host non correlato come alternativa senza prima aver verificato i requisiti di rilevamento di Matrix e il comportamento del client. Assicurati che l'host server-name sia coperto da un certificato HTTPS valido e che Cloudflare non memorizzi nella cache risposte di rilevamento obsolete durante la modifica.

7. Mantenere il traffico API dinamico e i caricamenti entro i limiti

Non memorizzare nella cache le risposte autenticate dell'API Matrix. Aggiungi una regola di cache di Cloudflare per ignorare la memorizzazione nella cache per i percorsi dell'API Matrix, inclusi /_matrix/*e /_synapse/client/*, a meno che tu non abbia un motivo ben testato per gestire una specifica risposta pubblica in modo diverso. Evita regole WAF o per bot generiche che sfidano o bloccano gli endpoint di federazione; le richieste di federazione provengono da molti homeserver indipendenti. Se è necessaria una regola di sicurezza, testala rispetto all'accesso client, alla sincronizzazione, al caricamento multimediale e alla federazione prima di applicarla in generale.

I caricamenti hanno diversi limiti indipendenti: quello del client, quello del piano o della zona di Cloudflare per il caricamento dei file, quello del proxy inverso per la dimensione del corpo del file e quello di Synapse max_upload_size. Un errore 413 significa che uno di questi limiti ha rifiutato la richiesta. Cloudflare pubblica i limiti di caricamento dipendenti dal piano e precisa che queste impostazioni possono essere modificate entro i limiti documentati: pagina di Cloudflare per la risoluzione dei problemi relativi all'errore 413. Aumenta solo i limiti necessari ed effettua un test con un file di dimensioni inferiori al limite configurato prima di incrementarli ulteriormente.

8. Verificare l'accesso, il rilevamento e la federazione dei client.

Esegui questi controlli da una macchina esterna alla rete del tuo server. Sostituisci i nomi host di esempio:

curl -i https://example.com/.well-known/matrix/client
curl -i https://example.com/.well-known/matrix/server
curl -i https://matrix.example.com/_matrix/client/versions
curl -i https://matrix.example.com/health

Le prime due richieste dovrebbero restituire HTTP 200, contenuto JSON e i valori previsti. Il documento client dovrebbe includere l'intestazione CORS. L'endpoint delle versioni client dovrebbe restituire JSON da Synapse tramite Cloudflare. L'endpoint di integrità di Synapse restituisce HTTP 200 quando viene raggiunto tramite un listener configurato, ma non sostituisce la verifica dell'accesso o della federazione.

Quindi accedi con un client Matrix utilizzando un ID che termina con :example.com, unisciti a una stanza ospitata altrove e verifica che i messaggi e gli aggiornamenti dell'appartenenza siano sincronizzati. Utilizza un tester di federazione Matrix o un secondo homeserver per convalidare il rilevamento del server e la federazione. Una richiesta riuscita a /_matrix/client/versionsdimostra solo che il percorso rivolto al client funziona; non dimostra che il rilevamento della federazione, la firma o la federazione in uscita siano corretti.

Che aspetto ha il successo e quando è il momento di cambiare il progetto.

  • I client si connettono tramite Cloudflare: il DNS si risolve negli indirizzi Cloudflare, HTTPS utilizza il certificato previsto e l'API client di Matrix restituisce una risposta.
  • Discovery è corretto: entrambi gli URL noti restituiscono il JSON corretto e il documento client supera i controlli di origine incrociata.
  • La federazione funziona: un server remoto rileva l'endpoint pubblicizzato e può scambiare lo stato della stanza. Se la delega sulla porta 443 fallisce ma la delega diretta sulla porta 8448 funziona, verificare il record noto, il routing del percorso proxy e le regole WAF.
  • Il caricamento funziona correttamente con le dimensioni previste: esegui un test con un file rappresentativo. Se i file di piccole dimensioni vengono caricati correttamente ma quelli di dimensioni maggiori restituiscono un errore 413, confronta tutti e quattro i limiti di dimensione anziché modificare solo Synapse.
  • L'origine non rappresenta un percorso pubblico alternativo: le richieste dirette all'origine devono essere bloccate o limitate come previsto. Se, nonostante ciò, raggiungono comunque il servizio Matrix, correggere la configurazione del firewall e del proxy attendibile.

Se i requisiti o l'implementazione non consentono l'instradamento della federazione sulla porta 443, è possibile utilizzare la federazione solo DNS sulla porta 8448, tenendo presente che ciò espone l'indirizzo di origine e rimuove la protezione proxy HTTP di Cloudflare per tale hostname. Spectrum rappresenta un'altra opzione per le porte non standard, soggetta alla disponibilità del prodotto e ai vincoli del piano. L'utilizzo del proxy Cloudflare implica inoltre che la connessione TLS termini presso Cloudflare prima di una seconda connessione TLS verso l'origine; la crittografia end-to-end Matrix protegge il contenuto dei messaggi crittografati, ma non nasconde i metadati di connessione o il contenuto non crittografato end-to-end ai servizi che gestiscono la richiesta HTTP. Scegliere la topologia in base ai requisiti di privacy, federazione e disponibilità, quindi eseguire nuovamente il test dopo aver apportato modifiche a DNS, certificati, Synapse o regole Cloudflare.

Lascia un commento

10 migliori strumenti di ping sweep per individuare i dispositivi sulla tua rete

10 migliori strumenti di ping sweep per individuare i dispositivi sulla tua rete

Confronta 10 strumenti di scansione ping per una rapida individuazione della rete LAN, la scansione multipiattaforma e la gestione degli indirizzi IP. Scopri cosa può (e non può) rivelarti una scansione.

6 migliori strumenti di gestione della rete per il monitoraggio delle prestazioni

6 migliori strumenti di gestione della rete per il monitoraggio delle prestazioni

Confronta sei strumenti di gestione della rete per il monitoraggio delle prestazioni, tra cui copertura SNMP, mappatura, avvisi, modelli di implementazione e compromessi in termini di costi.

Ping Monitor: 7 strumenti gratuiti e open-source per la disponibilità della rete

Ping Monitor: 7 strumenti gratuiti e open-source per la disponibilità della rete

Confronta sette monitor di ping gratuiti e open-source, da suite di rete complete a strumenti specifici per la misurazione della latenza, e scegli quello più adatto alle tue esigenze in termini di disponibilità, perdita di pacchetti e cronologia.

I migliori analizzatori Wi-Fi per Windows, iOS e Android

I migliori analizzatori Wi-Fi per Windows, iOS e Android

Confronta le migliori app di analisi Wi-Fi per Windows, iPhone e Android, inclusi strumenti per l'analisi della congestione dei canali, la copertura del segnale, le mappe di calore e la risoluzione dei problemi di rete.

QoS nelle reti: cos'è la qualità del servizio e come funziona

QoS nelle reti: cos'è la qualità del servizio e come funziona

Scopri cosa significa QoS nelle reti, come le marcature DSCP e le code di traffico danno priorità alle applicazioni voce, video e aziendali e cosa il QoS non può risolvere.

Il miglior software server SFTP per trasferimenti di file sicuri

Il miglior software server SFTP per trasferimenti di file sicuri

Confronta software server SFTP affidabili per Windows e Linux, tra cui OpenSSH, Bitvise, SolarWinds e SFTPGo. Trova la soluzione più adatta alle tue esigenze di sicurezza e trasferimento file.

I 7 migliori strumenti di gestione degli indirizzi IP per i team di rete

I 7 migliori strumenti di gestione degli indirizzi IP per i team di rete

Confronta sette strumenti di gestione degli indirizzi IP per la scoperta di sottoreti, il coordinamento di DNS e DHCP, l'inventario di rete e la gestione degli indirizzi IP open source.

Procedure ottimali per il monitoraggio della rete: cosa monitorare e quali strumenti utilizzare

Procedure ottimali per il monitoraggio della rete: cosa monitorare e quali strumenti utilizzare

Realizza un sistema di monitoraggio di rete efficace con una chiara copertura dei dispositivi, metriche di prestazioni utili, avvisi tempestivi e un confronto tra SolarWinds NPM, PRTG e OpManager.

I 10 migliori strumenti di scansione di rete per scoprire dispositivi e indirizzi IP

I 10 migliori strumenti di scansione di rete per scoprire dispositivi e indirizzi IP

Confronta gli strumenti di scansione di rete per la rapida individuazione dei dispositivi, le scansioni IP multipiattaforma e la gestione degli accessi IP (IPAM) aziendale, con indicazioni su come scegliere l'opzione più adatta alla tua rete.

Come utilizzare Nmap per il traceroute e leggere il percorso di rete

Come utilizzare Nmap per il traceroute e leggere il percorso di rete

Utilizza l'opzione --traceroute di Nmap per mappare gli hop a un host autorizzato, comprendere l'output di hop e RTT e risolvere i problemi relativi alle risposte mancanti senza eseguire scansioni eccessive.