Description
Cloudflared est le daemon Cloudflare Tunnel : un binaire léger qui établit une connexion sortante chiffrée (QUIC/HTTP2) vers le réseau Cloudflare, puis relaie le trafic entrant depuis Internet vers vos services locaux. Vous n'ouvrez aucun port sur votre box/firewall.
Caractéristiques :
- ✅ Pas d'IP publique requise : fonctionne derrière n'importe quel NAT/CGNAT
- ✅ Pas de ports ouverts : connexion sortante uniquement (pas d'attaque entrante possible)
- ✅ HTTPS automatique via les certificats edge de Cloudflare
- ✅ Protection DDoS incluse (mitigation Cloudflare, gratuite en mode basic)
- ✅ Zero Trust Access : authentification via Cloudflare Access (OAuth, OTP, mTLS, etc.) — ajoute de l'auth devant n'importe quelle app
- ✅ HTTP, HTTPS, WebSocket, TCP, SSH, RDP : tunnel L4 et L7
- ✅ Multi-plateforme : Linux, macOS, Windows, ARM, Docker, packages DEB/RPM, Homebrew
- ✅ Apache-2.0 : open source (le daemon), pas le service Cloudflare
- ✅ TryCloudflare : tester sans même avoir un domaine
Positionnement : c'est l'alternative moderne à un reverse proxy classique (Nginx, Caddy, Traefik) pour les cas où :
- Vous n'avez pas d'IP publique fixe
- Vous êtes derrière un NAT/CGNAT (FAI type SFR Free Orange en France)
- Vous voulez déléguer la gestion TLS/DDoS à Cloudflare
- Vous voulez un tunnel simple sans exposition réseau
Différence avec les reverse proxies classiques :
- Caddy / Traefik / Nginx : vous publiez un port (80/443), le client vous contacte directement
- Cloudflared : le client ne peut pas vous contacter directement, il doit passer par Cloudflare. Vous n'exposez rien sur Internet.
Public cible : auto-hébergeurs derrière CGNAT/NAT, ou ceux qui veulent la protection DDoS/HTTPS de Cloudflare "gratos".
⚠️ Point important : Cloudflared vous rend dépendant de Cloudflare (lock-in). Si Cloudflare a une panne ou vous bannit, vos services sont inaccessibles. À mettre en balance avec les avantages.
Installation
Prérequis
- Un compte Cloudflare (gratuit)
- Un domaine géré par Cloudflare (DNS moved to their nameservers)
- Le binaire
cloudflaredinstallé
Option 1 : Docker Compose (recommandé)
# docker-compose.yml
version: '3.8'
services:
cloudflared:
image: cloudflare/cloudflared:2026.5.2
container_name: cloudflared
restart: unless-stopped
command: tunnel run
environment:
- TUNNEL_TOKEN=eyJhIjoiYWJj... # Token de votre tunnel
networks:
- proxy
# Optionnel : pour des cas avancés
# volumes:
# - ./config:/home/nonroot/.cloudflared
networks:
proxy:
name: proxy
Configuration du tunnel (UI Cloudflare, plus simple)
- Dashboard Cloudflare → Zero Trust → Networks → Tunnels
- Create a tunnel → type
Cloudflared - Copier le token généré → le mettre dans
TUNNEL_TOKEN - Ajouter une "Public Hostname" :
- Subdomain:
app - Domain:
example.com - Service:
http://app:8080(ouhttp://192.168.1.10:8080)
- Subdomain:
Configuration manuelle (config.yaml)
# /home/nonroot/.cloudflared/config.yml
tunnel: abc123def456
credentials-file: /home/nonroot/.cloudflared/abc123def456.json
ingress:
- hostname: app.example.com
service: http://app:8080
- hostname: api.example.com
service: http://api:3000
- service: http_status:404 # Catch-all par défaut
# Lier le tunnel (une seule fois) cloudflared tunnel login cloudflared tunnel create mytunnel cloudflared tunnel route dns mytunnel app.example.com cloudflared tunnel run mytunnel
Variante : SSH over tunnel (L4)
# Exposer SSH sans port ouvert cloudflared access ssh --hostname ssh.example.com --listener localhost:2222
Configuration
- Créer un compte Cloudflare (gratuit) : dash.cloudflare.com/sign-up
- Ajouter votre domaine (gratuit) : changez les nameservers chez votre registrar
- Installer cloudflared : binaire, package, ou Docker
- Créer un tunnel dans Zero Trust → Networks → Tunnels
- Mapper les hostnames vers vos services locaux
- (Optionnel) Activer Cloudflare Access : ajouter une auth (email OTP, OAuth, mTLS) devant vos services
- Tester :
https://app.example.comdoit fonctionner sans port ouvert
💡 TryCloudflare : pour tester sans configurer votre domaine,
cloudflared tunnel --url http://localhost:8080génère une URL temporaire*.trycloudflare.com.
Alternatives
Open Source
- [[app-pangolin]] — Tunneling + reverse proxy + auth (alternative "indie" sans dépendance Cloudflare)
- BoringTunnel / FRP (Fast Reverse Proxy) — tunnels TCP/HTTP self-hosted (sans CDN)
- WireGuard + VPS — tunnel VPN pur, plus bas niveau
- Tailscale Funnel — expose des services via votre mesh Tailscale
- ngrok (version open source partielle) — tunnels HTTP sortants
- ZeroTier — réseau overlay type VPN
Propriétaires
- ngrok (complet, le plus connu) — payant au-delà de la version gratuite
- Cloudflare Tunnel lui-même est le service propriétaire, cloudflared est juste le client
- Tailscale Funnel (version commerciale)
- Loophole / localhost.run — tunnels éphémères
Sécurité
- Pas de port exposé : attaque DDoS/scan impossible directement
- QUIC + HTTP/2 chiffrés bout-en-bout
- mTLS entre cloudflared et l'edge Cloudflare
- Cloudflare Access : auth OIDC/SAML/mTLS en amont de vos apps
- IP whitelisting : restreindre l'accès à un pays, une équipe, etc.
- Audit logs : toutes les requêtes loggées dans le dashboard Cloudflare
⚠️ Lock-in Cloudflare : si Cloudflare bannit votre compte ou a une panne, vous perdez l'accès. Gardez un plan B (reverse proxy classique ou accès direct) en cas d'urgence.
