Installation de Wekan avec Docker

Aujourd’hui un billet un peu spécial, après les articles de pub, les articles vides, les articles de correction, j’inaugure les articles ludiques.

Un article ludique c’est un article où je vous laisse vous amuser, patauger, je ne vous tiens pas la main, je ne vous recommande même pas de mettre ça en production ! Je vous laisse des pistes, je vous montre le chemin et je réponds aux demandes d’aide. A la fin vous aurez joué avec des nouveaux concepts et logiciels (à vous de voir si vous voulez les utiliser ensuite) et découvert de nouvelles choses ;)

Savez-vous ce qu’est un tableau kanban ? Un article effleurant le sujet.

Hier Korben a présenté dans un article une application : Wekan (que vous pouvez tester ici). Elle fait partie des alternatives libres et qu’on peut auto-héberger à Trello. On peut citer également l’excellent Kanboard utilisé par Framaboard très simple à installer.

Wekan c’est ça.

wekan1

wekan2

Malheureusement le développeur (mquandalle) ultra hype ne propose que peu de manière de l’installer actuellement soit via Sandstorm soit via Docker. On va donc jouer avec Docker aujourd’hui ;p

Je vous invite à lire l’excellent article de Guillaume en Français pour comprendre le principe de Docker. Et pourquoi par ses autres articles de sa série Docker ?

Le petit tuto suivant a été réalisé en root sur une Debian 8 avec Apache installé en suivant le Wiki de Wekan (expliquant l’installation sous Ubuntu).

On commence par l’installation de docker puis docker-compose.

wget -qO- https://get.docker.com/ | sh # Installation de docker
curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # Installation de docker-compose, aptitude install curl si curl n'est pas installé
chmod +x /usr/local/bin/docker-compose # On rend docker-compose exécutable

On va créer l’utilisateur wekan et le mettre dans le groupe docker.

useradd -d /home/wekan -m -s /bin/bash wekan # Création de l'utilisateur wekan et de son home
usermod -aG docker wekan # On met l'utilisateur wekan dans le groupe docker

On crée le fichier /home/wekan/docker-compose.yml qui va lancer nos conteneurs.

wekan:
  image: mquandalle/wekan
  restart: always
  links:
    - wekandb
  environment:
    - MONGO_URL=mongodb://wekandb/wekan
    - ROOT_URL=http://adresseipdemadebianquejaime:8081
  ports:
    - 8081:80

wekandb:
  image: mongo
  restart: always
  volumes:
    - /home/wekan/data:/data/db

On crée le fichier /etc/apache2/sites-available/wekan.conf (évidemment si apache2 n’est pas installé aptitude install apache2).

<VirtualHost *:80>
        ServerName mytodo.org
        ServerAdmin webmaster@mytodo.org

        DocumentRoot /var/www-vhosts/mytodo.org
        <Directory />
                Options FollowSymLinks
                AllowOverride AuthConfig FileInfo Indexes Options=MultiViews
        </Directory>

        <Directory /var/www-vhosts/mytodo.org>
                Options -Indexes +FollowSymLinks +MultiViews
                AllowOverride AuthConfig FileInfo Indexes Options=MultiViews
                Require all granted
        </Directory>

        ErrorLog /var/log/apache2/mytodo.org-error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/mytodo.org-access.log combined
        ServerSignature Off

  ProxyPassMatch   "^/(sockjs/.*/websocket)$" "ws://127.0.0.1:8081/$1"
        ProxyPass        "/" "http://127.0.0.1:8081/"
        ProxyPassReverse "/" "http://127.0.0.1:8081/"
</VirtualHost>

On paramètre apache pour qu’il nous serve Wekan.

a2enmod proxy proxy_http proxy_wstunnel # On active les modules Apache dont on a besoin
service apache2 restart # On redémarre le service apache2
a2ensite wekan # On active le site wekan
service apache2 reload # On recharge la configuration de apache2

On se connecte sous l’utilisateur wekan et on lance nos conteneurs.

su wekan # On se connecte sous l'utilisateur wekan
cd /home/wekan && docker-compose up -d # On se place dans le dossier où se trouve le fichier docker-compose.yml et on lance nos conteneurs

Voilà c’est installé, on se rend maintenant sur http://adresseipdemadebianquejaime:8081/sign-in et on clique sur S’enregistrer à droite de Vous n’avez pas de compte ?

L’application fonctionne très bien, voir dans les commentaires la variable MAIL_URL pour l’envoi des mails.

Maintenant qu’on a Docker installé vous pouvez tester Sonerezh (logiciel de streaming audio qu’on peut auto-héberger) pour aller plus loin avec Docker ;)

Déjà 15 avis pertinents dans Installation de Wekan avec Docker

  • Concernant ton point « l’export ne fonctionne pas et l’envoi de mails non plus », il suffit de configurer correctement les variables d’environnement ROOT_URL et MAIL_URL soit en les exportant, soit en les déclarant dans l’option « environment » dans le fichier docker-compose.yml (si on utilise Docker Compose). Concernant la variable MAIL_URL, il est possible de configuer directement le SMTP de gmail (MAIL_URL=smtp://mon_utilisateur_gmail:mon_password_gmail@smtp.gmail.com:25/).

    Pour les autres points, je suis tout à fait de ton avis, il manque encore beaucoup de choses, notamment une bonne petite appli native Android/iOS mais le projet est encore jeune et plutôt prometteur !

  • Mimo
    Salut,
    S’il vous plaît, j’ai besoin d’aide. Je veux utiliser wekan et je n’ai pas une grande connaissance.
    J’ai suivi toutes les étapes de cet excellent article sur mon VPS ( DigitalOcean). Le problème que je n’ai pas compris l’utilité de (- ROOT_URL=http://adresseipdemadebianquejaime:8081) alors je l’ai remplacé par (- ROOT_URL=http://localhost:8081) .
    J’ai eu ce message (wekan_wekandb_1 is up-to-date) lorsque j’ai poursuivi les étapes.
    Mes questions :
    À quoi sert ROOT_URL ? Qu’est-ce que je dois mettre dans mon cas ?
    Si je suis sur la bonne route, comment je peux utiliser wekan?
    Merci infiniment pour cet article.
  • Mimo
    Merci bien, l’application fonctionne maintenant.

    Mais s’il vous plaît, qu’est-ce que je dois ajouter pour que je puisse envoyer des mails d’invitations à des nouveaux membres sur mes boards wekan?

    Merci de nouveau !

  • Sylvain
    Salut,
    Toud d’abord, merci pour ce tuto, mais je le trouve vraiment incomplet pour un utilisateur qui n’a jamais fait de docker et de simple base en Apache, pourrais tu d’avantage commenter les différentes lignes? Car de ce que j’ai vu, tu n’as fait qu’un copier/coller de la procédure proposée sur GitHub?

    Si je fais cette remarque c’est parce que personnellement je suis bloqué depuis hier dessus, je fais fasse à une erreur 502 :
    Proxy Error
    The proxy server received an invalid response from an upstream server.
    The proxy server could not handle the request GET /wekan.

    Reason: Error reading from remote server

    Et que je n’arrive pas à voir où j’ai bien pu faire une erreur de configuration, étant donné que je ne comprends pas forcément toutes les lignes de ton tuto. Tous les droits d’accès sont bons.
    J’ai créé un dossier /var/www/wekan qui me sert de racine.
    J’ai créé un dossier /opt/wekan dans lequel se situe mon fichier docker-compose et dans lequel j’exécute ma commande docker-compose up -d

    J’ai changé le port du virtualhost de 80 a 8082 car j’ai d’autres services qui tournent sur le 80.
    Mon fichier docker-compose :
    wekan:
    image: mquandalle/wekan
    restart: always
    links:
    – wekandb
    environment:
    – MONGO_URL=mongodb://wekandb/wekan
    – ROOT_URL=http://192.168.1.32:8081
    ports:
    – 8081:8082

    wekandb:
    image: mongo
    restart: always
    volumes:
    – /home/wekan/data:/data/db

    Mon fichier .conf :
    Listen 8082

    #ServerName Wekan
    #ServerAdmin monmail@mail.org

    DocumentRoot /var/www/wekan

    Options FollowSymLinks
    AllowOverride AuthConfig FileInfo Indexes Options=MultiViews

    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride AuthConfig FileInfo Indexes Options=MultiViews
    Require all granted

    ErrorLog /var/log/apache2/wekan.error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/wekan.access.log combined
    ServerSignature Off

    ProxyPassMatch « ^/(sockjs/.*/websocket)$ » « ws://127.0.0.1:8081/$1 »
    ProxyPass « / » « http://127.0.0.1:8081/ »
    ProxyPassReverse « / » « http://127.0.0.1:8081/ »

  • ben
    top ce tuto, mais ensuite, comment on passe en ssh ? vhost apache + docker + letsencrypt, ça semble assez tricky, une idée ?
  • ben
    Merci, j’ai utilisé le tuto de wekan, mais je regardais ton site qui grosso modo partait dans la même direction, mais pour la suite, impossible de trouver comment interfacer docker avec un certif ssl et apache

Les commentaires sont fermés.