GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare il server Prosody XMPP su Ubuntu 20.04

Prosody è un server XMPP open source gratuito scritto in Lua. È veloce e leggero. XMPP è un ottimo protocollo per la messaggistica istantanea. Questo tutorial ti mostrerà come installare e configurare il server Prosody XMPP su Ubuntu 20.04. Una volta terminato questo tutorial, avrai il tuo server di chat.

Passaggio 1:installa Prosody su Ubuntu 20.04

Prosody è incluso nel repository Ubuntu predefinito. Il team di Prosody mantiene anche un repository di pacchetti. Se vuoi ottenere l'ultima versione, devi aggiungere il repository Prosody con il seguente comando.

echo 'deb https://packages.prosody.im/debian focal main' | sudo tee /etc/apt/sources.list.d/prosody.list

Quindi esegui il comando seguente per scaricare e importare la chiave pubblica di Prosody, che consente al gestore di pacchetti APT di verificare l'integrità dei pacchetti scaricati da questo repository.

wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Quindi, aggiorna l'indice del pacchetto locale e installa l'ultima versione di Prosody.

sudo apt update

sudo apt install prosody

Una volta installato, Prosody si avvierà automaticamente. Puoi verificarne lo stato con:

systemctl status prosody

Uscita:

● prosody.service - Prosody XMPP Server
   Loaded: loaded (/lib/systemd/system/prosody.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 13:58:40 UTC; 16s ago
     Docs: https://prosody.im/doc
 Main PID: 1894 (lua5.2)
    Tasks: 1 (limit: 1108)
   CGroup: /system.slice/prosody.service
           └─1894 lua5.2 /usr/bin/prosody -F

Apr 19 13:58:40 localhost systemd[1]: Started Prosody XMPP Server.

Se non è in esecuzione, puoi avviarlo con

sudo systemctl start prosody

Per abilitare l'avvio automatico all'avvio del sistema, esegui

sudo systemctl enable prosody

Fase 2:apertura delle porte nel firewall

Per impostazione predefinita, è in ascolto sulla porta TCP 5269 e 5222 dell'indirizzo IP pubblico, come si può vedere con il comando seguente. (Se il tuo Ubuntu non ha il comando netstat, puoi installarlo con sudo apt install net-tools .)

sudo netstat -lnptu | grep lua

  • La porta 5222 viene utilizzata per la connessione da client a server.
  • La porta 5269 viene utilizzata per la connessione da server a server.

Se hai abilitato il firewall UFW su Ubuntu, devi aprire le porte sopra con il seguente comando.

sudo ufw allow 5222,5269/tcp

Fase 3:Configura il server XMPP di Prosody

Modifica il file di configurazione principale con un editor di testo a riga di comando come Nano.

sudo nano /etc/prosody/prosody.cfg.lua

In module_enabled {...} sezione, puoi decommentare una riga per abilitare un modulo specifico o commentare una riga per disabilitare un modulo specifico. Ogni modulo ha una descrizione che ti dice cosa fa. Probabilmente vorrai abilitare il modulo BOSH, che sta per B flussi idirezionali O ver S H sincrona TTP. Consente la comunicazione XMPP su HTTP.

Quindi, scorrere verso il basso nel file di configurazione. Se desideri consentire la registrazione dell'account dal client XMPP, imposta allow_registration al vero. Nota che devi sapere come prevenire gli abusi prima di farlo. Se non conosci XMPP, probabilmente non vorrai consentire ai client XMPP di registrare gli account da soli.

allow_registration = true;

Prosody consente solo comunicazioni crittografate, indicate dalle due righe seguenti.

c2s_require_encryption = true

s2s_require_encryption = true

Tuttavia, è necessario creare un host virtuale e installare il certificato TLS, in modo che le connessioni possano essere crittografate. Per impostazione predefinita, in Prosody è presente un solo host virtuale:localhost, come indicato dalla riga seguente.

VirtualHost "localhost"

Ora creiamo un altro host virtuale come chat.example.com . Aggiungi la seguente riga in questo file.

VirtualHost "chat.example.com"

Salva e chiudi il file. Quindi dobbiamo ottenere e installare un certificato TLS affidabile da Let's Encrypt.

Fase 4:ottieni un certificato TLS affidabile da Let's Encrypt

Emetti il ​​seguente comando per installare il client Let's Encrypt (certbot) sul server Ubuntu.

sudo apt install certbot

Se non hai ancora un server web in esecuzione, ti consiglio di installarne uno (Apache o Nginx), perché è più facile ottenere e installare il certificato TLS con un server web piuttosto che usare altri metodi.

Se utilizzi il server web Apache, devi installare il plugin Apache. (Il seguente comando installerà il server Web Apache se non è già installato sul tuo sistema.)

sudo apt install python3-certbot-apache

Se utilizzi il server web Nginx, installa il plugin Nginx. (Il seguente comando installerà il server web Nginx se non è già installato sul tuo sistema.)

sudo apt install python3-certbot-nginx

Ottenere il certificato TLS con Apache Web Server

Devi disporre di un host virtuale Apache per chat.example.com prima di ottenere il certificato Let's Encrypt TLS. Crea il file dell'host virtuale:

sudo nano /etc/apache2/sites-available/prosody.conf

Quindi incolla il seguente testo nel file. Sostituisci chat.example.com con il tuo vero nome di dominio. Non dimenticare di impostare un record DNS A per questo.

<VirtualHost *:80>        
        ServerName chat.example.com

        DocumentRoot /var/www/prosody
</VirtualHost>

Salva e chiudi il file. Quindi crea la directory webroot.

sudo mkdir /var/www/prosody

Imposta www-data (utente Apache) come proprietario della webroot.

sudo chown www-data:www-data /var/www/prosody -R

Abilita questo host virtuale.

sudo a2ensite prosody.conf

Ricarica Apache per rendere effettive le modifiche.

sudo systemctl reload apache2

Una volta creato e abilitato l'host virtuale, esegui il comando seguente per ottenere e installare il certificato Let's Encrypt TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

Sostituisci il testo rosso con i tuoi dati effettivi. Dovresti vedere quanto segue, il che significa che il certificato è stato ottenuto correttamente. Puoi anche vedere la directory in cui è archiviato il tuo certificato.

Ottenere il certificato TLS con il server Web Nginx

Devi disporre di un host virtuale Nginx per chat.example.com prima di ottenere il certificato Let's Encrypt TLS. Crea il file dell'host virtuale:

sudo nano /etc/nginx/conf.d/prosody.conf

Quindi, incolla il seguente testo nel file. Sostituisci chat.example.com con il tuo vero nome di dominio. Non dimenticare di impostare un record DNS A per questo.

server {
      listen 80;
      listen [::]:80;
      server_name chat.example.com;

      root /var/www/prosody/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

Salva e chiudi il file. Quindi crea la directory principale web.

sudo mkdir /var/www/prosody/

Imposta www-data (utente Nginx) come proprietario della web root.

sudo chown www-data:www-data /var/www/prosody -R

Ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

Una volta creato e abilitato l'host virtuale, esegui il comando seguente per ottenere e installare il certificato Let's Encrypt con il plug-in Nginx.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d chat.example.com

Dovresti vedere quanto segue, il che significa che il certificato è stato ottenuto correttamente. Puoi anche vedere la directory in cui è archiviato il tuo certificato.

Passaggio 5:installa il certificato TLS in Prosody

Modifica il file di configurazione principale.

sudo nano /etc/prosody/prosody.cfg.lua

Vai al tuo host virtuale Prosody e aggiungi il certificato TLS e il file della chiave.

ssl = {
      key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
     certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
}

In questo modo:

Salva e chiudi il file. Poiché il server Prosody XMPP viene eseguito come prosody utente, dobbiamo consentire all'utente prosody di leggere il certificato TLS e il file della chiave con i seguenti comandi.

sudo apt install acl
sudo setfacl -R -m u:prosody:rx /etc/letsencrypt/

Fase 6:crea account utente

L'account utente per il server Prosody XMPP può essere creato utilizzando il comando seguente. Ti verrà chiesto di inserire una password.

sudo prosodyctl adduser [email protected]

Per cambiare la password, esegui

sudo prosodyctl passwd [email protected]

Passaggio 7:riavvia Prosody

Verifica la sintassi del file di configurazione eseguendo:

sudo prosodyctl check config

Se la sintassi è corretta, riavvia Prosody per rendere effettive le modifiche.

sudo systemctl restart prosody

Fase 8:Configura il client XMPP

Questo tutorial utilizza la messaggistica istantanea Pidgin come client XMPP. L'empatia è un altro client che puoi usare. Possono essere installati su un desktop Ubuntu eseguendo:

sudo apt install pidgin

sudo apt install empathy

Al primo avvio, dovrai aggiungere un account in Pidgin. Fai clic su Aggiungi pulsante.

Quindi seleziona XMPP dall'elenco dei protocolli e inserisci il tuo nome utente, dominio e password.

Premi Aggiungi pulsante e sarai loggato.

Configura BOSH

Come spiegato in precedenza, BOSH ti consente di utilizzare XMPP su HTTP, cioè in un browser web. Ad esempio, il software per videoconferenze Jitsi Meet utilizza BOSH per integrare Prosody nelle pagine Web, in modo che i partecipanti possano chattare via SMS mentre si uniscono a una riunione video online.

Se hai abilitato il modulo BOSH, modifica il file di configurazione di Prosody (/etc/prosody/prosody.cfg.lua ) e aggiungi le due righe seguenti alla fine del file di configurazione.

consider_bosh_secure = true;
cross_domain_bosh = true;
https_ssl = {
        certificate = "/etc/letsencrypt/live/chat.example.com/fullchain.pem";
        key = "/etc/letsencrypt/live/chat.example.com/privkey.pem";
    }

Dove:

  • La prima riga impone una connessione HTTPS sicura.
  • La seconda riga aggiunge le intestazioni COR alle risposte BOSH per consentire alle richieste di provenire da qualsiasi dominio.
  • Il parametro https_ssl specifica il certificato TLS e il file chiave per il servizio BOSH.

Salva e chiudi il file. Quindi riavvia Prosody.

sudo systemctl restart prosody

Se hai abilitato il firewall UFW sul server Ubuntu, devi aprire le porte 5280 e 5281 con il seguente comando.

sudo ufw allow 5280,5281/tcp

L'endpoint BOSH sarà disponibile al seguente indirizzo una volta terminato questo tutorial. porta 5280 è per HTTP in testo normale, porta 5281 per HTTPS.

http://chat.example.com:5280/http-bind

o

https://chat.example.com:5281/http-bind.

Un endpoint BOSH è un URL utilizzato da un client per connettersi al server XMPP tramite HTTP.

Chat room multiutente

Per abilitare una MUC (Chat multiutente), aggiungi la seguente riga nel file di configurazione di Prosody. Sostituisci conference.example.com con il tuo sottodominio preferito.

Component "conference.example.com" "muc"
     restrict_room_creation = "admin"

La seconda riga consentirà solo all'amministratore di creare stanze. Per definire l'amministratore per il server XMPP, devi prima creare un account usando sudo prosodyctl adduser comando come mostrato sopra. Quindi nel file di configurazione, aggiungi l'account in admin {...} sezione come di seguito.

admins = { "[email protected]", "[email protected]" }

Verifica la sintassi del file di configurazione eseguendo:

sudo prosodyctl check config

Se la sintassi è corretta, riavvia Prosody per rendere effettive le modifiche.

sudo systemctl restart prosody

Risoluzione dei problemi

Il file di registro principale per Prosody è /var/log/prosody/prosody.log . C'è anche un registro degli errori /var/log/prosody/prosody.err . Se Prosody non funziona come previsto, il registro degli errori è un buon posto da controllare.

Rinnovo automatico del certificato TLS

Puoi creare un lavoro Cron per rinnovare automaticamente il certificato TLS. Apri il file crontab dell'utente root.

sudo crontab -e

Se utilizzi il server web Apache, aggiungi la seguente riga in fondo al file.

@daily certbot renew --quiet && systemctl reload postfix dovecot apache2

Se stai utilizzando il server web Nginx, aggiungi la seguente riga.

@daily certbot renew --quiet && systemctl reload postfix dovecot nginx

È necessario ricaricare Postfix, Dovecot e il web server per far sì che questi programmi raccolgano il nuovo certificato e la chiave privata.


Ubuntu
  1. Come configurare e installare il server proxy Squid su Ubuntu 18.04

  2. Come installare Redis su Ubuntu 20.04 / 18.04

  3. Come installare MySQL su Ubuntu 18.04

  4. Come configurare un server OpenVPN su Ubuntu 18.04

  5. Come installare Zimbra 8.6 su Ubuntu 14.04 Server

Come installare Zabbix Server su Ubuntu 20.04

Come installare Ubuntu Server 18.04 LTS

Come installare il server LTS di Ubuntu 20.04

Come installare Cockpit su Ubuntu 20.04

Come installare il server VNC su Ubuntu 20.04

Come configurare il server Prosody XMPP su Ubuntu 18.04