Installation de Scrumblr
Description
Scrumblr est un logiciel libre distribué sous licence GPLv3 qui a pour objectif de fournir un tableau de post-it collaboratif en temps réel. Il s'agit de la solution logicielle qui propulse le service en ligne Framemo. Du point de vue utilisateur, seul un navigateur Web est nécessaire. Nous allons dans ce tutoriel voir la manière d'installer la partie serveur.
Nourrir la terre
NodeJS
Scrumblr est une application développée avec le langage de programmation JavaScript et s'appuie sur la plate-forme NodeJS. Malheureusement la version de NodeJS disponible dans les dépôts Debian est assez ancienne. Nous allons installer NodeJS 4 depuis les dépôts de l'éditeur.
curl -sL https://deb.nodesource.com/setup_4.x > /tmp/install_node_depot.sh
On vérifie le contenu de /tmp/install_node_depot.sh
pour vérifier que
le script ne fait rien de dangereux (on va le lancer en root
quand mĂŞme !),
puis on le lance et on installe NodeJs :
nano /tmp/install_node_depot.sh
sudo bash /tmp/install_node_depot.sh
sudo apt-get install -y nodejs
Redis
Redis est le serveur de base de données de Scrumblr. La version de Debian stable ira bien, il suffit pour l'installer de faire :
sudo apt-get install redis-server
Utilisateur dédié
De manière à mieux isoler l'application, nous allons créer un utilisateur dédié à Scrumblr, du même nom que le logiciel :
sudo adduser --no-create-home --home /var/www/scrumblr --disabled-login --gecos "Scrumblr" scrumblr
Cette commande crée l'utilisateur scrumblr ainsi qu'un groupe du même nom. Il lui assigne comme répertoire personnel /var/www/scrumblr, sans toutefois créer ce répertoire.
Semer
Prérequis
Pour installer Scrumblr, il nous faudra récupérer la dernière version du code source. Pour cela, il est possible de télécharger l'archive correspondante ou d'utiliser git. Nous privilégierons ce dernier, car cela nous permettra de gérer plus aisément les mises à jour. Pour installer git, rien de plus simple :
sudo apt-get install git
Scrumblr
Clonons le code source de scrumblr en lançant la commande suivante :
cd /var/www/
sudo git clone https://github.com/aliasaria/scrumblr.git
sudo chown scrumblr: -R /var/www/scrumblr
Ensuite, nous allons lancer l'installation des dépendances :
cd /var/www/scrumblr
sudo su scrumblr -s /bin/bash
npm install
exit
Framasky a codé quelques fonctionnalités plutôt pratiques :
- un système d'import/export
- le support du markdown
- un système de révisions : créeez un point de révision, exportez-le et réimportez-le pour y revenir
Pour profiter de ces fonctionnalités (qui ne sont pas encore intégrées dans le dépôt originel (pull requests 95 et 96) :
cd /var/www/scrumblr
sudo su scrumblr -s /bin/bash
git remote add fork https://github.com/ldidry/scrumblr/
git fetch fork
git pull fork master
Arroser
Lancer Scrumblr
Scrumblr est maintenant prêt à être lancé avec node server.js --port 4242
!
Mais pour ne pas avoir laisser un terminal ouvert, il faut créer un
service systemd.
Créez le fichier /etc/systemd/system/scrumblr.service
:
[Unit]
Description=Scrumblr service
Documentation=https://github.com/aliasaria/scrumblr/
Requires=network.target
Requires=redis-server.service
After=network.target
After=redis-server.service
[Service]
Type=simple
User=scrumblr
WorkingDirectory=/var/www/scrumblr
ExecStart=/usr/bin/node server.js --port 4242
[Install]
WantedBy=multi-user.target
Bien sûr, choisissez le port que vous voulez, pourvu qu'il soit
supérieur à 1024 et non utilisé (vérifiez cela avec sudo lsof -i :4242
)
Ensuite, pour activer et lancer Scrumblr :
sudo systemctl daemon-reload
sudo systemctl enable scrumblr.service
sudo systemctl start scrumblr.service
Procéder aux mises à jour de Scrumblr
Notre Scrumblr est sorti de terre et se porte bien mais comment le
faire durer ? Voyons cela : utilisons git
pour récupérer la dernière
version du logiciel :
cd /var/www/scrumblr
sudo su scrumblr -s /bin/bash
git pull
npm install
exit
sudo systemctl restart scrumblr.service
Rien de plus simple !
Regarder pousser
Mise en place d'un proxy inverse
Scrumblr est capable de fonctionner seul sur un port standard, mais il est possible que nous ne dédiions pas notre machine à ce service et que nous ayons d'autres applications Web à lui adjoindre. Il peut dans ce cas être intéressant d'utiliser un serveur frontal qui jouera le rôle de proxy inverse vers Scrumblr. Pour cet exemple, nous choisissons d'employer Nginx et un domaine ou sous-domaine dédié à l'instance Scrumblr.
Créons le fichier /etc/nginx/sites-available/scrumblr
, par exemple
avec nano
: sudo nano /etc/nginx/sites-available/scrumblr
.
À l'intérieur, nous optons pour la configuration suivante :
upstream scrumblr {
server 127.0.0.1:4242;
}
server {
listen 80;
listen [::]:80;
server_name scrumblr.exemple.org;
access_log /var/log/nginx/scrumblr.exemple.org.access.log;
error_log /var/log/nginx/scrumblr.exemple.org.error.log;
index index.html;
root /var/www/html/;
location / {
proxy_set_header Host $host;
proxy_pass http://framemo;
proxy_redirect http://scrumblr http://scrumblr.exemple.org;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Quelques explications :
- Le port 80 est le port standard pour le Web (protocole HTTP). Libre à vous de configurer un accès chiffré ;
- Le
server_name
est le nom de domaine ou sous-domaine sur lequel nous souhaitons que notre instance Scrumblr soit accessible ; - Les *_log permettent d'isoler la journalisation des accès et éventuelles erreurs de Nginx vers Scrumblr dans des fichiers spécifiques ;
- Tout le trafic sur ce domaine est redirigé vers l'adresse locale, sur le port 4242 (que nous avons choisi dans le service systemd).
- Enfin, le dernier bloc permet de passer les requĂŞtes vers Scrumblr.
Nous allons ensuite activer cette configuration en créant un lien symbolique vers la configuration active :
sudo ln -s /etc/nginx/sites-available/scrumblr /etc/nginx/sites-enabled
Relançons nginx de manière à ce qu'il prenne en compte le nouveau fichier de configuration :
sudo nginx -t && sudo nginx -s reload
(nginx -t
permet de vérifier que la configuration de Nginx est valide
avant de le relancer)