Strumenti Utente

Strumenti Sito


xmppit:guide:installazione-server-ejabberd

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
xmppit:guide:installazione-server-ejabberd [2024/02/13 08:56] – [Perché usare un database?] robxmppit:guide:installazione-server-ejabberd [2024/06/16 17:01] (versione attuale) – del roughnecks
Linea 1: Linea 1:
-**ATTENZIONE! Questa guida è la traduzione dell'[[ 
-https://comfy.guide/server/ejabberd/|originale]] di [[https://denshi.org|Denshi]] 
- e non è stata testata dai traduttori.** 
- 
-[[https://ejabberd.im|Ejabberd]] è un server per il protocollo XMPP scritto in Erlang. È più scalable e più facile da impostare di [[https://comfy.guide/server/prosody/|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 [[https://xmpp.org/extensions/xep-0060.html|Publish-Subscribe]], semplicemente commenta la configurazione ''mod_pubsub'' in ''/opt/ejabberd/ejabberd.yml'': 
- 
-<code> 
-##  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</pre> 
-</code> 
- 
-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: 
- 
-<code> 
-mod_muc: 
-  host: muc.esempio.org 
-</code> 
- 
-===== 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 https://prosody.im 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: 
- 
-<code bash> 
-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 
-</code> 
- 
-//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'': 
- 
-<code> 
-  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 
-</code> 
- 
-Come questi commenti suggeriscono, un **[[https://comfy.guide/server/sql/|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 [[https://comfy.guide/server/matrix/|Matrix]] e [[https://comfy.guide/server/peertube/|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 <code>ejabberd</code> 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. 
- 
-<code> 
- su -c "curl -s https://raw.githubusercontent.com/processone/ejabberd/master/sql/pg.sql | psql ejabberd" postgres 
-</code> 
- 
-===== Configurare ejabberd per usare PostgreSQL ===== 
- 
-Infine, aggiungi la seguente configurazione a <code>ejabberd.yml</code>: 
- 
-<code> 
-sql_type: pgsql 
-sql_server: "localhost" 
-sql_database: "ejabberd" 
-sql_username: "ejabberd" 
-sql_password: "psql_password" 
- 
-default_db: sql 
-</code> 
- 
-Quella linea alla fine imposta automaticamente che **ogni database del modulo** sia gestito da <code>sql</code> . Questo include il modulo <code>mod_mam</code> , 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 [[https://docs.ejabberd.im/admin/configuration/listen#ejabberd-stun-1|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 [[https://comfy.guide/coturn/|Coturn]] usando un **segreto per l'identificazione.** 
- 
-Quindi, modifica <code>mod_stun_disco</code> a che contenga l'informazione apposita per il tuo server TURN: 
- 
-<code> 
-  mod_stun_disco: 
-    secret: &quot;your_auth_secret&quot; 
-    services: 
-      - 
-        host: turn.esempio.org 
-        type: stun 
-      - 
-        host: turn.esempio.org 
-        type: turn 
-</code> 
- 
-===== Usare ejabberd ===== 
- 
-==== Registrare l'Utente Amministratore ==== 
- 
-Per cominciare ad usare ejabberd, prima di tutto lancia il demone ejabberd: 
- 
-   systemctl restart ejabberd 
- 
-Quindi, usando <code>ejabberdctl</code> come utente ejabberd, registra l'utente amministratore impostato in <code>ejabberd.yml</code>: 
- 
-   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 [[https://docs.ejabberd.im/admin/configuration/listen/|Listen Modules]] e [[https://docs.ejabberd.im/admin/configuration/listen-options/|Listen Options]] 
-  * Ejabberd [[https://docs.ejabberd.im/admin/configuration/toplevel/|Top-Level Options]] 
-  * Ejabberd [[https://docs.ejabberd.im/admin/configuration/modules/|Modules’ Options]] 
- 
-//E con questo, hai configurato con successo il tuo server XMPP ejabberd!// 
  
xmppit/guide/installazione-server-ejabberd.1707810989.txt.gz · Ultima modifica: da rob