Skip to content

CatapultJS : déployer des applications Node.js via SSH

Déployer une application Node.js en production reste souvent une étape laborieuse. Entre les scripts shell fragiles, les outils génériques trop complexes, et les plateformes cloud qui abstraient trop, il manquait quelque chose de simple, ciblé Node.js, et qui fonctionne par SSH sans rien installer côté serveur.

C'est ce que j'ai voulu résoudre avec CatapultJS.

Ce que c'est

CatapultJS est un outil de déploiement en ligne de commande, inspiré de Deployer PHP et Capistrano, mais taillé pour l'écosystème Node.js. Il fonctionne directement par SSH, aucun agent à installer, aucune dépendance côté serveur, juste un shell distant.

bash
npx @catapultjs/deploy init

Après avoir configuré vos hôtes SSH et les chemins de déploiement, un seul appel suffit :

bash
npx cata deploy

Une architecture en pipeline

Le coeur du projet repose sur des tâches composables. Le pipeline de déploiement est une suite d'étapes que l'on peut librement insérer, supprimer ou remplacer. Pas de magie cachée : chaque étape est explicite et modifiable.

Des recettes prédéfinies couvrent les cas courants, à titre d'exemple :

  • AdonisJS : avec les étapes spécifiques au framework
  • PM2 : gestion du process manager intégrée

La documentation liste l'ensemble des recettes disponibles et explique comment en créer.

Rollback automatique

En cas d'erreur après publication, CatapultJS restaure automatiquement la version précédente. C'est transparent et ça évite les coupures de service sur un déploiement raté.

Multi-serveurs

On peut cibler plusieurs environnements en parallèle (staging, production) ou viser un serveur spécifique via une option CLI. Pratique pour des architectures répliquées ou des déploiements progressifs.

Pourquoi ce projet

La plupart des outils de déploiement généralistes demandent beaucoup de configuration pour des cas Node.js simples. Les plateformes PaaS résolvent le problème différemment, mais au prix de la flexibilité. CatapultJS prend le parti inverse : au plus près de l'infrastructure, mais avec une structure claire.

Le projet est actuellement en version 0.9.0 bêta. La documentation et les recettes sont disponibles sur catapultjs.com.