User Tools

Site Tools


doc:appunti:linux:sa:matrix

This is an old revision of the document!


Matrix Messenger

Come installare un server per la messaggistica Matrix su una Debian GNU/Linux 10 Buster.

Il ruolo di un server Matrix è quello di memorizzare le chat personali di un utente e le informazioni dell'account in un modo molti simile a quello di un server di posta IMAP/SMTP.

Il server di riferimento sviluppato da Matrix per la propria piattaforma è Matrix Synapse. Si tratta di una implementazione adeguata ad eseguire un home server.

  • Installazione di un server sotto un nome di dominio, esempio matrix.example.org.
  • Accesso tramite protocollo HTTPS grazie a certificati SSL rilasciati da Let's Encrypt.
  • Attivazione di un reverse proxy HTTP con Apache, che offre il vantaggio di … FIXME
  • Disabilitazione della auto-registrazione; gli utenti vengono creati dall'amministratore.
  • Attivazione delle notifiche via mail, che consente di associare pubblicamente il proprio account Matrix ad un indirizzo di posta elettronica per facilitare la ricerca del nostro contatto.

Installazione di matrix-synapse in Debian 10 Buster

In Debian esiste il pacchetto matrix-synapse versione 1.24.0, ma è nella suite buster-backports, quindi è necessario aggiungere tale repository in /etc/apt/sources.list:

deb     http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free

Al termine dell'installazione il server dovrebbe essere in ascolto sulla porta 8008/TCP, sia su localhost che sull'indirizzo IP pubblico.

Il file di configurazione principale è /etc/matrix-synapse/homeserver.yaml.

Ottenre i certificati SSL da Let's Encrypt

Al termine dell'operazione i file da utilizzare sono:

  • /etc/letsencrypt/live/matrix.example.org/fullchain.pem
  • /etc/letsencrypt/live/matrix.example.org/privkey.pem

/etc/matrix-synapse/homeserver.yaml

Attivare il server web con reverse proxy

Abbiamo preferito utilizzare il server web Apache per la sua veratilità, in rete tuttavia si trovano molte ricette per utilizzare il più compatto Nginx. Dopo aver installato il pacchetto apache2 è necessario attivare i moduli ssl e proxy_http:

apt-get install apache2
a2enmod ssl
a2enmod proxy_http
systemctl restart apache2

Apache starà in ascolto in HTTP sulla porta 80/TCP effettuando il redirect automatico in HTTPS su 443/TCP; verranno servite anche le richieste HTTPS sulla porta 8448/TCP. In ogni caso tutte le richieste saranno passate con ProxyPass a matrix-synapse verso l'URL http//127.0.0.1:8008.

Dopo aver aggiunto la direttiva Listen 8448 al file /etc/apache2/ports.conf, si effettua la configurazione di Apache nel file /etc/apache2/sites-available/matrix.example.org.conf:

<VirtualHost *:80>
    ServerName matrix.example.org
    SSLEngine off
    DocumentRoot /var/www/html
    ServerAdmin webmaster@example.org
    ErrorLog ${APACHE_LOG_DIR}/matrix.example.org/error.log
    CustomLog ${APACHE_LOG_DIR}/matrix.example.org/access.log combined
    # Redirect everything to https, except /.well-known/ directory.
    RedirectMatch permanent ^/((?!\.well-known).*)$ https://matrix.example.org/$1
</VirtualHost>
<VirtualHost *:443 *:8448>
    ServerName matrix.example.org
    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/matrix.example.org/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/matrix.example.org/privkey.pem
    ServerAdmin webmaster@example.org
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/matrix.example.org/error.log
    CustomLog ${APACHE_LOG_DIR}/matrix.example.org/access.log combined
    # HTTP Matrix Synapse  
    ProxyPass / http://127.0.0.1:8008/ nocanon
    ProxyPassReverse / http://127.0.0.1:8008/
</VirtualHost>

La direttiva nocanon è indispensabile, senza di essa abbiamo riscontrato il seguente errore quando si è cercato di accettare la richiesta di messaggio diretto da parte di un utente registrato su matrix.org:

SynapseError: 401 - Invalid signature for server matrix.org with key ed25519:a_RXGa:
Unable to verify signature for matrix.org:
<class 'nacl.exceptions.BadSignatureError'> Signature was forged or corrupt

Creazione di un account

Si deve creare prima un account amministratore:

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
New user localpart [root]: niccolo
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success!

Debug

Verificare quale versione del software è in esecuzione sul server:

curl https://matrix.example.org/_matrix/federation/v1/version

Abilitare le notifiche email

Nella app Element si prova a configurare il proprio indirizzo email da ImpostazioniGeneraliEmail e numeri di telefono. Quando si aggiunge una email - se le notifiche email sono disattivate sul server - si ottiene l'errore:

Adding an email to your account is disabled on this server

La configurazione in /etc/matrix-synapse/homeserver.yaml deve contenere tutto il necessario, altrimenti:

ERROR: Password reset emails are enabled on this homeserver due to a partial
'email' block. However, the following required keys are missing:
    public_baseurl

Test dal client web riot.im

Si visita la pagina https://riot.im/app/#/login

Other homeserver https://matrix.example.org
Username
Password

Installazione della app Element

Il client più utilizzato per accedere alla messaggistica Matrix è Element, esiste per piattaforma Android e iOS, ma esiste anche in versione desktop per Windows e Mac OS.

La versione Android, essendo un programma libero ed open source, è scaricabile sia dal Google Play che da repository alternativi come F-Droid. Fra le due versioni c'è una sostanziale differenza sia in termini di dimensione (circa 22 Mb per la versione Google Play, 50 Mb per la versione F-Droid), sia in termini di funzionalità; la versione Google Play infatti utilizza i servizi Google per la gestione delle notifiche, ottimizzando il traffico e la gestione della batteria a discapito della libertà: infatti è necessario avere un account Google attivo per utilizzarla.

Web References

doc/appunti/linux/sa/matrix.1610968747.txt.gz · Last modified: by niccolo