GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer le serveur Prosody XMPP sur Ubuntu 20.04

Prosody est un serveur XMPP open-source gratuit écrit en Lua. C'est rapide et léger. XMPP est un excellent protocole de messagerie instantanée. Ce tutoriel va vous montrer comment installer et configurer le serveur Prosody XMPP sur Ubuntu 20.04. Une fois ce tutoriel terminé, vous disposerez de votre propre serveur de chat.

Étape 1 :Installez Prosody sur Ubuntu 20.04

Prosody est inclus dans le référentiel Ubuntu par défaut. L'équipe Prosody maintient également un référentiel de packages. Si vous souhaitez obtenir la dernière version, vous devez ajouter le référentiel Prosody avec la commande suivante.

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

Exécutez ensuite la commande suivante pour télécharger et importer la clé publique Prosody, ce qui permet au gestionnaire de packages APT de vérifier l'intégrité des packages téléchargés à partir de ce référentiel.

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

Ensuite, mettez à jour l'index des packages locaux et installez la dernière version de Prosody.

sudo apt met à jourudo apt install prosody

Une fois installé, Prosody démarrera automatiquement. Vous pouvez vérifier son statut avec :

prosodie d'état systemctl

Sortie :

● prosody.service - Serveur Prosody XMPP chargé :chargé (/lib/systemd/system/prosody.service ; activé ; préréglage fournisseur :activé) Actif :actif (en cours d'exécution) depuis le dim 2020-04-19 13:58 :40 UTC ; Il y a 16 s Docs :https://prosody.im/doc PID principal :1894 (lua5.2) Tâches :1 (limite :1108) CGroup :/system.slice/prosody.service └─1894 lua5.2 /usr/bin /prosody -FApr 19 13:58:40 localhost systemd[1] :Démarrage du serveur Prosody XMPP.

S'il ne fonctionne pas, vous pouvez le démarrer avec

sudo systemctl démarrer la prosodie

Pour activer le démarrage automatique au démarrage du système, exécutez

sudo systemctl activer la prosodie

Étape 2 :Ouvrir des ports dans le pare-feu

Par défaut, il écoute sur les ports TCP 5269 et 5222 de l'adresse IP publique, comme on peut le voir avec la commande suivante. (Si votre Ubuntu n'a pas la commande netstat, vous pouvez l'installer avec sudo apt install net-tools .)

sudo netstat -lnptu | grep lua

  • Le port 5222 est utilisé pour la connexion client-serveur.
  • Le port 5269 est utilisé pour la connexion de serveur à sereur.

Si vous avez activé le pare-feu UFW sur Ubuntu, vous devez ouvrir les ports ci-dessus avec la commande suivante.

sudo ufw autorise 5222,5269/tcp

Étape 3 :Configurer le serveur Prosody XMPP

Modifiez le fichier de configuration principal avec un éditeur de texte en ligne de commande tel que Nano.

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

Dans module_enabled {...} section, vous pouvez décommenter une ligne pour activer un module spécifique, ou commenter une ligne pour désactiver un module spécifique. Chaque module a une description vous indiquant ce qu'il fait. Vous souhaitez probablement activer le module BOSH, qui signifie B flux-idirectionnels O ver S H synchrone PTT. Il permet la communication XMPP sur HTTP.

Ensuite, faites défiler vers le bas dans le fichier de configuration. Si vous souhaitez autoriser l'enregistrement de compte à partir du client XMPP, définissez allow_registration à vrai. Notez que vous devez savoir comment prévenir les abus avant de le faire. Si vous débutez avec XMPP, vous ne souhaitez probablement pas autoriser les clients XMPP à créer eux-mêmes des comptes.

allow_registration =vrai ;

La prosodie n'autorise que la communication cryptée, indiquée par les deux lignes suivantes.

c2s_require_encryption =trues2s_require_encryption =true

Cependant, nous devons créer un hôte virtuel et installer un certificat TLS, afin que les connexions puissent être chiffrées. Par défaut, il n'y a qu'un seul hôte virtuel dans Prosody :localhost, comme indiqué par la ligne suivante.

Hôte virtuel "localhost"

Maintenant, nous créons un autre hôte virtuel comme chat.example.com . Ajoutez la ligne suivante dans ce fichier.

Hôte virtuel "chat.example.com"

Enregistrez et fermez le fichier. Ensuite, nous devons obtenir et installer un certificat TLS de confiance de Let's Encrypt.

Étape 4 :Obtenir un certificat TLS de confiance auprès de Let's Encrypt

Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur le serveur Ubuntu.

sudo apt install certbot

Si vous n'avez pas encore de serveur Web en cours d'exécution, je vous recommande d'en installer un (Apache ou Nginx), car il est plus facile d'obtenir et d'installer un certificat TLS avec un serveur Web qu'en utilisant d'autres méthodes.

Si vous utilisez le serveur Web Apache, vous devez installer le plugin Apache. (La commande suivante installera le serveur Web Apache s'il n'est pas déjà installé sur votre système.)

sudo apt installer python3-certbot-apache

Si vous utilisez le serveur Web Nginx, installez le plugin Nginx. (La commande suivante installera le serveur Web Nginx s'il n'est pas déjà installé sur votre système.)

sudo apt installer python3-certbot-nginx

Obtenir un certificat TLS avec le serveur Web Apache

Vous devez avoir un hôte virtuel Apache pour chat.example.com avant d'obtenir le certificat Let's Encrypt TLS. Créez le fichier d'hôte virtuel :

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

Collez ensuite le texte suivant dans le fichier. Remplacez chat.example.com avec votre vrai nom de domaine. N'oubliez pas de définir un enregistrement DNS A pour cela.

 ServerName chat.example.com DocumentRoot /var/www/prosody

Enregistrez et fermez le fichier. Créez ensuite le répertoire webroot.

sudo mkdir /var/www/prosody

Définir www-data (utilisateur Apache) en tant que propriétaire de la racine Web.

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

Activez cet hôte virtuel.

sudo a2ensite prosody.conf

Rechargez Apache pour que les modifications prennent effet.

sudo systemctl recharger apache2

Une fois l'hôte virtuel créé et activé, exécutez la commande suivante pour obtenir et installer le certificat Let's Encrypt TLS.

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

Remplacez le texte rouge par vos données réelles. Vous devriez voir ce qui suit, ce qui signifie que le certificat a été obtenu avec succès. Vous pouvez également voir le répertoire dans lequel votre certificat est stocké.

Obtenir un certificat TLS avec le serveur Web Nginx

Vous devez avoir un hôte virtuel Nginx pour chat.example.com avant d'obtenir le certificat Let's Encrypt TLS. Créez le fichier d'hôte virtuel :

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

Ensuite, collez le texte suivant dans le fichier. Remplacez chat.example.com avec votre vrai nom de domaine. N'oubliez pas de définir un enregistrement DNS A pour cela.

serveur { écoute 80 ; écouter [::]:80 ; nom_serveur chat.exemple.com ; racine /var/www/prosody/ ; location ~ /.well-known/acme-challenge { tout autoriser ; }}

Enregistrez et fermez le fichier. Créez ensuite le répertoire racine Web.

sudo mkdir /var/www/prosody/

Définir www-data (utilisateur Nginx) en tant que propriétaire de la racine Web.

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

Rechargez Nginx pour que les modifications prennent effet.

sudo systemctl recharger nginx

Une fois l'hôte virtuel créé et activé, exécutez la commande suivante pour obtenir et installer le certificat Let's Encrypt avec le plugin Nginx.

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

Vous devriez voir ce qui suit, ce qui signifie que le certificat a été obtenu avec succès. Vous pouvez également voir le répertoire dans lequel votre certificat est stocké.

Étape 5 :Installer le certificat TLS dans Prosody

Modifiez le fichier de configuration principal.

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

Accédez à votre hôte virtuel Prosody et ajoutez le certificat TLS et le fichier de clé.

ssl ={ clé ="/etc/letsencrypt/live/chat.example.com/privkey.pem" ; certificat ="/etc/letsencrypt/live/chat.example.com/fullchain.pem";}

Comme ceci :

Enregistrez et fermez le fichier. Puisque le serveur Prosody XMPP s'exécute en tant que prosody utilisateur, nous devons autoriser l'utilisateur de la prosodie à lire le certificat TLS et le fichier de clé avec les commandes suivantes.

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

Étape 6 :Créer des comptes utilisateur

Un compte utilisateur pour le serveur Prosody XMPP peut être créé à l'aide de la commande suivante. Vous serez invité à saisir un mot de passe.

sudo prosodyctl adduser [email protected]

Pour changer de mot de passe, exécutez

sudo prosodyctl passwd [email protected]

Étape 7 :Redémarrez Prosody

Vérifiez la syntaxe du fichier de configuration en exécutant :

sudo prosodyctl check config

Si la syntaxe est correcte, redémarrez Prosody pour que les modifications prennent effet.

sudo systemctl redémarrer la prosodie

Étape 8 :Configurer le client XMPP

Ce didacticiel utilise la messagerie instantanée Pidgin comme client XMPP. L'empathie est un autre client que vous pouvez utiliser. Ils peuvent être installés sur un bureau Ubuntu en exécutant :

sudo apt install pidginsudo apt install empathie

Lors du premier lancement, vous devrez ajouter un compte dans Pidgin. Cliquez sur Ajouter bouton.

Sélectionnez ensuite XMPP dans la liste des protocoles et entrez votre nom d'utilisateur, votre domaine et votre mot de passe.

Cliquez sur Ajouter bouton et vous serez connecté.

Configurer BOSH

Comme nous l'avons expliqué précédemment, BOSH vous permet d'utiliser XMPP sur HTTP, c'est-à-dire dans un navigateur Web. Par exemple, le logiciel de visioconférence Jitsi Meet utilise BOSH pour intégrer Prosody dans les pages Web, afin que les participants puissent discuter par SMS tout en rejoignant une visioconférence en ligne.

Si vous avez activé le module BOSH, alors éditez le fichier de configuration de Prosody (/etc/prosody/prosody.cfg.lua ) et ajoutez les deux lignes suivantes à la fin du fichier de configuration.

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

Où :

  • La première ligne applique une connexion HTTPS sécurisée.
  • La deuxième ligne ajoute des en-têtes COR aux réponses BOSH pour permettre aux requêtes de provenir de n'importe quel domaine.
  • Le paramètre https_ssl spécifie le certificat TLS et le fichier de clé pour le service BOSH.

Enregistrez et fermez le fichier. Redémarrez ensuite Prosody.

sudo systemctl redémarrer la prosodie

Si vous avez activé le pare-feu UFW sur le serveur Ubuntu, vous devez ouvrir les ports 5280 et 5281 avec la commande suivante.

sudo ufw autorise 5280,5281/tcp

Le point de terminaison BOSH sera disponible à l'adresse suivante une fois que vous aurez terminé ce didacticiel. port 5280 est pour le texte brut HTTP, port 5281 pour HTTPS.

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

ou

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

Un point de terminaison BOSH est une URL utilisée par un client pour se connecter au serveur XMPP via HTTP.

Salle de discussion multi-utilisateurs

Pour activer un MUC (Multi-User Chat), ajoutez la ligne suivante dans le fichier de configuration de Prosody. Remplacez conference.example.com avec votre sous-domaine préféré.

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

La deuxième ligne permettra uniquement à l'administrateur de créer des salles. Pour définir l'administrateur du serveur XMPP, vous devez d'abord créer un compte en utilisant le sudo prosodyctl adduser commande comme indiqué ci-dessus. Puis dans le fichier de configuration, ajoutez le compte dans admin {...} section comme ci-dessous.

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

Vérifiez la syntaxe du fichier de configuration en exécutant :

sudo prosodyctl check config

Si la syntaxe est correcte, redémarrez Prosody pour que les modifications prennent effet.

sudo systemctl redémarrer la prosodie

Dépannage

Le fichier journal principal pour Prosody est /var/log/prosody/prosody.log . Il existe également un journal des erreurs /var/log/prosody/prosody.err . Si Prosody ne fonctionne pas comme prévu, le journal des erreurs est un bon endroit pour vérifier.

Certificat TLS à renouvellement automatique

Vous pouvez créer une tâche Cron pour renouveler automatiquement le certificat TLS. Ouvrez le fichier crontab de l'utilisateur root.

sudo crontab -e

Si vous utilisez le serveur Web Apache, ajoutez la ligne suivante au bas du fichier.

@daily certbot renouveler --quiet &&systemctl recharger postfix dovecot apache2

Si vous utilisez le serveur Web Nginx, ajoutez la ligne suivante.

@daily certbot renouveler --quiet &&systemctl recharger postfix dovecot nginx

Le rechargement de Postfix, Dovecot et du serveur Web est nécessaire pour que ces programmes récupèrent le nouveau certificat et la clé privée.


Ubuntu
  1. Comment configurer et installer le serveur proxy Squid sur Ubuntu 18.04

  2. Comment installer Redis sur Ubuntu 20.04 / 18.04

  3. Comment installer MySQL sur Ubuntu 18.04

  4. Comment configurer un serveur OpenVPN sur Ubuntu 18.04

  5. Comment installer Zimbra 8.6 sur le serveur Ubuntu 14.04

Comment installer le serveur Zabbix sur Ubuntu 20.04

Comment installer Ubuntu Server 18.04 LTS

Comment installer le serveur Ubuntu 20.04 LTS

Comment installer Cockpit sur Ubuntu 20.04

Comment installer le serveur VNC sur Ubuntu 20.04

Comment configurer le serveur Prosody XMPP sur Ubuntu 18.04