Mise en place de Prosody

Prosody serveur xmpp

Prosody est un serveur Jabber/XMPP et qui est écrit en LUA . L’installation et la configuration est plutôt simple .

Comme d’habitude on se tape un bon apt

echo "deb http://packages.prosody.im/debian stable main" >> /etc/apt/sources.list
apt-get update
apt-get install prosody-0.9

Modifier le fichier prosody.cfg.lua

admins = { "admin@domain.com" }
authentication = "internal_hashed"

Include "conf.d/*.cfg.lua"
  • Administrateur du serveur . Biensur vous pouvez en mettre plusieurs
  • Authentification pour crypter celui-ci . Car par défaut le mot de passe est en clair …
  • Include : Directory pour les vhosts

Comme pour apache nous allons définir les virtuals hosts

VirtualHost "domain.com"
	enabled = true -- Remove this line to enable this host
	ssl = { 
		key = "/etc/prosody/certs/domain.com.key";
		certificate = "/etc/prosody/certs/domain.com.cert";
		}
-- Set up a MUC (multi-user chat) room server on conference.example.com:
Component "conference.robertain.com" "muc"
	restrict_room_creation = true

modules_enabled = {
        "compression"; -- Enable mod_compression
	"privacy"; 	-- Salon Privee
	"announce";	--Broadcast message
	"saslauth";
	"roster";
	"tls";
	"dialback";
	"register";
    }

allow_registration = true
min_seconds_between_registrations = 600
  • VirtualHost : Nom de votre VirtualHost
  • Enable : What The Fuck
  • SSL : #OMG
  • Component : Permet de définir une MUC
  • Module_enable : Comme son nom l’indique . Vous en avez aussi dans la configuration globale
  • Allow_registration : Autoriser les utilisateurs à créer des comptes sur votre serveur . Le module register doit être activé
  • Restrict_room_creation : Un utilisateur ne peut pas créer une room. Plus bas nous verrons que cela pose problème

Maintenant il serait bien de pouvoir tester tout ca . Mais il faut bien créer au moins un utilisateur

prosodyctl adduser guest

Démarrer prosody

prosodyctl start

Pour vous connecter à votre serveur . Vous pouvez utiliser Gajim sinon pour les fainéants il y a le site de jappix.

Biensur vous avez un firewall 🙂 .

#XMPP Prosody /LUA
$IPT -A INPUT -i ${IFPUB} -p tcp --dport 5222 -j ACCEPT 
$IPT -A INPUT -i ${IFPUB} -p tcp --dport 5269 -j ACCEPT 
$IPT -A INPUT -i ${IFPUB} -p tcp --dport 5280 -j ACCEPT

Les informations des utilisateurs sont dans /var/lib/prosody/ . Si vous avez des problèmes de mémoire 🙂 .

cd /etc/prosofy/
ln -s /var/lib/prosody/ accounts

Comme dit plus haut le paramètre « Restrict_room_creation » pose quelques problèmes. Dans mon cas j’interdis un utilisateur de créer une room afin d’empêcher le flood. L’inconvénient c’est que je souhaite avoir un salon permanent , c’est à dire un salon en permanence ouvert.

Dans la conf actuel seul l’admin peut créer un salon. Si un admin ne crée pas le salon blog@conference.robertain.com il est donc impossible pour un utilisateur d’accèder à ce salon c’est quand même dommage.

La solution que j’ai trouvé est depuis une dedibox avec le couple screen + irssi d’avoir un admin en permanence connecté .Rien de bien compliqué

apt-get install screen irssi-plugin-xmpp irssi

Je ne ferais pas un tuto sur screen. Ouvrir une fenetre screen

screen -S serveur

Puis lancer irssi

irssi

Maintenant il faut loader le module xmpp et passer à la configuration

/load xmpp
/xmppconnect -host robertain.com user@robertain.com MotDePasse
/join blog@conference.robertain.com

Super nous avons un salon permanent . Il doit exister une façon de le faire depuis prosody mais je n’ai pas réussi.

Sources

  1. http://doc.ubuntu-fr.org/prosody
  2. http://cybione.org/~irssi-xmpp/
  3. http://prosody.im/

Related posts

7 thoughts on “Mise en place de Prosody

  1. Merci pour ce petit tuto. Et petite question en passant? Est-il possible de coupler les comptes xmpp avec une installation d’un serveur mail postfix.

    Par exemple moi j’ai un serveur sur lequel j’ai les différents comptes emails dans une base de donnée mysql. J’aimerais pouvoir permettre à mes utilisateurs d’utiliser le serveur xmpp avec leurs propres credentials. Comment on peut mettre ça en place?

    Merci d’avance

  2. Si tu veux que les utilisateurs qui ont un compte mail sur ton serveur puissent utiliser ton serveur XMPP .
    Tu pourrais utiliser roundcube si ce n’est pas déjà le cas 🙂 et avec le plugin « Jappix Roundcube » ça devrait le faire .
    Mais j’ai pas testé .

  3. On vient de me chuchoter, il y a un bot xmpp écrit en python :
    http://www.darkcoding.net/software/jimbo/

  4. anon

    Hello, il y a une option dans le client psy pour rendre une room permanente.

    J’ai vite regardé coté serveur, ca crée un fichier persistent.dat dans /var/lib/prosody/conference.example.com/.

    Le contenu est :
    return {
    [« room_name@conference.example.com »] = true;
    }

    1. anon

      Il y a egalement un second fichier room_name.dat dans /var/lib/prosody/conference.example.com/config/.

      Et dans la section [« _data »] : [« persistent »] = true;

      1. Bonjour ,

        Merci pour l’information je regarderais ça 🙂 .

  5. badmaniak

    Salut,

    Merci pour le tuto surtout pour la création du salon, je te conseillerai de rajouter si ce n’est pas le cas :
    c2s_require_encryption = true
    s2s_require_encryption = true
    Dans prosody.cfg.lua pour chiffré les échange de client à serveur et de serveur à serveur.

    @+

Leave a Comment