Yunohost
Cette page recense les informations utiles concernant l'administration d'un serveur XMPP dans Yunohost.
En bref
La page d'aide officielle du projet est : https://yunohost.org/fr/administrate/overview/xmpp pour les DNS attendus : https://yunohost.org/fr/dns_config
Jusque Yunohost 11, Yunohost fournit par défaut le serveur Metronome pour ses besoins propres.
Le fichier de configuration par défaut peut-être consulté ici : https://github.com/YunoHost/yunohost/blob/dev/data/templates/metronome/metronome.cfg.lua
À partir de Yunohost 12, il n'y a plus de serveur XMPP fourni par défaut. Une app est en cours de préparation (statut 03/2024) pour fournir Prosody avec le meilleur support possible (https://github.com/anubister/prosody_ynh/).
Du support peut être obtenu sur xmpp:support@conference.yunohost.org?join et les discussions pour l'amélioration du support XMPP dans Yunohost sur xmpp:yunohost-xmpp@muc.chapril.org?join .
Configuration de BOSH
Ce service est nécessaire pour pouvoir accéder au serveur XMPP depuis des clients qui ont un accès restreint, comme Conversejs ou JSXC, le client XMPP pour NextCloud.
Le module Metronome est déjà activé par défaut, il suffit d'installer une app qui va rendre le service BOSH accessible de l'extérieur en utilisant l'app Redirect :
yunohost app install redirect -a "domain=your.domain&path=/http-bind&redirect_path=http://localhost:5290/http-bind&redirect_type=public_proxy" -l BOSH
Source : https://forum.yunohost.org/t/unable-to-set-up-bosh-conf-nginx/12995 https://forum.yunohost.org/t/configure-xmpp-in-nextcloud-addon-javascript-xmpp-client/2934/4?u=ashledombos
Configuration service TURN/STUN
Ce service est nécessaire pour passer des appels audio/vidéo notamment avec Conversations.
Source : https://github.com/YunoHost/issues/issues/1607
Limitations
Problèmes connus
- Impossible d'envoyer des fichiers PDF (+autres extensions ?) depuis un compte Yunohost/Metronome
Modifier ou ajouter dans la conf /etc/metronome/conf.d/domain.ext.cfg.lua
, dans la section Component "xmpp-upload.domain.ext" "http_upload"
:
http_file_add_mime_types = { ["json"] = "application/json", ["txt"] = "text/plain", ["png"] = "image/png",["jpg"] = "image/jpg", ["pdf"] = "application/pdf", ["doc"] = "application/msword", ["htm"] = "text/html", ["html"] = "text/html", ["mp3"] = "audio/mpeg3", ["gif"] = "image/gif", ["mp4"] = "video/mp4", ["mpeg"] = "video/mpeg", ["m4a"] = "audio/m4a", ["ogg"] = "application/ogg", ["gpx"] = "application/gpx+xml", ["vcf"] = "text/vcard", ["ics"] = "text/calendar", ["sxw"] = "application/vnd.sun.xml.writer", ["stw"] = "application/vnd.sun.xml.writer.template", ["sxg"] = "application/vnd.sun.xml.writer.global", ["sdw"] = "application/vnd.stardivision.writer", ["vor"] = "application/vnd.stardivision.writer", ["sgl"] = "application/vnd.stardivision.writer-global", ["sxc"] = "application/vnd.sun.xml.calc", ["stc"] = "application/vnd.sun.xml.calc.template", ["sdc"] = "application/vnd.stardivision.calc", ["sxi"] = "application/vnd.sun.xml.impress", ["sti"] = "application/vnd.sun.xml.impress.template", ["sdd"] = "application/vnd.stardivision.impress", ["sdp"] = "application/vnd.stardivision.impress", ["sxd"] = "application/vnd.sun.xml.draw", ["std"] = "application/vnd.sun.xml.draw.template", ["sda"] = "application/vnd.stardivision.draw", ["sxm"] = "application/vnd.sun.xml.math", ["smf"] = "application/vnd.stardivision.math", ["odt"] = "application/vnd.oasis.opendocument.text", ["ott"] = "application/vnd.oasis.opendocument.text-template", ["oth"] = "application/vnd.oasis.opendocument.text-web", ["odm"] = "application/vnd.oasis.opendocument.text-master", ["odg"] = "application/vnd.oasis.opendocument.graphics", ["otg"] = "application/vnd.oasis.opendocument.graphics-template", ["odp"] = "application/vnd.oasis.opendocument.presentation", ["otp"] = "application/vnd.oasis.opendocument.presentation-template", ["ods"] = "application/vnd.oasis.opendocument.spreadsheet", ["ots"] = "application/vnd.oasis.opendocument.spreadsheet-template", ["odc"] = "application/vnd.oasis.opendocument.chart", ["odf"] = "application/vnd.oasis.opendocument.formula", ["odb"] = "application/vnd.oasis.opendocument.database", ["odi"] = "application/vnd.oasis.opendocument.image" }
(source : https://forum.yunohost.org/t/metronome-mime-types-for-metronome-again/20073 )
- XEP manquante dans Metronome posant problème pour OMEMO : https://github.com/maranda/metronome/issues/549
Faire tourner un autre serveur XMPP
Pourquoi ?
Prosody est requis pour certaines app Yunohost comme PeerTube et Jitsi. Prosody dispose d'un plus grand nombre d'extensions (XEP) et son développement est plus actif.
Comment ?
- Option 1
Il est possible de faire tourner Prosody à la place de Metronome :
yunohost app install prosody
semble suffire d'après https://forum.yunohost.org/t/switching-from-metronome-to-prosody-yunohost-application/19436/6
Cela requiert d'arrêter Metronome : attention aux effets de bord engendrés par la désactivation de Metronome (pas clair ce que cela peut casser).
- Option 2
Un autre retour d'expérience plus détaillé est dispo ici : http://sebseb01.net/blog/2023-poc-yunohost-metronome-prosody
Historique Metronome vs Prosody
Pourquoi Prosody n'est pas le serveur par défaut dans Yunohost ? voir https://github.com/YunoHost/issues/issues/67 En bref, en certaines fonctionnalités présentes dans Metronome en 2016 ne l'étaient pas dans Prosody. En 2017 Prosody a rattrapé ces fonctionnalités manquantes (et en permet beaucoup plus), la migration est préparée [1]. La préparation de la migration est quasi achevée début mars 2018 mais l'annonce de reprise du développement de Metronome stoppe brutalement le process. [2]
Inscription
Les nouveaux utilisateurs doivent être ajoutés manuellement par un admin Yunohost, pas possible de créer un compte depuis un client XMPP. Voir quand la fonctionnalité sera implémentée : https://github.com/YunoHost/issues/issues/1677
Liens utiles
Conf par défaut de Metronome dans Yunohost : https://github.com/YunoHost/yunohost/blob/dev/conf/metronome/metronome.cfg.lua