Barra laterale

rete:xmpp:prosody_simple

Un server messaggistica instantanea XMPP per uso privato

Autore: Fabio Di Matteo
Ultima revisione: 10/11/2021 - 09:56

Configurazione di un piccolo server di messaggistica completo di tutte le caratteristiche moderne più usate. Ovvero:

  • Connessioni cifrate mediante certificato;
  • Cifratura End to End tramite OMEMO (via client Blabber.im)
  • Condivisioni di contenuti multimediali come immaggini, video, audio, posizione, file;
  • Chiamate Audio/Video;

Software utilizzati

Lato server

SoftwareDescrizione
ProsodyServer xmpp
Prosody mod_turncredentialsFornisce l'accesso di prosody al server Turn
Prosody mod_http_file_sharePermette la condivisione di media tra gli utenti
Coturn server turn per le chiamate Audio/Video

Lato client

SoftwareDescrizione
Blabber.im app per android che supporta che le chat xmpp

Server Hardware:Raspberry Pi 1 SO: Arch Linux Arm

Configuriamo Prosody

Creiamo i chiave privata e certificati per le connessioni cifrate:

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

Configuriamo il Virtual host:

VirtualHost "mioserver.it"
        
	http_host = "mioserver.it"
	
	--presume che esista anche /etc/prosody/certs/prosody.key (Chiave privata)
        certificate = "/etc/prosody/certs/prosody.crt"; 
    

Abilitiamo il support a Coturn:

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
}

Configuriamo Coturn

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

Porte da inoltrare nel modem/router

Le porte da inoltrare verso l'ip del server all'interno della rete locale.

PortaProtocolloDescrizione
5222tcpXmpp server
5269tcpXmpp server connessioni esterne
5280tcpProsody mod_http_file_share
5281tcpProsody eventuale web server esterno (non usato)
3478udp e tcpCoturn
da 64739 a 65535udpporte usate da coturn per le connessioni
Inoltre occorre associare tutti i domini di 4 livello associati all'host. Qualora non lo fossero gia'. In modo tale che <qualunquecosa>.mioserver.it punti sempre all'ip pubblico del nostro server. Ci serve per abilitare i servizi come conference.mioserver.it, upload.mioserver.it, turn.mioserver.it etc…

rete/xmpp/prosody_simple.txt · Ultima modifica: 12/11/2021 - 10:54 da Fabio Di Matteo