Installer Node.js sur Debian : binaires, Nix ou Docker ?
Voir aussi : vidéo peertube - vidéo youtube - dépôt git
Node.js est un outils très classique pour développer des applications web côté-serveur en JavaScript. La version LTS actuelle de Node.js est la 8. Malheureusement, Debian (Stretch) propose seulement la version 4, sans le gestionnaire de paquets NPM, ce qui n’est pas satisfaisant pour développer en Node.js correctement. Ce tutoriel présente plusieurs méthodes pour installer une version plus récente de Node.js.
Installation locale
- Principe : installer une archive dans un dossier local et configurer les chemins (doc Node.js).
mkdir -p ~/opt
cd ~/opt
curl http://nodejs.org/dist/latest-v8.x/node-v8.12.0-linux-x64.tar.gz | tar xz
echo "export NODEJS_HOME=$HOME/opt/node-v8.12.0-linux-x64/bin" >> ~/.bashrc
echo "export PATH=$NODEJS_HOME:$PATH" >> ~/.bashrc
source ~/.bashrc
- Utilisation :
npm install
npm run start
...
Avantage : ne nécessite pas de droits privilégiés.
Inconvénient : installation, mise à jour et suppression manuelles.
Installation système avec nodesource
- Principe : ajouter une source vers un paquet deb tiers et installer avec le gestionnaire de paquets.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Avantage : gestion de paquet classique (installation, mise à jour, suppression…).
Inconvénient : nécessite des droits privilégiés.
Avec Nix
- Principe : installer et utiliser le gestionnaire de paquet Nix (doc Nix).
curl https://nixos.org/nix/install | sh
echo ". ~/.nix-profile/etc/profile.d/nix.sh" >> ~/.bashrc
source ~/.bashrc
nix-env -iA nixpkgs.nodejs
Avantage : puissance de l’écosystème Nix.
Inconvénient : apprentissage de Nix, droits privilégiés pour installer Nix.
Avec Docker
- Principe : exécuter le code dans un conteneur Docker (installation de docker).
sudo apt-get update -y
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update -y
sudo apt-get install -y docker-ce
sudo usermod -aG docker `id -un`
# deconnecter/reconnecter
docker run hello-world
- Utilisation avec une image classique (node) :
docker run --rm -v `pwd`:/tmp -p 3000:3000 -it node bash
cd /tmp
npm install
npm run start
- Utilisation avec une image personnalisée (nokomprendo/node) :
alias npm='docker run --rm -v `pwd`:/tmp -p3000:3000 -e USER_ID=`id -u` nokomprendo/node npm'
npm install
npm run start
Dockerfile
:
FROM nixos/nix
RUN nix-channel --add https://nixos.org/channels/nixos-unstable nixpkgs
RUN nix-channel --update
RUN nix-env -iA nixpkgs.gosu
RUN nix-env -iA nixpkgs.nodejs
RUN nix-env -iA nixpkgs.shadow
COPY entrypoint.sh /root/entrypoint.sh
ENTRYPOINT ["/root/entrypoint.sh"]
WORKDIR /tmp
entrypoint.sh
:
#!/bin/sh
adduser -D -u ${USER_ID} toto
exec gosu toto "$@"
Avantage : système Docker répandu, facile à mettre en place si Docker déjà installé.
Inconvénient : lourdeur (chargement, utilisation), peut nécessiter une image personnalisée.
Récapitulatif
Si vous n’avez pas de droits privilégiés : installation locale.
Si vous avez les droits root et que vous voulez juste Node.js : installation système avec nodesource.
Si vous avez Nix ou que l’écosystème Nix vous intéresse : utiliser le paquet Node.js de Nix.
Si vous avez Docker : créer/utiliser une image Docker.