EQVPS

Comment déployer une stack Docker Compose sur un VPS

Déployez une stack multi-conteneurs sur un VPS avec Docker Compose : écrivez docker-compose.yml, gardez les secrets dans .env, lancez-la avec redémarrage-au-reboot et ne publiez que les ports voulus. Exemple copier-coller avec une app web, une base de données et un reverse proxy.

Docker Compose décrit une stack multi-conteneurs dans un seul fichier et la lance en une commande. Voici le guide de déploiement ; d'abord installez Docker si ce n'est pas fait. Pour une stack spécifique aux agents IA (agent + base vectorielle + Redis), voyez docker-compose pour agents IA.

1. Une stack : app + base de données + reverse proxy

# /opt/stack/docker-compose.yml
services:
  app:
    image: your/app:latest
    restart: unless-stopped
    env_file: [.env]
    depends_on: [db]
    # no ports: — reached only through the proxy below

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes: ["pg:/var/lib/postgresql/data"]   # internal only

  caddy:                                        # HTTPS automatically
    image: caddy:2
    restart: unless-stopped
    ports: ["80:80", "443:443"]                 # the only public entrypoint
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data

volumes: { pg: {}, caddy_data: {} }

Les secrets vivent dans .env, jamais dans le fichier compose :

# /opt/stack/.env  (chmod 600, git-ignored)
DB_PASSWORD=a-long-random-string

Un Caddyfile minimal proxie votre domaine vers l'app et récupère HTTPS tout seul :

app.yourdomain.com {
  reverse_proxy app:8080
}

2. Lancez-la

cd /opt/stack
docker compose up -d
docker compose ps
docker compose logs -f app

restart: unless-stopped sur chaque service + Docker activé au démarrage = la stack revient d'elle-même après un reboot.

3. Commandes du quotidien

docker compose pull && docker compose up -d   # update images
docker compose down                            # stop the stack
docker compose restart app                     # restart one service

Le point que les gens ratent : les ports exposés

Docker publie les ports via iptables, donc un conteneur avec ports: ["5432:5432"] est joignable depuis internet même derrière un pare-feu UFW que vous croyiez fermé. Ne publiez que le point d'entrée public (le proxy sur 80/443) ; gardez les bases de données et caches sur le réseau compose ou liés à 127.0.0.1. Tout ce qui sert du trafic web nécessite un plan à IP dédiée ; associez à un pare-feu UFW.

Pour toute une stack derrière une IP, voyez auto-héberger plusieurs services. Root en une minute environ, NVMe, sans KYC, paiement en crypto.

FAQ

Comment déployer une stack Docker Compose sur un VPS ?

Installez Docker avec le plugin Compose, écrivez un docker-compose.yml décrivant chaque service, gardez les secrets dans un .env ignoré par git, puis docker compose up -d. Mettez restart: unless-stopped sur chaque service et activez Docker au démarrage pour que la stack survive aux reboots. L'exemple ci-dessous lance une app web, Postgres et un reverse proxy Caddy.

Où vont les secrets — dans le fichier compose ?

Non. Mettez-les dans un fichier .env (chmod 600, ignoré par git) et référencez-les comme ${VAR} dans compose, ou utilisez les Docker secrets. Ne committez jamais de mots de passe ou de clés API dans docker-compose.yml — un fichier fuité avec des identifiants actifs est l'erreur classique.

La stack reviendra-t-elle après un reboot ?

Seulement si vous le lui dites. Mettez restart: unless-stopped (ou always) sur chaque service et activez Docker au démarrage (systemctl enable docker). Alors docker compose up -d survit aux reboots et relance les conteneurs plantés.

Quels ports sont exposés ?

Seulement ce que vous publiez avec ports:. Liez les services internes (bases de données, caches) au réseau compose ou à 127.0.0.1 et ne publiez que le point d'entrée public — d'ordinaire un reverse proxy sur 80/443. Docker publie via iptables, donc une ligne ports: accidentelle est joignable depuis internet même derrière UFW.

Demandez-vous une pièce d'identité ou une carte ?

Non. Un e-mail pour s'inscrire, paiement en USDC ou USDT — pas de documents, pas de carte. Root en une minute environ.

Commentaires

Pas encore de commentaires. Soyez le premier.

Laisser un commentaire

Les commentaires sont modérés avant leur publication.