Guide de déploiement

Déployer vos applications avec Kamal sur un VPS

Déployer sur un VPS Cloud →

Déploiement8 min de lecture

Déployer vos applications avec Kamal sur un VPS

Kamal (anciennement MRSK), issu de l'écosystème Rails/37signals, déploie des applications conteneurisées sur un ou plusieurs VPS depuis votre machine locale, sans orchestrateur lourd. Il combine build Docker, push vers un registre, déploiement zero-downtime et reverse proxy SSL automatique en une seule commande : `kamal deploy`.

Pourquoi déployer avec Kamal sur un VPS plutôt qu'avec Kubernetes ?

Kubernetes est surdimensionné pour la majorité des applications hébergées sur un VPS unique ou un petit cluster. Kamal vise précisément ce terrain : il prend votre Dockerfile, construit l'image, l'envoie sur vos serveurs via SSH et bascule le trafic sans interruption grâce à son proxy intégré (kamal-proxy). Toute la configuration tient dans un fichier config/deploy.yml versionné avec votre code : pas de control plane à maintenir, pas de YAML interminable. Vous gardez la simplicité d'un VPS avec un workflow de déploiement professionnel.

Ce que Kamal vous apporte

  • Déploiements zero-downtime via health checks et bascule progressive du trafic
  • Build et push de l'image Docker, puis déploiement sur les serveurs, en une commande
  • SSL automatique Let's Encrypt géré par kamal-proxy, sans configuration manuelle
  • Rollback instantané vers la version précédente avec kamal rollback
  • Gestion des secrets et variables d'environnement centralisée et chiffrée
  • Déploiement multi-serveurs (web, jobs, accessoires comme Postgres ou Redis) depuis un seul fichier

Prérequis

Côté VPS, Kamal n'exige qu'un accès SSH par clé et Docker (qu'il peut même installer via kamal setup au premier déploiement). Un VPS de 2 vCPU et 2 à 4 Go de RAM convient pour une application web standard plus sa base de données. Côté machine locale, installez Kamal (gem Ruby ou image Docker), et préparez un registre de conteneurs (Docker Hub, GitHub Container Registry, ou un registre privé) ainsi qu'un domaine pointant vers le VPS.

Déployer une application avec Kamal

01

Initialiser la configuration

Dans votre projet, lancez kamal init. Cela génère config/deploy.yml et .kamal/secrets. Renseignez le nom du service, l'image (votreuser/monapp), la liste des serveurs (servers.web) avec l'IP du VPS et le registre utilisé.

02

Définir les secrets et variables

Placez les valeurs sensibles dans .kamal/secrets (jamais commité) : KAMAL_REGISTRY_PASSWORD, RAILS_MASTER_KEY ou vos clés applicatives. Référencez-les dans deploy.yml sous env.secret. Les variables non sensibles vont sous env.clear.

03

Activer le proxy et le SSL

Dans la section proxy de deploy.yml, indiquez votre host (app.votredomaine.com) et activez ssl: true. kamal-proxy obtiendra automatiquement le certificat Let's Encrypt et terminera le TLS devant votre conteneur. Assurez-vous que le DNS pointe déjà vers le VPS avant le déploiement.

04

Provisionner le serveur

Lancez kamal setup. Kamal se connecte en SSH, installe Docker si besoin, se connecte au registre, démarre kamal-proxy puis déploie la première version. C'est l'unique étape d'amorçage : les déploiements suivants seront plus rapides.

05

Déployer et vérifier

À chaque mise à jour, exécutez kamal deploy. Kamal construit l'image, la pousse, démarre les nouveaux conteneurs, attend que les health checks passent, puis bascule le trafic et arrête les anciens. Consultez l'état avec kamal app logs -f et kamal app details.

06

Gérer les accessoires (base de données, cache)

Déclarez Postgres ou Redis sous la clé accessories de deploy.yml, avec leur image, leur port et leurs volumes. kamal accessory boot db démarre le service. Vous gardez ainsi toute la stack décrite dans un seul fichier versionné.

Si un déploiement introduit une régression, ne touchez pas au code : exécutez kamal rollback [VERSION] pour revenir instantanément à l'image précédente, toujours présente sur le VPS. Pensez aussi à utiliser kamal app exec pour lancer des tâches ponctuelles (migrations, console) directement dans le conteneur en cours, sans ouvrir de session SSH manuelle.

Pilotez vos déploiements Kamal sur un VPS Cloud ServOrbit

Provisionnez un VPS Cloud avec le template Déploiement et accès SSH par clé : Kamal y installe Docker et déploie votre application en zero-downtime dès la première commande.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou écrivez à notre équipe — support en anglais, français et arabe.