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/19 15:43] – [Personnalisation] tykayn | admin:services:mobilizon.chapril.org [2022/12/28 13:19] – Installation locale de NodeJS 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 |
- | [[: | + | |
- | ====== Personnaliser | + | - Mobilizon |
- | Voir aussi:[[admin: | + | - Le domaine choisi pour le service Mobilizon est [[https://mobilizon.chapril.org/|mobilizon.chapril.org]] |
+ | - L' | ||
+ | ===== Compilation locale du projet ===== | ||
+ | |||
+ | L' | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | Installons la dernière version de Elixir (1.14.1) depuis la source sur notre machine locale: | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== 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:// | ||
+ | |||
+ | wget https:// | ||
+ | sudo tar --directory=/ | ||
+ | |||
+ | 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 à l' | ||
+ | |||
+ | Le serveur Mobilizon fonctionne sur le port 4000 sur l' | ||
+ | reverse-proxy. Reverse proxy Nginx | ||
+ | |||
+ | Copiez le fichier de support/ | ||
+ | |||
+ | 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:// | ||
+ | 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 ===== | ===== Avancement ===== | ||
+ | ==== Choses faites ==== | ||
- | ==== Choses faites: ==== | + | * une favicon |
- | | + | * un logo dans la barre de menu |
- | * un logo dans la barre de menu | + | * une palette de couleur incorporant le bleu Chapril: **rgb(0, |
- | * une palette de couleur incorporant le bleu Chapril: **rgb(0, | + | * l' |
- | * l' | + | * quelques marges différentes |
- | * quelques marges différentes | + | * ajout d'une liste de services en ligne dans la page de documents pour les groupes |
- | * ajout d'une liste de services en ligne dans la page de documents pour les groupes | + | * la barre de menus du Chapril |
- | * la barre de menus du chapril | + | |
+ | ==== Prévues ==== | ||
- | ==== Prévues: ==== | ||
- rien de plus pour le moment que ce qui est en production sur https:// | - rien de plus pour le moment que ce qui est en production sur https:// | ||
Ligne 52: | Ligne 359: | ||
Changer le texte de présentation de l' | Changer le texte de présentation de l' | ||
https:// | https:// | ||
- | nom de l' | + | nom de l' |
https:// | https:// | ||
ne pas oublier d' | ne pas oublier d' | ||
- | s' | + | s' |
- | liste des autres instances: https:// | + | instances: https:// |
+ | ====== Comment personnaliser ====== | ||
+ | ===== changer les images ===== | ||
+ | Les images par défaut des évènements créé sans avoir | ||
+ | uploadé d' | ||
+ | de navigation. | ||
- | ====== Comment personnaliser ====== | + | Dans les sources du projet, certaines images ont été remplacées dans le dossier **js/ |
- | ===== changer les images ===== | + | |
- | Les images par défaut des évènements créé sans avoir uploadé d' | + | |
- | 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/ | + | |
Pour les palettes de couleur, les variables scss ont été modifiées dans **js/ | Pour les palettes de couleur, les variables scss ont été modifiées dans **js/ | ||
les espacements ont été modifiés dans **js/ | les espacements ont été modifiés dans **js/ | ||
Ligne 74: | Ligne 380: | ||
**js/ | **js/ | ||
une simple liste de liens à été ajoutée. | une simple liste de liens à été ajoutée. | ||
- | |||
===== Personnaliser le code source ===== | ===== Personnaliser le code source ===== | ||
- | Mettre en place un environnement de développement local permet de personnaliser au mieux sa version de Mobilizon. | + | Mettre en place un environnement de développement local permet de personnaliser |
- | 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' | + | au mieux sa version de Mobilizon. Pour cela il faut comprendre sa stack technique, constituée d'un côté d'un projet |
- | Le code du front end est majoritairement en typescript et les feuilles de style en SCSS. | + | 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, | + | Pour personnaliser les couleurs, il faut enlever les définitions de couleurs dans les composants vue pour éviter les |
- | Le gros du style est fourni par la lib CSS Bulma ( https:// | + | 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' | + | 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** | **mix phx.server** | ||
- | ce qui permet de lancer un serveur sur localhost: | + | ce qui permet de lancer un serveur sur localhost: |
+ | des filewatcher inode. | ||
- | + | ===== Dépot de sources ===== | |
- | ===== Dépot de sources ===== | + | |
On a une version personnalisée de Mobilizon, mise à disposition sur la forge | On a une version personnalisée de Mobilizon, mise à disposition sur la forge | ||
https:// | https:// | ||
- | Sa branche **master** est notre version personnalisée. | + | Sa branche **master** est notre version personnalisée. Nous la rebasons quand nécessaire par dessus la branche master de |
- | Nous la rebasons quand nécessaire par dessus la branche master de l' | + | l' |
===== Contribuer au code ===== | ===== 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. | + | 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 | |
- | En cas de question concernant le logiciel libre Mobilizon, se référer en premier lieu à la documentation officielle du dépot upstream. | + | branche master. |
- | https:// | + | |
+ | 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 =========== | =========== Présentation sur le site =========== | ||
- | |||
{{https:// | {{https:// | ||
- | < | + | |
== Organisation d' | == 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:// | ||
- | [[https:// | ||
- | |||
- | Découvrir | ||
- | |||
- | Le code source du projet mobilizon.chapril.org est disponible à l’adresse https:// | ||
- | | ||
- | </ | ||
----------------------- | ----------------------- | ||
Ligne 127: | Ligne 437: | ||
== 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 133: | Ligne 443: | ||
== 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