Node.js et haste : installation sur un serveur Debian Squeeze

Installation de Node.js

Les tutoriels pullulant sur la toile, je ne ferai pas l’affront de peser le pour et le contre d’une installation de Node.js, que ça soit depuis la source, depuis git ou depuis les répertoires Sid : si vous chercher un autre moyen, trouvez-le, le reste devrait rester similaire qu’importe votre configuration.

Pour moi, j’ai préféré installé depuis l’archive, et procéder à un simple configure, make, make install, triolet joyeux des installations réussies. J’ai donc d’abord téléchargé la dernière archive stable en date, soit la version 0.6.18.

~ $ wget http://nodejs.org/dist/v0.6.18/node-v0.6.18.tar.gz

Je l’ai ensuite extraite dans mon dossier personnel, vous pouvez bien évidemment mettre toutes ces archives bien au chaud dans un dossier séparé (c’est même conseillé par souci de clarté). Mais pour l’instant, allons au plus simple avec un tar Xtract Ze Files.

~ $ tar xzf node-v0.6.18.tar.gz && cd node-v0.6.18/

Pour installer Node.js dans /opt/, il font donc configurer le tout comme il faut bien. Notez que sur Debian l’outil de configuration à tendance à ne pas trouver openssl, donc autant le lui indiquer, même s’il n’est pas utilisé.

~ $ ./configure --openssl-libpath=/usr/lib/ssl --prefix=/opt/node

Après, c’est une balade de santé : make, make install, en root ou avec sudo, c’est à votre convenance, le but étant d’avoir le tout fonctionnel. La dernière touche à apporter consiste à ajouter ce nouveau chemin d’installation à votre $PATH, pour ce faire j’ai édité /etc/bash.bashrc (ainsi me faire fi de l’utilisateur aux commandes) pour y ajouter :

PATH=$PATH:/opt/node/bin
NODE_PATH=/opt/node:/opt/node/lib/node_modules

Pour finir, j’ai à nouveau « sourcé » le fichier, avec un simple source /etc/bash.bashrc.

Installation de haste

Mais qu’est-ce donc que Haste ? C’est simple : une application en Node.js qui déchire, un PasteBin léger, minimaliste, utilisant les colorations foncées de Solarized, configurable en un fichier, et disposant même d’un client Ruby à utiliser dans son terminal. Vous pouvez en trouver un exemple sur HasteBin, la « maison mère » du projet.

Pour l’installer, j’ai d’abord cloné le répertoire git, pour ensuite le copier dans /var/www/domain.tld/haste-server/www. Il va sans dire que tout chemin référent sera à éditer en fonction de votre propre configuration.

Donc, après un git clone https://github.com/seejohnrun/haste-server.git et avoir copie le contenu de haste-server/ dans /var/www/domain.tld/haste-server/www, et changé le possesseur dudit dossier à un utilisateur normal sans privilèges – afin de ne pas avoir à exécuter node en root -, j’ai pu installer haste avec un simple npm install depuis le répertoire de l’application. Simple, non ?

Pour configurer la bête, je vous renvoie à la fiche d’explication de haste.

Configuration de NGinx

Afin de prendre en compte le nom de domaine et d’avoir une jolie adresse sans le port :7777 derrière, il m’a fallu jouer avec le proxy de NGinx, dont voici un exemple de configuration à insérer dans /etc/nginx/sites-available/sub.domain.tld, avec votre domaine/sous-domaine désiré (je vous laisse la partie d’édition de la Zone DNS).

server {
listen 80;
server_name sub.domain.tld;
root /where/you/put/your/haste-server;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:7777;
proxy_redirect off;
}
}

Ensuite, finalement, rien de plus simple qu’un nginx_ensite sub.domain.tld et un service nginx reload. S’il y a la moindre erreur, gueulez un coup, recommencez, ou commentez ci-dessous.

Who wants – to run – foreveeeer

Le défaut majeur des applications Node.js c’est que bien souvent celles-ci sont dépendantes de l’usage du terminal : fermez votre session SSH et l’application se clôturera. Heureusement, il est possible de faire appel à Supervisor, voir mon article à ce sujet.