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
- Simplicité : Pas besoin de configurer nginx ou Traefik manuellement
- SSL automatique : Let's Encrypt est configuré automatiquement
- Zero-downtime deployments : Les déploiements se font sans interruption
- Rollbacks faciles : Retour à la version précédente en une commande
- 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