Comment Exécuter Docker et Portainer sur un VPS (Guide 2026)

Publié : par Dallas Kashuba
Comment Exécuter Docker et Portainer sur un VPS (Guide 2026) thumbnail

As-tu déjà entendu parler de Dockerception ?

Alors, accroche-toi à ton chapeau. Nous descendons dans le terrier du lapin.

Portainer, l’interface web que tu t’apprêtes à installer sur Docker, est lui-même un conteneur Docker.

C’est un outil qui fonctionne sur la chose même qu’il gère. Tu le lances avec une seule ligne docker run, et la première chose qu’il fait est de revenir en arrière à travers un petit trou dans l’hôte (un fichier socket) et de demander au démon Docker de lui montrer tous les conteneurs de la machine, y compris lui-même. Depuis cet onglet de navigateur, tu gères tous tes autres conteneurs Docker.

L’interface que tu observes apparaît dans sa propre liste de conteneurs.

Sur un VPS où tu paies déjà pour la machine et es déjà à l’aise avec SSH, Portainer s’intègre proprement sur Docker sans changer le fonctionnement de ce qui se trouve en dessous.

C’est la valeur.

Une machine de 4 Go peut être un point de départ pour Docker et Portainer, mais ce sont les applications que tu ajoutes qui déterminent si cette capacité suffit. Pense à l’automatisation de la maison, au stockage des photos de famille, à l’assistant IA et à la newsletter que tu menaces de lancer depuis longtemps, sur un serveur qui t’appartient vraiment.

Voici comment le mettre en marche, le sécuriser et commencer à voir sa valeur.

Qu’est-ce Que Portainer, Exactement ?

Architecture de Portainer 1x

Portainer est une interface utilisateur web qui fonctionne comme un conteneur Docker et gère tes autres conteneurs via le socket Docker.

C’est essentiellement une interface frontend basée sur un navigateur (une interface graphique Docker) pour les mêmes commandes Docker que tu taperais sinon à la main, avec en plus la gestion des piles, l’accès basé sur les rôles (si tu passes à Business Edition) et une vue tableau de bord du CPU et de la mémoire.

La connexion par socket est ce qui le fait fonctionner. La liaison ressemble à -v /var/run/docker.sock:/var/run/docker.sock dans la commande d’installation, et cette seule ligne fait tout le travail difficile. Sans elle, Portainer est une interface utilisateur pour un hôte Docker vide. Avec elle, Portainer est la télécommande de l’hôte Docker.

Une chose à garder en tête : tout processus qui peut atteindre /var/run/docker.sock peut contrôler le démon Docker, et la documentation de sécurité de Docker est catégorique : seuls des utilisateurs de confiance devraient pouvoir le faire, car un conteneur démarré via le démon peut monter l’intégralité du système de fichiers de l’hôte et le modifier sans restriction. C’est une fonctionnalité lorsque c’est Portainer qui en fait la demande et un problème lorsque c’est un conteneur que tu as lancé la semaine dernière en oubliant que tu lui avais donné accès au socket.

Traite la liaison du socket comme une capacité privilégiée, et audite chaque autre conteneur qui en veut une.

Recevez du contenu directement dans votre boîte de réception

Abonnez-vous maintenant pour recevoir toutes les dernières mises à jour directement dans votre boîte de réception.

As-tu Besoin De Portainer Si Tu Possèdes Déjà Docker ?

Non. Docker fonctionne bien depuis le terminal, et beaucoup de personnes utilisent quelques conteneurs pendant des années sans jamais installer d’interface utilisateur dessus.

Tu veux Portainer si :

  • Tu jongleras avec plus de deux ou trois conteneurs Docker à travers différentes applications.
  • Tu préfères cliquer sur « redémarrer » plutôt que de retaper une commande Compose à 23 h. 
  • Tu partages l’accès avec quelqu’un qui ne vit pas dans un terminal. 
  • Tu veux déployer des mises à jour de piles depuis un dépôt Git sans écrire de script de déploiement. 

Passe-toi de Portainer si :

  • Tu utilises un ou deux conteneurs qui changent rarement. 
  • Tu es déjà à l’aise avec Docker Compose, et tu es content de rester là.

Docker est suffisamment grand public pour que ce ne soit pas une décision marginale. Dans l’enquête Stack Overflow Developer Survey 2025, 71 % des répondants ont déclaré utiliser Docker, le meilleur résultat parmi les technologies de développement cloud et d’infrastructure, après un bond de 17 points de pourcentage par rapport à 2024. Le projet Portainer compte plus de 38 000 étoiles sur GitHub en date d’août 2026.

D’autres options existent. Dokploy, par exemple, tend davantage vers une PaaS auto-hébergée complète, en gérant pour toi les applications, les bases de données et le SSL. Portainer reste plus proche de Docker pur : mêmes fichiers Compose, mêmes images, simplement avec une interface par-dessus.

Si tu vis dans tmux et que tu utilises une seule application, ferme cet onglet. Tu n’en as pas besoin. Si tu gères quatre applications auto-hébergées et que tu as cherché « Comment on consulte déjà les logs Docker ? » deux fois ce mois-ci, continue à lire.

Quelle Taille De VPS Te Faut-il Pour Exécuter Docker Et Portainer ?

Portainer ne publie aucun minimum de RAM. Un VPS de 4 Go peut convenir à une petite pile, mais dimensionne-le à partir des besoins combinés du système d’exploitation, du démon Docker et de chaque conteneur que tu prévois d’exécuter.

La propre page de configuration requise de Portainer dit étonnamment peu de choses sur la RAM : le serveur est livré sous forme de conteneur léger, et les recommandations de performance de la documentation concernent le stockage (plus de détails ci-dessous). Le vrai calcul de RAM, ce sont tes charges de travail : prévois de la place pour le système d’exploitation, le démon Docker et chaque conteneur que tu comptes exécuter. Prévois aussi de l’espace disque pour les logs : le pilote de logs json-file par défaut de Docker n’effectue aucune rotation, donc les logs d’un conteneur bavard peuvent consommer une quantité importante de disque avec le temps. La documentation de journalisation de Docker recommande plutôt le pilote local. Une fois Docker installé (étape 2 ci-dessous), crée le répertoire de configuration de Docker et définis le pilote de logs local, puis redémarre Docker : exécute sudo install -d -m 0755 /etc/docker, puis printf '%s\n' '{ "log-driver": "local" }' | sudo tee /etc/docker/daemon.json > /dev/null, puis sudo systemctl restart docker. Fais-le avant de déployer des applications qui tournent longtemps : le pilote local effectue la rotation des logs par défaut, et le changement ne s’applique qu’aux conteneurs créés après.

Voici comment cela se traduit en charges de travail réelles :

Tableau montrant le dimensionnement du VPS pour Docker et Portainer : une seule petite pile d'applications avec Ghost, n8n, Postgres et un proxy inverse tient sur DreamHost Stack 4 avec 4 Go de RAM ; les plans plus grands se dimensionnent selon les besoins documentés des charges de travail

La feuille de calcul est une simple addition : cherche les besoins en RAM documentés de chaque application que tu prévois d’exécuter, ajoute le système d’exploitation et le démon Docker, puis garde de la marge pour les pics d’utilisation. Portainer lui-même ne publie aucun minimum de RAM : ce sont donc les applications, et non l’interface, qui remplissent la machine.

Chez DreamHost, notre offre VPS Hosting se décline en quatre plans Stack basés sur la RAM (Stack 4, 8, 16 et 32). Le Stack 4 d’entrée de gamme (2 vCPU, 4 Go de RAM, 75 Go de SSD NVMe, accès root complet) convient naturellement à un petit hôte Docker. En facturation mensuelle, il coûte 8,99 $/mois pendant les 3 premiers mois, puis se renouvelle automatiquement à 15,99 $/mois (en date d’août 2026 ; la durée complète plus les taxes est facturée lors du paiement ; les tarifs actuels sont toujours sur la page VPS Docker + Portainer).

Si tu hésites à savoir si l’auto-hébergement vaut le temps investi, le Stack 4 est la taille par laquelle commencer : assez grand pour le découvrir, assez petit pour ne pas payer une marge que tu n’utiliseras pas. Si ta feuille de calcul le dépasse, tu peux passer à un plan supérieur et ton environnement te suit, mais note que le passage à un Stack plus petit n’est pas pris en charge actuellement : commence donc petit en connaissance de cause.

Une remarque sur le stockage : le volume de données de Portainer contient sa propre base de données et sa configuration, plus un clone de tout dépôt Git à partir duquel tu déploies des piles ; la documentation de Portainer avertit que des dépôts volumineux ou multiples peuvent consommer beaucoup d’espace disque. Les recommandations de performance de la documentation portent sur le stockage, pas sur la mémoire : des performances de niveau SSD (≈3,5 MB/s, 30 000 IOPS ou plus, moins de 10 ms de latence d’écriture) sont ce qu’elle qualifie d’idéal. Le Stack 4 inclut 75 Go de stockage SSD NVMe.

Comment Installer Docker Et Portainer Sur Un VPS ?

Formulaire de configuration initiale de Portainer.io pour la création du compte administrateur avec nom d'utilisateur

Il faut sept étapes. Le temps de téléchargement et d’installation dépend de ton VPS et de ta connexion réseau. Les commandes des étapes 2 à 6 sont écrites pour Ubuntu et peuvent être collées dans l’ordre sur un serveur vierge ; le seul endroit où une commande nécessite une valeur que toi seul connais (ta propre adresse IP, à l’étape 4) est signalé dans l’étape. (Tu veux sauter toute la liste ? La bibliothèque d’applications de DreamHost VPS Hosting inclut une image Docker + Portainer avec les deux préconfigurés.)

1. Choisis une distribution Linux

Ce guide utilise Ubuntu 24.04 LTS. Docker Engine prend en charge Ubuntu 22.04, 24.04 et 26.04 LTS (en date d’août 2026). Ubuntu est l’un des systèmes d’exploitation préinstallés proposés sur DreamHost VPS Hosting.

Debian et les distributions de la famille RHEL comme AlmaLinux fonctionnent aussi, mais elles ont leurs propres procédures d’installation dans la documentation de Docker, et les commandes ci-dessous ne s’y appliqueront pas telles quelles. Une subtilité supplémentaire pour la famille RHEL : la documentation d’installation de Portainer suppose que SELinux est désactivé, et indique de passer --privileged à Docker lors du déploiement de Portainer si tu as besoin de SELinux activé. Si cette phrase ne t’a rien dit, utilise Ubuntu.

Tu n’es pas sûr de la version d’Ubuntu que tu utilises ? Apprends cinq manières de vérifier.

2. Installe Docker depuis le dépôt officiel

Ne fais pas apt install docker.io, et n’installe pas non plus Docker via snap : la documentation officielle d’installation de Docker classe docker.io parmi les paquets non officiels à désinstaller avant d’installer Docker Engine, et la documentation d’installation de Portainer avertit que le paquet snap peut causer des problèmes de compatibilité.

D’abord, supprime les éventuels paquets en conflit. Voici la commande de suppression de la documentation d’installation actuelle de Docker ; sur un serveur vierge, elle ne trouve généralement rien à supprimer, et la documentation précise qu’apt peut indiquer qu’aucun de ces paquets n’est installé :

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)

Ensuite, ajoute la clé GPG de Docker (chaque ligne ci-dessous est une commande distincte) :

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Puis ajoute le dépôt apt de Docker. Cela écrit la définition du dépôt dans /etc/apt/sources.list.d/docker.sources, le fichier qu’utilise la documentation d’installation de Docker, avec ta version d’Ubuntu et l’architecture de ton CPU renseignées automatiquement :

sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update

Enfin, installe Docker Engine et le plugin Compose en une seule fois :

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3. Vérifie que Docker fonctionne

Lance sudo docker run hello-world.

Si tu ne reçois pas le message « Hello from Docker! », corrige le démon avant d’ajouter Portainer par-dessus.

4. Intègre UFW à Docker avant de démarrer Portainer

Voici la partie que la plupart des guides placent à la fin, quand il est trop tard : lorsque Docker publie un port, le trafic vers ce port est dévié avant d’atteindre les chaînes que filtre UFW, si bien qu’un port publié est accessible depuis l’internet public même quand UFW indique qu’il est refusé. (L’explication complète se trouve plus bas.) Dès que tu démarres Portainer, son port 9443 sera public, pendant précisément la fenêtre de cinq minutes où la première personne qui l’atteint peut créer le compte administrateur. Alors corrige le pare-feu en premier.

Si UFW n’est pas déjà actif, autorise SSH et active-le. (Si ton SSH utilise un port personnalisé, autorise ce port au lieu du 22, sinon c’est à cette étape que tu te retrouves bloqué dehors.)

sudo ufw allow 22/tcp
sudo ufw enable

Installe ensuite chaifeng/ufw-docker, un outil tiers qui ajoute les règles nécessaires à /etc/ufw/after.rules afin que le trafic vers les ports publiés par Docker soit filtré par la chaîne DOCKER-USER. Les commandes ci-dessous figent la version 251123 du projet (novembre 2025) au lieu de récupérer la branche master qui évolue en permanence, et elles utilisent curl, que tu as installé à l’étape 2 :

sudo curl -fsSL -o /usr/local/bin/ufw-docker \
  https://github.com/chaifeng/ufw-docker/raw/251123/ufw-docker
sudo chmod +x /usr/local/bin/ufw-docker
sudo ufw-docker install
sudo ufw reload

Après le rechargement, les ports publiés des conteneurs sont filtrés par UFW. Si ta politique de trafic routé refuse les connexions entrantes et qu’aucune règle existante n’autorise le port, les connexions publiques restent bloquées jusqu’à ce que tu les autorises explicitement. (Le projet ufw-docker indique que si les règles ne prennent pas effet après un redémarrage d’UFW, un redémarrage du serveur règle le problème.)

Maintenant, pré-autorise ton propre accès à l’interface de Portainer. Remplace YOUR_HOME_IP par l’IP publique depuis laquelle tu navigueras :

sudo ufw route allow proto tcp from YOUR_HOME_IP to any port 9443

Avec cette règle en place avant le démarrage de Portainer, le trafic IPv4 vers l’interface est autorisé depuis ton IP et celle de personne d’autre, y compris pendant la fenêtre de création de l’administrateur initial. La règle telle qu’écrite ne couvre que l’IPv4. La documentation d’ufw-docker indique que l’outil prend aussi en charge les réseaux IPv6 et met à jour /etc/ufw/after6.rules si nécessaire, mais ne le crois pas sur parole : si ton VPS répond sur une adresse IPv6 publique, effectue aussi le test depuis l’extérieur de la section pare-feu en IPv6 avant de t’y fier. La contrepartie : la plupart des connexions domestiques changent d’IP de temps en temps, donc tu devras peut-être mettre à jour la règle plus tard. Si cela t’agace, la solution la plus propre à long terme est un VPN devant l’interface (abordé dans la section sur la sécurisation).

5. Crée un volume persistant pour les données de Portainer

Ensuite, exécute sudo docker volume create portainer_data.

Garder la base de données de Portainer sur un volume Docker (et non à l’intérieur du conteneur) signifie qu’une mise à niveau de Portainer n’effacera pas ta configuration.

6. Exécute Portainer Community Edition

Voici la commande du document d’installation de Portainer pour Linux, à un drapeau près : la version officielle publie aussi le port 8000, un tunnel TCP nécessaire uniquement si tu connectes plus tard des environnements distants via des Edge Agents. Une installation à un seul hôte n’en a pas besoin, nous l’omettons donc :

sudo docker run -d \
  -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts

Décortiquons cela ligne par ligne :

  • -d l’exécute en mode détaché.
  • -p 9443:9443 est l’interface web de Portainer en HTTPS, le port que tu as autorisé pour ton IP à l’étape 4.
  • --restart=always relance Portainer après un redémarrage.
  • -v : ces drapeaux correspondent à la liaison du socket et au volume persistant de l’étape 5.
  • :lts t’attache à la branche de versions à support long terme (Long Term Support) de Portainer, le tag qu’utilise la documentation d’installation de Portainer.

7. Ouvre l’interface et crée ton compte administrateur

Oriente ton navigateur vers https://YOUR_VPS_IP:9443 (depuis l’adresse IP que tu as autorisée à l’étape 4).

Passe outre l’avertissement du certificat auto-signé. Tu arriveras sur l’écran de « création de l’utilisateur administrateur initial ». Choisis un nom d’utilisateur qui n’est pas admin, définis un mot de passe fort et conserve-le en lieu sûr. Et… tu es dedans !

Pourquoi Portainer A-t-il Expiré Juste Sous Mes Yeux ?

Parce que Portainer attend exactement cinq minutes que quelqu’un le réclame lors de la première installation. Si personne ne le fait, il verrouille la porte.

Mot pour mot, extrait de la FAQ de Portainer :

« Par mesure de sécurité, lors de la première installation de Portainer, celui-ci attend 5 minutes la création d’un utilisateur administrateur (dans le cadre de la configuration initiale). Si aucun utilisateur n’est créé pendant ces 5 minutes, le serveur Portainer cesse d’écouter les requêtes. »

Traduction : si tu as passé l’étape 6 à te préparer un sandwich, ton installation refuse maintenant de te parler, et tu n’as rien fait de mal.

La solution est simple. Exécute sudo docker restart portainer.

Cela relance le conteneur, te donne une nouvelle fenêtre de cinq minutes et te dépose sur l’écran de création de l’administrateur. Répète autant que nécessaire. Bienvenue dans l’auto-hébergement.

Si tu scriptes l’installation pour une flotte (Ansible, Terraform, un pipeline de déploiement), Portainer accepte un drapeau --admin-password-file qui crée l’utilisateur admin à partir d’un fichier au premier démarrage du conteneur : il n’y a donc pas d’écran de création d’administrateur contre lequel lutter. La documentation de configuration CLI de Portainer couvre la syntaxe. Pour une installation VPS ponctuelle, l’astuce du redémarrage suffit.

Comment Empêcher Docker De Contourner Ton Pare-feu ?

Comparaison du pare-feu Docker : sans règle DOCKER-USER, l'accès aux conteneurs n'est pas restreint

Tu l’as déjà fait, à l’étape 4. Voici ce qui s’est réellement passé, comment ouvrir des ports volontairement et comment prouver que cela a fonctionné.

Le problème : lorsque tu publies le port d’un conteneur avec -p 80:80, ce port est accessible depuis l’internet public même si ufw status indique que le port 80 est refusé. Selon la documentation de filtrage de paquets de Docker, « Docker achemine le trafic des conteneurs dans la table nat, ce qui signifie que les paquets sont déviés avant d’atteindre les chaînes INPUT et OUTPUT qu’utilise ufw. »

UFW n’est pas cassé. Il se trouve simplement dans le mauvais couloir.

La solution que Docker lui-même recommande est la chaîne iptables DOCKER-USER, une chaîne que Docker crée spécifiquement pour les règles définies par l’utilisateur et qui est traitée avant les règles des chaînes propres à Docker. Le script ufw-docker que tu as installé à l’étape 4 intègre UFW à cette chaîne en ajoutant un bloc de règles (entre les marqueurs # BEGIN UFW AND DOCKER et # END UFW AND DOCKER) à /etc/ufw/after.rules, pour qu’il se charge avec le reste de ta configuration UFW.

Pour ouvrir volontairement un port de conteneur au public, par exemple une application web sur le port 80 du conteneur, utilise une règle route :

sudo ufw route allow proto tcp from any to any port 80

Un piège signalé par la documentation d’ufw-docker : la règle prend le port du conteneur, pas celui de l’hôte. Si tu as publié avec -p 8080:80, c’est la règle ci-dessus (port 80) qui est la bonne, pas le port 8080.

Pour vérifier depuis l’extérieur, teste depuis un réseau qui ne figure pas dans ta liste d’autorisation ; un partage de connexion depuis ton téléphone fait l’affaire. Cette commande devrait expirer au lieu de renvoyer la page de connexion de Portainer :

curl -k --max-time 5 https://YOUR_VPS_IP:9443

# For IPv6, enclose the address in square brackets:
curl -k --max-time 5 'https://[YOUR_VPS_IPV6]:9443'

Exécute la même commande depuis l’IP que tu as autorisée à l’étape 4 et tu devrais recevoir du HTML en retour. Qu’UFW affiche « denied » est une affirmation ; un délai d’expiration depuis un réseau inconnu est une preuve.

Pour tout annuler, exécute sudo ufw-docker uninstall, qui selon la documentation du projet restaure ta configuration UFW et supprime les fichiers installés, puis sudo ufw reload. Tu peux aussi supprimer à la main le bloc entre les marqueurs # BEGIN UFW AND DOCKER et # END UFW AND DOCKER dans /etc/ufw/after.rules puis recharger UFW.

Celle-ci piège des ingénieurs chevronnés aussi bien sur leurs machines personnelles que sur des serveurs de production : UFW dit une chose, l’internet public en dit une autre, et la vérité se trouve dans iptables. Si tu préfères que Portainer n’ait jamais de port public du tout, place-le derrière un tunnel VPN comme WireGuard.

Que Devrais-Tu Sécuriser Juste Après La Première Connexion ?

Tu es dedans. Cinq choses à faire avant de fermer cet onglet de navigateur ; les quatre premières viennent directement du guide de sécurité de Portainer :

  • Active Force HTTPS only. L’installation de ce guide ne publie que le port 9443, donc aucun port HTTP n’est exposé au départ. Activer l’option Force HTTPS only sous Settings → SSL Certificate verrouille ce choix : selon la documentation des paramètres de Portainer, elle désactive entièrement l’écoute sur l’ancien port HTTP (9000), si bien qu’un futur redéploiement qui ajouterait -p 9000:9000 ne peut pas rouvrir un chemin non chiffré.
  • Remplace le certificat auto-signé. Téléverse un certificat que tu as généré, ou place Portainer derrière un proxy inverse NGINX avec un certificat Let’s Encrypt. Après le premier jour, cliquer à travers l’avertissement du navigateur à chaque fois est une habitude que tu regretteras.
  • Utilise un vrai nom d’utilisateur admin. Utiliser le nom d’utilisateur admin par défaut laisse à un attaquant un identifiant de moins à deviner. Choisis quelque chose de spécifique pour toi.
  • Restreins l’interface à un VPN. Faire tourner Portainer derrière un VPN WireGuard est le modèle que recommande le guide de sécurité de Portainer. Un 9443 restreint à ton IP source (étape 4), c’est bien. Un 9443 accessible uniquement sur un réseau privé, c’est mieux.
  • Audite la liaison du socket Docker. Tout ce qui a accès à /var/run/docker.sock contrôle le démon Docker et, à travers lui, l’hôte. Ne monte pas le socket à la légère dans d’autres conteneurs. Chaque liaison supplémentaire est un nouveau chemin vers l’hôte. Si un conteneur prétend avoir besoin du socket, demande pourquoi, et envisage un proxy de socket si la réponse est « pour la surveillance ».

Comment Utiliser Réellement Portainer Au Quotidien ?

La récompense pour l’installation de Portainer est le jour où tu arrêtes de te connecter en SSH pour redémarrer un conteneur qui fonctionne mal, et où tu commences à cliquer sur un bouton à la place. La plus grande récompense est la gestion des piles.

Une pile Portainer est une application multi-conteneurs définie par un fichier Docker Compose. Portainer peut déployer les configurations Docker Compose prises en charge sous forme de piles par quatre voies répertoriées dans la documentation officielle des piles :

  • Colle le Compose dans l’éditeur web
  • Téléverse un fichier Compose
  • Oriente Portainer vers un dépôt Git
  • Déploie à partir d’un modèle personnalisé
Tableau de bord Portainer.io affichant les détails de la pile avec le tableau des conteneurs, les logs et les statistiques

Le chemin Git est celui qui compte. Tu diriges Portainer vers un dépôt public ou authentifié et un chemin vers docker-compose.yml, puis tu actives les mises à jour GitOps. Soit Portainer interroge le dépôt selon un intervalle de récupération que tu définis, soit il te fournit une URL de webhook à ajouter à ton hébergeur Git (déclenchée depuis une GitHub Action, par exemple). Lorsque le fichier Compose change en amont, Portainer le récupère et redéploie automatiquement. Et oui, cela fonctionne dans Community Edition : sur la page de documentation des piles, seule l’option des volumes à chemin relatif porte la mention Business Edition.

C’est la version auto-hébergée du « déploiement au push » sans payer une PaaS pour ce privilège.

Les petites victoires quotidiennes s’accumulent également. Pense à des logs dans un panneau au lieu de les suivre en ligne de commande, à des redémarrages en un clic, à la reconstruction d’une pile à partir d’un bouton et à des graphiques de ressources que tu peux parcourir en trois secondes au lieu d’exécuter Docker stats.

Si tu ajoutes plus tard des hôtes distants via des Edge Agents, le port 8000 revient en jeu : la FAQ ci-dessous couvre le redéploiement et la règle de pare-feu.

Comment Sauvegarder Portainer Et Tes Conteneurs ?

Un volume assure la persistance, pas la sauvegarde. Le volume portainer_data de l’étape 5 survit aux mises à niveau du conteneur, mais il se trouve sur le même disque que tout le reste : un vrai plan de sauvegarde comporte donc trois parties, et toutes trois quittent le VPS.

1. La configuration propre de Portainer. Dans l’interface, va dans Settings → Back up Portainer, garde l’option par défaut Download backup file, puis clique sur Download backup. Selon la documentation des paramètres de Portainer, cela télécharge un tar.gz de tout ce que Portainer stocke sur son volume /data, éventuellement chiffré par mot de passe, et cette archive est tout ce dont tu as besoin pour restaurer Portainer. La documentation est tout aussi claire sur la portée : elle sauvegarde uniquement la configuration de Portainer, pas les conteneurs, piles ou volumes que tu as déployés. (Les sauvegardes planifiées vers S3 existent, mais uniquement dans Business Edition ; avec CE, ajoute un rappel récurrent dans ton agenda.)

2. Les données de tes applications. La documentation des volumes de Docker présente les volumes nommés comme la méthode privilégiée pour conserver les données des conteneurs, plus faciles à sauvegarder ou à migrer que les montages bind. Un montage en lecture seule empêche seulement le conteneur de sauvegarde d’écrire : l’application elle-même peut encore écrire dans le volume pendant l’archivage et te livrer une copie incohérente. Arrête donc d’abord le conteneur de l’application (sudo docker stop myapp), ou utilise le mécanisme de sauvegarde pris en charge par l’application. Monte ensuite le volume en lecture seule dans un conteneur jetable, archive-le avec tar, puis redémarre l’application (remplace par tes propres noms) :

sudo docker run --rm \
  -v myapp_data:/source:ro \
  -v "$PWD":/backup \
  alpine tar czf /backup/myapp_data.tgz -C /source .

Pour les bases de données, privilégie l’outil de dump propre à la base (pg_dump, mysqldump) plutôt que de copier les fichiers de données actifs, pour ne pas archiver un fichier en cours d’écriture. Envoie ensuite les archives hors de la machine de façon planifiée : rsync ou scp vers une autre machine, ou envoi vers un stockage objet. Une sauvegarde qui réside sur le disque qu’elle sauvegarde disparaît avec ce disque.

3. Tes fichiers Compose et tes secrets. Si tu déploies des piles depuis Git, les fichiers Compose sont déjà hors de l’hôte. Ce que Git ne contient pas, c’est tout ce que tu n’as jamais commité : fichiers .env, clés API et mots de passe fournis au moment du déploiement. Les répertoires montés en bind se trouvent aussi en dehors de la sauvegarde de volume ci-dessus. Recense-les séparément et sauvegarde-les chiffrés.

Ensuite, teste la restauration avant d’en avoir besoin. La documentation de Portainer indique qu’une restauration de configuration ne fonctionne que sur une nouvelle instance : déploie un nouveau conteneur Portainer avec un volume de données vide (un VPS jetable ou ton ordinateur portable conviennent), choisis Restore Portainer from backup pendant la configuration initiale, et vérifie que tu peux te connecter avec tes anciens identifiants et voir tes définitions de piles. Cet exercice ne couvre que la partie 1, la configuration de Portainer. Les parties 2 et 3 nécessitent leur propre test, application par application : restaure une archive dans un nouveau volume, démarre l’application dessus et vérifie que les données sont bien là. Une sauvegarde non testée n’est qu’un espoir avec un nom de fichier.

Combien Coûte Portainer ? (Et Quand Le Gratuit Cesse-t-il D’être Gratuit ?)

Portainer est doublement gratuit. Community Edition est gratuit et open source (licence zlib), sans clé de licence requise. Et Portainer Business Edition est gratuit pour toujours jusqu’à 3 nœuds : toutes les fonctionnalités Business, sans limite de durée, sans carte bancaire. Tu t’inscris pour obtenir une clé de licence gratuite au lieu de payer.

ÉditionCoûtNœudsIdéal pour
Community EditionGratuite, open sourceAucune licence par nœudProjets personnels, homelab, auto-hébergement sur un seul VPS
Business Edition — 3 nœuds gratuitsGratuite, sans limite de duréeJusqu’à 3Petits homelabs qui veulent des fonctionnalités Business comme le RBAC
Home & Student155 $/anJusqu’à 15Homelabs plus grands et étudiants ; strictement non commercial
Business StarterÀ partir de 105 $/mois5, 10 ou 15Petites équipes gérant une infrastructure réelle (support communautaire)
Business ScaleÀ partir de 209 $/moisDe 5 à 35Équipes en croissance nécessitant un support 9×5
EnterpriseSur devisSur mesureBesoins de conformité et de support prioritaire

Les prix proviennent de la page de tarification de Portainer en date d’août 2026 ; Starter et Scale nécessitent un engagement annuel.

Alors, laquelle choisir ? Pour un seul VPS avec un seul administrateur, Community Edition : elle est open source, ne nécessite aucune inscription et fait tout ce qui est décrit dans ce guide, déploiements Git compris. Si tu veux le contrôle d’accès basé sur les rôles (RBAC) pour un deuxième utilisateur, ou si tu gères déjà deux ou trois machines, prends plutôt l’offre Business gratuite à 3 nœuds : c’est le même logiciel avec les fonctionnalités Business débloquées, gratuit tant que tu restes à trois nœuds ou moins. Les plans payants n’ont de sens que lorsque tu gères de réels nombres de nœuds au sein d’une équipe, et vérifie la ligne consacrée au support avant de supposer que payant signifie assisté : en date d’août 2026, la page de tarification de Portainer indique un support communautaire pour le plan Starter, un support 9×5 le jour ouvré suivant à partir du plan Scale, et un support prioritaire pour Enterprise.

Devrais-Tu Ajouter Portainer Ou T’en Passer ?

Voici la réponse honnête en deux phrases :

✅ Si tu prévois de partager ce serveur, de déployer depuis Git, ou d’exécuter plus de trois conteneurs dans l’année à venir, installe Portainer pendant que l’hôte est neuf et que tes habitudes commencent à se former autour de lui.

❌ Si tu fais fonctionner une application silencieuse et que tu es à l’aise dans le terminal, l’interface utilisateur que tu n’as pas installée ne te manquera pas.

La vraie question n’est pas Portainer ou non Portainer. C’est plutôt de savoir si l’auto-hébergement est la bonne décision pour toi, et tu y as répondu en ouvrant cet onglet.

Un VPS de 4 Go, Docker et Portainer CE suffisent pour commencer à s’auto-héberger pour de vrai : choisis tes applications, additionne leurs besoins documentés, et laisse la feuille de calcul, pas la liste de souhaits, décider quand la machine doit grandir.

Ce n’est pas une mauvaise affaire.

Questions Fréquemment Posées Sur Docker Et Portainer

Peut-on exécuter Docker sur un VPS ?

Oui. Un VPS avec accès root est l’un des endroits les plus flexibles pour exécuter Docker : tu installes Docker Engine sur le système d’exploitation Linux du serveur, et chaque application tourne dans son propre conteneur. La distinction qui fait souvent trébucher, c’est que le VPS est le serveur virtuel loué, tandis que Docker est le logiciel que tu exécutes dessus pour isoler les applications dans des conteneurs. N’importe quel VPS avec accès root et assez de RAM pour tes conteneurs fait l’affaire ; DreamHost VPS Hosting propose même une image Docker + Portainer préinstallée.

À quoi sert Portainer ?

Portainer est utilisé pour gérer les conteneurs Docker, Docker Swarm et Kubernetes via une interface web. Il fonctionne lui-même comme un conteneur Docker, se connecte au socket Docker de l’hôte et te donne une vue dans le navigateur et une surface de contrôle sur tous les autres conteneurs de l’hôte : démarrer et arrêter des conteneurs, déployer des piles multi-conteneurs, consulter les logs et gérer l’accès des utilisateurs sans avoir à te connecter en SSH.

Ai-je besoin de Portainer si j’ai Docker ?

Non, tu n’as pas besoin de Portainer pour utiliser Docker. Docker fonctionne entièrement depuis le terminal, et de nombreux auto-hébergeurs n’installent jamais d’interface utilisateur par-dessus.

Portainer prouve son utilité lorsque tu jongles avec plus de deux ou trois conteneurs, partages l’accès avec quelqu’un qui ne vit pas dans un terminal ou déploies des mises à jour de piles à partir d’un dépôt Git. Passe-t’en si tu gères un ou deux conteneurs stables et que tu es à l’aise avec Docker Compose.

Sur quel port fonctionne Portainer ?

Portainer sert son interface web en HTTPS sur le port 9443 par défaut. La commande d’installation officielle du document d’installation de Portainer pour Linux publie aussi le port 8000, un tunnel TCP utilisé uniquement par les Edge Agents lorsque tu connectes plus tard des hôtes Docker distants ; il est facultatif, c’est pourquoi l’installation à un seul hôte de ce guide supprime entièrement le drapeau -p 8000:8000.

Quelle quantité de RAM Portainer nécessite-t-il ?

La configuration requise actuelle de Portainer ne publie aucun minimum de RAM : le serveur fonctionne comme un conteneur léger, et les recommandations de performance de la documentation portent sur le disque, pas sur la mémoire. Dimensionne ta RAM en additionnant les besoins documentés du système d’exploitation, du démon Docker et de chaque application que tu vas exécuter, puis garde de la marge pour les pics.

Chez DreamHost, notre plan VPS Hosting d’entrée de gamme, Stack 4, est fourni avec 4 Go de RAM, un point de départ pour une petite pile de conteneurs de projets annexes comme Ghost ou n8n. Que 4 Go suffisent ou non dépend des applications que tu exécutes réellement ; si le calcul le dépasse, tu peux passer à un plan Stack plus grand.

Portainer est-il gratuit ?

Oui, et même doublement. Portainer Community Edition est gratuit et open-source, sans clé de licence requise. Portainer Business Edition (qui ajoute des fonctionnalités comme le contrôle d’accès basé sur les rôles) est aussi gratuit jusqu’à 3 nœuds, avec toutes les fonctionnalités et sans limite de durée ; tu t’inscris pour obtenir une clé de licence gratuite au lieu de payer. Au-delà de trois nœuds, le tarif Business commence à 105 $/mois avec le plan Starter selon la page de tarification de Portainer (en date d’août 2026), et une licence Home & Student à 155 $/an couvre les homelabs non commerciaux jusqu’à 15 nœuds.

Portainer peut-il gérer plusieurs hôtes Docker ?

Oui, Portainer gère plusieurs hôtes Docker grâce aux Agents et aux Edge Agents. L’Agent standard écoute sur le port 9001 de chaque hôte distant ; les Edge Agents, eux, se connectent en sortie au port de tunnel 8000 du serveur Portainer et, selon la documentation de configuration requise de Portainer, n’ont besoin d’aucun port entrant ouvert de leur côté. Pour un auto-hébergeur sur un seul VPS, rien de tout cela n’est nécessaire, c’est pourquoi l’installation de ce guide supprime le drapeau du port 8000 que contient la commande officielle de Portainer. Le jour où tu connectes un environnement distant via un Edge Agent, redéploie Portainer en ajoutant -p 8000:8000, puis autorise le port 8000 du conteneur dans UFW depuis l’IP publique sortante de chaque Edge Agent, en remplaçant EDGE_AGENT_IP ici : sudo ufw route allow proto tcp from EDGE_AGENT_IP to any port 8000.

Docker contourne-t-il UFW sur un VPS ?

Oui, Docker contourne UFW par défaut car Docker gère le trafic des conteneurs au niveau de la couche NAT iptables, qui se trouve devant les chaînes INPUT et OUTPUT de UFW.

Selon la documentation de filtrage de paquets de Docker, « les paquets sont déviés avant d’atteindre les chaînes INPUT et OUTPUT qu’utilise ufw ». La solution consiste à ajouter tes règles à la chaîne iptables DOCKER-USER, et un outil communautaire pour y intégrer UFW est chaifeng/ufw-docker, installé avant même le démarrage de Portainer, à l’étape 4 de ce guide.

VPS

Maîtrisez toute votre stack. Applications, IA, bases de données et plus encore.

Gardez chaque identifiant et chaque conversation sur un serveur que vous contrôlez, avec la vitesse NVMe et une bande passante illimitée intégrées.

Découvrez les forfaits d’hébergement VPS