Alternatives à Cloudflare pour la souveraineté numérique et la performance
❓ Pourquoi se passer de Cloudflare ?
Cloudflare est devenu un acteur central du web : protection DDoS, cache mondial, reverse proxy… Mais cette centralisation pose plusieurs problèmes :
- ❌ Dépendance à un acteur unique
- 🇺🇸 Hébergement et juridiction américaine
- 🔎 Accès à toutes les requêtes web, y compris privées
- 🧩 Verrouillage opaque du trafic (MITM HTTPS)
Alors… peut-on bâtir un CDN “souverain”, avec des outils open source et des VPS répartis en Europe ?
👉 Spoiler : oui, à condition d’accepter des compromis, et de bien comprendre l’architecture.
🧱 Objectif
Créer un CDN décentralisé, basé sur :
- 📡 plusieurs VPS européens
- 🌍 un DNS géographique (GeoDNS)
- 🧰 du caching NGINX ou
varnish - 🔁 synchronisation des assets via
rsync,syncthing,gitou autre - 🔐 un point d’entrée TLS (certificats Let’s Encrypt ou interne)
🔧 Étape 1 – Répartition géographique
Choisis des VPS situés dans différents pays européens :
| Localisation | Fournisseur recommandé |
|---|---|
| 🇫🇷 France | D4.FR ,Scaleway, OVHcloud |
| 🇩🇪 Allemagne | Hetzner, Netcup |
| 🇳🇱 Pays-Bas | Greenhost, Tilaa |
| 🇨🇭 Suisse | Infomaniak |
| 🇮🇸 Islande | 1984 Hosting |
Tu peux démarrer avec 2 ou 3 VPS.
🌐 Étape 2 – Résolution GeoDNS
Objectif : rediriger les visiteurs vers le noeud le plus proche.
Option 1 : DNS Geo IP (gratuit ou open source)
- 🌎 GeoDNS (PowerDNS Recursor)
- 🐍 CoreDNS + plugin geo
- 📦 gdnsd (GeoDNS natif, en C)
Principe : selon l’IP de l’utilisateur, le DNS répond avec l’IP du VPS le plus proche.
💡 En pratique :
Configure un enregistrement A pour cdn.monsite.fr qui renvoie vers vps-fr, vps-de ou vps-nl en fonction du pays.
Option 2 : Fournisseur DNS souverain avec GeoIP intégré
- DNSimple
- ClouDNS (attention, pas toujours souverain)
- deSEC.io — gratuit, allemand, mais pas encore GeoDNS
📦 Étape 3 – Caching local avec NGINX
Chaque VPS agit comme un noeud CDN qui :
- stocke les assets statiques
- reverse proxy si besoin vers le serveur d’origine
- met en cache localement
Exemple de configuration NGINX :
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cdn_cache:10m inactive=24h max_size=1g;
server {
listen 80;
server_name cdn.monsite.fr;
location / {
proxy_pass https://origin.monsite.fr;
proxy_cache cdn_cache;
proxy_cache_valid 200 1h;
proxy_cache_use_stale error timeout updating;
add_header X-Cache $upstream_cache_status;
}
}
📌 On peut forcer les assets (/images, /js, /css, etc.) à rester plus longtemps via des règles expires.
🔁 Étape 4 – Synchronisation des fichiers
Si tu veux un CDN full statique, synchronise les fichiers sur tous les VPS :
Option 1 : rsync (simple et fiable)
rsync -az /var/www/assets/ user@vps-europe:/var/www/assets/
Automatisable via cron ou déclencheur git.
Option 2 : syncthing
Synchronisation en temps réel, peer-to-peer, chiffrée :
- Interface web de contrôle
- Détection automatique des changements
- Convient bien aux petits CDN perso
Option 3 : git pull auto
Si tes assets sont versionnés (static-site, build/ etc.), utilise un git hook ou un CI pour les déployer sur chaque VPS.
⚠️ Étape 5 – Gestion HTTPS
Chaque noeud doit avoir un certificat SSL valide.
Options :
- 🎯 Utiliser Certbot + Let’s Encrypt sur chaque VPS
- 🔐 Délivrer un wildcard cert (
*.cdn.monsite.fr) depuis un seul VPS, et le synchroniser - ⚠️ Pas de Cloudflare ou de proxy TLS, tu gères toi-même la terminaison TLS
apt install certbot python3-certbot-nginx
certbot --nginx -d cdn.monsite.fr
📊 Étape 6 – Monitoring et fallback
Ajoute un monitoring simple :
- Uptime Kuma
- Pingdom / Cronitor / Healthchecks
- Script maison avec
curl+grep+mail/telegram
Et un plan B :
- Si un nœud tombe → DNS failover (changer l’enregistrement A)
- Ou script automatique pour désactiver une entrée GeoDNS
✅ Résultat
Un utilisateur français tape cdn.monsite.fr
→ GeoDNS répond 51.91.x.x (Scaleway, France)
→ Le noeud sert les fichiers localement, en cache NGINX
→ Moins de latence, meilleure souveraineté, zéro GAFAM
💸 Coût estimé
| Élément | Nombre | Coût total/mois |
|---|---|---|
| VPS (2 à 3 pays) | 3 | \~9 € à 15 € |
| Certificats SSL | 3x gratuits via Let’s Encrypt | |
| DNS GeoIP | Open source ou service externe (\~5 €) | |
| Total | \~10 à 20 €/mois pour un CDN full souverain |
🧠 Limites vs Cloudflare
| Fonction | Ton CDN perso | Cloudflare |
|---|---|---|
| Mise en cache | ✅ | ✅ |
| Atténuation DDoS | ⚠️ partiel (à configurer) | ✅ |
| WAF (firewall applicatif) | ❌ (à faire soi-même) | ✅ |
| Support HTTP/3 | ✅ avec NGINX récent | ✅ |
| Géodistribution mondiale | 🇪🇺 Europe uniquement | 🌍 Monde entier |
Mais… plus de contrôle, plus de confidentialité, moins de dépendances externes.
✊ Pourquoi c’est important
Un CDN souverain, c’est un acte de résistance douce. C’est dire : je peux améliorer la performance de mon site, sans livrer mes visiteurs à un géant du web américain.
Pour les projets associatifs, médias indépendants, plateformes locales… cette approche est non seulement possible, mais cohérente avec les valeurs d’un internet libre et décentralisé.
🧰 Bonus : outils alternatifs à explorer
- 🐘 PeeringDB : pour comprendre les réseaux
- 🌀 LibreCDN : un projet de CDN libre
- 🚅 Varnish Cache : un cache HTTP avancé
- 🛰️ IPFS : pour un CDN vraiment décentralisé (à la blockchain)