Retour aux outils
Dev ToolsIntermédiaireOpen sourceAuto-hébergeablev2026.6.0

Cloudflared

**Client officiel Cloudflare Tunnel** : crée un tunnel sortant chiffré depuis votre serveur vers le

MAJ 2026-06-14
Cloudflared
Site officiel Code source★ 14 513

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.

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 cloudflared installé

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)

  1. Dashboard Cloudflare → Zero Trust → Networks → Tunnels
  2. Create a tunnel → type Cloudflared
  3. Copier le token généré → le mettre dans TUNNEL_TOKEN
  4. Ajouter une "Public Hostname" :
    • Subdomain: app
    • Domain: example.com
    • Service: http://app:8080 (ou http://192.168.1.10:8080)

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

  1. Créer un compte Cloudflare (gratuit) : dash.cloudflare.com/sign-up
  2. Ajouter votre domaine (gratuit) : changez les nameservers chez votre registrar
  3. Installer cloudflared : binaire, package, ou Docker
  4. Créer un tunnel dans Zero Trust → Networks → Tunnels
  5. Mapper les hostnames vers vos services locaux
  6. (Optionnel) Activer Cloudflare Access : ajouter une auth (email OTP, OAuth, mTLS) devant vos services
  7. Tester : https://app.example.com doit fonctionner sans port ouvert

💡 TryCloudflare : pour tester sans configurer votre domaine, cloudflared tunnel --url http://localhost:8080 gé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.

Ressources