Outils pour utilisateurs

Outils du site


admin:services:mobilizon.chapril.org

Mobilizon Chapril

Un logiciel fédéré pour organiser des évènements. https://mobilizon.chapril.org/

Anim'sys: Philippe et Tykayn.

screenshot

Ressources

Documentation d'installation

Installation de mobilizon

Cette page concerne :le service Mobilizon

copiée depuis la doc de joinmobilizon.org https://docs.joinmobilizon.org/administration/

Mobilizon est installée sur la VM biliz.cluster.chapril.org

Docker

L'installation de production de Docker est maintenant en statut alpha. Voir Docker. Pré-requis

  Une machine Linux avec accès à la racine
  Un nom de domaine (ou sous-domaine) pour le serveur Mobilizon, par exemple votre-domaine-mobilizon.com
  Un serveur SMTP pour l'envoi de courriers électroniques
Dépendances

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+
Important

L'installation des dépendances dépend du système que vous utilisez. Suivez les étapes du guide des dépendances et revenez à cette page lorsque vous aurez terminé.

Configuration

Nous allons utiliser un utilisateur de mobilizon dédié avec /home/mobilizon home :

  sudo adduser --disabled-login mobilizon

Conseil

Sur FreeBSD
  sudo pw useradd -n mobilizon -d /home/mobilizon -s /usr/local/bin/bash -m 
  sudo passwd 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 live && cd live
Installer des dépendances

Installer les dépendances de l'Elixir

  mix deps.get

= Note =

Lorsqu'on vous demande “Dois-je installer Hex ? ou Dois-je installer Rebar3 ?”, appuyez sur la touche entrée pour confirmer.

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

Avertissement

Le frontal du bâtiment peut consommer jusqu'à 2048 Mo de RAM par défaut. Si c'est trop ou pas assez pour votre configuration, vous pouvez ajuster la mémoire maximale utilisée en préfixant la commande avec l'option suivante :

  NODE_BUILD_MEMORY=1024

ce qui donne

  NODE_BUILD_MEMORY=1024 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
  cd en direct
Avertissement

Lorsque cela est fait, n'oubliez pas de supprimer le fichier setup_db.psql. Migration de la base de données

Effectuer des migrations de bases de données :

  MIX_ENV=prod mix ecto.migrate

Note

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.

Conseil

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

Nous pouvons arrêter d'utiliser l'utilisateur de mobilizon à nouveau. Systemd

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 permettre au service

sudo systemctl enable –now mobilizon.service

Il fera fonctionner Mobilizon et permettra le démarrage au démarrage. Vous pouvez suivre les logs 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/

Editez le fichier /etc/nginx/sites-available/mobilizon.conf et adaptez-le à votre propre configuration.

Tester la configuration avec sudo nginx -t et recharger nginx avec sudo systemctl reload nginx. Cryptons

Le modèle de configuration nginx gère le défi HTTP-01 avec le plugin webroot :

sudo mkdir /var/www/certbot

Exécutez certbot avec (n'oubliez pas d'adapter la commande)

sudo certbot certonly –rsa-key-size 4096 –webroot -w /var/www/certbot/ –email your@email.com –agree-tos –text –renew-hook “/usr/sbin/nginx -s reload” -d your-mobilizon-domain.com

Adaptez ensuite la configuration nginx /etc/nginx/sites-available/mobilizon.conf en décommentant les chemins des certificats et en supprimant les blocs obsolètes.

Terminez en testant la configuration avec sudo nginx -t et en rechargeant nginx avec sudo systemctl reload nginx.

Vous devriez maintenant être en mesure de charger https://your-mobilizon-domain.com dans votre navigateur. Création de votre premier utilisateur

Connectez-vous à nouveau en tant qu'utilisateur du système de mobilisation :

sudo -i -u mobilizon cd en direct

Créer un nouvel utilisateur :

MIX_ENV=prod mix mobilizon.users.new “your@email.com” –admin –password “Y0urP4ssw0rd”

Danger

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.

Conseil

Vous pouvez ignorer l'option –password et Mobilizon en générera un pour vous.

Voir la documentation complète pour cette commande.

Vous pouvez maintenant vous connecter avec vos identifiants et découvrir Mobilizon. N'hésitez pas à consulter également la documentation de configuration. Tâches suggérées 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

Mobilizon peut utiliser les fournisseurs de connexion basés sur LDAP ou OAuth (Facebook, Google, etc.) pour aider à l'enregistrement ou à la connexion des utilisateurs. La configuration peut être trouvée ici. Configurer les géocodeurs

Cela permettra au champ de saisie automatique des adresses de fournir des adresses lors de la modification d'un événement. La valeur par défaut utilise le fournisseur Nominatim d'OpenStreetMap mais vous pouvez la changer pour le fournisseur de votre choix.

Note :

Lorsque vous utilisez le fournisseur Nominatim par défaut d'OpenStreetMap, l'autocomplétion est désactivée et l'utilisation du service implique que vous acceptez leur politique d'utilisation. Bases de données de géolocalisation

Mobilizon peut utiliser la géolocalisation à partir de données au format MMDB provenant de sources telles que les bases de données MaxMind GeoIP ou db-ip.com. Cela permet de montrer les événements se déroulant à proximité de l'endroit où se trouve l'utilisateur.

Vous devrez télécharger la base de données City et la placer dans priv/data/GeoLite2-City.mmdb. Terminez en redémarrant le service de mobilisation.

Mobilizon n'affichera un avertissement au démarrage que si la base de données est manquante, mais ce n'est pas obligatoire.

(fin de la section installation)

Mise à jour de la version chapril mobilizon

Pour fusionner les avancées de l'upstream avec la branche chapril:

Plan d'action général

  • Communiquer le début de migration
  • Fusionner la nouvelle version dans notre branche “chapril”
  • Compiler les assets du frontend et les envoyer sur la VM biliz
  • prendre les vernières modifications et migrer la base de données
  • relancer le service mobilizon
  • Vérfier que tout est bon
  • Communiquer la fin de migration

Voici le détail des opérations:

Localement

disons dans le dossier /var/www/html/mobilizon

- fusionner le tag le plus récent sur la branche chapril

  1. pour voir la liste des tags: git tag
  2. git merge 1.0.6 (par exemple, mais il faut utiliser la version la plus récente)
  3. résoudre les éventuels conflits

- vérifier que tout fonctionne bien

  1. en effectuant les migrations de base données mix ecto.migrate
  2. en lançant localement le serveur mix phx.server et en naviguant sur http://localhost:4000

- créer un tag avec le préfixe chapril et le numéro de tag, par exemple git tag chapril-1.0.6 - envoyer vers la forge chapril notre nouveau tag

  1. git push –tags
  2. Se positionner sur la branche master: git checkout master
  3. Prendre les avancées du dépot upstream, tags inclus:
    1. Si vous n'avez pas ajouté le dépot upstream, ajoutez le en https ou en ssh selon votre préférence
      1. git remote add upstream https://framagit.org/framasoft/mobilizon.git
      2. git remote add upstream git@framagit.org:framasoft/mobilizon.git
    2. git pull --all

- Recompiler les assets du frontend et les mettre dans le dossier live/priv/static

cd /var/www/html/mobilizon/js && yarn run build

- Syncroniser les assets compilés avec la VM biliz (nécessite d'avoir rsync installé sur la VM)

rsync -aP priv/static/* root@biliz.cluster.chapril.org:/srv/mobilizon.chapril.org/live/priv/static –delete

Sur la VM biliz

- se connecter à la VM biliz, aller dans le dossier “live”,

se mettre en tant qu'utilisateur mobilizon et récupérer les dernières modifications de la branche chapril. (attention à avoir comme dépot d'origine le dépot de la forge april, et non l'upstream pour bien avoir votre branche personnelle) Ce qui nous amène sur le tag le plus récent:

su mobilizon cd /srv/mobilizon.chapril.org/live git checkout chapril git pull –tags origin && git pull origin chapril

- Stopper le service mobilizon: service mobilizon stop

Migrer le backend de mobilizon

(on en a pas forcément besoin à tous les coups, si dans la partie locale vous aviez remarqué que seule la partie frontend changeait, vous pouvez relancer le service après avoir uniquement mis à jour les assets de priv/static et faire service mobilizon restart). Ne pas oublier de spécifier l'environnement de prod.

	<note tip>
	su -H mobilizon MIX_ENV=prod mix deps.get
	su -H mobilizon MIX_ENV=prod mix ecto.migrate
	</note>

- Remettre l'utilisateur mobilizon comme owner des fichiers

chown -R mobilizon:mobilizon /srv/mobilizon.chapril.org/live

- relancer le service mobilizon: service mobilizon start ce qui doit prendre environ 5 secondes sur Biliz.

Vérifications

- vérifier les erreur dans le journal du service

<note tip>journalctl -fu mobilizon -n1000</note>
- si c'est bon, interrompre la lecture du journal d'erreurs: Ctrl + C.
- vérifier le frontend sur https://mobilizon.chapril.org , nécessite un vidage de votre cache navigateur (ctrl + R)

- Communiquer la fin de mise à jour sur les canaux qui vont bien.

Personnaliser Mobilizon

Avancement

Choses faites:

  • une favicon chapril
  • un logo dans la barre de menu
  • une palette de couleur incorporant le bleu Chapril: rgb(0,81,132), alias #ff5e00
  • l'image par défaut des évènements reprend une illustration de David Revoy
  • quelques marges différentes
  • ajout d'une liste de services en ligne dans la page de documents pour les groupes
  • la barre de menus du chapril

Prévues:

- rien de plus pour le moment que ce qui est en production sur https://mobilizon.chapril.org

Elements de personnalisation

Via l'administration web

Changer le texte de présentation de l'instance: https://mobilizon.chapril.org/settings/admin/settings nom de l'instance, slogan, description courte, description longue, lien vers les CGU du chapril. https://www.chapril.org/cgu.html

ne pas oublier d'enregistrer.

s'abonner aux autres instances le plus tôt possible pour profiter de la fédération. liste des autres instances: https://instances.joinmobilizon.org

Comment personnaliser

changer les images

Les images par défaut des évènements créé sans avoir uploadé d'affiche ont une image par défaut que l'on peut changer. Pareillement pour le favicon et le logo dans la barre de navigation.

Dans les sources du projet, certaines images ont été remplacées dans le dossier js/public/img Pour les palettes de couleur, les variables scss ont été modifiées dans js/src/variables.scss les espacements ont été modifiés dans js/src/common.scss

Pour les liens dans le composant de Ressources js/src/views/Resources/ResourceFolder.vue une simple liste de liens à été ajoutée.

Personnaliser le code source

Mettre en place un environnement de développement local permet de personnaliser au mieux sa version de Mobilizon. Pour cela il faut comprendre sa stack technique, constituée d'un côté d'un projet Phoenix écrit en Elixir / Erlang, avec une base de données Postgresql, une interface en GraphQL qui communique avec la lib Absinthe, et de l'autre côté pour le front end: une app en vueJS version 3 (dans le dossier js), utilisant Appollo pour parler avec GraphQL. Le code du front end est majoritairement en typescript et les feuilles de style en SCSS.

Pour personnaliser les couleurs, il faut enlever les définitions de couleurs dans les composants vue pour éviter les surcharges indésirées, et modifier les couleurs dans les fichiers js/src/variables.sccss et faire référence à ces variables ailleurs dans les composants vue si nécessaire. Le gros du style est fourni par la lib CSS Bulma ( https://www.bulma.io ) et agrémenté de quelques retouches dans le fichier common.scss

Pour avoir son instance fonctionnant localement il faut installer les dépendances de dev du back (les dépendances Elixir) et du front (les dépendances NPM), configurer l'accès à la base de données postgresql dans le fichier de config .exs, effectuer les migrations de la base avec Ecto (mix ecto.migrate) puis lancer la commande.

mix phx.server

ce qui permet de lancer un serveur sur localhost:8000 qui se rafraîchira à l'enregistrement de vos modifications grâce à des filewatcher inode.

Dépot de sources

On a une version personnalisée de Mobilizon, mise à disposition sur la forge https://forge.april.org/Chapril/mobilizon.chapril.org

Sa branche master est notre version personnalisée. Nous la rebasons quand nécessaire par dessus la branche master de l'upstream, fournie par framagit.

Contribuer au code

Pour proposer du code, il convient de créer une branche, faire ses commits, vérifier que les tests passent, faire une merge request avec au moins une autre personne révisant le code à fusionner, et si tout passe bien, fusionner dans la branche master.

En cas de question concernant le logiciel libre Mobilizon, se référer en premier lieu à la documentation officielle du dépot upstream. https://docs.joinmobilizon.org/

Présentation sur le site

screenshot

== Organisation d'évènements – Mobilizon ==

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 participant-e-s.

Découvrir

  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.
admin/services/mobilizon.chapril.org.txt · Dernière modification: 2021/02/19 17:05 par tykayn