Indice
Installazione Server Ejabberd
ATTENZIONE! Questa guida è la traduzione dell'originale di Denshi e non è stata testata dai traduttori.
Ejabberd è un server per il protocollo XMPP scritto in Erlang. È più scalabile e più facile da impostare di Prosody per il fatto che la maggior parte dei suoi moduli sono integrati e preconfigurati in automatico.
Prerequisiti
Porte richieste: 5000, 5222, 5269, 5280, 5281
Sottodomini
Ejabberd presuppone che tu abbia già creato tutti i sottodomini richiesti e opzionali per il suo uso prima di eseguirlo.
A seconda dell'utilizzo, potresti aver bisogno di alcuni o tutti i seguenti domini per le funzionalità di XMPP:
- esempio.org - Il tuo hostname XMPP
- conference.esempio.org - Per
mod_muc
, Multi User Chats (MUC) - upload.esempio.org - Per
mod_http_upload
, il supporto ai file - proxy.esempio.org - Per
mod_proxy65
, il supporto al proxy SOCKS5 - pubsub.esempio.org - Per
mod_pubsub
, il supporto a pubblica-sottoscrivi (Un RSS più sofisticato)
Il solo dominio esempio.org è richiesto per l'uso di base, di chat privata. Se non desideri usare un certo dominio, disabilita semplicemente il modulo associato e ejabberd non avrà problemi quando non riuscirà a trovare il suo certificato associato. Per esempio, se non vuoi il supporto Publish-Subscribe, semplicemente commenta la configurazione mod_pubsub
in /opt/ejabberd/ejabberd.yml
:
## mod_pubsub: ## access_createnode: pubsub_createnode ## plugins: ## - flat ## - pep ## force_node_config: ## ## Avoid buggy clients to make their bookmarks public ## storage:bookmarks: ## access_model: whitelist
Questa guida presuppone che tutti questi sottodomini siano stati creati.
Sottodomini Personalizzati
Se vuoi personalizzare qualcuno di questi domini, modifica /opt/ejabberd/conf/ejabberd.yml
e sotto ogni apposito modulo che necessita un sottodominio aggiungi la seguente impostazione:
mod_muc: host: muc.esempio.org
Installazione
Per ottenere l'ultima versione di ejabberd, devi prima aggiungere i repository di ejabberd:
curl -o /etc/apt/sources.list.d/ejabberd.list https://repo.process-one.net/ejabberd.list curl -o /etc/apt/trusted.gpg.d/ejabberd.gpg https://repo.process-one.net/ejabberd.gpg
Quindi aggiorna i repo e installa il pacchetto ejabberd
:
apt update apt install ejabberd
Configurazione
Il server ejabberd è configurato in /opt/ejabberd/conf/ejabberd/ejabberd.yml
. Le modifiche vengono applicate solo riavviando il demone ejabberd in systemd:
systemctl restart ejabberd
Hostname
L' hostname XMPP è specificato nella sezione hosts
di ejabberd.yml
:
hosts: - esempio.org
Certificati
A differenza di Prosody, ejabberd non è equipaggiato di uno script che può automaticamente copiare i relativi certificati in una cartella dove l'utente ejabberd possa leggerli.
Un modo di organizzare i certificati per ejabberd è di averli conservati in /opt/ejabberd/certs
, una cartella separata per ogni dominio con sia la chiave privata sia la fullchain.
Prima di continuare, crea la relativa cartella:
mkdir -p /opt/ejabberd/certs
Usando certbot, questo processo può essere facilmente automatizzato con questi comandi:
DOMAIN=esempio.org # Imposta qui i nomi dominio che vuoi declare -a subdomains=("" "conference." "proxy." "pubsub." "upload.") for i in "${subdomains[@]}"; do certbot --nginx -d $i$DOMAIN certonly mkdir -p /opt/ejabberd/certs/$i$DOMAIN cp /etc/letsencrypt/live/$i$DOMAIN/fullchain.pem /opt/ejabberd/certs/$i$DOMAIN/ cp /etc/letsencrypt/live/$i$DOMAIN/privkey.pem /opt/ejabberd/certs/$i$DOMAIN/ done
Nota: proprio come con Prosody, si può scrivere questo script in un file e impostare un server/cron|cronjob per lanciarlo periodicamente. Questo dovrebbe aiutare a prevenire che i certificati scadano.
Assicurati che tutti i certificati siano leggibili dall'utente ejabberd
:
chown -R ejabberd:ejabberd /opt/ejabberd/certs
Per abilitare l'uso di tutti questi certificati in ejabberd, è necessaria la seguente configurazione :
certfiles: - "/opt/ejabberd/certs/*/*.pem";
Amministratore
L' utente amministratore può essere specificato in ejabberd.yml
sotto la sezione acl
:
acl: admin: user: admin
Questo dovrebbe rendere admin@esempio.org
l'utente con privilegi di amministratore.
Caricare i File
Per assicurare la completa conformità agli standard XMPP, aggiungi la seguente configurazione a mod_http_upload
:
mod_http_upload: put_url: https://@HOST@:5443/upload docroot: /var/www/upload custom_headers: "Access-Control-Allow-Origin": "https://@HOST@" "Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS" "Access-Control-Allow-Headers": "Content-Type"
Assicurati di creare e di render proprietario l'utente ejabberd
di /var/www/upload
o di ogni altra cartella che intendi usare per caricare i file:
chown -R ejabberd:ejabberd /var/www/upload
Archivio Messaggi
Il server ejabberd supporta l'archiviazione dei messaggi attraverso il suo modulo mod_mam
. Questo può essere abilitato decommentando le seguenti linee:
mod_mam: assume_mam_usage: true default: always</pre>
Database
Perché usare un database?
Possiamo trovare il seguente commento nella sezione 'mod_mam
di ejabberd.yml
:
mod_mam: ## Mnesia is limited to 2GB, better to use an SQL backend ## For small servers SQLite is a good fit and is very easy ## to configure. Uncomment this when you have SQL configured: ## db_type: sql
Come questi commenti suggeriscono, un SQL backend è fortemente raccomandato se vuoi usare il tuo server ejabberd per qualunque cosa più che un semplice test. Ejabberd supporta MySQL, SQLite e PostgreSQL. Ai fini dell' efficienza, questa guida utilizzerà PostgresSQL perché altri server come ad esempio Matrix e PeerTube lo supportano.
Installare PostgreSQL
PostgreSQL è reperibile nei repository Debian:
apt install postgresql
In aggiunta, dovrai installare i relativi driver per Erlang, (headers nell'originale, N.d.T.) il linguaggio in cui ejabberd è scritto, così puoi effettivamente interagire col server PostgreSQL:
apt install erlang-p1-pgsql
Lancia il demone PostgreSQL per cominciare ad usarlo:
systemctl start postgresql
Creare il Database
Per creare il database, prima crea un utente PostgreSQL per ejabberd:
su -c "createuser --pwprompt ejabberd" postgres
Quindi, crea il database e rendi ejabberd
il suo proprietario:
su -c "psql -c 'CREATE DATABASE ejabberd OWNER ejabberd;'" postgres
Importare lo Schema del Database
Ejabberd non crea lo schema del database in automatico; Deve essere importato nel database prima di usarlo.
su -c "curl -s https://raw.githubusercontent.com/processone/ejabberd/master/sql/pg.sql | psql ejabberd" postgres
Configurare ejabberd per usare PostgreSQL
Infine, aggiungi la seguente configurazione a ejabberd.yml
:
sql_type: pgsql sql_server: "localhost" sql_database: "ejabberd" sql_username: "ejabberd" sql_password: "psql_password" default_db: sql
Quella linea alla fine imposta automaticamente che ogni database del modulo sia gestito da sql
. Questo include il modulo mod_mam
, quindi tutti i nostri dati saranno salvati con PostgreSQL.
Chiamate Voce e Video
Ejabberd supporta i protocolli TURN e STUN per permettere agli utenti internet dietro NAT di eseguire chiamate voce e video con altri utenti XMPP. Questo è abilitato in automatico con l'uso di ejabberd_stun.
Ad ogni modo, se hai intenzione di usare ejabberd a fianco di altre applicazioni che richiedono TURN e STUN, come ad esempio Matrix, dovrai configurare il tuo server TURN esterno usando Coturn.
Configurazione con Coturn e `mod_stun_disco`
Innanzitutto, configura un server TURN e STUN con Coturn usando un segreto per l'identificazione.
Quindi, modifica mod_stun_disco
in modo che contenga l'informazione apposita per il tuo server TURN:
mod_stun_disco: secret: "your_auth_secret" services: - host: turn.esempio.org type: stun - host: turn.esempio.org type: turn
Usare ejabberd
Registrare l'Utente Amministratore
Per cominciare ad usare ejabberd, prima di tutto lancia il demone ejabberd:
systemctl restart ejabberd
Quindi, usando ejabberdctl
come utente ejabberd, registra l'utente amministratore impostato in ejabberd.yml
:
su -c "ejabberdctl register admin esempio.org password" ejabberd
Questo andrà a creare l'utente admin@esempio.org.
Usare l'Interfaccia Web
Di base, ejabberd ha un'interfaccia web accessibile da http://esempio.org:5280/admin. Quando accedi a questa interfaccia, ti vengono chieste le credenziali di amministratore.
Dopo aver eseguito l'accesso con le credenziali di amministratore, sarai in grado di gestire il tuo server ejabberd da questa interfaccia.
Configurazioni Ulteriori
Per uno sguardo più approfondito a tutti i moduli e opzioni, da' un occhio alla seguente documentazione ejabberd:
- Ejabberd Listen Modules e Listen Options
- Ejabberd Top-Level Options
- Ejabberd Modules’ Options
E con questo, hai configurato con successo il tuo server XMPP ejabberd!