Peertube - plugin de chat

Bonjour,

Je suis le développeur du plugin de chat pour Peertube : GitHub - JohnXLivingston/peertube-plugin-livechat

Je ne suis pas utilisateur de Yunohost personnellement, mais je souhaiterais faciliter l’usage de ce plugin pour les personnes étant sous Yunohost (je sais que pas mal d’instances Peertube tournent sous yunohost, j’ai déjà reçu plusieurs demandes, et je vois qu’il y en a au moins eu 2 sur ce forum). En effet, le plugin n’est malheureusement pas «out of the box», il y a des pré-requis.

Ce plugin a 3 modes de fonctionnements possibles:

  • S’appuyer sur le serveur XMPP Prosody, qui doit donc être installé sur la machine.
  • S’appuyer sur un serveur XMPP, qui permet de s’y connecter via un protocole web (BOSH et/ou Websocket)
  • Afficher une iframe quelconque qui contient un outils de chat quelconque.

Le premier de ces 3 modes est le mode recommandé. En effet, il me permet d’utiliser des plugins Prosody spécifiques, pour communiquer entre Peertube et le serveur XMPP.
Parmis les features que cela permet :

  • Authentifier automatiquement les utilisateur⋅rice⋅s Peertube connecté⋅e⋅s
  • Promouvoir modérateur⋅rice du salon de webchat le⋅a propriétaire de la vidéo
  • Idem pour les admins de l’instance
  • Lister aux admins les webchats existants (pour détecter d’éventuel spam).
  • etc…

Pour que ce mode puisse fonctionner, il faut donc le logiciel Prosody installé sur la machine. Note importante : le service Prosody n’a pas besoin d’être démarré. Pour éviter tout conflit avec d’éventuelles installations existantes (Prosody a certains paramètres qui ne peuvent qu’être globaux…), le plugin va lancer Prosody lui même, en écoutant sur des ports non standards (et configurables). Et Peertube va agir comme proxy pour les connexions via le protocole BOSH.

Une démo du plugin est disponible ici : Live chat test - YinY.org
Il y a aussi une ancienne vidéo, qui présentait du work in progress (qui est désormais intégré dans le plugin) : Présentation des évolutions à venir sur le plugin de chat Peertube - Vidéos Globenet

Venons-en maintenant aux différentes questions et problèmes que j’ai.
Je me permet de les poser ici, pour que vous puissiez m’aiguiller vers les bonnes pistes pour les résoudre.

  1. Comment installer Prosody

N’étant pas utilisteur de Yunohost, je ne sais pas quel serait la marche à suivre pour installer Prosody quand on veut activer le plugin. Est ce que ce serait quelque chose qui serait fait automatiquement à l’installation de Peertube - en prévision de l’installation du plugin, ou est ce que ce serait par exemple un paramètre à activer dans l’interface de yunohost ?
Je rappelle que le service Prosody n’a pas besoin d’être actif. Il faut juste que les commandes «prosody» et «prosodyctl» soient dans $PATH (et que ses quelques dépendances soient installées: LUA, …)

  1. Conflit avec Metronome

Je ne le savais pas quand j’ai choisi de m’appuyer sur Prosody, mais Yunohost utilise le serveur XMPP Metronome.
Metronome est un fork de Prosody (fork datant d’il y a plusieurs années, les 2 applis sont maintenant différentes).
Le problème, c’est que le package Debian de Metronome conflict avec Prosody. Ce qui empêche d’installer Prosody via apt.

Je pourrais faire en sorte que le plugin sache aussi gérer Metronome. Mais je ne suis pas très chaud. Ça voudrait dire que je dois maintenir 2 versions du code qui pilote le serveur XMPP, et 2 versions de chacun de mes modules qui assure la connexion Peertube <–> XMPP.

Voyez-vous une approche possible ?
Ne connaissans pas l’environnement Yunohost, je ne sais pas trop quelles seraient les pistes à privilégier…

  • installer les dépendances (LUA, …), puis installer Prosody depuis les sources ? Mais on a alors là un problème de mise à jour
  • contourner le conflict des packages debian (par ex: extraire le contenu du .deb dans un dossier, puis déplacer les fichiers au bon endroit ? Ou inclure le dossier dans $PATH ?)
  • installer Prosody, mais du coup interdire d’activer Metronome ?

Voilà. J’espère avoir été suffisamment clair dans mes explications. Et je vous remercie d’avance pour votre aide.

3 Likes

Après quelques recherches, il est assez simple de compiler et installer Prosody à la main.

En gros, ça consiste à installer les dépendances (ici, pas de problème pour passer par les packages debian, pas de conflict avec Metronome), puis:

# se placer dans le dossier où on veut compiler
wget https://prosody.im/downloads/source/prosody-0.11.10.tar.gz
tar xzf prosody-0.11.10.tar.gz
cd prosody-0.11.10
./configure --prefix=/le_chemin_ou_on_veut_installer_prosody
make
make install

Il faut éventuellement ajuster quelques paramètres, mais ça devrait fonctionner en l’état.

NB: ne pas le faire en root. Eventuellement créer un user «prosody», ou le faire avec le user «peertube».

Est ce que ce type d’approche vous semble compatible avec l’esprit Yunohost ?

Ok, je viens de trouver le repository qui gère l’intégration Peertube. J’ai ouvert ce ticket: Plugin peertube-plugin-livechat support · Issue #278 · YunoHost-Apps/peertube_ynh · GitHub

Je vois en parcourant le code que ça installe déjà un plugin à la main (LDAP). Donc il y a sans doute moyen d’installer aussi le plugin de chat, et de compiler Prosody si nécessaire.

My French is not good enough to follow the conversation, so I only have one remark :wink:

Nextcloud also comes with its own XMPP server, which is nice but inconvenient because then you have 2 XMPP accounts instead of 1.

I tried to get BOSH running; back then it proved to complicated for me. I didn’t try again, but I think that would be the preferable option.

There is no need to have XMPP account for my plugin.

It does not use the Prosody service, it launch another Prosody process, controlled by Peertube. So that the configuration does not conflict with any existing services.
Then, I have custom Prosody modules to interract with Peertube. Any peertube user will be automatically authentified, and non-peertube users will be «anonymous».
So there is no need to create XMPP accounts.

And for BOSH, Peertube acts as the reverse proxy. So BOSH requests are on the same domain as Peertube, so there is no need for tricks like «CORS headers».

1 Like

Salut @JohnLivingston,

Pour le plugins LDAP, c’est parce que YunoHost intégre un serveur openldap en natif et c’est donc pour permettre que les utilisateurs YunoHost aient automatiquement un compte dans PeerTube.

Pour ce qui est du plugin de chat, tout d’abord, trés beau boulot, c’est vraiment cool que tu ais fait ça. ça va grave élargir les possibilités d’utilisation de peertube.

Concernant le probléme “prosody”, je vois plusieurs options:

  1. tester l’installation du plugins à la main et voir ce qui bloque et voir ce qu’il est possible d’adapter ou contourner
  2. tenter l’installation à la main de prosody… ça serait peut être une solution pur un autre problème que l’on rencontre sur le package de jitsi
  3. passer par l’option Connect to an existing XMPP server with ConverseJS

ça demanderait un peu de travail, à voir si quelqu’u est motivé… moi en ce moment pas trop trop ^^

Hello,

Yes, j’avais compris l’idée. Et c’est vraiment chouette.

Merci :slight_smile:

De ce qu’on m’a remonté, c’est le package debian de Metronome qui a un «conflict: prosody». On ne peut donc pas installer les deux en même temps.

Je suis entrain de faire un peu de R&D là dessus. Ce n’est pas très compliqué en soit. Mais tant qu’à faire ça, j’aimerais aussi une solution qui marche pour les installations Docker. Et là, ça devient un peu relou.
Je dois encore creuser cette piste.

Alors, ça va marcher. Mais c’est dommage, parce qu’on perd l’intégration Peertube/Prosody, qui permet par ex d’auto-connecter les users Peertube, donner des droits de modération, etc…

Intéressant le ticket sur Jitsi… Ça ne m’étonne pas que ça ne fonctionne pas, Jitsi amène pas mal de modules Prosody custom. Et d’après la doc de métronome, il y a des incompatibilités dans plusieurs API.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

Je suis toujours entrain de chercher la bonne façon de simplifier l’installation de mon plugin de tchat.

En attendant, j’ai une solution pour l’installer et utiliser le mode «Prosody» sur Yunohost.
Je l’ai documenté ici en anglais : peertube-plugin-livechat/prosody.md at main · JohnXLivingston/peertube-plugin-livechat · GitHub

Je résume vite fait l’idée.
Les paquets debian de Metronome et Prosody sont marqués en conflit, car les services ne peuvent tourner simultanément (conflit de ports utilisés). Or mon plugin n’utilise pas le service Prosody démarré par le paquet. Il n’a besoin que de l’exécutable. Et le plugin Peertube va lancer lui même un processus Prosody, avec une configuration qui n’utilise aucun port par défaut.
Il suffit donc d’installer Prosody manuellement. La doc officielle : Installing from source – Prosody IM (ou voir le lien vers mon dépôt, donné plus haut).

Cette procédure a été testée avec succès par @wbk (@wbk, I’m just saying you managed to successfully follow the steps I added in the documentation).

1 Like

Yes, I did, and so far it works flawlessly. Thanks again!

1 Like

Salut @JohnLivingston ,
je déterre ce sujet car je n’ai pas trouvé ailleurs comment faire pour activer ton plugin.
YuNoHost n’implique plus metronome dans la version 12 bookworm (que je viens de passer sur mes serveurs),
je me dis donc que ça devrait simplifier le problème si problème il y a encore:
en effet, le plugin est bien installé sur mon instance (depuis longtemps en fait, mais à l’époque j’avais encore un metronome qui tournait) mais je n’ai jamasi pris le temps de le configurer, et c’est peut-être ça qui manque ?

je peux te copier les informations de diagnositque du plugin si besoin que ce lien me donne :wink: juste dis moi
https://media.krashboyz.org/plugins/livechat/11.0.1/router/settings/diagnostic

Salut.
Il n’y a plus rien de spécial à faire.
Si ça ne marche pas, c’est peut-être que tu as coché “Utiliser le serveur Prosody installé sur le système”. Dans ce cas, il devrait suffire de le décocher.

Je n’ai pas accès a ta page de diagnostique, il faut être authentifié avec un compte admin.

1 Like

elle dit

Diagnostic

  • Starting tests: OK
  • Browser: OK
  • backend: KO

il me semble que l’autre jour j’avais des trucs plus détaillés en json entre autres :thinking:

Use system Prosody était effectivement coché :wink:

décochée,
j’ai ouvert le port indiqué dans la conf (52800) en TCP sur le fw de la webadmin yunohost,
j’ai restarté le service peertube,
mais toujours pas de chat’ :thinking:

desinstall du plugin
restart du service
reinstall du plugin

{"level":"info","message":"Installing plugin peertube-plugin-livechat.","label":"media.krashboyz.org:443","timestamp":"2024-09-20T10:42:18.310Z"}

ouverture du port 53470 que j’avais omis
restart du service peertube
relogin ,

mais toujours pas de chat,

dis moi quels logs te seraient utiles ?
(aucune urgence hein :wink: )

edit:
je me suis posé sur une ancienne video,
et voilà les logs dans la webamin du service peertube:

https://paste.yunohost.org/eyuhebenup

edit 2: il me semble voir un soucis oauth ligne 98, mais aucune case cochée dans la section webadmin du plugin pour " OpenID Connect"

edit 3: j’ai retrouver comment avoir les diag avec les json etc…
voilà ce que ça dit:
json
{“type”:“PeerTube is invalid”,“status”:400,“code”:“invalid_request”,“error”:“Token is invalid”}

rien à voir je pense puisque l’url pointée c’est la doc, et ça doit venir de ça : response headers: x-xss-protection 1; mode=block

edit 4:

https://github.com/JohnXLivingston/peertube-plugin-livechat/blob/main/documentation/prosody.md#yunohost ne semble plus exister :wink:
ok , trouvée la nouvelle doc Known issues: CPU Compatibility :: Peertube plugin livechat documentation

Il n’y a aucun port à ouvrir (sauf si tu les bloque aussi sur l’interface localhost).

Ce que donne l’outils de diagnostic (le contenu complet de la page).

Ce n’est plus d’actualité. C’est un oubli que ce soit encore présent. Je retire ça de la doc dans la semaine.

En fait ce bout de documentation est toujours correct, mais ne concerne que le cas où le CPU n’est ni un x86_64 ni un arm64 (cf le haut de la page)