VPS Sécurisé et automatisé 🔒

Publié le 17/03/2025

Mise en place d'un VPS sécurisé avec Docker, Traefik et Cloudflare

Dans cet article, je vais vous expliquer comment j'ai configuré mon VPS sous Debian pour héberger mon portfolio et des démonstrations en direct de mes projets. J'ai choisi un domaine en .dev, ce qui impose l'utilisation d'HTTPS et m'oblige à bien gérer la sécurité dès le départ. Mon infrastructure est accessible via https://walidlab.dev.


1. Pourquoi utiliser Docker et Traefik ?

Docker me permet d'isoler mes applications dans des conteneurs indépendants. Chaque projet tourne ainsi dans son propre environnement sans interférer avec les autres. Pour simplifier l'accès aux applications et sécuriser leur exposition sur Internet, j'utilise Traefik, un reverse proxy intelligent.

Reverse proxy, c'est quoi ?

Un reverse proxy agit comme un intermédiaire entre les visiteurs et mes applications. Plutôt que d'exposer directement chaque service avec une configuration complexe, je laisse Traefik gérer automatiquement les connexions et le routage des requêtes.

Les avantages :

  • Redirige automatiquement les visiteurs vers le bon conteneur en fonction du domaine ou sous-domaine utilisé.
  • Gère les certificats SSL avec Let's Encrypt pour que tout soit en HTTPS sans effort.
  • Sécurise et simplifie la configuration réseau en évitant d’exposer trop de ports.
  • Détecte automatiquement les nouveaux conteneurs à exposer sans redémarrer quoi que ce soit.

2. Gestion automatique des certificats SSL

Grâce à Let's Encrypt, mon serveur obtient et renouvelle automatiquement des certificats SSL. Ainsi, tous mes projets sont accessibles en HTTPS sans que j’aie besoin de gérer manuellement les certificats.

3. Déploiement et découverte automatique des conteneurs

Je développe mes projets sur mon PC en local, où je construis des images Docker pour chaque service. Une fois prêtes, je les pousse vers une registry privée hébergée sur mon VPS. Ensuite, j’utilise Docker Compose pour les déployer facilement.

L'un des points forts de ma configuration est que Traefik peut détecter automatiquement les services que je veux exposer. Il me suffit d’ajouter des étiquettes (labels) à mes conteneurs pour que Traefik les prenne en charge et les rende accessibles sur le bon domaine.

Par exemple, si je lance un projet en Docker avec les bonnes étiquettes, il sera automatiquement disponible sur monprojet.walidlab.dev sans configuration supplémentaire. Cela me permet de déployer rapidement des applications sans me soucier de la gestion du réseau.

4. Automatisation future avec CI/CD

À l’avenir, j’aimerais mettre en place une pipeline CI/CD avec Git. L’objectif serait d’automatiser entièrement le déploiement :

  1. Détecter les pushs sur la branche main de mes projets.
  2. Construire l’image Docker mise à jour et la pousser sur ma registry VPS.
  3. Informer le serveur qu'une mise à jour est disponible.
  4. Mettre à jour l’image et redémarrer le conteneur sans downtime.

Cela me permettrait d’avoir un processus fluide et automatisé, où chaque mise à jour de code en production se fait sans intervention manuelle.

5. Gestion du réseau et sécurité

Plutôt que de restreindre mon accès SSH uniquement depuis une IP fixe, j'ai préféré une approche plus flexible. J'ai relié mon serveur à un réseau ZeroTier, une solution qui me permet de créer un réseau privé sécurisé sur lequel je peux me connecter depuis n'importe où.

Je rédigerai un autre article dédié à ZeroTier pour expliquer comment l’utiliser pour créer un environnement de développement "nomade" accessible en toute sécurité.

6. Configuration DNS et gestion des emails

Pour gérer mes domaines et sous-domaines, j’utilise Cloudflare, qui me permet d’ajouter facilement des règles DNS et de protéger mon serveur contre certaines attaques ainsi que de masquer l'adresse IP de ce dernier.

J’ai aussi configuré des enregistrements MX afin de pouvoir recevoir des emails sur mon domaine. J’utilise ImprovMX, un service qui redirige les emails envoyés à mon domaine vers une adresse email existante. Cela me permet d’avoir des adresses comme [email protected] sans avoir à gérer un serveur mail complet.

7. Conclusion

Avec cette configuration, j’ai un serveur sécurisé, performant et facile à gérer : ✅ Isolation des services avec Docker ✅ Gestion automatique du HTTPS grâce à Let's Encrypt ✅ Reverse proxy intelligent avec Traefik ✅ Découverte automatique des conteneurs à exposer ✅ Déploiement rapide grâce à ma registry privée ✅ Plan d’évolution vers une CI/CD automatisée ✅ Gestion DNS avancée et réception d’emails avec ImprovMX ✅ Accès sécurisé via un réseau privé ZeroTier