doc:appunti:linux:sa:matrix
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:linux:sa:matrix [2021/01/19 10:44] – [Installazione della app Element] niccolo | doc:appunti:linux:sa:matrix [2024/04/15 14:46] (current) – [Test dal client web riot.im] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Matrix Messenger ====== | ====== Matrix Messenger ====== | ||
- | Come installare un server per la messaggistica | + | {{ .: |
+ | **[[https:// | ||
- | Il ruolo di un server Matrix è quello di **memorizzare le chat personali** di un utente e le **informazioni dell' | + | Il server di riferimento sviluppato da Matrix per la propria piattaforma è **Matrix Synapse**. Si tratta di una implementazione adeguata ad eseguire un **home server**. Queste sono le caratteristiche della nostra installazione: |
- | + | ||
- | Il server di riferimento sviluppato da Matrix per la propria piattaforma è **Matrix Synapse**. Si tratta di una implementazione adeguata ad eseguire un **home server**. | + | |
- | + | ||
- | Queste sono le caratteristiche della nostra installazione: | + | |
* Installazione di un server sotto un nome di dominio, esempio **matrix.example.org**. | * Installazione di un server sotto un nome di dominio, esempio **matrix.example.org**. | ||
Line 74: | Line 71: | ||
Ciò significa che **ogni utente** di questo nodo Matrix dovrà essere **creato dall' | Ciò significa che **ogni utente** di questo nodo Matrix dovrà essere **creato dall' | ||
- | |||
==== Ottenere i certificati SSL/TLS da Let's Encrypt ==== | ==== Ottenere i certificati SSL/TLS da Let's Encrypt ==== | ||
Line 141: | Line 137: | ||
Con la configurazione vista sopra, chiamando l'URL **%%http:// | Con la configurazione vista sopra, chiamando l'URL **%%http:// | ||
+ | |||
==== Alternativa: | ==== Alternativa: | ||
Line 157: | Line 154: | ||
< | < | ||
openssl dhparam -out / | openssl dhparam -out / | ||
- | </ | ||
- | |||
- | ==== Creazione di un account ==== | ||
- | |||
- | Avendo disabilitato l' | ||
- | |||
- | < | ||
- | registration_shared_secret: | ||
- | </ | ||
- | |||
- | Eseguendo il comando successivo sulla stessa macchina, non è necessario digitare tale password; questa verrà letta direttamente dal file yaml: | ||
- | |||
- | < | ||
- | register_new_matrix_user -c / | ||
- | </ | ||
- | |||
- | < | ||
- | New user localpart [root]: niccolo | ||
- | Password: | ||
- | Confirm password: | ||
- | Make admin [no]: yes | ||
- | Sending registration request... | ||
- | Success! | ||
</ | </ | ||
==== Configurazione del DNS ==== | ==== Configurazione del DNS ==== | ||
- | Per far funzionare la federazione tra server Matrix | + | Dopo aver scelto il nome del nostro homeserver |
< | < | ||
+ | matrix | ||
_matrix._tcp | _matrix._tcp | ||
</ | </ | ||
- | Gli utenti del nostro nodo saranno conosciuti alla federazione con il nome **%%@username: | + | Gli utenti del nostro nodo saranno conosciuti alla federazione con il nome **%%@username: |
==== Debug ==== | ==== Debug ==== | ||
Line 259: | 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' | - Per ulteriore conferma è necessario **immettere la propria password** dell' | ||
+ | |||
+ | ===== Gestione utenti ===== | ||
+ | |||
+ | ==== Creazione di un account ==== | ||
+ | |||
+ | Avendo disabilitato l' | ||
+ | |||
+ | < | ||
+ | registration_shared_secret: | ||
+ | </ | ||
+ | |||
+ | Eseguendo il comando successivo sulla stessa macchina, non è necessario digitare tale password; questa verrà letta direttamente dal file yaml: | ||
+ | |||
+ | < | ||
+ | register_new_matrix_user -c / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | New user localpart [root]: niccolo | ||
+ | Password: | ||
+ | Confirm password: | ||
+ | Make admin [no]: yes | ||
+ | Sending registration request... | ||
+ | Success! | ||
+ | </ | ||
+ | |||
+ | ==== Reset password ==== | ||
+ | |||
+ | Generare un nuovo hash con il tool **hash_password** (incluso nel pacchetto Debian **matrix-synapse**): | ||
+ | |||
+ | < | ||
+ | hash_password -p MySecret | ||
+ | $2b$12$6Q.zARcyW0nnRzmmo8d1H.NblSGbj309lBevr/ | ||
+ | </ | ||
+ | |||
+ | Collegarsi al database di backend, individuare l' | ||
+ | |||
+ | <code sql> | ||
+ | SELECT name FROM users; | ||
+ | SET password_hash=' | ||
+ | WHERE name=' | ||
+ | </ | ||
===== Test dal client web riot.im ===== | ===== Test dal client web riot.im ===== | ||
Line 265: | Line 283: | ||
^ Other homeserver | ^ Other homeserver | ||
- | ^ Username | + | ^ Username |
^ Password | ^ Password | ||
+ | |||
+ | Una sessione avviata in questa pagina web può essere anche verificata (passare da //Not trusted// a // | ||
+ | |||
+ | In generale, se si effettua la disconnessione dal client web di Element, la sessione viene distrutta. I nostri interlocutori dovrebbero vederla scomparire immediatamente dall' | ||
===== Installazione della app Element ===== | ===== Installazione della app Element ===== | ||
Line 273: | Line 295: | ||
La versione **Android**, | La versione **Android**, | ||
+ | |||
+ | ===== Security key ===== | ||
+ | |||
+ | Un account Matrix è costituito da un **login** e una **password**, | ||
===== Perdita della password ===== | ===== Perdita della password ===== | ||
Line 283: | Line 309: | ||
* Se a suo tempo abbiamo salvato il **codice di decifrazione**, | * Se a suo tempo abbiamo salvato il **codice di decifrazione**, | ||
+ | ===== Verifica identità ===== | ||
+ | |||
+ | {{.: | ||
+ | In una chat di messaggi diretti, quando la **crittografia end-to-end** è attiva, compare il simbolo di uno **scudo nero** sopra l' | ||
+ | |||
+ | {{.: | ||
+ | La via più semplice è **lo scambio di un codice QR in presenza fisica**. Per farlo è sufficiente che uno dei due interlocutori faccia tap sull' | ||
+ | |||
+ | ===== Farsi trovare ===== | ||
+ | |||
+ | Un **sistema di directory** (elenco) consente di cercare e trovare l'ID Matrix di una persona a partire dall' | ||
+ | |||
+ | In maniera analoga è possibile pubblicare sull' | ||
+ | |||
+ | **ATTENZIONE**: | ||
+ | |||
+ | ===== Client web ===== | ||
+ | |||
+ | Oltre alla **app Element** per Android e iOS, esiste anche un **client basato su web**, si tratta di **[[https:// | ||
+ | |||
+ | **ATTENZIONE**: | ||
+ | |||
+ | ===== Migrazione da SQLite a Postgres ===== | ||
+ | |||
+ | L' | ||
+ | |||
+ | 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 ' | ||
+ | CREATE DATABASE synapse | ||
+ | ENCODING ' | ||
+ | LC_COLLATE=' | ||
+ | LC_CTYPE=' | ||
+ | template=template0 | ||
+ | OWNER synapse_user; | ||
+ | </ | ||
+ | |||
+ | Nel file di configurazione **/ | ||
+ | |||
+ | < | ||
+ | server_name: | ||
+ | </ | ||
+ | |||
+ | Preparare una nuova versione del file di configurazione **/ | ||
+ | |||
+ | < | ||
+ | # Database configuration | ||
+ | database: | ||
+ | name: " | ||
+ | args: | ||
+ | user: synapse_user | ||
+ | password: MyDbSecret | ||
+ | database: synapse | ||
+ | host: 127.0.0.1 | ||
+ | cp_min: 5 | ||
+ | cp_max: 10 | ||
+ | </ | ||
+ | |||
+ | Spostarsi nella directory **/ | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/sh -xe | ||
+ | cd / | ||
+ | systemctl stop matrix-synapse.service | ||
+ | synapse_port_db \ | ||
+ | --sqlite-database / | ||
+ | --postgres-config / | ||
+ | mv / | ||
+ | mv / | ||
+ | systemctl start matrix-synapse.service | ||
+ | </ | ||
+ | |||
+ | 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:// | ||
===== Web References ===== | ===== Web References ===== |
doc/appunti/linux/sa/matrix.txt · Last modified: 2024/04/15 14:46 by niccolo