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é !

Logo de Movim
Logo de Movim

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.

Aperçu de l'installation
Aperçu de l'installation
Paramètres de configuration
Paramètres de configuration

Utilisation de Movim

Pour se connecter à Movim avec son compte XMPP, il suffit de rejoindre https://movim.EXAMPLE.COM.

Page de connexion
Page de connexion
Page d'actualités
Page d'actualités

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.

Moteur de recherche
Moteur de recherche
Lecture d'un article
Lecture d'un article

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é.

Nouveau billet
Nouvel article
Blog d'un contact
Blog public d'un contact

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.

Profil d'un contact
Profil d'un contact
Discussion en cours
Discussion en cours

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é !

Serveurs de groupes
Serveurs de groupes
Lecture d'un groupe
Lecture d'un groupe

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 à 11h12

Commentaires

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 ?

A priori, le retour de WebRTC est prévu pour la version 0.11 ! Smile

Salut!
C'est possible d'avoir un peu plus de détails a 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'hote virtuel. J'aimerais creer un pod totalement privé et impossible d'y arriver depuis le wiki github non plus.

Ajouter un commentaire

HTML filtré

  • Balises HTML autorisées : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p>
  • Textual smiley will be replaced with graphical ones.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Texte brut

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Flux RSS des commentaires de cet article.