installer Portainer··7 min de lecture·Par l'équipe OmegaCloud

Installer Portainer pour gérer Docker sur un VPS Linux

Illustration immersive du sujet : installer Portainer

Vous cherchez à installer Portainer pour reprendre la main sur vos conteneurs Docker via une interface web claire ? Ce tutoriel 2026 couvre l'installation complète sur un VPS Linux, la configuration de la sécurité, l'exposition HTTPS et les bonnes pratiques d'exploitation. L'objectif : disposer d'un panneau de gestion Docker propre, fiable et sécurisé en quelques minutes.



Pourquoi et comment installer Portainer sur un VPS

Portainer est une interface de gestion pour environnements de conteneurs. Il s'adresse aux administrateurs qui veulent visualiser leurs stacks, conteneurs, volumes et réseaux Docker sans dérouler des dizaines de commandes CLI. Ce n'est pas un orchestrateur : c'est une couche d'administration au-dessus de Docker (ou Swarm), utile pour le quotidien, la supervision légère et le déploiement de stacks Compose.

Ce que Portainer apporte concrètement

  • Vue temps réel des conteneurs, images, volumes et réseaux.
  • Déploiement de stacks via fichiers docker-compose directement depuis l'UI.
  • Gestion des logs et console interactive dans un conteneur.
  • Contrôle d'accès par utilisateurs, équipes et rôles.
  • Support des webhooks pour redéployer une stack via CI/CD.

Prérequis techniques

Avant d'installer Portainer, il faut une base saine. La démo ci-dessous suppose un VPS sous Debian ou Ubuntu récent, avec un accès root SSH. Un VPS Linux OmegaCloud sur SSD SAS convient parfaitement : le stockage rapide accélère le pull des images et le démarrage des conteneurs. Portainer et Proxmox ne couvrent pas le même besoin : la page VPS Proxmox explique où s'arrête le conteneur applicatif et où commence le conteneur système.

Élément Recommandation
OS Debian 12 / Ubuntu 24.04 / Rocky / Alma
RAM 2 Go minimum (4 Go confortable)
Stockage NVMe fortement conseillé
Accès SSH par clé, port ouvert pour l'UI
Docker Engine récent + plugin compose


Installer Docker avant d'installer Portainer

Portainer ne fonctionne pas seul : il pilote un moteur Docker. On commence donc par mettre en place Docker Engine proprement, via le dépôt officiel plutôt que le paquet distribution parfois obsolète.

Mise à jour du système

apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg

Ajout du dépôt Docker officiel (Debian/Ubuntu)

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

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
  | tee /etc/apt/sources.list.d/docker.list > /dev/null

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

Vérification

systemctl enable --now docker
docker --version
docker run --rm hello-world

Si le conteneur hello-world s'exécute et affiche son message, le moteur est opérationnel. On peut passer à l'installation de Portainer.



Installer Portainer avec Docker et le sécuriser

Il existe plusieurs éditions. Portainer Community Edition (CE) couvre l'essentiel des besoins d'administration. On va installer Portainer dans un conteneur dédié avec un volume persistant, afin de conserver la configuration entre les redémarrages.

Création du volume et du conteneur

docker volume create portainer_data

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

Détails importants :

  • -p 9443:9443 expose l'interface HTTPS native de Portainer.
  • /var/run/docker.sock permet à Portainer de piloter le daemon Docker local.
  • --restart=always garantit un redémarrage automatique après reboot du VPS.
  • Le volume portainer_data conserve utilisateurs, endpoints et paramètres.
Le montage de docker.sock donne des privilèges élevés au conteneur. Restreignez l'accès réseau au port 9443 et n'exposez jamais ce socket publiquement.

Première connexion

Rendez-vous sur https://IP_DU_VPS:9443. Le certificat est auto-signé au départ : c'est normal, on le remplacera plus tard. Créez immédiatement le compte administrateur avec un mot de passe robuste. Si l'écran d'initialisation renvoie un timeout, Portainer verrouille l'admin après quelques minutes d'inactivité : redémarrez le conteneur avec docker restart portainer.

Choisir l'environnement

Portainer propose de connecter un environnement local (le Docker de ce VPS). Sélectionnez Docker Standalone puis validez. Vous accédez alors au dashboard listant conteneurs, images, volumes et réseaux.

Verrouiller l'accès réseau avec le pare-feu

Le port 9443 ne doit être accessible que depuis vos adresses de confiance. Avec ufw :

ufw allow 22/tcp
ufw allow from VOTRE_IP to any port 9443 proto tcp
ufw enable
ufw status verbose

Pour un contrôle plus granulaire, nftables reste la référence côté kernel. Côté volumétrique, l'anti-DDoS d'OmegaCloud est déjà géré au niveau infrastructure, de façon transparente : vous n'avez rien à installer pour la mitigation réseau. Votre travail se concentre donc sur le filtrage applicatif et l'authentification.

Durcir l'accès SSH

Puisque Portainer contrôle Docker via le socket, l'accès SSH au VPS doit être irréprochable. Passez en authentification par clé uniquement :

ssh-keygen -t ed25519 -C "admin-portainer"
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@IP_DU_VPS

Puis désactivez l'authentification par mot de passe dans /etc/ssh/sshd_config :

PasswordAuthentication no
PermitRootLogin prohibit-password
systemctl restart ssh

Ajoutez fail2ban pour limiter le bruteforce sur SSH :

apt install -y fail2ban
systemctl enable --now fail2ban
fail2ban-client status sshd


Exposer Portainer en HTTPS derrière un reverse proxy

Le certificat auto-signé fonctionne, mais un reverse proxy avec certificat valide améliore l'expérience et permet d'utiliser un nom de domaine. On utilise ici Nginx et Let's Encrypt, mais le principe reste identique avec Caddy ou Traefik.

Configuration DNS

Créez un enregistrement A pointant portainer.mondomaine.fr vers l'IP du VPS. La gestion DNS peut se faire directement depuis le panel OmegaCloud, qui centralise les zones et la configuration.

Reverse proxy Nginx

apt install -y nginx certbot python3-certbot-nginx

Fichier /etc/nginx/sites-available/portainer :

server {
    listen 80;
    server_name portainer.mondomaine.fr;

    location / {
        proxy_pass https://127.0.0.1:9443;
        proxy_ssl_verify off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
ln -s /etc/nginx/sites-available/portainer /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
certbot --nginx -d portainer.mondomaine.fr

Une fois le certificat émis, Portainer est accessible via https://portainer.mondomaine.fr avec un certificat de confiance. Vous pouvez ensuite refermer le port 9443 sur l'extérieur et ne laisser passer que le trafic HTTPS.

Restreindre l'exposition

ufw delete allow from VOTRE_IP to any port 9443 proto tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload


Déployer des stacks et intégrer Portainer à un pipeline CI/CD

Une fois Portainer installé, l'intérêt principal réside dans le déploiement de stacks reproductibles. Au lieu de lancer des docker run à la main, on déclare des fichiers Compose versionnés.

Créer une stack

Dans Stacks > Add stack, collez un fichier Compose. Exemple minimal :

version: "3.9"
services:
  web:
    image: nginx:stable
    ports:
      - "8080:80"
    restart: unless-stopped
    volumes:
      - web_data:/usr/share/nginx/html
volumes:
  web_data:

Portainer instancie la stack, crée les volumes et suit son état. Vous pouvez éditer, mettre à jour ou détruire la stack depuis l'interface.

Webhooks et redéploiement automatique

Chaque stack peut exposer un webhook. En l'appelant depuis GitHub Actions ou GitLab CI, vous déclenchez un redéploiement après un build d'image. C'est un pattern courant pour les environnements de préproduction. Les intégrations & API OmegaCloud permettent d'automatiser en parallèle le provisioning du VPS et sa surveillance, pour un flux de déploiement homogène.

curl -X POST https://portainer.mondomaine.fr/api/stacks/webhooks/UUID_WEBHOOK

Exemple d'étape GitLab CI

deploy:
  stage: deploy
  script:
    - curl -X POST "$PORTAINER_WEBHOOK_URL"
  only:
    - main

Bonnes pratiques d'exploitation

  • Sauvegardez le volume portainer_data régulièrement, en complément des snapshots du VPS.
  • Activez la 2FA sur les comptes administrateurs sensibles quand c'est disponible côté panel.
  • Limitez les rôles : chaque équipe ne doit voir que ses environnements.
  • Surveillez la RAM : Portainer est léger, mais vos stacks ne le sont pas forcément. Le dashboard temps réel du panel aide à suivre CPU/RAM/SSD.
  • Mettez à jour l'image régulièrement en recréant le conteneur avec la dernière balise stable.

Mise à jour de Portainer

docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
docker run -d \
  --name portainer \
  --restart=always \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Le volume persistant garantit qu'aucune donnée n'est perdue lors de cette opération. Pour référence sur la sécurité du daemon Docker et le socket, consultez la documentation officielle de la Source.



Conclusion

Installer Portainer prend quelques minutes, mais un déploiement solide repose sur trois piliers : un moteur Docker propre, un accès réseau strictement filtré et une exposition HTTPS via reverse proxy. En combinant ces bonnes pratiques avec des snapshots réguliers, vous obtenez une administration de conteneurs claire, maintenable et sûre au quotidien.



FAQ

Faut-il installer Portainer avec Docker Compose ou en conteneur simple ?

Les deux fonctionnent. Le conteneur simple via docker run suffit pour un usage standalone. Docker Compose devient pertinent si vous versionnez la configuration de Portainer lui-même ou si vous gérez plusieurs services liés. Dans tous les cas, conservez le volume portainer_data pour la persistance.

Comment sécuriser Portainer exposé sur Internet ?

Ne laissez jamais le port 9443 ouvert au monde entier. Placez Portainer derrière un reverse proxy avec certificat Let's Encrypt, filtrez l'accès par IP avec ufw ou nftables, activez la 2FA et utilisez des clés SSH uniquement sur le VPS. La mitigation DDoS volumétrique est déjà assurée côté infrastructure OmegaCloud.

Portainer remplace-t-il un orchestrateur comme Kubernetes ?

Non. Portainer est une interface d'administration au-dessus de Docker ou Docker Swarm. Il facilite la gestion visuelle, le déploiement de stacks et le contrôle d'accès, mais il n'apporte pas l'orchestration avancée, l'autoscaling ou la planification fine d'un cluster Kubernetes complet.

Prêt à mettre en pratique ce que vous venez de lire ?

Découvrir nos offres

Articles liés

Prêt à vous lancer ?

à partir de 6,99 € HT/mois

Découvrir nos offres

Hébergements

Navigation