Autore: Fabio Di Matteo
Ultima revisione: 19/09/2022 - 10:23
Configurazione di un piccolo server di messaggistica completo di tutte le caratteristiche moderne più usate. Ovvero:
Lato server
Software | Descrizione |
---|---|
Prosody | Server xmpp |
Prosody mod_turncredentials | Fornisce l'accesso di prosody al server Turn |
Prosody mod_http_file_share | Permette la condivisione di media tra gli utenti |
Coturn | server turn per le chiamate Audio/Video |
Lato client
Software | Descrizione |
---|---|
Blabber.im | app per android che supporta che le chat xmpp |
Server Hardware:Raspberry Pi 1 SO: Arch Linux Arm
Creiamo i chiave privata e certificati per le connessioni cifrate. Dobbiamo creare 2 certificati uno per xmpp e l'altro per https (media sharing):
xmpp
cd /etc/prosody/certs/ openssl genrsa -out prosody.key 4096 openssl req -new -sha256 -key prosody.key -out prosody.csr openssl x509 -req -sha256 -days 3650 -in prosody.csr -signkey prosody.key -out prosody.crt
https
cd /etc/prosody/certs/ openssl genrsa -out prosody_https.key 4096 openssl req -new -sha256 -key prosody_https.key -out prosody_https.csr openssl x509 -req -sha256 -days 3650 -in prosody_https.csr -signkey prosody_https.key -out prosody_https.crt
Configuriamo il Virtual host:
VirtualHost "mioserver.it" key = "/etc/prosody/certs/prosody.key"; certificate = "/etc/prosody/certs/prosody.crt";
Abilitiamo il web server integrato.Ci servira' per far funzionare la componente http_file_share .Prima di VirtualHost, nella parte serer-wide aggiungiamo:
http_host = "upload.mioserver.it" https_ports = { 5281 } https_interfaces = { "*" } https_ssl = { certificate = "/etc/prosody/certs/prosody_https.crt"; key = "/etc/prosody/certs/prosody_https.key"; };
Abilitiamo il support a Coturn. Prima di VirtualHost, nella parte serer-wide aggiungiamo:
turncredentials_host = "turn.mioserver.it" turncredentials_secret="chiavestaticacoturn"
Abilitiamo la condivisione di media con mod_http_file_share, dopo la sezione VirtualHost inseriamo le righe:
Component "upload.mioserver.it" "http_file_share" http_file_share_size_limit = 160*1024*1024 -- 160 MiB http_file_share_access = { "mioserver.it", -- anyone with a @example.org address }
listening-port=3478 min-port=64739 max-port=65535 log-file=/var/log/turnserver/turn.log pidfile=/run/turnserver/turnserver.pid realm=turn.mioserver.it server-name=turn.mioserver.it use-auth-secret static-auth-secret=chiavestaticacoturn listening-ip=0.0.0.0 external-ip=mioserver.it
Le porte da inoltrare verso l'ip del server all'interno della rete locale.
Porta | Protocollo | Descrizione |
---|---|---|
5222 | tcp | Xmpp server |
5269 | tcp | Xmpp server connessioni esterne |
5280 | tcp | Web server integrato usato per mod_http_file_share non cifrato |
5281 | tcp | Web server integrato usato per mod_http_file_share cifrato |
3478 | udp e tcp | Coturn |
da 64739 a 65535 | udp | porte usate da coturn per le connessioni |
Alcuni client di messaggistica non permettono di utilizzare i nostri certificati autofirmati. Possiamo però aggiungerli a livello di sistema con i seguenti comandi.
Gnu/Linux:
Ubuntu
sudo cp prosody.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
sudo cp prosody_https.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates