Movim

Movim est une appli Web de microblogging et de discussion, un peu comme Mastodon, Diaspora, … La particularité de Movim c'est d'être basé sur le protocole XMPP.

Chez parinux le serveur XMPP est ejabberd.

Maintenance

Logs utiles

journalctl -f -u movim

journalctl -f -u php7.3-fpm

tail -f /var/log/apache2/movim.access.log

Relancer Movim

systemctl restart movim

Données à sauvegarder

Movim ne stocke que très peu de données qui méritent d'être sauvegardées. L'essentiel de données visibles dans Movim sont en réalité publiées sur les serveurs XMPP. La base de données SQL utilisée par Movim sert essentiellement de cache pour éviter de solliciter systématiquement les serveurs XMPP.

Les seules données originales produites par Movim sont les paramètres de configuration qui sont stockés dans la table configuration.

Mettre à jour

Si une nouvelle version est disponible au téléchargement au format .tar.gz voici la procédure simple et générique pour mettre à jour Movim.

Avant toute chose jeter un œil sur la page officielle au cas où il y aurait une procédure particulière pour cette version.

cd /var/www/movim/upstream
curl -JOLs https://github.com/movim/movim/archive/x.xx.x.tar.gz
cd ..
tar xavf upstream/x.xx.x.tar.gz
ln db.inc.php movim-x.xx.x/config/
rm public_html && ln movim-x.xx.x public_html
cd public_html
sudo -u movim composer install
sudo -u movim php vendor/bin/phinx migrate
systemctl restart movim

Installation

Même s'il existe enfin un paquet Debian pour movim, il est loin d'être parfait et l'installation à l'ancienne se passe bien alors voici comment j'ai fait.

J'ai essayé de faire marcher movim avec MySQL car on avait déjà un serveur MySQL opérationnel que j'aurais aimé utiliser, mais Movim fonctionne vraiment très mal avec MySQL, dès l'installation. Donc j'ai craqué et j'ai installé un postgresql en local (sans chercher à voir si on avait déjà un postgresql quelque part, mais c'est pas grave, si besoin on déplacera la BDD là où il faut).

Pré-requis APT

apt install apache2 php-fpm php-pgsql \
 php-curl php-gd php-mbstring php-xml \
 composer php-symfony

Créer un utilisateur système dédié

useradd --system -d /var/www/movim/ --create-home --shell /bin/nologin movim

Préparer une base de données

Installer postgresql si besoin :

apt install postgresql

Puis créer un utilisateur et une base dédiés à Movim.

sudo -u postgres createuser --pwprompt movim
sudo -u postgres createdb -O movim movim

Déployer le code de Movim

cd /var/www/movim
mkdir upstream
cd upstream
curl -JOLs https://github.com/movim/movim/archive/0.14.1.tar.gz
cd ..
tar xavf upstream/movim-0.14.1.tar.gz
ln -s movim-0.14.1 public_html
chown -R movim: /var/www/movim/public_html/
cd public_html
sudo -u movim composer install
cp config/db.example.inc.php config/db.inc.php
edit config/db.inc.php
sudo -u movim php vendor/bin/phinx migrate

(Ré)initialiser le compte admin Movim

sudo -u movim php daemon.php config --username=admin --password=v3rys3cr3t

Ce compte admin permet alors de faire quelques réglages sur la page d'admin Movim.

Créer un service systemd

Créer le fichier /etc/systemd/system/movim.service :

[Unit]
Description=Movim, kick ass social network
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/php daemon.php start --url=https://movim.parinux.org/ --port=8080 --interface=0.0.0.0
User=movim
WorkingDirectory=/var/www/movim/public_html
StandardOutput=syslog
SyslogIdentifier=movim
PIDFile=/run/movim.pid

[Install]
WantedBy=default.target

On prévient systemd qu'il y a du nouveau :

systemctl daemon-reload

On lance movim une première en vérifiant son status avant et après parce qu'on aime bien ça :

systemctl status movim
systemctl start movim
systemctl status movim

Configurer apache et php-fpm

Créer le fichier /etc/apache2/sites-available/movim.conf :

<VirtualHost *:80>
  ServerName movim.parinux.org
  DocumentRoot /var/www/movim/public_html

  ProxyPreserveHost On
  <LocationMatch .*\.php>
    SetHandler "proxy:unix:/run/php/movim.sock|fcgi://localhost/"
  </LocationMatch>
  ProxyPass /ws/ ws://localhost:8080/

  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
  CustomLog /var/log/apache2/movim.access.log proxy
  ErrorLog /var/log/apache2/movim.error.log
</VirtualHost>

Activer cette config :

a2ensite movim.conf

Activer quelques modules apache :

a2enmod proxy_wstunnel fcgi

Créer le fichier /etc/php/7.3/fpm/pool.d/movim.conf :

[movim]
user = movim
group = movim
listen = /run/php/movim.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Et relancer php-fpm :

systemctl restart php7.3-fpm

Et vérifier que le fichier /run/php/movim.sock est bien présent et appartient à www-data:www-data.

Relancer apache :

systemctl restart apache2