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