Huginn, le mix IFTTT – Yahoo! Pipes opensource

Vous trouvez IFTTT trop fermé et limité par la quantité de connecteurs proposés ? Vous avez testé Zapier, mais ne voulez pas payer ? Si vous avez un petit serveur Linux à disposition, comme un Raspberry PI, et que vous acceptez de mettre les mains dans le cambouis, alors Huginn est fait pour vous !

Huginn, c'est un peu ça !

Huginn, c’est un peu ça !

Huginn est une application Ruby on Rails qui permet d’écouter divers événements pour déclencher des actions. Par exemple, vous pouvez être notifié par mail lorsqu’il est prévu de la pluie sur votre région, ou bien lorsqu’un sujet est mentionné plus que d’ordinaire sur Twitter, ou même créer un Feed RSS à partir d’un site qui n’en publie pas. Le Wiki est disponible sur Github, et contient suffisamment d’informations pour se faire une idée. Il est plus complexe que IFTTT et se rapproche de Yahoo! Pipes, car vous pouvez chaîner les données au travers de plusieurs agents de traitement.

Je suis tombé sur Huginn en cherchant une alternative à IFTTT. Concrètement, je souhaite mettre en place une recette qui extrait les tâches Trello pour les injecter automatiquement dans Toggl. Le hic, c’est que IFTTT ne supporte ni Trello, ni Toggl. Alors pourquoi pas tester Huginn ? Et en profiter pour découvrir Ruby et faire mes premiers pas dans ce langage ?

On est donc parti pour le premier tutoriel du blog ! Cet article s’appuie sur la version actuelle de Huggin, et est le premier d’une série consacrée à Huginn où nous irons jusqu’à l’implémentation de nos propres agents pour Trello et Toggl. Pour aujourd’hui, nous allons voir comment installer Huginn sur Ubuntu 14.04.

J’ai un NAS fait maison, avec un Core i5, 4 Disques en Raid + 1 SSD pour l’OS (Ubuntu). En fait, je m’en sers de NAS, mais également de lecteur multimédia XBMC vu qu’il est relié à la TV. J’ai également quelques outils pour mes développements maison (Jenkins, Nexus, …). Je choisi d’installer Huginn là dessus, la machine tourne en permanence chez moi.

Installation de Huginn sur Ubuntu 14.04

Je suis la procédure indiquée ici, avec une petite variante : Je crée un utilisateur dédié pour huginn, et j’utilise rbenv pour mieux cloisonner l’installation.

sudo adduser huginn
su huginn

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

Puis après avoir relancé le shell

rbenv install 2.1.2 # Vous pouvez aller prendre un café ...
rbenv global 2.1.2
rbenv rehash

On est alors prêt pour suivre la procédure d’installation normale. Il faudra simplement ajouter la commande rbenv rehash à chaque installation de gem, pour que les commandes utilisées soit bien celle du rbenv. Personnellement, j’ai du installer le package libmysqlclient-dev pour le gem mysql2. Je crée également un compte utilisateur dédié huginn pour la base de données MySQL.

git clone git@github.com:cantino/huginn.git
cd huginn

sudo aptitude install libmysqlclient-dev # Requis pour le gem mysql2

gem install rake bundle # Répondre non si rake est en conflit avec une version existante.
rbenv rehash

bundle install
rbenv rehash

cp .env.example .env
rake secret

nano .env # Définir la valeur de APP_SECRET_TOKEN par celle retournée précédemment.

rake db:create

Puis on sécurise un peu MySQL.

mysql -u root -p

CREATE USER 'huginn'@'localhost' IDENTIFIED BY 'huginnpassword';
GRANT ALL PRIVILEGES ON huginn_test.* TO 'huginn'@'localhost';
GRANT ALL PRIVILEGES ON huginn_development.* TO 'huginn'@'localhost';
nano .env #Pour définir DATABASE_USERNAME et DATABASE_PASSWORD
chmod g-wr .env # On sécurise les fichiers de configuration
chmod g-wr config # On sécurise les fichiers de configuration

rake db:migrate
rake db:seed

foreman start

Et voilà, huginn tourne ! On navigue sur le port 3000 de la machine, on se logue avec le compte par défaut admin/password pour changer le mot de passe.

Reste plus qu’a créer une petite configuration upstart pour installer Huginn en service.

sudo nano /etc/init/huginn.conf

start on (filesystem and networking) or runlevel [2345]
stop on runlevel [016]

env uid=huginn
env gid=huginn
env umask=022

exec start-stop-daemon -S -c $uid:$gid -k $umask -d /home/huginn/huginn -x start.sh -- -d

sudo nano /home/huginn/huginn/start.sh

#!/bin/sh
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

foreman start

sudo service huginn start

Vous êtes maintenant prêt à utiliser Huginn et configurer vos agents ! Le projet est jeune, mais très actif sur Github, alors profitez en pour contribuer d’une manière ou d’une autre ! Dans le prochain article de la série, nous verrons comment créer vos propres agents.