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 [2022/04/18 15:25] – [Creazione di un account] niccolo | doc:appunti:linux:sa:matrix [2026/09/15 12:02] (current) – [Avvio del container Docker] niccolo | ||
|---|---|---|---|
| Line 71: | 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 138: | Line 137: | ||
| Con la configurazione vista sopra, chiamando l'URL **%%http:// | Con la configurazione vista sopra, chiamando l'URL **%%http:// | ||
| + | |||
| ==== Alternativa: | ==== Alternativa: | ||
| Line 155: | Line 155: | ||
| 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! | ||
| - | </ | ||
| - | |||
| - | ==== 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=' | ||
| - | </ | ||
| - | |||
| ==== Configurazione del DNS ==== | ==== Configurazione del DNS ==== | ||
| Line 207: | Line 166: | ||
| 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 275: | 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 281: | 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 383: | Line 389: | ||
| 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:// | 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:// | ||
| + | |||
| + | ===== Synapse in container Docker ===== | ||
| + | |||
| + | Per sapere la **versione** di Synapse contenuta in una **immagine Docker** (il container viene creato e subito dopo rimosso): | ||
| + | |||
| + | < | ||
| + | docker run --rm \ | ||
| + | --entrypoint python \ | ||
| + | matrixdotorg/ | ||
| + | -c ' | ||
| + | 1.159.0 | ||
| + | </ | ||
| + | |||
| + | Se invece Synapse è eseguito in un **virtual environment Python**: | ||
| + | |||
| + | < | ||
| + | / | ||
| + | >>> | ||
| + | >>> | ||
| + | 1.155.0 | ||
| + | </ | ||
| + | |||
| + | ===== Migrazione da virtual environment Python a container Docker ===== | ||
| + | |||
| + | Gli oggetti da migrare sono: | ||
| + | |||
| + | * Directory **/ | ||
| + | * Directory **/ | ||
| + | * PostgreSQL database **synapse** e relativo utente. | ||
| + | * Configurazione **reverse proxy** Apache. | ||
| + | * **Nome a dominio** nel DNS. | ||
| + | |||
| + | Sulla macchina destinazione NON si esegue la configurazione iniziale, ma si crea il named volume che conterrà i file di configurazione e il media_store: | ||
| + | |||
| + | < | ||
| + | docker volume create synapse-data | ||
| + | </ | ||
| + | |||
| + | Viene creata la directory **/ | ||
| + | |||
| + | Nella radice di tale volume si devono copiare i file dalla vecchia installazione: | ||
| + | |||
| + | * **homeserver.yaml** | ||
| + | * **homeserver.signing.key** | ||
| + | * **log.yaml** | ||
| + | |||
| + | È consigliabile rinominare il file **homeserver.signing.key** usando il **SYNAPSE_SERVER_NAME**, | ||
| + | |||
| + | Si devono copiare anche il media store e la directory uploads originali nella radice del volume Docker, con questo mapping: | ||
| + | |||
| + | * **/ | ||
| + | * **/ | ||
| + | |||
| + | I parametri che è necessario aggiustare nel file homeserver.yaml sono: | ||
| + | |||
| + | < | ||
| + | log_config: "/ | ||
| + | media_store_path: | ||
| + | uploads_path: | ||
| + | signing_key_path: | ||
| + | bind_addresses: | ||
| + | - ' | ||
| + | database: | ||
| + | name: " | ||
| + | args: | ||
| + | ... | ||
| + | host: host.docker.internal | ||
| + | port: 5432 | ||
| + | </ | ||
| + | |||
| + | Sulla macchina origine si esegue il dump del database: | ||
| + | |||
| + | < | ||
| + | su - postgres -c " | ||
| + | > synapse-$(hostname)-$(date +%Y-%m-%d).dump | ||
| + | </ | ||
| + | |||
| + | Quindi sulla macchina destinazione si esegue il restore: | ||
| + | |||
| + | |||
| + | ==== Permessi ==== | ||
| + | |||
| + | Verificare che i file di configurazione siano leggibili solo dall' | ||
| + | |||
| + | < | ||
| + | cd / | ||
| + | chown 991:991 homeserver.yaml homeserver.signing.key | ||
| + | chmod 0600 homeserver.yaml homeserver.signing.key | ||
| + | </ | ||
| + | |||
| + | FIXME Anche il media_store e la directory uploads devono essere sistemate. | ||
| + | |||
| + | ==== Avvio del container Docker ==== | ||
| + | |||
| + | === Istruzioni generiche === | ||
| + | |||
| + | Le [[https:// | ||
| + | |||
| + | < | ||
| + | docker run -it --rm \ | ||
| + | --mount type=volume, | ||
| + | -e SYNAPSE_SERVER_NAME=my.matrix.host \ | ||
| + | -e SYNAPSE_REPORT_STATS=yes \ | ||
| + | matrixdotorg/ | ||
| + | </ | ||
| + | |||
| + | Questa prima esecuzione rimuove il container subito dopo averlo creato per via dell' | ||
| + | |||
| + | Successivamente si crea il container definitivo, che conterrà l' | ||
| + | |||
| + | < | ||
| + | docker run -d --name synapse \ | ||
| + | --mount type=volume, | ||
| + | -p 8008:8008 \ | ||
| + | matrixdotorg/ | ||
| + | </ | ||
| + | |||
| + | Tale container usa lo stesso volume creato in precedenza (e quindi la configurazione in esso contenuta) e resta in esecuzione. Si possono usare i comandi docker standard per far sì che il container venga avviato automaticamente al bootstrap della macchina, ecc. | ||
| + | |||
| + | === Istruzioni specifiche per la migrazione === | ||
| + | |||
| + | FIXME | ||
| ===== Web References ===== | ===== Web References ===== | ||
doc/appunti/linux/sa/matrix.1650288350.txt.gz · Last modified: by niccolo
