Ouverture commerciale reportée le temps de finaliser nos locaux à Limoges. Être prévenu de l'ouverture

Installer Docker sur un VPS KVM (et ses limites en LXC)

VPS · 5 min de lecture · Mis à jour le 16 octobre 2026

Docker permet de lancer une application et toutes ses dépendances dans des conteneurs isolés, décrits dans un fichier compose.yaml. Sur un VPS machine virtuelle (KVM), qui a son propre noyau, Docker s'installe comme sur n'importe quel serveur Linux. Ce guide couvre l'installation, la publication d'un conteneur sur votre adresse HTTPS et les pièges propres à l'accès des VPS HebergHub.

LXC ou machine virtuelle ?

À la commande d'un VPS, la liste des systèmes propose chaque distribution en conteneur LXC ou en machine virtuelle, au même prix. La différence compte pour Docker :

Si Docker est au cœur de votre projet, choisissez une machine virtuelle. Le guide LXC ou KVM : choisir détaille les autres différences.

1. Préparer le VPS

Connectez-vous en SSH (voir Première connexion SSH par clé) et mettez le système à jour :

apt update && apt full-upgrade -y

Retirez d'éventuels paquets Docker non officiels installés auparavant :

apt remove -y docker.io docker-compose docker-doc podman-docker containerd runc 2>/dev/null

2. Installer Docker Engine depuis le dépôt officiel

Le dépôt de Docker fournit des versions récentes de Docker Engine et du plugin Compose.

Debian 12 ou 13 :

apt install -y ca-certificates curl
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" \
  > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Ubuntu 24.04 : mêmes commandes, en remplaçant les deux occurrences de linux/debian par linux/ubuntu et la source de VERSION_CODENAME par UBUNTU_CODENAME.

Vérifiez :

docker run --rm hello-world
docker compose version

Alternative plus simple, avec des versions moins récentes : les paquets de Debian (apt install docker.io docker-compose).

3. Limiter la taille des journaux

Par défaut, Docker garde les journaux de chaque conteneur sans limite de taille : sur un disque de 20 à 80 Go, ils finissent par le remplir. Fixez une limite :

cat > /etc/docker/daemon.json <<'EOF'
{
  "log-driver": "local",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}
EOF
systemctl restart docker

La limite s'applique aux conteneurs créés après le changement.

4. Publier une application sur votre adresse HTTPS

Votre VPS est publié en HTTPS sur nom.vps.heberghub.fr : le certificat est géré par le point d'entrée, et votre VPS reçoit le trafic en HTTP sur son port 80. Il suffit donc qu'un conteneur réponde sur le port 80.

Exemple avec compose.yaml :

services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./site:/usr/share/nginx/html:ro
    restart: unless-stopped
mkdir -p /opt/mon-site/site && cd /opt/mon-site
echo "Bonjour depuis Docker" > site/index.html
nano compose.yaml        # contenu ci-dessus
docker compose up -d
docker compose ps

Ouvrez https://nom.vps.heberghub.fr. Pour plusieurs applications, placez un relais (nginx, Caddy, Traefik) sur le port 80, qui répartit par nom de domaine vers les autres conteneurs.

N'installez pas de certificat pour nom.vps.heberghub.fr dans le VPS : il est déjà géré en amont. Votre application reçoit l'en-tête X-Forwarded-Proto: https.

Les autres ports

Pour exposer un autre service (une base accessible de l'extérieur, un serveur de jeu, une API sur un port dédié), ouvrez un port public depuis l'espace client : 10, 20 ou 50 ports selon la formule.

5. Le piège du pare-feu

Docker contourne les règles ufw. Un port publié avec -p 5432:5432 ou ports: - "5432:5432" est ouvert sur toutes les interfaces par des règles que Docker insère lui-même, avant celles d'ufw. ufw status ne le montre pas.

Les bonnes pratiques :

Avec nftables, attention à la ligne flush ruleset en tête de /etc/nftables.conf (celle du guide Configurer un pare-feu) : un redémarrage de nftables efface aussi les règles de Docker, et les conteneurs perdent leurs ports publiés jusqu'au prochain systemctl restart docker. Sur un VPS qui fait tourner Docker, le plus simple est de ne publier que les ports nécessaires et de ne pas ajouter de pare-feu par-dessus, ou de redémarrer Docker après chaque rechargement des règles.

6. Entretenir

docker compose pull && docker compose up -d   # mettre à jour les images
docker image prune -f                          # supprimer les images inutilisées
docker system df                               # place occupée par Docker

À savoir

Besoin d'aide ?

Ouvrez un ticket depuis votre espace client avec le nom du VPS, la commande lancée et le message d'erreur complet.

Retour à la documentation