Outils pour utilisateurs

Outils du site


admin:services:xmpp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin:services:xmpp [2018/03/20 23:15] – [Todo / futures améliorations] Tamytroadmin:services:xmpp [2019/08/07 22:47] (Version actuelle) – Tuto pour Conversation moamoak
Ligne 3: Ligne 3:
  
 On utilise comme serveur le logiciel [[https://www.ejabberd.im/|ejabberd]], écrit en erlang et développé avec des réseaux d'entreprise en tête. La plus populaire alternative est prosody (lua). Par rapport à prosody, ejabberd bénéficie d'un rythme de développement plus rapide (judicieux pour le support des dernières extensions du protocole), et d'une plus grande cohérence/qualité dans les modules à disposition (ce qui facilite grandement l'administration). On utilise comme serveur le logiciel [[https://www.ejabberd.im/|ejabberd]], écrit en erlang et développé avec des réseaux d'entreprise en tête. La plus populaire alternative est prosody (lua). Par rapport à prosody, ejabberd bénéficie d'un rythme de développement plus rapide (judicieux pour le support des dernières extensions du protocole), et d'une plus grande cohérence/qualité dans les modules à disposition (ce qui facilite grandement l'administration).
 +
 +===== Connexion au réseau ======
 +
 +Il y a deux possibilités pour se connecter en XMPP aux canaux de discussions liés à FedeRez (hébergés sur le réseau IRC RezoSup) :
 +- directement en XMPP via les services de FedeRez avec un compte XMPP hébergé par FedeRez (nécessite une inscription) ;
 +- via une passerelle (souvent Biboumi) non-gérée par FedeRez pour se connecter directement à IRC.
 +
 +Seule la première solution est réellement décrite ici (mais des éléments utiles à le 2e se trouvent dans la 2e partie).
 +
 +
 +====Avec Gajim (client ordinateur)====
 +
 +
 +===Connexion au serveur XMPP===
 +
 +Tout d'abord, il faut évidemment lancer Gajim…
 +
 +Si ce n'est pas la première fois que vous l'utilisez, dans le menu de Gajim, allez dans « Gajim », « Comptes » puis « Ajouter un compte… ».
 +
 +Dans l'assistant qui s'ouvre, indiquez que vous avez déjà un compte, et indiquez « federez.net » comme serveur ainsi que que votre nom d'utilisateur et mot de passe du LDAP de FedeRez (si vous n'en avez pas, vous pouvez envoyer un mail à admin@federez.net ou demander au bureau de l'association dont vous êtes ou étiez membre).
 +
 +Puis validez en demandant une connexion immédiate.
 +
 +===Accès aux canaux IRC===
 +
 +Dans le menu de Gajim, allez dans « Compte(s) » puis « Découvrir les services ».
 +
 +Sélectionnez « Biboumi XMPP-IRC gateway » et utilisez « Rejoindre ».
 +
 +Une fenêtre s'ouvre pour vous demander quel salon de discussion vous souhaitez rejoindre, vous pouvez par exemple choisir « #federez%irc.rezosup.org » pour vous connecter au canal #federez de RezoSup. Vous pouvez également choisir le pseudonyme que vous souhaitez avoir côté IRC.
 +
 +====Avec Conversations (client mobile Android)====
 +
 +  - Installer l'application (payante sur le [[https://play.google.com/store/apps/details?id=eu.siacs.conversations|Play Store]] mais dispo sur [[https://f-droid.org/en/packages/eu.siacs.conversations/|F-droid]])
 +  - Ajouter un compte:
 +    * addresse XMPP : //<username_federez>@federez.net// (exemple : //moamoak@federez.net//)
 +    * mot de passe : //<federez_ldap_password>// (exemple : //S3cr3T//)
 +  - Conversation devrait réussir à se connecter et affiche les utilisateurs connectés au même serveur (à savoir l'ensemble des gens qui possèdent un compte FedeRez même s'il n'ont jamais utilisé XMPP)
 +  - Ajouter les chans IRC que vous voulez rejoindre;
 +    - Choisir "Rejoindre le canal public"
 +    - Utiliser le compte FedeRez (celui qu'on vient de créer) (exemple : //moamoak@federez.net//)
 +    - Rentrer une addresse XMPP au format //#<chan>%<irc_network>@<gateway_server>// (exemple : //#federez%irc.rezosup.org@irc.xmpp.federez.net//)
 +    - Vous devriez voir 2 conversations apparaitre : une pour le status IRC sur irc.rezosup.org (globalement, on s'en fout) et une pour le chan que vous venez de rejoindre (les futurs chans n'ajouteront qu'une conversation car celle du status est la même)
 +    - Parlez sur votre chan favori. Votre pseudo IRC est votre nom d'utilisateur FedeRez (exemple : //moamoak//)
 +
 +
  
 =====Mise en place du serveur===== =====Mise en place du serveur=====
Ligne 56: Ligne 102:
 </code> </code>
  
-Au passage vous pouvez en profiter pour décommenter les instances de ''- "no_tlsv1"''.+Côté **dragon**, certbot est également utilisé pour générer les certificats qui seront utilisés par 'mod_http_uploadpour l'envoi de fichiers. 
 + 
 +Au final, ejabberd gère donc les certificats: 
 + 
 +<code> 
 +certfiles: 
 +  - "/var/lib/ejabberd/ejabberd.pem← pour la connexion des utilisateurs 
 +  - "/var/lib/ejabberd/ejabberd-http.pem" ← pour le reste (http-upload) 
 +</code>
  
 ===Authentification LDAP=== ===Authentification LDAP===
Ligne 115: Ligne 169:
 </WRAP> </WRAP>
  
-====Todo futures améliorations==== +====SSLH/Multiplexing====
-  * MAM archives: En l'état les logs des utilisateurs sont stockés dans mnesia, dont la taille limite est de 2GB. Comme biboumi, ejabberd supporte PostgreSQL, il serait judicieux de migrer l'archivage des messages hors mnesia, et utiliser ''ejabberdctl delete_old_mam_messages'' périodiquement en attendant. +
-  * http-upload, direct tls, multiplexing, …: En l'état, ejabberd écoute sur une série de ports (5222, 5280, 5444) pour fournir certains services côté client (XMPP-server, bosh+websockets, http upload) qui, du coup, peuvent se retrouver indisponibles derrière des connexions censurées (hôtel, aéroport, public hostpot, café, …) ne laissant généralement que le 80/443 ouverts. L'idée est de multiplexer ces services via le port 443 en utilisant  [[http://www.rutschle.net/tech/sslh/README.html|sslh]]. Ci-dessous une possible conf sslh adaptée à XMPP:+
  
-<code> +En l'état, ejabberd écoute sur une série de ports (5222, 5280, 5444) pour fournir certains services côté client (XMPP-server, bosh+websockets, http upload) qui, du coup, peuvent se retrouver indisponibles derrière des connexions censurées (hôtel, aéroport, public hostpot, café, …) ne laissant généralement que le 80/443 ouverts. L'idée est de multiplexer ces services via le port 443 en utilisant  [[http://www.rutschle.net/tech/sslh/README.html|sslh]].
-listen: +
-( +
-    { host: "dragon IP"; port: "443"; } +
-);+
  
-protocols: +sslh est désormais déployéest sa configuration se trouve dans ''/etc/sslh.cfg''
-+
-     # ssh over 443 for road warriors +
-     { name: "ssh"; service: "ssh"; host: "localhost"; port: "2222"; },+
  
-     # XMPP supports connections over 443 from startls and direct tcp +====DNS/SRV Records====
-     { name: "tls"; host: "localhost"; port: "5223"; alpn_protocols: [ "xmpp-client" ]; log_level: 0;}, +
-     { name: "xmpp"; host: "localhost"; port: "5222"; },+
  
-     # Apache listens for redirected trafic on 8443 +XMPP supporte désormais un mode de connexion qui autorise l'envoi de SSL direct (ce qui évite un round-trip comparé à starttls), et sslh permet de multiplexer ce type de streams. Afin que les clients (surtout mobiles) en bénéficient, il faut le renseigner dans les [[https://en.wikipedia.org/wiki/SRV_record|DNS]]
-     { name: "http"; host: "localhost"; port: "80"; }, +
-     { name: "tls"; host: "localhost"; port: "8443"; log_level: 0; }, +
-     { name: "anyprot"; host: "localhost"; port: "8443";+
-); +
-</code> +
- +
-  * SRV records: XMPP supporte désormais un mode de connexion qui autorise l'envoi de SSL direct (ce qui évite un round-trip comparé à starttls), et sslh permet de multiplexer ce type de streams. Afin que les clients (surtout mobiles) en bénéficient, il faut le renseigner dans les [[https://en.wikipedia.org/wiki/SRV_record|DNS]]+
  
 <code> <code>
-_xmpp-client._tcp.example.com. 18000 IN SRV 0 5222 xmpp.example.com(C2S défaut) +_xmpp-client._tcp.federez.net. 18000 IN SRV 0 5222 xmpp.federez.net
-_xmpp-client._tcp.example.com. 18000 IN SRV 0 443 xmpp.example.com(XMPP over 443 avec starttls) +_xmpp-client._tcp.federez.net. 18000 IN SRV 0 443 xmpp.federez.net
-_xmpps-client._tcp.example.com. 18000 IN SRV 0 3 443 xmpp.example.com(XMPP over 443 avec direct tls) +_xmpps-client._tcp.federez.net. 18000 IN SRV 5223 xmpp.federez.net. 
-_xmpp-server._tcp.example.com. 18000 IN SRV 0 5 5269 xmpp.example.com(S2S défaut) +_xmpps-client._tcp.federez.net. 18000 IN SRV 443 xmpp.federez.net
-_xmpps-server._tcp.example.com. 18000 IN SRV 0 5 5270 xmpp.example.com(pas franchement nécessaire, S2S direct)+_xmpp-server._tcp.federez.net. 18000 IN SRV 0 5 5269 xmpp.federez.net
 +_xmpps-server._tcp.federez.net. 18000 IN SRV 0 5 5270 xmpp.federez.net.
 </code> </code>
  
 Pour tester l'enregistrement DNS: Pour tester l'enregistrement DNS:
-''dig _xmpp-client._tcp.tamytro.org SRV'' (défaut C2S) +<code> 
-''dig _xmpps-client._tcp.tamytro.org SRV'' (direct C2S)+dig srv _xmpp-client._tcp.federez.net 
 +dig srv _xmpps-client._tcp.federez.net 
 +... 
 +</code>
  
-Pour tester le multiplexing:+Pour tester le multiplexing (et autres):
 <code> <code>
-openssl s_client -connect tamytro.org:443 -starttls xmpp +# XMPP client classique 
-openssl s_client -connect tamytro.org:443 -alpn xmpp-client+openssl s_client -connect xmpp.federez.net:5222 -starttls xmpp -xmpphost federez.net 
 +# XMPP client multiplexé over 443 
 +openssl s_client -connect xmpp.federez.net:443 -starttls xmpp -xmpphost federez.net 
 +# XMPP client direct (multiplexé) 
 +openssl s_client -connect xmpp.federez.net:5223 -alpn xmpp-client -xmpphost federez.net 
 +# XMPP client multiplexé over 443 
 +openssl s_client -connect xmpp.federez.net:443 -alpn xmpp-client -xmpphost federez.net 
 +# XMPP server classique 
 +openssl s_client -connect xmpp.federez.net:5269 -starttls xmpp-server -xmpphost federez.net 
 +# XMPP server direct 
 +openssl s_client -connect xmpp.federez.net:5270 -alpn xmpp-server -xmpphost federez.net
 </code> </code>
  
-Todos update status: +====Todo / futures améliorationss==== 
-  * SSLH est installé et fonctionnelmais pas testé les différentes options de multiplexage car pas de DNS record pour les solliciter +  * MAM archives: En l'état les logs des utilisateurs sont stockés dans mnesia, dont la taille limite est de 2GB. Comme biboumiejabberd supporte PostgreSQL, il serait judicieux de migrer l'archivage des messages hors mnesia, et utiliser ejabberdctl delete_old_mam_messages périodiquement en attendant.
-  * Certificate mismatch pour http-upload à corriger +
-  * DNS à mettre à jour+
admin/services/xmpp.1521584128.txt.gz · Dernière modification : 2018/03/20 23:15 de Tamytro

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki