Tutoriel

Déploiement

Déployer vos applications avec Easypanel sur un VPS

Easypanel est un panneau de contrôle moderne qui transforme votre VPS en plateforme de déploiement élégante. Avec son interface soignée, ses buildpacks Nixpacks et son SSL automatique, il rivalise avec les PaaS commerciaux tout en restant self-hosted. Ce guide vous accompagne de l'installation jusqu'à la production : prérequis chiffrés, configuration post-installation, sauvegardes et résolution des erreurs les plus fréquentes.

10 min de lecture5 étapes
Sommaire· Pourquoi déployer Easypanel sur votre VPS1/8
  1. 01Pourquoi déployer Easypanel sur votre VPS
  2. 02Les bénéfices concrets d'Easypanel
  3. 03Prérequis chiffrés pour Easypanel
  4. 04Installer Easypanel et déployer une application
  5. 05Configuration post-installation : Traefik et TLS avancés
  6. 06Mises à jour et sauvegardes Easypanel
  7. 07Dépannage : les erreurs les plus fréquentes
  8. 08Easypanel, Coolify ou Dokploy : lequel choisir ?

Pourquoi déployer Easypanel sur votre VPS

Easypanel se positionne comme une alternative moderne et visuelle à CapRover ou Dokku. Il s'appuie sur Docker et sur Nixpacks pour construire automatiquement vos applications depuis un dépôt Git, sans que vous ayez à écrire de Dockerfile. Son interface, plus récente et plus ergonomique que la plupart des panneaux open-source, permet de gérer applications, bases de données, certificats et domaines en quelques clics. Easypanel intègre nativement Traefik comme reverse proxy : chaque application déployée obtient automatiquement son certificat Let's Encrypt et son routage. C'est un excellent compromis entre la simplicité d'un PaaS commercial et le contrôle d'un serveur que vous possédez, particulièrement adapté aux agences qui déploient régulièrement des projets clients.

Les bénéfices concrets d'Easypanel

  • Builds automatiques via Nixpacks : déployez Node, Python, PHP ou Go sans écrire de Dockerfile.
  • Interface moderne et intuitive pour gérer apps, domaines et bases de données.
  • Traefik intégré : reverse proxy et SSL Let's Encrypt configurés automatiquement.
  • Bases de données en un clic : PostgreSQL, MySQL, MongoDB, Redis prêtes à l'emploi.
  • Déploiement depuis GitHub avec rebuild automatique à chaque push.
  • Templates d'applications populaires (WordPress, n8n, Ghost…) déployables instantanément.
  • Isolation par projet : chaque client ou application dans son propre réseau Docker.

Prérequis chiffrés pour Easypanel

Easypanel embarque Traefik et un builder Nixpacks, ce qui demande un peu plus de mémoire qu'un Portainer.

RAM : 2 Go minimum, c'est l'exigence affichée par l'éditeur. Dès que vous hébergez plusieurs applications avec leurs bases de données, visez 4 Go : les builds Nixpacks consomment temporairement beaucoup de RAM, et un petit serveur risque de tuer le processus de compilation en cours de route.

CPU : 1 vCPU suffit au démarrage, 2 vCPU recommandés dès que vous lancez des builds fréquents ou des bases de données gourmandes.

Disque : prévoyez au moins 30 Go de SSD. Prévoyez davantage si vous hébergez des bases volumineuses ou des images Docker lourdes (Node, Java).

Système : Ubuntu 22.04 LTS ou Ubuntu 24.04 LTS propre, en accès root. Le script officiel est prévu pour Ubuntu : quand Docker est absent, il l'installe depuis le dépôt Docker pour Ubuntu. Docker est installé automatiquement par le script Easypanel — inutile de le préinstaller.

Réseau / DNS : configurez un enregistrement A pour le domaine du panneau (panel.mondomaine.com) pointant vers l'IP de votre VPS. Un enregistrement wildcard *.mondomaine.com est vivement recommandé pour éviter d'ajouter manuellement chaque sous-domaine d'application. Les ports 80 et 443 doivent être libres (le script s'arrête si un service les occupe déjà) et ouverts dans votre pare-feu. Le panneau écoute sur le port 3000 pour le premier accès ; une fois son domaine configuré, désactivez l'accès par IP plutôt que de compter sur ufw, qui ne filtre pas les ports publiés par Docker.

Installer Easypanel et déployer une application

  1. Lancer l'installation automatisée

    Sur un Ubuntu propre, exécutez le script officiel en root :

    curl -sSL https://get.easypanel.io | sh

    Le script installe Docker (s'il est absent), initialise Docker Swarm et démarre Easypanel, qui déploie Traefik, en quelques minutes. Le panneau est ensuite joignable sur le port 3000 du serveur : http://IP_DU_VPS:3000. Vérifiez que Docker tourne bien avec docker ps avant de passer à l'étape suivante.

  2. Créer le compte administrateur

    Ouvrez http://IP_DU_VPS:3000 dans votre navigateur. Créez votre compte admin avec une adresse e-mail et un mot de passe fort (au moins 16 caractères). Ouvrez ensuite les réglages du serveur (Settings) et renseignez le domaine personnalisé du panneau (panel.mondomaine.com) : Easypanel va immédiatement demander un certificat Let's Encrypt via Traefik. Une fois le certificat obtenu, le panneau est accessible en HTTPS : désactivez alors l'accès par IP dans ce même réglage. Ne comptez pas sur ufw pour fermer le port 3000 : Docker publie ses ports en amont des règles ufw.

  3. Créer un projet et une application

    Dans l'interface, cliquez sur New Project : un projet regroupe vos services (app + base de données + cache) dans un réseau Docker isolé. À l'intérieur du projet, cliquez sur New Service → App. Indiquez le dépôt GitHub (un token GitHub configuré sur le serveur est requis pour un dépôt privé), la branche de production et le chemin de build si nécessaire. Easypanel utilise le Dockerfile s'il est présent, sinon Nixpacks détecte la stack — Node, Python, PHP, Ruby, Go. Railpack, son successeur, est recommandé par l'éditeur pour une nouvelle application et se choisit dans l'onglet Build.

  4. Ajouter une base de données et des variables d'environnement

    Dans le même projet, cliquez sur New Service et choisissez Postgres, MySQL, MariaDB, Mongo ou Redis. Easypanel génère un nom d'hôte interne dérivé des noms du projet et du service, un utilisateur (postgres par défaut pour PostgreSQL) et un mot de passe aléatoire. Copiez l'URL de connexion interne de l'onglet Credentials, puis injectez-la dans votre application via l'onglet Environment de votre service App. Les services d'un même projet communiquent via leur nom de service sur le réseau Docker interne — pas besoin d'exposer la base sur Internet.

  5. Configurer le domaine et déployer

    Dans l'onglet Domains de l'application, ajoutez mon-app.mondomaine.com : Easypanel configure Traefik et obtient le certificat SSL automatiquement. Cliquez sur Deploy : Nixpacks build l'image et met l'application en ligne. Consultez les logs de build en temps réel depuis l'onglet Deployments pour suivre la progression et détecter d'éventuelles erreurs.

Configuration post-installation : Traefik et TLS avancés

Easypanel expose Traefik via deux entrées : le tableau de bord Traefik (désactivé par défaut pour des raisons de sécurité) et l'API de routage interne que le panneau pilote automatiquement. Vous n'avez normalement pas à toucher à la configuration Traefik directement.

TLS automatique. Pour chaque domaine ajouté dans l'onglet Domains d'un service, Easypanel configure un résolveur ACME Let's Encrypt. Le certificat est renouvelé automatiquement avant expiration. Si votre domaine est derrière Cloudflare, assurez-vous que le mode SSL/TLS est réglé sur Full (strict) — un mode « Flexible » provoquerait une boucle de redirection infinie puisque Traefik redirige déjà HTTP vers HTTPS.

Configurations avancées. Depuis les onglets de chaque service, vous pouvez :
- ajouter des middlewares Traefik à un domaine (onglet Domains) ou une authentification HTTP Basic (onglet Security) ;
- monter des volumes persistants (onglet Storage, utile pour les données d'une application qui n'utilise pas de base de données dédiée) ;
- régler le nombre de réplicas et les déploiements sans interruption (onglet Advanced).

Port interne. Chaque domaine route vers un port cible, qui doit être celui sur lequel l'application écoute dans le conteneur (normalement sur 0.0.0.0). Si votre application écoute sur un port non standard, renseignez-le comme port cible du domaine (onglet Domains) pour que Traefik sache où router les requêtes.

Mises à jour et sauvegardes Easypanel

Mettre à jour Easypanel. Le panneau vérifie lui-même les mises à jour : quand une nouvelle version est disponible, un bouton apparaît dans la barre de navigation. En ligne de commande, la mise à jour manuelle documentée par l'éditeur (canal stable) est :

docker image pull easypanel/easypanel && docker service update easypanel --force

Ne relancez pas le script d'installation pour mettre à jour : il est prévu pour un serveur vierge, s'arrête quand les ports 80 et 443 sont occupés et exécute docker swarm leave --force.

Sauvegarder l'état du panneau. Easypanel stocke sa configuration, celle de Traefik (certificats compris) et les données des services dans le dossier /etc/easypanel du serveur, monté dans ses conteneurs. Pour sauvegarder l'ensemble :

# Mesurer le dossier d'état d'Easypanel
du -sh /etc/easypanel

# L'archiver (l'archive contient des secrets : protégez-la)
tar czf /root/easypanel-backup-$(date +%Y%m%d).tar.gz -C / etc/easypanel \
  && chmod 600 /root/easypanel-backup-*.tar.gz

Copiez ensuite l'archive hors du serveur. Les fichiers d'une base en cours d'écriture peuvent y être incohérents : pour les bases, fiez-vous à leurs sauvegardes logiques.

Sauvegardes des bases de données applicatives. Easypanel propose une sauvegarde logique planifiée pour PostgreSQL, MySQL, MariaDB et MongoDB (pas pour Redis). Déclarez d'abord une destination dans Settings → Server → Storage Providers : bucket S3 ou compatible (Cloudflare R2, Backblaze B2, Wasabi…), SFTP, Dropbox ou Google Drive. Configurez ensuite la sauvegarde depuis l'onglet Backups de chaque service de base de données : planification cron, nombre de sauvegardes conservées et chemin de destination. Lancez une première sauvegarde à la main et testez sa restauration.

Restauration. Pour restaurer l'archive du dossier d'état sur le serveur :

tar xzf /root/easypanel-backup-20261001.tar.gz -C /

Dépannage : les erreurs les plus fréquentes

Port 80 ou 443 déjà occupé. Si le script d'installation s'arrête sur « something is already running on port 80 » (ou 443), vérifiez quel service écoute sur ces ports : ss -tlnp | grep -E ':(80|443)'. Un nginx ou Apache préinstallé sur le VPS bloque l'installation. Arrêtez et désactivez le service concurrent (systemctl disable --now nginx) puis relancez le script d'installation.

Docker non installé ou version insuffisante. Le script n'installe Docker que s'il est absent : sur un système qui a déjà Docker en version ancienne, il le conserve tel quel et vous pouvez obtenir des erreurs de compatibilité. Vérifiez la version : docker --version, et comparez-la à la dernière version stable de Docker Engine. Si nécessaire, désinstallez l'ancienne version et relancez le script.

DNS non propagé — certificat SSL introuvable. Si Let's Encrypt ne peut pas vérifier le domaine (enregistrement DNS pas encore propagé, ou TTL long), Traefik affichera une erreur de certificat. Vérifiez la propagation depuis votre terminal : dig +short panel.mondomaine.com doit retourner l'IP de votre VPS. La propagation DNS peut prendre quelques minutes à plusieurs heures selon le registrar et le TTL.

Erreur de certificat après changement d'IP. Si vous migrez votre VPS vers une nouvelle IP sans mettre à jour le DNS, le challenge ACME échoue. Mettez à jour votre enregistrement A, attendez la propagation, puis lancez depuis les réglages du serveur le rafraîchissement de l'IP, qui met à jour l'IP enregistrée, le domaine généré et les certificats.

Build Nixpacks échoue en manque de mémoire. Sur un petit VPS (2 Go de RAM), les builds Node.js ou les images multi-stage peuvent échouer silencieusement. Ajoutez du swap pour absorber les pics : fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile. Rendez le swap persistant en ajoutant /swapfile none swap sw 0 0 dans /etc/fstab.

Easypanel, Coolify ou Dokploy : lequel choisir ?

Faites défiler le tableau

CritèreEasypanelCoolifyDokploy
LicencePropriétaire (plan gratuit limité à 3 projets)Open source (Apache 2.0)Open source (Apache 2.0, hors dossier propriétaire)
RAM minimum recommandée2 Go2 Go2 Go
Base de données interneNon documentéePostgreSQL (+ Redis)PostgreSQL (requis)
BuildpacksRailpack, Nixpacks, Buildpacks, Dockerfile, image DockerNixpacks, Railpack (bêta), Dockerfile, Docker Compose, statiqueNixpacks, Railpack, Dockerfile, Heroku, Paketo, statique
Templates d'apps800+ (WordPress, n8n, Ghost, Plausible…)300+ (Appwrite, Supabase, n8n…)500+ (WordPress, n8n, Directus…)
Multi-serveurOui (nœuds workers Docker Swarm)Oui (serveurs distants via SSH)Oui (serveurs distants, nœuds Swarm)
Plan gratuit / self-hostedGratuit jusqu'à 3 projets, licences payantes par serveur100 % self-hosted gratuit100 % self-hosted gratuit

Activez le déploiement automatique en connectant un webhook GitHub : chaque push sur votre branche de production déclenche un rebuild Nixpacks sans intervention. Pour les projets clients, créez un Project distinct par client afin d'isoler les réseaux et les bases de données. Sur un VPS à mémoire limitée, surveillez la RAM pendant les builds Nixpacks et ajoutez du swap : les compilations Node ou les images lourdes peuvent saturer un petit serveur et faire échouer le déploiement. Pour la sécurité du panneau lui-même, désactivez l'accès par IP (port 3000) après avoir configuré son domaine et envisagez d'ajouter un middleware d'authentification Traefik devant les services internes sensibles.

Déployez vos projets avec Easypanel

Un VPS Cloud ServOrbit sous Ubuntu, avec les ressources et le domaine wildcard adaptés, vous permet d'installer Easypanel et de mettre vos applications en ligne en quelques clics.