admin:services:mobilizon.chapril.org
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
admin:services:mobilizon.chapril.org [2021/02/16 09:58] – [Présentation sur le site] tykayn | admin:services:mobilizon.chapril.org [2023/01/07 12:17] – tip installation wget sagotgej | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
Un logiciel fédéré pour organiser des évènements. | Un logiciel fédéré pour organiser des évènements. | ||
[[https:// | [[https:// | ||
- | |||
- | Anim' | ||
- | Philippe et Tykayn. | ||
{{https:// | {{https:// | ||
+ | |||
+ | <nspages .: | ||
====== Ressources ====== | ====== Ressources ====== | ||
Ligne 12: | Ligne 11: | ||
Outils du Chapril : | Outils du Chapril : | ||
- | | + | |
- | * [[https:// | + | * [[https:// |
__Dépots sources utilisés :__ | __Dépots sources utilisés :__ | ||
- | | + | |
- | * Source de l' | + | * Source de l' |
- | * Dépot upstream: https:// | + | * Dépot upstream: https:// |
+ | ====== Installation ====== | ||
+ | <note warning> | ||
+ | **En travaux** La documentation de l' | ||
+ | [[admin: | ||
+ | </ | ||
- | ====== Documentation d' | + | L' |
- | [[:mobilizon_chapril_org_installation|voir cette page dédiée | + | |
- | ====== | + | ===== Pré-requis |
- | [[: | + | |
- | ====== Personnalisation ====== | + | - Mobilizon doit être installé sur la VM Debian nommée **biliz.cluster.chapril.org** sur laquelle on dispose de l' |
+ | - Le domaine choisi pour le service Mobilizon est [[https:// | ||
+ | - L' | ||
- | [[: | + | ===== Installation locale |
- | ===== Dépot de sources ===== | + | L' |
- | On a une version personnalisée de Mobilizon, mise à disposition sur la forge | + | |
- | https://forge.april.org/Chapril/mobilizon.chapril.org | + | |
- | Sa branche | + | Il a été décidé de **compiler le projet en local** (sur votre machine) avant de publier les binaires en production. |
- | Nous la rebasons quand nécessaire par dessus la branche master | + | |
- | ===== Contribuer au code ===== | + | ==== Elixir |
- | Pour proposer du code, il convient | + | Mobilizon utilise le [[https:// |
- | En cas de question concernant le logiciel libre Mobilizon, se référer en premier lieu à la documentation officielle du dépot upstream. | + | Installons |
- | https:// | + | |
+ | sudo apt install erlang build-essential curl unzip openssl git cmake file | ||
+ | wget https:// | ||
+ | tar zxf elixir-1.14.1.tar.gz | ||
+ | cd elixir-1.14.1 | ||
+ | make -j$(nproc --ignore=1) | ||
+ | sudo make install | ||
- | =========== Présentation | + | <note tip> |
+ | Si wget n'est pas déjà installé | ||
+ | sudo apt install wget | ||
+ | </ | ||
- | {{https:// | + | ==== 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:// |
- | == Organisation d'évènements – Mobilizon == | + | |
+ | wget https:// | ||
+ | sudo tar --directory=/ | ||
- | [[https://Mobilizon.chapril.org|Mobilizon.chapril.org]] est un service permettant d' | + | === Yarn === |
+ | Mobilizon utilise le gestionnaire de dépendances | ||
- | Découvrir | + | npm install -g yarn |
- | Le code source du projet mobilizon.chapril.org est disponible | + | ==== PostgreSQL ==== |
+ | |||
+ | PostgreSQL n'est pas requis pour la compilation de Mobilizon, mais avoir une base de données en local permet de tester l' | ||
+ | |||
+ | L' | ||
+ | |||
+ | sudo apt install postgresql postgresql-contrib | ||
+ | sudo apt install --install-recommends postgis | ||
+ | sudo systemctl start postgresql | ||
+ | |||
+ | ===== Compilation locale de Mobilizon ===== | ||
+ | |||
+ | Maintenant que nous avons installé localement toutes les dépendances, | ||
+ | |||
+ | ==== Récupération du code source | ||
+ | |||
+ | <note important> | ||
+ | </ | ||
+ | |||
+ | git clone https:// | ||
+ | cd mobilizon | ||
+ | git checkout 3.0.3 | ||
+ | |||
+ | |||
+ | ==== 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 :-) | ||
+ | </ | ||
+ | |||
+ | # Téléchargement des dépendances Elixir | ||
+ | mix deps.get | ||
+ | # Compilation du serveur Mobilizon | ||
+ | MIX_ENV=prod mix compile | ||
+ | |||
+ | ==== Compilation du client ==== | ||
+ | |||
+ | Nous allons nous rendre dans le répertoire js/ (situé dans le dossier du dépôt mobilizon clôné précédemment) pour installer les dépendances et compiler le client web | ||
+ | |||
+ | cd js | ||
+ | yarn install | ||
+ | yarn run build | ||
+ | cd .. | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | Nous allons utiliser un utilisateur de Mobilizon dédié avec / | ||
+ | |||
+ | sudo adduser --disabled-login mobilizon | ||
+ | |||
+ | Alors connectons-nous en tant qu' | ||
+ | |||
+ | sudo -i -u mobilizon | ||
+ | |||
+ | Commençons par cloner le dépôt dans un répertoire nommé live : | ||
+ | |||
+ | git clone https:// | ||
+ | |||
+ | == Installer des dépendances == | ||
+ | |||
+ | Installer les dépendances de l' | ||
+ | |||
+ | mix deps.get | ||
+ | |||
+ | <note tip> | ||
+ | Lorsqu' | ||
+ | </ | ||
+ | |||
+ | |||
+ | Compiler ensuite ces dépendances et Mobilizon (cela peut prendre quelques minutes et peut produire toutes sortes | ||
+ | d' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | Quittez l' | ||
+ | le répertoire / | ||
+ | |||
+ | 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 " | ||
+ | qu' | ||
+ | |||
+ | Revenons à notre utilisateur de Mobilizon : | ||
+ | |||
+ | sudo -i -u mobilizon | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Lorsque cela est fait, n' | ||
+ | </ | ||
+ | |||
+ | == 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' | ||
+ | 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' | ||
+ | PostgreSQL, ou que vous n'avez pas installé les extensions requises. | ||
+ | Nous pouvons arrêter d' | ||
+ | |||
+ | Copiez le fichier support/ | ||
+ | |||
+ | sudo cp support/ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | Le serveur Mobilizon fonctionne sur le port 4000 sur l' | ||
+ | reverse-proxy. Reverse proxy Nginx | ||
+ | |||
+ | Copiez le fichier de support/nginx/mobilizon.conf vers / | ||
+ | |||
+ | sudo cp support/ | ||
+ | |||
+ | Ensuite, établissez un lien symbolique avec le fichier dans le répertoire / | ||
+ | |||
+ | sudo ln -s / | ||
+ | |||
+ | 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' | ||
+ | |||
+ | sudo -i -u mobilizon | ||
+ | |||
+ | Créer un nouvel utilisateur pour administrer votre instance Mobilizon : | ||
+ | |||
+ | | ||
+ | |||
+ | N' | ||
+ | l' | ||
+ | |||
+ | Vous pouvez ignorer l' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | == 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, | ||
+ | |||
+ | == Configurer les authentifications tierces == | ||
+ | Nous n' | ||
+ | |||
+ | == 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 | ||
+ | Terminez en redémarrant le service de Mobilizon en tant que root. | ||
+ | |||
+ | cd / | ||
| | ||
+ | Mobilizon n' | ||
+ | obligatoire. | ||
+ | |||
+ | |||
+ | ====== Mise à jour de la version Chapril Mobilizon ====== | ||
+ | |||
+ | <note warning> | ||
+ | **TODO** Section à déplacer et fusionner dans la page | ||
+ | [[admin: | ||
</ | </ | ||
+ | |||
+ | Pour fusionner les avancées de l' | ||
+ | |||
+ | ===== Plan d' | ||
+ | |||
+ | |||
+ | * Sur votre poste de travail | ||
+ | * fusionner la nouvelle version dans notre branche " | ||
+ | * vérifier que tout marche bien sur localhost et que le code est bien linté avec < | ||
+ | * Communiquer le début de migration | ||
+ | * Compiler les assets du frontend sur la VM biliz | ||
+ | * prendre les dernières modifications et migrer la base de données | ||
+ | * relancer le service mobilizon | ||
+ | * Vérfier que tout est bon | ||
+ | * Communiquer la fin de migration | ||
+ | |||
+ | ===== Sur votre poste de travail ===== | ||
+ | |||
+ | Admettons que vous avez les sources de mobilizon sur votre poste de travail dans le dossier **/ | ||
+ | Pour faire l' | ||
+ | - fusionner le tag le plus récent sur la branche Chapril | ||
+ | - pour voir la liste des tags: **git tag** | ||
+ | - **git merge 1.0.6** (par exemple, mais il faut utiliser la version la plus récente) | ||
+ | - résoudre les éventuels conflits | ||
+ | - vérifier que tout fonctionne bien | ||
+ | - en effectuant les migrations de base données **mix ecto.migrate** | ||
+ | - en lançant localement le serveur **mix phx.server** et en naviguant sur [[http:// | ||
+ | - 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 | ||
+ | - **git push --tags** | ||
+ | - Se positionner sur la branche master: **git checkout master** | ||
+ | - Prendre les avancées du dépot upstream, tags inclus: | ||
+ | - Si vous n'avez pas ajouté le dépot **upstream** de framagit, ajoutez le | ||
+ | - < | ||
+ | - < | ||
+ | - fusionner le tag le plus récent vers la branche chapril avec un git merge. | ||
+ | < | ||
+ | - une fois les conflits résolus, modifications faites et le lint vérifiées, | ||
+ | Chapril. | ||
+ | - < | ||
+ | - < | ||
+ | | ||
+ | Nous pouvons maintenant mettre à jour la VM biliz en production. | ||
+ | |||
+ | ===== Sur la VM biliz ===== | ||
+ | - se connecter à la VM biliz, aller dans le dossier " | ||
+ | |||
+ | Se mettre en tant qu' | ||
+ | avoir comme dépot d' | ||
+ | qui nous amène sur le tag le plus récent: | ||
+ | |||
+ | su Mobilizon | ||
+ | cd / | ||
+ | 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 "sur votre poste de travail" | ||
+ | frontend changeait, vous pouvez relancer le service après avoir uniquement mis à jour les assets de priv/static et | ||
+ | faire < | ||
+ | |||
+ | su -H mobilizon MIX_ENV=prod mix deps.get | ||
+ | su -H mobilizon MIX_ENV=prod mix ecto.migrate | ||
+ | |||
+ | |||
+ | - Remettre l' | ||
+ | |||
+ | chown -R mobilizon: | ||
+ | |||
+ | |||
+ | - relancer le service Mobilizon: < | ||
+ | |||
+ | ===== Vérifications ===== | ||
+ | |||
+ | - vérifier les erreur dans le journal du service | ||
+ | |||
+ | journalctl -fu Mobilizon -n1000 | ||
+ | |||
+ | - si c'est bon, interrompre la lecture du journal d' | ||
+ | - vérifier le frontend sur https:// | ||
+ | - Communiquer la fin de mise à jour sur les canaux qui vont bien. | ||
+ | |||
+ | ====== Personnaliser Mobilizon ====== | ||
+ | |||
+ | <note warning> | ||
+ | **TODO** Section à déplacer et fusionner dans la page [[admin: | ||
+ | </ | ||
+ | ===== Avancement ===== | ||
+ | ==== Choses faites ==== | ||
+ | |||
+ | * une favicon Chapril | ||
+ | * un logo dans la barre de menu | ||
+ | * une palette de couleur incorporant le bleu Chapril: **rgb(0, | ||
+ | * l' | ||
+ | * 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:// | ||
+ | |||
+ | ===== Elements de personnalisation ===== | ||
+ | ====== Via l' | ||
+ | |||
+ | Changer le texte de présentation de l' | ||
+ | https:// | ||
+ | nom de l' | ||
+ | https:// | ||
+ | |||
+ | ne pas oublier d' | ||
+ | |||
+ | s' | ||
+ | instances: https:// | ||
+ | |||
+ | ====== Comment personnaliser ====== | ||
+ | ===== changer les images ===== | ||
+ | Les images par défaut des évènements créé sans avoir | ||
+ | uploadé d' | ||
+ | de navigation. | ||
+ | |||
+ | Dans les sources du projet, certaines images ont été remplacées dans le dossier **js/ | ||
+ | Pour les palettes de couleur, les variables scss ont été modifiées dans **js/ | ||
+ | les espacements ont été modifiés dans **js/ | ||
+ | |||
+ | Pour les liens dans le composant de Ressources | ||
+ | **js/ | ||
+ | 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' | ||
+ | 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, | ||
+ | variables ailleurs dans les composants vue si nécessaire. Le gros du style est fourni par la lib CSS | ||
+ | Bulma ( https:// | ||
+ | |||
+ | 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' | ||
+ | .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: | ||
+ | des filewatcher inode. | ||
+ | |||
+ | ===== Dépot de sources ===== | ||
+ | On a une version personnalisée de Mobilizon, mise à disposition sur la forge | ||
+ | https:// | ||
+ | |||
+ | Sa branche **master** est notre version personnalisée. Nous la rebasons quand nécessaire par dessus la branche master de | ||
+ | l' | ||
+ | |||
+ | ===== 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:// | ||
+ | |||
+ | =========== Présentation sur le site =========== | ||
+ | |||
+ | {{https:// | ||
+ | |||
+ | |||
+ | == Organisation d' | ||
+ | [[https:// | ||
+ | l' | ||
+ | anniversaire familial ou la sortie entre amis à la grande manifestation internationale, | ||
+ | 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:// | ||
+ | |||
----------------------- | ----------------------- | ||
Ligne 70: | Ligne 492: | ||
== suivi de bugs == | == suivi de bugs == | ||
- | bugs détectés sur mobilizon.chapril.org et ouvert sur la forge upstream | + | Bugs détectés sur Mobilizon.chapril.org et ouvert sur la forge upstream |
https:// | https:// | ||
Ligne 76: | Ligne 498: | ||
== contributions à l' | == contributions à l' | ||
- | | + | * mise en place d'un honeypot pour empêcher le spam |
- | * ajout d' | + | * ajout d' |
admin/services/mobilizon.chapril.org.txt · Dernière modification : 2023/01/07 17:54 de sagotgej