Installation de Loomio

Classé dans : Cultiver son jardin | 7
image_pdfimage_print

Loomio est le logiciel de prise de décision collective que nous proposons comme service en ligne sur Framavox.

Voici un tutoriel pour vous aider à l’installer sur votre serveur. Il s’appuie sur la procédure officielle.

N’hésitez pas à poser des questions dans les commentaires. Si vous êtes parvenu à l’installer, donnez-nous le lien vers votre instance et dites-nous dans quelle mesure ce tutoriel vous aura été utile :)

Informations
Dans la suite de ce tutoriel, les instructions seront données pour un serveur dédié sous Ubuntu 14.04 en utilisant Docker.

Installation

1 – Préparer la terre

DNS

Tout d’abord, faites pointer votre-domaine.org sur votre serveur auprès de votre registraire ainsi que le sous-domaine faye.votre-domaine.org (il s’agit du service qui tourne en arrière-plan pour envoyer les mails et notifications aux utilisateurs).

Voici par exemple ce que nous avons mis pour framavox.org dans notre zone DNS :

@ 3600 IN A 46.4.207.243
faye 3600 IN CNAME framavox.org.
@ 10800 IN MX 2 framavox.org.

Docker

Ensuite, connectez-vous en tant que root sur votre serveur, installez Docker et Docker Compose.

wget -q https://get.docker.com/ -O install-docker.sh
# Vérifiez le contenu du script pour vous assurer qu'il ne fait pas de bêtises sur votre système
sh install-docker.sh
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m`
chmod +x /usr/local/bin/docker-compose

2 – Semer

Depuis le dossier /root, téléchargez les fichiers du dépôt officiel pour un déploiement en production.

cd /root
git clone https://github.com/loomio/loomio-deploy.git
cd loomio-deploy

Toutes les instructions suivantes s’effectueront depuis le dossier /root/loomio-deploy.

Swap (facultatif)

Si votre serveur dispose de moins de 4GB de RAM, il est recommandé de créer un fichier de swap.

./scripts/create_swapfile

Configuration

Créez ensuite les fichiers de configuration de Loomio.

./scripts/create_env votre-domaine.org vous@adresse.email

Le script crée 2 fichiers env et faye_env qui seront utilisés pour configurer les différents containers Docker :

  • nginx, le serveur web
  • letsencrypt, pour créer automatiquement les certificats SSL et disposer d’un site en https
  • loomio, la partie visible par les navigateurs web
  • worker, faye et mailin qui traitent en arrière-plan les requêtes pour l’envoi des courriels, des notifications et autres interactions
  • db, le serveur de base de données (PostgreSQL)
Courriels

Modifiez le fichier env pour configurer l’envoi des courriels avec un serveur SMTP.

SMTP_DOMAIN=votre-domaine.org
SMTP_SERVER=serveur.mail.org
SMTP_PORT=587
SMTP_USERNAME=utilisateur@mail.org
SMTP_PASSWORD=votre-mot-de-passe

Les messages seront envoyés avec l’adresse notification@votre-domaine.org. Pour permettre la bonne transmission des mails lorsque les utilisateurs répondent à un courriel de notification, nous avons dû adapter la configuration du container mailin dans docker-compose.yml.

mailin :
  image : loomio/mailin-docker
  ports :
    - "25:25"
  links :
    - loomio
  environment :
    - WEBHOOK_URL=https://votre-domaine.org/email_processor/

NB Si vous avez déjà un logiciel de mail sur votre serveur, il n’aimera pas être dépossédé du port 25. Vous pouvez le couper (service exim4 stop) et le désactiver (update-rc.d exim4 disable) ou le faire écouter sur un autre port (/etc/default/exim4).

Tâches planifiées

Pour prévenir les utilisateurs de la fermeture imminente d’une proposition, la clôturer ou encore envoyer un courriel récapitulatif de l’activité de la veille, Loomio doit exécuter certains processus périodiquement.

Pour cela, copiez le fichier crontab dans /etc/cron.d

mv ./crontab /etc/cron.d/loomio
Service

Pour disposer d’une commande d’arrêt/relance de Loomio ou pour qu’il reste actif après un redémarrage du serveur, vous pouvez créer un fichier /etc/init.d/loomio (à rendre exécutable) contenant ceci :

# ! /bin/sh

### BEGIN INIT INFO
# Provides :             loomio
# Required-Start :       $remote_fs $syslog
# Required-Stop :        $remote_fs $syslog
# Default-Start :        2 3 4 5
# Default-Stop :         
# Short-Description :    Loomio dockers services
### END INIT INFO

set -e

umask 022

. /lib/lsb/init-functions

case "$1" in
  start)
        cd /root/loomio-deploy/
        /usr/local/bin/docker-compose start
        log_end_msg 0 || true
        ; ;
  stop)
        cd /root/loomio-deploy/
        /usr/local/bin/docker-compose stop
        log_end_msg 0 || true
        ; ;
  logs)
        cd /root/loomio-deploy/
        /usr/local/bin/docker-compose logs
        log_end_msg 0 || true
        ; ;
  restart)
        cd /root/loomio-deploy/
        /usr/local/bin/docker-compose restart
        ; ;

  *)
        log_action_msg "Usage : /etc/init.d/ssh {start|stop|restart|logs}" || true
        exit 1
esac

exit 0

[Bugfix] Avatar des utilisateurs/groupes

Dans docker-compose.yml, la ligne

 - ./attachments :/loomio/public/system/attachments

sert à conserver les fichiers joints aux discussions hors du container pour éviter de les perdre à chaque mise à jour. Nous l’avons remplacé sur notre instance par

 - ./uploads :/loomio/public/system/

pour conserver également les avatars uploadés qui se trouvent dans /loomio/public/system/users et /loomio/public/system/groups.

3 – Arroser

PostgreSQL

Il faut maintenant créer la base de données.

docker-compose run loomio rake db:setup

Loomio

La base de données est prête, vous pouvez démarrer Loomio.

docker-compose up -d

La commande se charge de lancer tous les containers nécessaires. Pour pouvez vérifier leur statut en lançant la commande docker-compose logs ou service loomio logs

Tests

Voici une liste de tâches à effectuer pour s’assurer que tout fonctionne bien :

  • Créez un compte et un groupe puis déconnectez-vous.
  • Demandez une réinitialisation de mot de passe et vérifiez que vous recevez bien le courriel.
  • Ouvrez une page de discussion dans 2 onglets et saisissez un commentaire dans l’un. Le commentaire devrait apparaître dynamiquement sur l’autre onglet.
  • Uploadez un fichier à une discussion et un avatar personnalisé à votre compte ou à un groupe.
  • Vérifiez que vous pouvez répondre à une discussion par courriel.
  • Créée une proposition avec une date de clôture proche pour vérifier qu’elle se ferme automatiquement dans l’heure.

4 – Pailler

Personnalisation

À ce stade, si tout s’est bien passé, lorsque vous consultez le site votre-domaine.org, vous devriez être redirigé vers la page votre-domaine.org/marketing. Il s’agit de la page de présentation propre au site loomio.org, vous pourriez vouloir en modifier le contenu.

Apparemment, les développeurs de Loomio ont enlevé le plugin loomio_org du container depuis la rédaction de ce tutoriel. La page d’accueil est maintenant la page de connexion, ça ne change pas grand chose pour sur la méthode pour personnaliser le logiciel mais si vous voulez quand même utiliser la page « marketing », lisez ce commentaire.

Pour cela vous pouvez vous inspirer de ce que nous avons fait pour Framavox.
Nous avons créé un dossier framavox/template dans lequel se trouvent les fichiers à remplacer dans le container et nous avons modifié le fichier docker-compose.yml en fonction.

volumes :
  - ./framavox/template/angular.html.haml :/loomio/app/views/layouts/angular.html.haml
  - ./framavox/template/application.html.haml :/loomio/app/views/layouts/application.html.haml
  - ./framavox/template/marketing.html.haml :/loomio/plugins/loomio_org_plugin/views/pages/marketing.html.haml
  - ./framavox/template/_metadata.html.haml :/loomio/app/views/angular/_metadata.html.haml
  - ./framavox/template/_social_metadata.html.haml :/loomio/app/views/application/_social_metadata.html.haml

Même chose avec les fichiers de traduction qui étaient incomplets.

- ./framavox/locales/client.fr.yml :/loomio/config/locales/client.fr.yml
- ./framavox/locales/fr.yml :/loomio/config/locales/fr.yml
- ./framavox/locales/server.fr.yml :/loomio/config/locales/server.fr.yml

L’essentiel de l’interface de Loomio se trouve dans /loomio/app/views/ ou dans le plugin loomio.org (il s’agit d’un dépôt à part dont le contenu est placé dans /loomio/plugins/). Le reste se trouve dans les fichiers de langue.

Avant d’effectuer des modifications au fichier docker-compose.yml ou au fichier env, pensez à supprimer proprement les containers docker-compose down et les redémarrer ensuite docker-compose up -d

Quelques commandes utiles

  • docker exec -it loomiodeploy_loomio_1 /bin/bash pour entrer dans le container loomio en cours d’utilisation (pour voir précisément où se trouvent les fichiers à modifier par exemple)
  • docker restart loomiodeploy_container_1 redémarre un container (pour vérifier les changements dans un fichier de template par exemple sans devoir tout redémarrer)
  • docker ps -a affiche la liste de tous les containers présent sur la machine
  • docker stop loomiodeploy_container_1 arrête un container
  • docker rm loomiodeploy_container_1 le supprime
  • docker-compose pull pour mettre à jour tous les containers (après un docker-compose down)

7 Responses

  1. J’utilise un serveur partagé chez Funio (hébergeur québécois). J’ai le plan de base… pas de SSH, juste le FTP. Cela ne me gêne pas vraiment car je ne sais pas programmer.

    Ma planche de salut c’est le service Softaculous offert par Funio. Avec ce service pas besoin de se mettre les mains dans le cambouis pour installer des logiciels sur le serveur. Tout se fait en un seul clic.

    Framasoft aurait intérêt à les contacter pour qu’ils offrent toutes la gamme des dégooglisons. Ainsi vous pourriez décharger un peu de vos serveurs sur ceux des gens qui comme moi peuvent les héberger mais ont besoin d’aide.

    Je suis prêt à témoigner si Softaculous vous demande l’intérêt. Ils ont déjà à ma demande (avec le support de l’équipe) ajouté Wallabag à leur liste.

    Bonne journée à tous.

  2. Coucou,

    Bon, je suis en train de faire le test sur une de mes VM. Déjà, un gros bravo pour le tuto qui permet une installation en moins de 45 minutes, grande classe !

    Maintenant, plusieurs point de différence :

    1. Après l’installation, j’arrive sur la page users/sign_in et pas du tout marketing.
    2. D’ailleurs, quand je vais sur marketing, il me fait une erreur 404 …
    3. Quand j’ai mis vos fichiers framavox, je n’ai pas votre interface (j’ai des menus mal placé et autres).

    Bon, la partie Mail ne fonctionne pas chez moi, mais la, ca doit plutôt être moi l’erreur (faudra que je fouille). Par contre connexion et création de groupe fonctionne sans problème.

    Sinon, une méthode pour modifier le comportement du logiciel (si j’ai envie de supprimer l’inscription automatique par exemple) ou autre ? Je n’ai pas trouvé cela non plus sur la doc de Loomio …

    • Pour le point 1 et 2, les développeurs de Loomio tentent depuis un moment de supprimer les dépendances avec le site officiel. Lors de mes premiers tests, la page d’accueil par défaut était également « sign_in ». Ils ont ensuite réintégré le plugin loomio_org_plugin dans le container et visiblement ils l’ont de nouveau enlevé récemment

      Bref, du coup c’est normal que la page « marketing » soit introuvable. Pour la remettre, il suffit de télécharger le dépôt loomio_org_plugin dans le dossier /root/loomio-deploy et d’ajouter le dossier à la liste des « volumes » dans docker-compose.yml :

        - ./loomio_org_plugin:/loomio/plugins/loomio_org_plugin

      Concernant le point 3, il y a des éléments qui sont ajoutés dynamiquement via la barre de navigation (ne fonctionne que sur framavox.org) notamment une feuille de style et du javascript.

      Enfin, concernant la modification des fonctionnalités du logiciel, il n’y a pas d’espace d’administration de l’instance et le fichier de config ne permet pas grand chose.
      Donc à part la personnalisation de l’interface en écrasant les fichiers comme indiqué plus haut, si on veut adapter le logiciel, il faut développer ses propres plugins. Perso, comme j’y connais rien en ruby, ça m’arrangeait de conserver le loomio_org_plugin pour avoir une page d’accueil différente de la page de connexion.

  3. j’ai installé loomio en suivant ce tuto sur une VM derriere un reverse proxy apache (et oui j’ai plusieurs service web sur 80 et 443)

    malheureusement docker-compose logs me retourne ces erreurs

    nginx_1
    | nginx.1 | 2016/06/01 07:19:04 [error] 41#41: *13 connect()
    failed (111: Connection refused) while connecting to upstream,
    client:172.16.0.15, server: loomio.mydomain.com, request: « GET
    /client/0.20.4/app.min.css HTTP/1.1 », upstream: « http://172.17.0.4:3000/client/0.20.4/app.min.css », host: « loomio.mydomain.com », referrer: « https://loomio.mydomain.com/d/xPfHy1Rh/mypost_test- »

    et les pages ne se rafraichissent pas automatiquement a la création d’un groupe, d’un nouveau sujet de discussion ou d’une réponse

    Merci pour votre aide si vous avez une solution

  4. Bonjour,
    J’ai fait à peu près la même chose que Fred (commentaire précédent), avec le même résultat : ça fonctionne bien sauf le rafraîchissement dynamique.
    De mon côté c’est un reverse proxy Nginx.
    Côté paramétrage j’ai commenté la partie Let’s Encrypt ainsi que l’écoute sur le port 443 pour le conteneur nginx.

    J’ai écumé les forums et le github sans trouver d’explications au problème. La seule piste que j’ai pour le moment c’est un admin qui aurait résolu un problème similaire en activant LEt’sEncrypt et en supprimant son serveur SMTP de l’OS hébergeant docker.

    A suivre…

  5. J’ai résolu problème la semaine dernière.

    Loomio fonctionne parfaitement ainsi que le script service.

    J’ai posté une réponse sur le site debian: https://www.debian-fr.org/t/loomio-derriere-un-reverseproxy/70055

  6. J’ai réussi à tout faire marcher en reverse proxy, même si je ne sais toujours pas ce qui a débloquer la situation.

    J’ai repris les étapes de mise en place du reverse proxy sous Nginx sur https://dokuwiki.alolise.org/doku.php/public:loomio_reverse_proxy

Laissez un commentaire