XMPP - Votre serveur local

9 mai 2021

 Installer la distribution

Téléchargeons la distribution Raspbian/RaspberryPi OS Lite. Vous pouvez la télécharger ici.
Extraire le fichier et le flasher vers la carte SD (toutes les données de la carte seront perdues). Pour cela :
Branchez la carte SD sur votre PC
La commande sudo dmesg vous donne son nom :

sudo dmesg [ 9667.333966] mmc0: new high speed SDHC card at address 1234 [ 9667.334257] mmcblk0: mmc0:1234 SA08G 7.29 GiB

Pour flasher l’image, utilisez la commande dd :

dd if=/chemin/vers/mon/image/raspbian.img of=/dev/mmcblk0 status=progress

mmcblk0 est le nom que vous avez trouvé avec la commande dmesg. Attention, une fausse manipulation avec dd peut vous faire perdre toutes vos données !

 Activer le ssh sur votre nouvelle image

Créez un fichier "ssh" même vide dans la partition "boot".

cd /media/$USER/boot touch ssh

Démarrez votre Raspberry Pi et suivez notre guide pour se mettre à l’aise.

 Mettez votre système à jour

Au moment de la rédaction de cet article, la version de ejabberd fournie avec Raspbian (18.04) date de plus de trois ans. Si cette version reste tout à fait correcte, la documentation la concernant n’est pas aisée à trouver. De plus, elle ne permet pas de gérer les appels audio/vidéo. Ce serait dommage de s’en priver.

Connectez-vous au raspberrypi :

ssh raspberrypi

Passez en mode administrateur

sudo -s

Actualisez les dépôts logiciels (comptez quelques minutes sur le Raspberry Pi 1).

apt update

Mettez à jour votre système (comptez encore quelques minutes)

apt upgrade

Nous allons alors passer de la version Buster de Raspbian à la version Bullseye afin d’avoir une version plus récente de ejabberd. c’est une étape relativement longue, comptez plusieurs heures.

Éditez votre fichier /etc/apt/sources.list

nano /etc/apt/sources.list

Et changez buster en bullseye dans le fichier :

deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

Et mettez à jour le système (comptez plusieurs heures sur un Raspberry Pi 1) :

apt update; apt dist-upgrade

Il vous faudra probablement valider certains change log et validez certaines étapes.

 Installation du serveur XMPP

Installez le serveur (comptez encore quelques minutes)

apt install ejabberd

Et nettoyez un peu le système

apt autoremove

 Configuration du serveur XMPP

La configuration du serveur se fait en éditant le fichier /etc/ejabberd/ejabberd.yml.
A chaque modification, il faut recharger la configuration avec la commande :

ejabberdctl reload-config

Faites une copie du fichier d’origine

cd /etc/ejabberd/ cp ejabberd.yml ejabberd.origin.yml

 Trouver l’IP du serveur

Activez le serveur pour le réseau local. Pour cela, trouvez l’adresse IP du Raspberry Pi avec la commande ip add.

ip add 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enxb827ebee2b46: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:ee:2b:46 brd ff:ff:ff:ff:ff:ff inet 192.168.1.43/24 brd 192.168.1.255 scope global dynamic noprefixroute enxb827ebee2b46 valid_lft 84194sec preferred_lft 73394sec inet6 fe80::e08:3b86:b6df:c031/64 scope link valid_lft forever preferred_lft forever

Ici, il s’agit de 192.168.1.43. C’est cette adresse que nous utiliserons par la suite en tant qu’adresse IP locale. A vous d’adapter en fonction de votre propre adresse IP.

 Configuration du l’hôte

Éditez le fichier de configuration

nano ejabberd.yml

Voici les passages qui nous intéressent, remplacez localhost par votre IP locale dans la liste des "hosts"

/etc/ejabberd/ejaberd.yml hosts: - 192.168.1.43

Enregistrez (CTRL+O) et quittez (CTRL+X). Rechargez la configuration :

ejabberdctl reload-config

Vérifiez que la configuration a bien été prise en compte avec la commande

ejabberdctl registered_vhosts root@raspberrypi:/home/poivron# ejabberdctl registered_vhosts 192.168.1.43

En cas de souci ?

Par défaut, Ejabberd stocke ses log ici : /etc/ejabberd/ejabberd.yml. Pour afficher les dernières lignes du fichier, utilisez la commande tail. Rajoutez l’option "-f" pour afficher dans la console les lignes ajoutées au fichier en temps réel.

tail -f /etc/ejabberd/ejabberd.yml

Utilisez CTRL+C pour quitter ce mode.

 Création du premier utilisateur

Utilisez la commande ejabberdctl pour créer votre premier utilisateur. Ici, nous le nommerons "poivron", son mot de passe sera "TomateSecrete" et l’hôte 192.168.1.43.

ejabberdctl register poivron 192.168.1.43 TomateSecrete root@raspberrypi:/home/poivron# ejabberdctl register poivron 192.168.1.43 TomateSecrete

Vérifiez que l’utilisateur a bien été créé.

ejabberdctl registered_users 192.168.1.43 root@raspberrypi:/home/poivron# ejabberdctl registered_users 192.168.1.43 poivron

 Testez !

Installez un client XMPP sur votre ordinateur ou téléphone. Si vous ne savez pas lequel choisir, prenez :

 Gajim (Linux et Windows)
 Conversations (Android)
 Blabber (fork de Conversations - Android)
 Dino (Linux) : Pas DINO, pas avant d’avoir correctement installé vos certificats !

Notes :

 Dino ne supporte pas les certificats non valides : ne pas l’utiliser pour vos premiers tests
 Blabber dispose d’une option pour activer la gestion de plusieurs comptes. Trouvez-la et activez-la.

Vous auriez besoin d’activer plusieurs comptes pour vos essais.
Connectez-vous au même réseau que le serveur (en Wifi sur votre box si vous utilisez un téléphone portable).

Créez un nouveau compte. Dans JID, entrez poivron@192.168.1.43, et votre mot de passe : TomateSecrete.

Vous aurez des avertissements liés aux certificats de sécurité, certains clients peuvent même bloqués silencieusement (comme Dino). Gajim, Conversations ou Blabber font l’affaire.

Regardez les logs et vous devriez voir :

/var/log/ejabberd/ejabberd.log [info] <0.366.0>@ejabberd_listener:accept/7:273 (<0.530.0>) Accepted connection [::ffff:192.168.1.79]:46426 -> [::ffff:192.168.1.43]:5222 [info] <0.530.0>@ejabberd_c2s:process_auth_result/3:268 (tls|<0.530.0>) Accepted c2s SCRAM-SHA-1 authentication for poivron@192.168.1.43 by mnesia backend from ::ffff:192.168.1.79 [info] <0.530.0>@ejabberd_c2s:bind/2:442 (tls|<0.530.0>) Opened c2s session for poivron@192.168.1.43/Conversations.4utN

Si vous arrivez à vous connecter, félicitations ! Votre serveur est fonctionnel sur votre réseau local. Mais attention, vous êtes loin d’avoir fini !

Commentaires

Il n'y a pas de commentaires

Ajouter un commentaire

Pseudo :
Mail :

Texte :

Copyright "POIVRON" 2011-2023, tous droits réservés
Administration du site