Files
2026-06-09 18:40:21 +02:00

7.6 KiB


title: Cloudflared created: 2026-06-06 updated: 2026-06-06 type: app tags: [catalogue, reverse-proxy, tunnel, cloudflare, zero-trust, go, docker, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/cloudflare/cloudflared]

🌐 Cloudflared

Client officiel Cloudflare Tunnel : crée un tunnel sortant chiffré depuis votre serveur vers le réseau Cloudflare, vous permettant d'exposer des services sans ouvrir de port et sans IP publique. C'est la brique de base de Cloudflare Zero Trust.

📋 Informations Générales

Champ Valeur
Site web developers.cloudflare.com/cloudflare-one
GitHub cloudflare/cloudflared
License Apache-2.0
Langage Go
Étoiles GitHub 14.4k
Dernière MAJ 2026-06-01
Catégorie [[cat-reverse-proxy

📝 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 Initiale

  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

Pages Liées