Lorsque l’on commence à multiplier les services conteneurisés sur son propre serveur ou VPS, la gestion manuelle des ports et des certificats SSL devient rapidement un cauchemar de maintenance et de sécurité.
Sécuriser Docker avec Reverse Proxy : Portainer, Nginx Proxy Manager et Cloudflare
Publié par Bastien Brousse • Temps de lecture : 6 min
Savoir sécuriser Docker avec reverse proxy est une étape indispensable dès que l’on commence à héberger plusieurs services conteneurisés sur son serveur. Exposer directement des ports comme 8080, 9000 ou 3000 sur le web public sans chiffrement adéquat constitue un risque majeur pour votre infrastructure.
Dans cet article complet, vous allez apprendre à sécuriser vos conteneurs Docker grâce à un reverse proxy performant (Nginx Proxy Manager), couplé à l’orchestrateur Portainer et à la protection DNS de Cloudflare. Pour explorer mes autres travaux en administration système et développement web, n’hésitez pas à consulter mes projets d’infrastructure et de cybersécurité.
1. Architecture globale pour sécuriser vos conteneurs Docker
Au lieu d’exposer chaque application sur un port hôte différent, seul Nginx Proxy Manager écoutera sur les ports 80 et 443. L’intégralité du trafic réseau passera par l’infrastructure de Cloudflare avant d’atteindre votre serveur, garantissant un chiffrement SSL de bout en bout et le masquage de votre adresse IP publique.

2. Étape 1 : Créer le réseau Docker pour le reverse proxy
Pour permettre à Nginx Proxy Manager de communiquer directement avec vos conteneurs sans exposer leurs ports sur la machine hôte, créons un réseau Bridge externe nommé npm-network :
docker network create npm-network
3. Étape 2 : Déploiement de l’interface Portainer
Déployez l’instance Portainer en la rattachant au socket Docker local. Vous pouvez vous référer à la documentation officielle de Portainer pour approfondir la gestion des droits.
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:latestRaccordez ensuite le conteneur portainer au réseau npm-network via la CLI :
docker network connect npm-network portainer
4. Étape 3 : Installer Nginx Proxy Manager pour sécuriser Docker
Dans l’interface de Portainer, rendez-vous dans Stacks > Add stack et collez le fichier Compose ci-dessous pour déployer votre reverse proxy Docker :
version: '3.8'
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- npm-network
networks:
npm-network:
external: true
5. Étape 4 : Validation SSL Cloudflare via DNS Challenge
Afin de sécuriser Docker avec un reverse proxy sans ouvrir le port 80 aux vérifications HTTP Let’s Encrypt, nous utilisons le DNS Challenge de Cloudflare :
- Sur votre tableau de bord Cloudflare, créez un enregistrement A pointant
*vers votre IP publique. - Dans Mon Profil > Jetons API, créez un jeton avec le modèle Modifier le DNS de la zone.
- Copiez la clé API générée.
6. Étape 5 : SSL Wildcard et redirection HTTPS des conteneurs
- Dans Nginx Proxy Manager (
http://IP-SERVEUR:81), allez dans SSL Certificates > Add SSL Certificate > Let’s Encrypt. - Saisissez
votredomaine.proet*.votredomaine.pro. - Cochez Use a DNS Challenge, sélectionnez Cloudflare et insérez votre jeton API :
dns_cloudflare_api_token = VOTRE_TOKEN_API_CLOUDFLARE - Créez ensuite un Proxy Host pour exposer Portainer en HTTPS :
- Domain Name :
portainer.votredomaine.pro - Scheme / Host / Port :
https/portainer/9443 - SSL : Attribuez le certificat Wildcard et activez Force SSL & HTTP/2.
- Domain Name :
🔒 Conseil Cybersécurité :
Dans le panneau Cloudflare, réglez le mode SSL/TLS sur Full (Strict). Cela garantit un chiffrement de bout en bout entre le client, Cloudflare et votre serveur. Si vous souhaitez en savoir plus sur mes méthodes d’audit et de sécurisation système, consultez ma page à propos.
Conclusion : Une méthode éprouvée pour sécuriser Docker avec un Reverse Proxy
Grâce à cette méthode, sécuriser Docker avec un reverse proxy devient un réflexe simple et automatisé pour l’ensemble de vos projets web. Tous vos conteneurs bénéficient ainsi d’un chiffrement SSL robuste, d’un pare-feu applicatif via Cloudflare et d’une gestion centralisée.
