User Tools

Site Tools


doc:appunti:linux:sa:matrix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
doc:appunti:linux:sa:matrix [2021/01/21 09:04] – [Farsi trovare] niccolodoc:appunti:linux:sa:matrix [2024/03/27 15:05] niccolo
Line 71: Line 71:
  
 Ciò significa che **ogni utente** di questo nodo Matrix dovrà essere **creato dall'amministratore**. In alternativa è possibile avere l'auto-registrazione, come viene offerta ad esempio dal nodo di riferimento **matrix.org**. Ciò significa che **ogni utente** di questo nodo Matrix dovrà essere **creato dall'amministratore**. In alternativa è possibile avere l'auto-registrazione, come viene offerta ad esempio dal nodo di riferimento **matrix.org**.
- 
  
 ==== Ottenere i certificati SSL/TLS da Let's Encrypt ==== ==== Ottenere i certificati SSL/TLS da Let's Encrypt ====
Line 138: Line 137:
  
 Con la configurazione vista sopra, chiamando l'URL **%%http://matrix.example.org/%%**, si viene rediretti prima verso il protocollo HTTPS e quindi al percorso **%%https://matrix.example.org/_matrix/static/%%**. A questo URL c'è semplicemente un messaggio che avvisa dell'homeserver Synapse in esecuzione e invita ad **installare un client**. Con la configurazione vista sopra, chiamando l'URL **%%http://matrix.example.org/%%**, si viene rediretti prima verso il protocollo HTTPS e quindi al percorso **%%https://matrix.example.org/_matrix/static/%%**. A questo URL c'è semplicemente un messaggio che avvisa dell'homeserver Synapse in esecuzione e invita ad **installare un client**.
 +
 ==== Alternativa: matrix-synapse senza reverse proxy ==== ==== Alternativa: matrix-synapse senza reverse proxy ====
  
Line 154: Line 154:
 <code> <code>
 openssl dhparam -out /etc/matrix-synapse/homeserver.tls.dh 2048 openssl dhparam -out /etc/matrix-synapse/homeserver.tls.dh 2048
-</code> 
- 
-==== Creazione di un account ==== 
- 
-Avendo disabilitato l'auto-registrazione, si deve creare manualmente il primo **account**, essendo il primo esistente lo faremo di tipo **amministratore**. Useremo il comando **register_new_matrix_user**, che però richiede la seguente opzione nel file di configurazione: 
- 
-<file> 
-registration_shared_secret: MySecret 
-</file> 
- 
-Eseguendo il comando successivo sulla stessa macchina, non è necessario digitare tale password; questa verrà letta direttamente dal file yaml: 
- 
-<code> 
-register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008 
-</code> 
- 
-<code> 
-New user localpart [root]: niccolo 
-Password: 
-Confirm password: 
-Make admin [no]: yes 
-Sending registration request... 
-Success! 
 </code> </code>
  
Line 189: Line 166:
  
 Gli utenti del nostro nodo saranno conosciuti alla federazione con il nome **%%@username:matrix.example.org%%**. Gli utenti del nostro nodo saranno conosciuti alla federazione con il nome **%%@username:matrix.example.org%%**.
 +
 ==== Debug ==== ==== Debug ====
  
Line 257: Line 235:
   - Nella app è possibile adesso tappare il pulsante **prosegui**.   - Nella app è possibile adesso tappare il pulsante **prosegui**.
   - Per ulteriore conferma è necessario **immettere la propria password** dell'account Matrix.   - Per ulteriore conferma è necessario **immettere la propria password** dell'account Matrix.
 +
 +===== Gestione utenti =====
 +
 +==== Creazione di un account ====
 +
 +Avendo disabilitato l'auto-registrazione, si deve creare manualmente il primo **account**, essendo il primo esistente lo faremo di tipo **amministratore**. Useremo il comando **register_new_matrix_user**, che però richiede la seguente opzione nel file di configurazione:
 +
 +<file>
 +registration_shared_secret: MySecret
 +</file>
 +
 +Eseguendo il comando successivo sulla stessa macchina, non è necessario digitare tale password; questa verrà letta direttamente dal file yaml:
 +
 +<code>
 +register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
 +</code>
 +
 +<code>
 +New user localpart [root]: niccolo
 +Password:
 +Confirm password:
 +Make admin [no]: yes
 +Sending registration request...
 +Success!
 +</code>
 +
 +==== Reset password ====
 +
 +Generare un nuovo hash con il tool **hash_password** (incluso nel pacchetto Debian **matrix-synapse**):
 +
 +<code>
 +hash_password -p MySecret
 +$2b$12$6Q.zARcyW0nnRzmmo8d1H.NblSGbj309lBevr/1kiGmtE0FFJGP0S
 +</code>
 +
 +Collegarsi al database di backend, individuare l'utente e modificare la tabella:
 +
 +<code sql>
 +SELECT name FROM users;
 +SET password_hash='$2b$12$6Q.zARcyW0nnRzmmo8d1H.NblSGbj309lBevr/1kiGmtE0FFJGP0S' 
 +WHERE name='@niccolo:matrix.rigacci.org';
 +</code>
  
 ===== Test dal client web riot.im ===== ===== Test dal client web riot.im =====
Line 305: Line 325:
 Oltre alla **app Element** per Android e iOS, esiste anche un **client basato su web**, si tratta di **[[https://matrix.org/docs/projects/client/element|Element Web]]** (chiamato in precedenza //Riot// oppure //riot-web//), scaricabile dal **[[https://github.com/vector-im/element-web|repository GitHub]]**. È possibile installarlo sul proprio server web oppure utilizzare l'istanza presente su **[[https://app.element.io/]]**. Oltre alla **app Element** per Android e iOS, esiste anche un **client basato su web**, si tratta di **[[https://matrix.org/docs/projects/client/element|Element Web]]** (chiamato in precedenza //Riot// oppure //riot-web//), scaricabile dal **[[https://github.com/vector-im/element-web|repository GitHub]]**. È possibile installarlo sul proprio server web oppure utilizzare l'istanza presente su **[[https://app.element.io/]]**.
  
 +**ATTENZIONE**: Effettuare il **logout** dal client web può essere operazione pericolosa se non si salva la **Security Key** (chiamata anche **recovery key**), infatti le chiavi crittografiche vivono nella sessione del browser e vengono perse se si chiude la sessione. Si deve fare una copia della **Security Key** per poter recuperare tutte le chat passate. Quando si effettua un **nuovo login** verrà chiesta la Security Key per sbloccare le vecchie chat, in alternativa, se abbiamo un altro client correttamente connesso, sarà possibile autorizzare il nostro accesso dalla sessione sull'altro client.
 +
 +===== Migrazione da SQLite a Postgres =====
 +
 +L'installazione predefinita di **matrix-synapse** in Debian utilizza un database SQLite3 (file **/var/lib/matrix-synapse/homeserver.db**). Le **[[https://matrix.org/blog/2019/12/13/synapse-1-7-0-released|note di rilascio per la versione 1.7.0]]** suggeriscono di migrare a Postgres per motivi di prestazioni, soprattutto se si partecipa alla federazione Matrix. Esistono delle opportune **[[https://github.com/matrix-org/synapse/blob/v1.7.0/docs/postgres.md|istruzioni per utilizzare Postgres]]**. Le istruzioni qui riportate sono semplificate leggermente diverse per adeguarsi all'ambiente Debian.
 +
 +Verificate che siano installati i pacchetti Debian:
 +
 +  * **postgresql** - Object-relational SQL database
 +  * **python3-psycopg2** - Python 3 module for PostgreSQL
 +  * **libpq5** - PostgreSQL C client library
 +
 +Cambiare utente in **postgres** ed eseguire nella shell **psql** i seguenti comandi SQL:
 +
 +<code sql>
 +CREATE USER synapse_user PASSWORD 'MyDbSecret';
 +CREATE DATABASE synapse
 +    ENCODING 'UTF8'
 +    LC_COLLATE='C'
 +    LC_CTYPE='C'
 +    template=template0
 +    OWNER synapse_user;
 +</code>
 +
 +Nel file di configurazione **/etc/matrix-synapse/homeserver.yaml** deve esserci il parametro **server_name**, che invece con l'installazione Debian **non c'è** (pacchetto matrix-synapse versione **1.24.0-1~bpo10+1**). Per eseguire lo script **synapse_port_db** è indispensabile aggiungerlo:
 +
 +<file>
 +server_name: "matrix.example.org"
 +</file>
 +
 +Preparare una nuova versione del file di configurazione **/etc/matrix-synapse/homeserver.pg.yaml** dove cambia solo la sezione **database**:
 +
 +<file>
 +# Database configuration
 +database:
 +  name: "psycopg2"
 +  args:
 +    user: synapse_user
 +    password: MyDbSecret
 +    database: synapse
 +    host: 127.0.0.1
 +    cp_min: 5
 +    cp_max: 10
 +</file>
 +
 +Spostarsi nella directory **/var/lib/matrix-synapse/** ed eseguire i sequenti comandi:
 +
 +<code bash>
 +#!/bin/sh -xe
 +cd /var/lib/matrix-synapse
 +systemctl stop matrix-synapse.service
 +synapse_port_db \
 +    --sqlite-database /var/lib/matrix-synapse/homeserver.db \
 +    --postgres-config /etc/matrix-synapse/homeserver.pg.yaml
 +mv /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.bak
 +mv /etc/matrix-synapse/homeserver.pg.yaml /etc/matrix-synapse/homeserver.yaml
 +systemctl start matrix-synapse.service
 +</code>
 +
 +La nostra ricetta semplificata **tiene fermo il servizio Matrix per tutto il tempo della migrazione**. Con database di una certa dimensione questa operazione potrebbe richiedere diversi minuti; vedere le **[[https://github.com/matrix-org/synapse/blob/v1.7.0/docs/postgres.md|istruzioni originali]]** per un metodo che esegue la migrazione in due o tre **passaggi incrementali**.
  
 ===== Web References ===== ===== Web References =====
doc/appunti/linux/sa/matrix.txt · Last modified: 2024/04/15 16:46 by niccolo