Installation de la plate-forme sociale Movim
Dernière mise à jour : 06/02/2017.
Petit rappel des épisodes précédents. XMPP est un ensemble de protocoles de communication standards et ouverts. On peut en savoir plus en lisant mon article concernant l'installation du serveur XMPP Metronome. Lorsqu'on dispose d'un compte XMPP sur un tel serveur, il est possible de communiquer avec toute personne disposant elle-même d'un accès à ce protocole. Pour cela, on va utiliser un logiciel dit client qui va exploiter les services offerts par le serveur. Il existe des interfaces de bureau tels Gajim ou Empathy, des clients Android tel Conversations, des clients en mode texte tels Profanity, MCabber ou Poezio, et des clients web tel que... Movim. Il existe même un ambitieux projet nommé Salut à Toi qui vise à proposer l'ensemble de ces interfaces !
Il est important de bien comprendre le mécanisme. Toutes les informations relatives à XMPP sont gérées par le serveur XMPP. La liste des contacts, les messages publiés, les salons de discussion ou tout autre type de données sont détenues par le serveur XMPP. Quel que soit le client utilisé, on accède aux mêmes informations. On peut donc utiliser plusieurs clients, même simultanément, qui verront automatiquement leur contenu synchronisé !
Movim est un logiciel libre permettant d'exploiter les fonctionnalités offertes par XMPP directement depuis son navigateur web. Par conséquent, notre réseau social est accessible partout, quel que soit le terminal client utilisé. Si l'instance de Movim choisie le permet — on parle également de « pod » —, il est possible de s'y connecter avec n'importe quel compte XMPP. De fait, si l'on dispose déjà d'un compte XMPP, on peut d'ors-et-déjà profiter de Movim sur tout pod ouvert au public !
Cet article présente l'installation de la version de développement de Movim sur une distribution Debian GNU/Linux. Il n'est pas possible de l'installer sur n'importe quel espace d'hébergement web. En effet, Movim nécessite l'exécution d'un démon pour fonctionner ; ce programme doit donc être installé sur un serveur dédié ou une machine virtuelle. Un serveur web et un gestionnaire de bases de données fonctionnels sont également nécessaires. Par ailleurs, on considère que tous les échanges web se font en HTTPS. L'objet de l'article n'est pas de décrire une telle installation ; nous n'entrerons donc pas dans les détails y afférent.
Informations techniques
Nom du programme : Movim
Version utilisée : 0.11 (en développement)
Licence : GNU AGPL v3
Développeur principal : Timothée Jaussoin
Localisation : France
Site web : www.movim.eu
Serveur XMPP utilisé : Metronome
Distribution utilisée : Debian GNU/Linux 8.7 « Jessie »
Article Wikipédia (en anglais) : https://en.wikipedia.org/wiki/Movim
XMPP (article Wikipédia) : https://fr.wikipedia.org/wiki/XMPP
Préalable à l'installation
En ce qui me concerne, l'installation va s'opérer sur une machine virtuelle présente sur le réseau local disposant d'un serveur web Apache et d'un gestionnaire de bases de données MySQL préalablement installés. Un hôte virtuel et une base de données spécifiques ont été créés pour l'occasion. Cette machine virtuelle n'étant pas directement accessible en dehors du réseau local, il est nécessaire de configurer convenablement le serveur web frontal pré-existant installé sur une autre machine virtuelle afin de servir l'instance de Movim. Cela passe par l'usage des fonctionnalités de reverse proxy de Apache, à configurer dans un nouvel hôte virtuel du serveur frontal.
Si l'on dispose d'un nom de domaine et qu'on a la faculté de configurer le serveur DNS faisant autorité correspondant, il pourrait s'avérer pratique d'attribuer un enregistrement spécifique au service proposé ; sous la forme, par exemple, de movim.EXAMPLE.COM.
Installation de Movim
La tâche consiste d'abord à installer les dépendances nécessaires avant de s'occuper du programme en lui-même. Les étapes à suivre sont énoncées ci-dessous.
Se connecter en tant que super-utilisateur :
su -
Installer les dépendances :
aptitude install php5 php5-curl php5-gd php5-imagick php5-mysqlnd git curl
Se déplacer à la racine du serveur web :
cd /var/www
Cloner le dépôt git :
git clone https://github.com/edhelas/movim.git
Attribuer le répertoire créé à l'utilisateur www-data :
chown www-data: movim
S'y déplacer :
cd movim
Movim utilise le programme Composer pour gérer les dépendances PHP. Il faut commencer par l'installer dans le répertoire courant :
curl -sS https://getcomposer.org/installer | php
Puis installer localement les dépendances nécessaires :
php composer.phar install
Copier le fichier de configuration de Movim donné en exemple :
cp config/db.example.inc.php config/db.inc.php
L'éditer et changer les paramètres de connexion à la base de données avec les informations adéquates :
vim config/db.inc.php
Pour échanger avec le navigateur de l'utilisateur, Movim utilise un démon chargé de maintenir une communication WebSocket. Il est possible de le lancer manuellement mais il est préférable de créer un service systemd afin d'en faciliter la gestion. Créer le nouveau service :
vim /etc/systemd/system/movim.service
Et y coller ceci :
[Unit] Description=Movim daemon After=apache2.service network.target local-fs.target mysql.service [Service] User=www-data Type=simple ExecStart=/usr/bin/php daemon.php start --interface=IP_LOCALE_SERVEUR_MOVIM --url=https://movim.EXAMPLE.COM/ --port=8080 WorkingDirectory=/var/www/movim/ StandardOutput=syslog SyslogIdentifier=movim PIDFile=/run/movim.pid [Install] WantedBy=multi-user.target
Par défaut, le démon de Movim n'écoute que l'interface réseau virtuelle de sa boucle locale. Afin de pouvoir communiquer avec le serveur frontal, il a fallu changer cela en faveur de son adresse IP locale, grâce à l'option --interface.
Activer le service au démarrage :
systemctl enable movim.service
Lancer une première fois le service pour créer les répertoires d'usage :
systemctl start movim.service
Puis mettre la base de données à jour :
php mud.php db --set
Enfin, relancer le service :
systemctl restart movim.service
Configuration du serveur web frontal
Afin de pouvoir accéder à l'instance de Movim fraîchement installée, il faut configurer le serveur frontal. Il est tout d'abord nécessaire d'activer le module Apache permettant le transfert des communications WebSocket. Après s'être connecté à cet autre serveur en tant que super-utilisateur, la commande à taper est la suivante :
a2enmod proxy_wstunnel
Un hôte virtuel Apache est à créer, contenant notamment les lignes suivantes :
ProxyPreserveHost On ProxyPass /ws/ ws://IP_LOCALE_SERVEUR_MOVIM:8080/ ProxyPassReverse /ws/ ws://IP_LOCALE_SERVEUR_MOVIM:8080/ ProxyPass / https://IP_LOCALE_SERVEUR_MOVIM/ ProxyPassReverse / https://IP_LOCALE_SERVEUR_MOVIM/
Enfin, il faut redémarrer le serveur web :
systemctl restart apache2.service
Il se peut qu'un certificat TLS auto-signé sur le serveur Movim pose des problèmes. Il est possible de configurer l'hôte virtuel pour passer outre. Par exemple, voici la configuration complète d'un hôte virtuel pour le serveur frontal :
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName movim.EXAMPLE.COM SSLProxyEngine On SSLProxyCheckPeerCN Off SSLProxyCheckPeerExpire Off SSLProxyCheckPeerName Off SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ProxyPreserveHost On ProxyPass /ws/ ws://IP_LOCALE_SERVEUR_MOVIM:8080/ ProxyPassReverse /ws/ ws://IP_LOCALE_SERVEUR_MOVIM:8080/ ProxyPass / https://IP_LOCALE_SERVEUR_MOVIM/ ProxyPassReverse / https://IP_LOCALE_SERVEUR_MOVIM/ </VirtualHost> </IfModule>
Mise à jour de Movim
Pour mettre à jour Movim, il faut commencer par synchroniser le répertoire d'installation avec le dépôt git :
git pull
Mettre à jour les dépendances PHP :
php composer.phar update
Puis relancer le service :
systemctl restart movim.service
Il est parfois nécessaire de mettre à jour la base de données, comme indiqué dans les journaux ou sur la page correspondante de l'interface de Movim :
php mud.php db --set
Et voilà ! Movim est installé et prêt à être utilisé. Voyons cela.
Configuration de Movim
Pour se connecter à l'interface de configuration, il faut rejoindre https://movim.EXAMPLE.COM/?admin. Par défaut, l'identifiant est admin et le mot de passe password.
La première page présente un aperçu de l'installation sous forme graphique. La deuxième présente les paramètres généraux, où il est possible de changer la langue par défaut, le niveau de détails des journaux, le fuseau horaire, la liste des serveurs XMPP dont les comptes utilisateurs sont autorisés à se connecter à l'instance de Movim installée, un potentiel message d'information, ainsi que l'identifiant et le mot de passe d'administration. La troisième page présente un résumé du statut de la base de données, et la quatrième les statistiques d'abonnement à l'instance. La dernière page propose d'activer l'API qui permet de faire connaître son instance au reste du réseau et d'être listé aux cotés des autres pods.
Utilisation de Movim
Pour se connecter à Movim avec son compte XMPP, il suffit de rejoindre https://movim.EXAMPLE.COM.
La page d'accueil est un sorte de tableau de bord de toute l'activité récente. Sur la gauche, la barre d'icônes permet d'accéder aux pages actualité, contacts, groupes, et discussions, ainsi que de changer son statut et de configurer son profil XMPP. Un moteur de recherche rapide et efficace est également présent afin de retrouver une publication ou un contact.
La page d'actualités centralise toutes les récentes publications de nos contacts et des groupes auxquels nous sommes abonnés. Il est également possible de rédiger un nouveau billet, potentiellement public. Si tel est le cas, cet article alimente automatiquement une page spéciale correspondant au blog de l'auteur et accessible à tous ; lequel blog dispose par ailleurs d'un flux Atom associé.
La page des contacts permet de les lister, d'en ajouter ou d'entamer une nouvelle discussion. La page des discussions regroupe les échanges en cours, permet d'en entamer de nouveaux ou de participer à un salon de discussion, voire d'en créer un nouveau et de l'administrer.
La page des groupes permet de lister ceux du serveur de groupes choisi et d'en lire les publications. Il est ici possible de s'abonner à un groupe afin de recevoir les nouvelles publications directement dans son fil d'actualités. Si le groupe le permet, il est possible d'y rédiger une nouvelle publication. Il est aussi possible de créer un nouveau groupe et d'en administrer les droits. Cette notion de groupe est très particulière et vraiment intéressante. Grâce aux groupes, il est possible de trouver des contenus à suivre ou de nouveaux contacts, voire de créer un nouveau point de rassemblement autour d'un sujet donné !
Utilisant Material Design, l'interface est simple, claire et plaisante. Responsive design, elle s'adapte à toute taille d'écran.
Movim est un beau projet, qui donne envie d'utiliser XMPP plus souvent !
Article sous licence Creative Commons BY-SA 3.0 France.
Publié le
Lundi 9 novembre 2015 à 11h12Ajouter un commentaire
Flux RSS des commentaires de cet article.
Commentaires
Anonyme a répondu le Permalien
Pas de support du WebRTC, malheureusement, contrairement à JSXC. Cf. https://www.jsxc.org/features.html
Cyp a répondu le Permalien
En fait, c'était intégré dans la version précédente. Mais cela représentait une charge de travail supplémentaire pour le développeur qui a décidé de retirer cette fonctionnalité afin de se concentrer sur d'autres tâches. Qui sait, cela reviendra peut-être dans une future version ?
Cyp a répondu le Permalien
A priori, le retour de WebRTC est prévu pour la version 0.11 !
Renaud a répondu le Permalien
Salut !
C'est possible d'avoir un peu plus de détails à partir de la config' du serveur frontal ? J'ai tout installé sur un VPS mais le daemon ne semble pas lancé quand on est sur l'admin web. « Erreur de connexion websocket ». Un peu dans le flou sur la config' de l'hôte virtuel. J'aimerais créer un pod totalement privé et impossible d'y arriver depuis le wiki github non plus.