← Retour aux articles
16 January 2026 4 min de lecture DockerTraefikCrowdSecGrafanaSelf-HostingSécurité

Guide ultime pour une Architecture d'Auto-Hébergement Souveraine et Sécurisée

Comment construire une infrastructure Docker auto-hébergée, sécurisée et monitorée de A à Z. Traefik, CrowdSec, Grafana, backups automatisés.

L’auto-hébergement n’est pas qu’une question de philosophie — c’est une question de souveraineté technique. Quand vous hébergez vos propres services, vous maîtrisez vos données, vos coûts et votre disponibilité.

Ce guide est le condensé de plusieurs années d’expérience en production. Il couvre l’ensemble de la stack : du reverse proxy au monitoring, en passant par la sécurité et les backups.

L’architecture cible

L’objectif est d’arriver à une stack complète et reproductible :

  • Traefik comme reverse proxy avec HTTPS automatique via Let’s Encrypt
  • CrowdSec pour la détection d’intrusions
  • Grafana + Prometheus + Loki pour le monitoring et les logs
  • Backups automatisés et testés
  • Le tout orchestré par Docker Compose
# Vue d'ensemble de la stack
services:
  traefik:      # Reverse proxy + HTTPS auto
  crowdsec:     # Détection d'intrusions collaborative
  prometheus:   # Collecte de métriques
  grafana:      # Visualisation
  loki:         # Agrégation de logs
  backup:       # Sauvegarde automatisée

Traefik : le chef d’orchestre

Traefik est LE reverse proxy qui va orchestrer toutes vos applications Docker. Le principe est simple : chaque container Docker expose des labels, et Traefik les détecte automatiquement pour router le trafic.

Let’s Encrypt utilise l’API de votre registrar (OVH, Gandi, etc.) pour confirmer automatiquement la propriété du nom de domaine. Tout le trafic non sécurisé (HTTP, port 80) est redirigé vers HTTPS, et les certificats sont activés par défaut pour toutes les applications.

# docker-compose.yml
name: traefik
services:
  traefik:
    image: traefik:v3.2
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.letsencrypt.acme.dnschallenge=true
      - --certificatesresolvers.letsencrypt.acme.dnschallenge.provider=ovh
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./acme.json:/acme.json
    labels:
      - traefik.enable=true
      - traefik.http.routers.${APP_NAME}.rule=Host(`traefik.${DOMAIN}`)
      - traefik.http.routers.${APP_NAME}.tls.certresolver=letsencrypt

C’est le truc magique : une fois bien configuré, Traefik gère l’ensemble de vos applications. Pour ajouter un nouveau service, il suffit d’ajouter les bons labels à votre container Docker.

CrowdSec : sécurité collaborative

CrowdSec analyse vos logs en temps réel et bloque les comportements malveillants. L’avantage sur fail2ban classique : c’est collaboratif. Les IP malveillantes détectées par d’autres utilisateurs sont partagées.

crowdsec:
  image: crowdsecurity/crowdsec
  volumes:
    - ./crowdsec/acquis.yaml:/etc/crowdsec/acquis.yaml
    - /var/log:/var/log:ro
    - crowdsec-db:/var/lib/crowdsec/data
  environment:
    - COLLECTIONS=crowdsecurity/traefik crowdsecurity/http-cve

Monitoring : Prometheus + Grafana + Loki

La traçabilité n’est pas un luxe, c’est un impératif. J’ai détaillé cette partie dans un article dédié, mais voici l’essentiel :

  • Prometheus collecte les métriques (temps de réponse, CPU, mémoire)
  • Loki agrège les logs de tous vos containers
  • Grafana visualise le tout dans des dashboards unifiés
prometheus:
  image: prom/prometheus
  volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml
    - prometheus-data:/prometheus

grafana:
  image: grafana/grafana
  labels:
    - traefik.enable=true
    - traefik.http.routers.grafana.rule=Host(`grafana.${DOMAIN}`)
    - traefik.http.routers.grafana.tls.certresolver=letsencrypt

loki:
  image: grafana/loki
  volumes:
    - loki-data:/loki

Configurez les alertes Prometheus pour être prévenu en cas d’anomalie : taux d’erreurs élevé, latence excessive, espace disque critique.

Backups : testez-les ou priez

Avoir des backups, tout le monde le fait. Les tester, presque personne. C’est pourtant la seule chose qui compte.

#!/bin/bash
# backup.sh — exécuté quotidiennement via cron
set -euo pipefail

BACKUP_DIR="/backups/$(date +%Y-%m-%d)"
mkdir -p "$BACKUP_DIR"

# Dump PostgreSQL
docker exec postgres pg_dumpall -U postgres | gzip > "$BACKUP_DIR/postgres.sql.gz"

# Volumes Docker
for vol in $(docker volume ls -q); do
    docker run --rm -v "$vol:/data" -v "$BACKUP_DIR:/backup" \
        alpine tar czf "/backup/$vol.tar.gz" /data
done

# Sync distant
rclone sync "$BACKUP_DIR" remote:backups/$(date +%Y-%m-%d) --transfers 4

# Nettoyage des backups > 30 jours
find /backups -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;

echo "Backup terminé : $(du -sh $BACKUP_DIR | cut -f1)"

C’est d’ailleurs cette problématique qui m’a poussé à créer RestoreProof — un outil de vérification automatisée de backups.

Hardening : les basiques qui sauvent

Quelques mesures essentielles que beaucoup oublient :

  • SSH : désactiver l’authentification par mot de passe, utiliser uniquement les clés
  • UFW : n’ouvrir que les ports 80, 443 et votre port SSH custom
  • fail2ban : en complément de CrowdSec, pour SSH
  • Updates : automatiser les mises à jour de sécurité avec unattended-upgrades
# Hardening SSH rapide
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
systemctl restart sshd

# UFW
ufw default deny incoming
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 2222/tcp
ufw enable

Ce que ça donne en production

Avec cette architecture, vous pouvez héberger facilement :

  • Nextcloud pour votre cloud privé
  • Gitea ou Gitlab CE pour votre code
  • Matrix Synapse + Element pour la communication chiffrée
  • Vaultwarden pour le gestionnaire de mots de passe
  • N’importe quelle application dockerisée

Le tout avec HTTPS automatique, monitoring en temps réel, logs centralisés, sécurité proactive et backups testés.

En conclusion

L’auto-hébergement souverain n’est plus réservé aux sysadmins barbus. Avec Docker et les bons outils, c’est accessible à toute équipe technique motivée. Le coût ? Un VPS dédié à ~45€/mois pour héberger une dizaine de services qui vous coûteraient 300€+ en SaaS.

Si vous voulez que je mette en place cette architecture pour vous, c’est exactement ce que couvre le Pack Infra Sécurisée — en une semaine, votre stack est en production.

Besoin d'aide sur ce sujet ?

Réserver un créneau