B

bertin.louis7

September 22, 2025

Déployer une application conteneurisée avec Kamal 2 : Guide pratique avec Uptime Kuma

Article Français
Kamal 2 est l'évolution du célÚbre outil de déploiement de 37signals qui simplifie grandement le déploiement d'applications conteneurisées. Dans ce guide, nous allons voir comment utiliser Kamal 2 pour déployer Uptime Kuma, un outil de monitoring populaire, en partant d'une image Docker existante.

Qu'est-ce que Kamal 2 ?
Kamal 2 est un outil de déploiement qui permet de déployer des applications Docker sur des serveurs avec un minimum de configuration. Il gÚre automatiquement :
  • Le reverse proxy (Traefik par dĂ©faut)
  • Les certificats SSL via Let's Encrypt
  • Les rollbacks en cas de problĂšme
  • La gestion des secrets et variables d'environnement

Prérequis
Avant de commencer, assurez-vous d'avoir :
  • Un serveur avec Docker installĂ©
  • Un nom de domaine pointant vers votre serveur
  • Kamal 2 installĂ© localement

    • gem install kamal

  • Un registry Docker (Docker Hub, GitHub Container Registry, etc.)

Structure du projet
Pour déployer une application déjà conteneurisée, vous aurez besoin de :
votre-projet/
├── Dockerfile
├── config/
│   └── deploy.yml
└── .kamal/
    └── secrets (gĂ©nĂ©rĂ© automatiquement)


Le Dockerfile : Simple mais essentiel
MĂȘme pour une application dĂ©jĂ  conteneurisĂ©e, nous avons besoin d'un Dockerfile. Dans notre cas avec Uptime Kuma, il est trĂšs simple :
FROM louislam/uptime-kuma:2.0.0-beta.4

Ce Dockerfile utilise directement l'image officielle d'Uptime Kuma. Kamal 2 va construire cette image et la pousser vers votre registry.

Configuration Kamal 2 : Le fichier deploy.yml

Voici la configuration complÚte pour déployer Uptime Kuma :

# Configuration Kamal 2 pour Uptime Kuma
service: uptime-kuma
image: your-registry-username/uptime-kuma

# Définition des serveurs
servers:
  - YOUR_SERVER_IP

registry:
  username: your-registry-username
  password:
    - KAMAL_REGISTRY_PASSWORD

# Configuration du proxy (Kamal 2 utilise Traefik par défaut)
proxy:
  ssl: true
  host: uptime.your-host.fr
  app_port: 3001

# Variables d'environnement
env:
  clear:
    UPTIME_KUMA_PORT: "3001"
    NODE_ENV: "production"

# Volumes pour la persistance
volumes:
  - uptime-kuma-data:/app/data

builder:
  arch: amd64

Décortiquons cette configuration :
Service et image :
  • service
  • : Le nom de votre service
  • image
  • : L'image qui sera créée et stockĂ©e dans votre registry

Serveurs :
  • Liste des adresses IP de vos serveurs de dĂ©ploiement

Registry :
  • Configuration pour accĂ©der Ă  votre registry Docker
  • Le mot de passe sera demandĂ© de maniĂšre sĂ©curisĂ©e

Proxy :
  • ssl: true
  • : Active HTTPS automatiquement
  • host
  • : Votre nom de domaine
  • app_port
  • : Le port sur lequel votre application Ă©coute

Volumes :
  • DĂ©finit les volumes Docker pour la persistance des donnĂ©es

Déploiement étape par étape
1. Initialisation du projet
# Créer un nouveau projet Kamal
mkdir uptime-kuma-deploy
cd uptime-kuma-deploy

# Initialiser Kamal
kamal init

2. Configuration des secrets
# Définir le mot de passe du registry
kamal secrets set KAMAL_REGISTRY_PASSWORD

3. Configuration du serveur
Assurez-vous que votre serveur est accessible via SSH avec des clés et que Docker est installé.
4. Premier déploiement
# Préparer l'infrastructure
kamal setup

# Déployer l'application
kamal deploy

Commandes utiles
# Voir les logs de l'application
kamal logs

# Redéployer aprÚs des modifications
kamal deploy

# Rollback vers la version précédente
kamal rollback

# Se connecter au conteneur
kamal ssh -i

# ArrĂȘter l'application
kamal down

Avantages de cette approche
  1. Simplicité : Pas besoin de configurer nginx ou Traefik manuellement
  2. SSL automatique : Let's Encrypt est configuré automatiquement
  3. Zero-downtime deployments : Les déploiements se font sans interruption
  4. Rollbacks faciles : Retour à la version précédente en une commande
  5. Multi-serveur : Facile d'ajouter plusieurs serveurs
Conseils et bonnes pratiques
Variables d'environnement sensibles
Pour les données sensibles, utilisez la section
secret
au lieu de
clear
:
env:
  secret:
    - DATABASE_PASSWORD
  clear:
    NODE_ENV: "production"

Monitoring et healthchecks
Ajoutez des healthchecks pour un déploiement plus robuste :
healthcheck:
  path: /status
  port: 3001
  max_attempts: 7

Sauvegarde des volumes
N'oubliez pas de mettre en place une stratégie de sauvegarde pour vos volumes Docker :
# Exemple de sauvegarde
kamal accessory exec backup tar -czf /backup/uptime-$(date +%Y%m%d).tar.gz /app/data

Conclusion
Kamal 2 simplifie énormément le déploiement d'applications conteneurisées. Avec quelques lignes de configuration, vous obtenez un déploiement professionnel avec SSL, reverse proxy et gestion des rollbacks.
Cette approche est particuliÚrement intéressante pour :
  • Les Ă©quipes qui veulent Ă©viter la complexitĂ© de Kubernetes
  • Les projets nĂ©cessitant des dĂ©ploiements rapides et fiables
  • Les applications avec des besoins d'infrastructure simples
N'hésitez pas à adapter cette configuration selon vos besoins spécifiques et à explorer la documentation officielle de Kamal 2 pour des fonctionnalités plus avancées !


B

bertin.louis7

Auteur de cet article