Outils pour utilisateurs

Outils du site


services:mobilizon.chapril.org

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
services:mobilizon.chapril.org [2026/04/11 17:40] – supprimée - modification externe (Date inconnue) 127.0.0.1services:mobilizon.chapril.org [2026/04/11 17:40] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. pitchum
Ligne 1: Ligne 1:
 +====== Mobilizon Chapril ======
 +
 +Un logiciel fédéré pour organiser des événements, accessible via [[https://mobilizon.chapril.org/]].
 +
 +
 +{{https://www.chapril.org/IMG/logo/arton45.jpg|Aperçu de Mobilizon}}
 +
 +<nspages .:mobilizon.chapril.org: -simpleList -h1>
 +
 +===== Ressources =====
 +
 +Outils du Chapril :
 +    * [[https://icinga.chapril.org/icingaweb2/search?q=Mobilizon|Suivi Icinga]] ;
 +    * [[https://agir.april.org/projects/mobilizon-Chapril-org/issues?set_filter=1&tracker_id=2|Tickets en cours sur Agir]].
 +
 +Dépôts sources utilisés :
 +    * Outils sur [[https://forge.april.org/Chapril/mobilizon.chapril.org-tools]] ;
 +    * Source de l'instance Chapril sur [[https://forge.april.org/Chapril/mobilizon.chapril.org-Mobilizon]] ;
 +    * Dépôt ''upstream'' sur [[https://framagit.org/kaihuri/mobilizon]].
 +
 +===== Installation =====
 +
 +<note warning>
 +**En travaux** La documentation de l'installation de Mobilizon est en cours de mise à jour pour mieux refléter l'installation réalisée par Chapril.
 +La page [[services:mobilizon.chapril.org:installation|Installation de Mobilizon]] sera supprimée à l'issue de ce chantier.
 +</note>
 +
 +L'installation pas à pas est détaillée sur [[https://docs.joinMobilizon.org/administration/install/|la documentation de joinMobilizon.org]].
 +Vous trouverez **ci-dessous les étapes d'installation spécifiques à Chapril**.
 +
 +===== Pré-requis =====
 +
 +    - Mobilizon doit être installé sur la VM Debian nommée **biliz.cluster.chapril.org** sur laquelle on dispose de l'accès ''root'' ;
 +    - Le domaine choisi pour le service Mobilizon est [[https://mobilizon.chapril.org/|mobilizon.chapril.org]] ;
 +    - L'envoi de courriels depuis la VM est [[https://admin.chapril.org/admin/procedures/installation_postfix_satellite|réalisé en mode satellite]].
 +
 +===== Installation locale des dépendances =====
 +
 +L'ajout d'un thème au projet Mobilizon nécessite l'installation depuis la [[https://framagit.org/kaihuri/mobilizon|source du projet]].
 +
 +Il a été décidé de **compiler le projet en local** (sur votre machine) avant de publier les binaires en production.
 +
 +==== Elixir ====
 +
 +Mobilizon utilise le [[https://elixir-lang.org/|langage de programmation Elixir]] côté serveur.
 +Vous devez installer la **version 1.11 au minimum**.
 +Il n'est pas possible d'utiliser la version fournie par Debian 11 (1.10.3) car nous avons besoin de fonctions introduites dans la version 1.11 d'Elixir, comme [[https://hexdocs.pm/elixir/main/Config.html#config_env/0|''config_env'']].
 +
 +Installons la dernière version d'Elixir (1.14.1) depuis la source sur notre machine locale :
 +<code bash>
 +sudo apt install erlang build-essential curl unzip openssl git cmake file
 +wget https://codeload.github.com/elixir-lang/elixir/tar.gz/refs/tags/v1.14.1 -O elixir-1.14.1.tar.gz
 +tar zxf elixir-1.14.1.tar.gz
 +cd elixir-1.14.1/
 +make -j$(nproc --ignore=1)
 +sudo make install
 +</code>
 +
 +<note tip>
 +Si ''wget'' n'est pas déjà installé sur votre machine :
 +<code bash>
 +sudo apt install wget
 +</code>
 +</note>
 +
 +==== NodeJS ====
 +
 +La version 14 de NodeJS est requise.
 +La version 12 est disponible dans Debian 11, c'est pourquoi nous allons installer la version LTS [[https://nodejs.org/en/|depuis le site officiel]].
 +
 +<code bash>
 +wget https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz
 +sudo tar --directory=/usr/local/ --strip-components=1 -Jxvf $PWD/node-v18.12.1-linux-x64.tar.xz
 +<code>
 +
 +==== Yarn ====
 +
 +Mobilizon utilise le gestionnaire de dépendances [[https://yarnpkg.com/|Yarn]] au lieu de NPM (par défaut). Il faut donc installer Yarn via :
 +<code bash>
 +npm install -g yarn
 +</code>
 +
 +==== PostgreSQL ====
 +
 +PostgreSQL n'est pas requis pour la compilation de Mobilizon, mais avoir une base de données en local permet de tester l'application sur votre machine avant de la publier en production.
 +
 +L'extension [[https://postgis.net/|Postgis]] de PostgreSQL est requise afin de localiser les événements de Mobilizon.
 +<code bash>
 +sudo apt install postgresql postgresql-contrib
 +sudo apt install --install-recommends postgis
 +sudo systemctl start postgresql
 +</code>
 +
 +===== Compilation locale de Mobilizon =====
 +
 +Maintenant que nous avons installé localement toutes les dépendances, nous allons compiler puis tester Mobilizon.
 +La première étape consiste à récupérer les sources du projet.
 +Ici, nous installons la version ''3.0.3''.
 +
 +==== Récupération du code source ====
 +
 +<note important>
 +Pour l'instant, on récupère le code source depuis le dépôt Framasoft.
 +Une fois que le thème Chapril aura été appliqué au code source, il faudra récupérer le code source depuis la [[https://forge.april.org/Chapril/mobilizon.chapril.org-mobilizon.git|forge de l'April]].
 +</note>
 +
 +<code bash>
 +git clone https://framagit.org/framasoft/mobilizon.git
 +cd mobilizon/
 +git checkout 3.0.3
 +</code>
 +
 +==== Compilation du serveur ====
 +
 +<note tip>
 +Lors du téléchargement des dépendances Elixir, ''mix'' va vous demander si vous souhaitez installer Hex et Rebar3.
 +Répondez oui. :-)
 +</note>
 +
 +<code bash>
 +# Téléchargement des dépendances Elixir du projet
 +mix deps.get
 +# Compilation du serveur Mobilizon
 +MIX_ENV=prod mix compile
 +</code>
 +
 +==== Compilation du client ====
 +
 +Nous allons nous rendre dans le répertoire ''js/'' (situé dans le dossier du dépôt ''mobilizon'' cloné précédemment) pour installer les dépendances et compiler le client Web.
 +
 +<code bash>
 +cd js/
 +yarn install
 +yarn run build
 +cd ..
 +</code>
 +
 +===== Test local de l'application Mobilizon =====
 +
 +Pour tester l'application Mobilizon qu'on vient de construire, il va nous falloir une configuration locale de Mobilizon et une base de données locale PostgreSQL.
 +
 +==== Installation de PostgreSQL ====
 +
 +<code bash>
 +sudo apt install postgresql postgresql-contrib
 +sudo apt install --install-recommends postgis
 +sudo systemctl --now enable postgresql
 +</code>
 +
 +==== Génération de la configuration locale de Mobilizon ====
 +
 +Commençons par générer la configuration locale avec la CLI de Mobilizon :
 +
 +<code bash>
 +MIX_ENV=prod mix mobilizon.instance gen
 +</code>
 +
 +Indiquez ''localhost'' en tant qu'hôte, ''Test Mobilizon Local'' pour le nom d'instance et utilisez les paramètres par défaut pour le reste des paramètres.
 +
 +Cette commande a généré deux fichiers.
 +Le premier, ''config/runtime.exs'' contient la configuration du serveur.
 +On y trouve entre autres l'URL du serveur, le compte de l'utilisateur PostgreSQL, des informations sur l'instance, le compte courriel.
 +
 +Le second fichier, ''setup_db.psql'' contient les instructions PostgreSQL pour créer la base de données et le compte PostgreSQL d'après les arguments passés à la commande ''mix mobilizon.instance gen''.
 +
 +==== Création de l'utilisateur PostgreSQL pour mobilizon ====
 +
 +Lancer le script SQL généré lors de l'étape précédente avec l'utilisateur ''postgres'' (admin de la base de données PostgreSQL) :
 +<code bash>
 +sudo -u postgres psql -f setup_db.psql
 +</code>
 +
 +==== Initialisation de la base de données Mobilizion ====
 +
 +Il faut maintenant initialiser le schéma de la base de données avec la commande suivante :
 +<code bash>
 +MIX_ENV=prod mix ecto.migrate
 +</code>
 +
 +==== Lancement du serveur ====
 +
 +Tout est prêt pour pouvoir lancer localement le serveur localement :
 +<code bash>
 +    MIX_ENV=prod mix phx.server
 +</code>
 +
 +Voici ce que vous devriez obtenir en ouvrant le site Web ''localhost:4000'' :
 +
 +{{:admin:services:mobilizon_instance_locale_test.png?direct&1920|Aperçu du site local}}
 +
 +On a maintenant vérifié localement que tout fonctionne.
 +Il faut dorénavant pousser le logiciel compilé vers le serveur ainsi que ses dépendances.
 +
 +<note warning>
 +Fin du nouveau manuel d'installation en travaux
 +</note>
 +
 +Mobilizon nécessite entre autres Elixir, NodeJS et PostgreSQL.
 +Préférez installer Elixir et NodeJS à partir de leurs dépôts officiels plutôt que les paquets de votre distribution.
 +
 +Versions recommandées :
 +
 +    Elixir 1.8 et plus
 +    NodeJS 12+
 +    PostgreSQL 11+
 +
 +Pour installer une version correcte de node, référez vous à cette doc:
 +https://github.com/nodesource/distributions/blob/master/README.md#table-of-contents
 +
 +Nous allons utiliser un utilisateur de Mobilizon dédié avec /home/mobilizon home :
 +
 +    sudo adduser --disabled-login mobilizon
 +
 +Alors connectons-nous en tant qu'utilisateur :
 +
 +    sudo -i -u mobilizon
 +
 +Commençons par cloner le dépôt dans un répertoire nommé live :
 +
 +    git clone https://framagit.org/framasoft/mobilizon /srv/mobilizon.chapril.org/live && cd /srv/mobilizon.chapril.org/live
 +
 +=== Installer des dépendances ===
 +
 +Installer les dépendances de l'Elixir
 +
 +    mix deps.get
 +
 +<note tip>
 +Lorsqu'on vous demande "Dois-je installer Hex ? ou Dois-je installer Rebar3 ?", appuyez sur la touche entrée pour confirmer.
 +</note>
 +
 +
 +Compiler ensuite ces dépendances et Mobilizon (cela peut prendre quelques minutes et peut produire toutes sortes
 +d'avertissements, tels que des problèmes de dépréciation)
 +
 +    MIX_ENV=prod mix compile
 +
 +Allez dans le répertoire js/
 +
 +    cd js
 +
 +et installer les dépendances Javascript
 +
 +    yarn install
 +
 +Enfin, nous pouvons construire le frontal (cela peut prendre quelques secondes).
 +
 +    yarn build
 +
 +Revenons au répertoire principal
 +
 +    cd ../
 +
 +=== Configuration ===
 +
 +Mobilizon fournit un outil en ligne de commande pour générer la configuration
 +
 +    MIX_ENV=prod mix Mobilizon.instance gen
 +
 +Vous devrez alors répondre à des questions sur votre configuration et votre instance pour générer un fichier
 +prod.secret.exs dans le dossier config/, et un fichier setup_db.psql pour configurer la base de données. Configuration
 +de la base de données
 +
 +Le fichier setup_db.psql contient des instructions SQL pour créer un utilisateur et une base de données PostgreSQL avec
 +les informations d'identification choisies et ajouter les extensions requises à la base de données Mobilizon.
 +
 +Quittez l'exécution en tant qu'utilisateur Mobilizon (car il ne devrait pas avoir les droits root/sudo) et exécutez dans
 +le répertoire /home/mobilizon/live :
 +
 +    sudo -u postgres psql -f setup_db.psql
 +
 +Il devrait produire quelque chose du genre :
 +
 +CRÉER UN RÔLE CRÉER UNE BASE DE DONNÉES Vous êtes maintenant connecté à la base de données "Mobilizon_prod" en tant
 +qu'utilisateur "postgres". CRÉER L'EXTENSION CRÉER UNE EXTENSION CRÉER UNE EXTENSION
 +
 +Revenons à notre utilisateur de Mobilizon :
 +
 +    sudo -i -u mobilizon 
 +
 +<note important>Avertissement
 +
 +Lorsque cela est fait, n'oubliez pas de supprimer le fichier **setup_db.psql**.
 +</note>
 +
 +=== Migration de la base de données ===
 +
 +Effectuer des migrations de bases de données :
 +
 +    MIX_ENV=prod mix ecto.migrate
 +
 +Notez le préfixe de la variable d'environnement MIX_ENV=prod devant la commande. Vous devrez l'utiliser pour chaque
 +commande de mixage à partir de maintenant.
 +
 +Vous devrez le refaire après la plupart des mises à jour. Voir la section dédiée aux mises à jour.
 +Si certaines migrations échouent, cela signifie probablement que vous n'utilisez pas une version suffisamment récente de
 +PostgreSQL, ou que vous n'avez pas installé les extensions requises.
 +Nous pouvons arrêter d'utiliser l'utilisateur de Mobilizon à nouveau.
 +
 +Copiez le fichier support/systemd/mobilizon.service dans /etc/systemd/system.
 +
 +    sudo cp support/systemd/mobilizon.service /etc/systemd/system/
 +
 +Rechargez Systemd pour détecter votre nouveau dossier
 +
 +    sudo systemctl daemon-reload
 +
 +Et activer le service
 +
 +    sudo systemctl enable --now Mobilizon.service
 +
 +Il fera fonctionner Mobilizon et permettra le démarrage du service au boot de la VM.
 +Vous pouvez suivre les logs du service avec
 +
 +    sudo journalctl -fu Mobilizon.service
 +
 +Vous devriez voir quelque chose comme ça :
 +
 +Exécution de Mobilizon.Web.Endpoint avec cowboy 2.8.0 à :::4000 (http)
 +Accédez à Mobilizon.Web.Endpoint à l'adresse https://your-Mobilizon-domain.com
 +
 +Le serveur Mobilizon fonctionne sur le port 4000 sur l'interface locale uniquement, vous devez donc ajouter un
 +reverse-proxy. Reverse proxy Nginx
 +
 +Copiez le fichier de support/nginx/mobilizon.conf vers /etc/nginx/sites-available.
 +
 +    sudo cp support/nginx/mobilizon.conf /etc/nginx/sites-available
 +
 +Ensuite, établissez un lien symbolique avec le fichier dans le répertoire /etc/nginx/sites-enabled.
 +
 +    sudo ln -s /etc/nginx/sites-available/mobilizon.conf /etc/nginx/sites-enabled/
 +
 +Pas besoin de modifier la configuration nginx sur cette VM, au Chapril ce sont les admin sys qui s'en chargent sur une autre VM.
 +
 +Connectez-vous à nouveau en tant qu'utilisateur du système de Mobilizon :
 +
 +    sudo -i -u mobilizon
 +
 +Créer un nouvel utilisateur pour administrer votre instance Mobilizon :
 +
 +     MIX_ENV=prod mix Mobilizon.users.new "your@email.com" --admin --password "Y0urP4ssw0rd"
 +
 +N'oubliez pas de préfixer la commande par un espace vide afin que le mot de passe choisi ne soit pas conservé dans
 +l'historique de votre shell.
 +
 +Vous pouvez ignorer l'option --password et Mobilizon en générera un pour vous et vous le retournera dans le shell.
 +
 +Voir la documentation complète pour cette commande.
 +
 +    mix Mobilizon.users.new --help
 +
 +Vous pouvez maintenant vous connecter avec vos identifiants sur https://mobilizon.chapril.org
 +et découvrir Mobilizon. N'hésitez pas à consulter également la documentation de configuration.
 +
 +=== Configurer les courriels ===
 +
 +La configuration par défaut de Mobilizon suppose qu'un serveur SMTP local est disponible sur le même serveur. Pour
 +adapter cette configuration à votre propre configuration, consultez cette page. Configurer l'authentification tierce
 +
 +=== Configurer les authentifications tierces ===
 +Nous n'utilisons pas d'authentification tierce.
 +
 +=== Base de données de géocodage des villes ===
 +Pour rechercher des évènements à proximité du lieu indiqué en préférences des utilisateurs,
 +le logiciel Mobilizon a besoin d'une base de données.
 +Nous utilisons GeoLite2-City.mmdb
 +
 +Il faut le placer dans le dossier /srv/mobilizon.chapril.org/live/priv/data
 +Terminez en redémarrant le service de Mobilizon en tant que root.
 +
 +    cd /srv/mobilizon.chapril.org/live/priv/data
 +    
 +Mobilizon n'affichera un avertissement au démarrage que si la base de données est manquante, mais ce n'est pas
 +obligatoire.
 +
 +=========== Présentation sur le site ===========
 +
 +{{https://www.chapril.org/sites/v2.chapril.org/IMG/arton45.jpg|screenshot}}
 +
 +
 +== Organisation d'évènements – Mobilizon ==
 +[[https://mobilizon.chapril.org|Mobilizon.chapril.org]] est un service permettant d'organiser des évènements, préparer
 +l'avant et l'après, et de publier des infos pour les groupes que vous souhaitez gérer à plusieurs. Du plus petit
 +anniversaire familial ou la sortie entre amis à la grande manifestation internationale, le Chapril vous permet de
 +réaliser vos rassemblements comme vous le souhaitez tout en préservant la confidentialité des participants.
 +
 +    Le code source du projet Mobilizon.chapril.org est disponible à l’adresse https://forge.april.org/explore/repos?q=Mobilizon.chapril.org et aussi à https://www.mumble.info/downloads/
 +
 +
 +-----------------------
 +
 +== suivi de bugs ==
 +
 +Bugs détectés sur Mobilizon.chapril.org et ouvert sur la forge upstream
 +
 +https://framagit.org/framasoft/mobilizon/-/issues/529
 +
 +== contributions à l'upstream ==
 +
 +* mise en place d'un honeypot pour empêcher le spam
 +* ajout d'itinéraire utilisant openstreetmap dans la page d'évènement, dans la popup montrant une carte.
 +
 +