Changer le thème

Cloudflare Tunnel : accéder en sécurité à vos services locaux sans IP publique

Easton editorial illustration: edge-node constellation

Impossible d’accéder aux fichiers du NAS à la maison, impossible de partager un lien pour montrer un projet local — la cause est souvent la même : pas d’IP publique. Les opérateurs ne la fournissent pas, la facturent en option, ou imposent une IP dynamique avec DDNS peu fiable. frp, ngrok et autres solutions exigent un serveur cloud ou imposent des limites sévères en gratuit.

Cloudflare Tunnel est entièrement gratuit, sans IP publique ni serveur cloud, sans redirection de ports sur le routeur. HTTPS et protection DDoS Cloudflare sont inclus. Ce guide vous montre comment l’utiliser pour accéder à distance au NAS, présenter un projet local ou vous connecter en SSH — en environ 30 minutes.

I. Qu’est-ce que Cloudflare Tunnel ? Pourquoi le choisir ?

À quoi sert le tunnel vers le réseau local ?

En conditions normales, vos appareils à la maison sont sur un réseau privé (ex. 192.168.1.100). Ils communiquent entre eux, mais l’extérieur ne peut pas entrer. Pour accéder au NAS depuis le bureau ou un café, il faut un « pont » entre réseau local et Internet.

La solution classique est la redirection de ports sur le routeur. Mais cela suppose une IP publique — souvent absente sur la fibre résidentielle, ou bloquée derrière un NAT opérateur.

Le tunnel résout ce problème : exposer un service interne sans IP publique.

Principe de fonctionnement

Cloudflare Tunnel ne « perce pas de l’extérieur » : la connexion part de l’intérieur vers l’extérieur.

  1. Vous exécutez cloudflared (démon) sur un appareil du réseau local
  2. Il se connecte au réseau Cloudflare et établit un tunnel chiffré
  3. Quand quelqu’un visite votre domaine (ex. nas.yourdomain.com), la requête passe d’abord par le CDN Cloudflare
  4. Cloudflare transmet la requête à votre service via le tunnel
  5. La réponse repart par le même chemin

Votre service reste « invisible » : aucun port ouvert, pas d’IP publique, une seule connexion sortante chiffrée. C’est l’approche Zero Trust : aucune confiance par défaut, trafic authentifié et chiffré.

Métaphore : une ligne dédiée entre chez vous et Cloudflare ; seul vous l’utilisez, personne ne localise votre serveur.

Pourquoi j’ai choisi Cloudflare Tunnel

J’ai testé plusieurs solutions ; voici mon comparatif.

Comparé à frp :
frp est efficace, mais exige un serveur cloud avec IP publique — coût mensuel, configuration et maintenance. Cloudflare Tunnel supprime ce coût ; CDN et DDoS sont inclus.

Comparé à ngrok :
En gratuit, domaine aléatoire qui change au redémarrage et quota de trafic. Domaine personnalisé = payant. Cloudflare Tunnel : gratuit, domaine personnalisé, trafic illimité.

Comparé à Tailscale/ZeroTier (P2P) :
Réseau virtuel pour interconnecter vos appareils. Moins adapté pour publier un site public. Cloudflare Tunnel vise la publication de services vers l’extérieur.

En trois mots : gratuit, sécurisé, simple.

Limites : vitesse depuis la Chine modérée (nœuds surtout à l’étranger, latence et coupures occasionnelles). Pour un usage personnel non temps réel, largement suffisant.

II. Préparation : de quoi avez-vous besoin ?

1. Compte Cloudflare (gratuit)

Inscrivez-vous sur cloudflare.com. Si vous utilisez déjà DNS ou CDN Cloudflare, réutilisez le même compte.

2. Un nom de domaine

Seul poste payant. Le domaine doit être hébergé chez Cloudflare : le trafic est routé par nom (ex. nas.yourdomain.com).

Un .com ou .top coûte peu chez les registrars chinois ; pointez ensuite les serveurs DNS vers Cloudflare (tutoriel détaillé côté Cloudflare). Bonus : CDN et pare-feu Cloudflare inclus.

3. Plan Zero Trust gratuit

Cloudflare Tunnel fait partie de Zero Trust. Le plan gratuit suffit (jusqu’à 50 utilisateurs).

Étapes :

  1. Connexion à la console Cloudflare
  2. Menu Zero Trust
  3. Choisir le plan gratuit (Free Plan)
  4. Lier un moyen de paiement (carte ou PayPal)

Pas de débit en pratique : mesure anti-abus. Carte binaire internationale acceptée ; aucun prélèvement constaté de mon côté.

4. Un appareil sur le réseau local

Conditions :

  1. Connecté à Internet
  2. Allumé en permanence (ou quand vous en avez besoin)

Exemples : PC (Windows/Mac/Linux), NAS (Synology, QNAP avec Docker), Raspberry Pi, routeur logiciel. Personnellement, je fais tourner cloudflared en Docker sur le NAS.

5. Le service à exposer

Exemples :

  • Interface web du NAS (ports 5000, 5001)
  • Home Assistant (8123)
  • Blog ou site perso (80, 8080)
  • SSH (22)

Notez IP interne et port, ex. 192.168.1.100:5000.

Seul coût réel : le domaine. Le reste est gratuit.

III. Configuration pas à pas

Trois grandes étapes : créer le Tunnel, installer cloudflared, configurer le domaine. En pratique, c’est rapide.

Étape 1 : Créer un Tunnel dans la console Cloudflare

  1. Connexion → console Zero Trust
  2. NetworksConnectorsCloudflare Tunnels
  3. Create a tunnel
  4. Type de connecteur : Cloudflared (par défaut)
  5. Nommez le Tunnel (home-nas, dev-server, etc.)

Après Save tunnel, Cloudflare génère un Token.

Important : conservez ce Token — clé du Tunnel, nécessaire à l’installation de cloudflared. Copiez la longue chaîne affichée ou gardez la page ouverte.

Étape 2 : Installer cloudflared

Option 1 : Docker (recommandé)

Sur NAS ou serveur Linux :

docker run -d --restart=always \
  --name cloudflared \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run --token <VOTRE_TOKEN>

Remplacez <VOTRE_TOKEN>. --restart=always relance le conteneur après redémarrage.

Option 2 : Installation Linux directe

Ubuntu/Debian :

# Télécharger le paquet
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
# Installer
sudo dpkg -i cloudflared-linux-amd64.deb
# Lancer le Tunnel
sudo cloudflared service install <VOTRE_TOKEN>

CentOS/RHEL : remplacez .deb par .rpm.

Option 3 : Windows

MSI :
https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi

Installez, puis en administrateur (CMD) :

cloudflared.exe service install <VOTRE_TOKEN>

Option 4 : macOS

brew install cloudflared
cloudflared service install <VOTRE_TOKEN>

Retournez dans la console : statut HEALTHY = tunnel établi.

Étape 3 : Configurer le hostname public (Public Hostname)

Indiquez à Cloudflare où router le trafic, ex. nas.yourdomain.com192.168.1.100:5000.

  1. Onglet Public Hostname
  2. Add a public hostname
  3. Renseignez :
    • Subdomain : ex. nasnas.yourdomain.com
    • Domain : votre domaine (déjà chez Cloudflare)
    • Path : vide sauf besoin de préfixe (/api)
    • Type : HTTP
    • URL : http://IP_interne:port, ex. http://192.168.1.100:5000

Pourquoi HTTP et pas HTTPS côté service ? Cloudflare fournit HTTPS automatiquement :

  • Visiteur → Cloudflare : HTTPS (certificat auto)
  • Cloudflare → service interne : tunnel chiffré

Même sans HTTPS local, l’utilisateur est chiffré de bout en bout.

Save hostname : la config est active.

Étape 4 : Vérifier l’accès

Ouvrez https://nas.yourdomain.com. Le cadenas confirme le certificat.

Première fois : attendez quelques minutes (propagation DNS). En cas d’échec :

  1. Attendre 5-10 minutes
  2. Vérifier le statut HEALTHY
  3. Tester le service en local (http://192.168.1.100:5000)

Plusieurs hostnames par Tunnel

Exemple :

  • nas.mydomain.comhttp://192.168.1.100:5000 (NAS)
  • blog.mydomain.comhttp://192.168.1.100:8080 (blog)
  • ha.mydomain.comhttp://192.168.1.101:8123 (Home Assistant)

Un seul Tunnel pour plusieurs services.

IV. Configuration avancée et bonnes pratiques

Fichier de configuration pour plusieurs services

Pour beaucoup de services ou la gestion en version control, utilisez config.yml :

tunnel: <UUID_DU_TUNNEL>
credentials-file: /path/to/<UUID>.json
ingress:
  - hostname: nas.yourdomain.com
    service: http://192.168.1.100:5000
  - hostname: blog.yourdomain.com
    service: http://192.168.1.100:8080
  - hostname: ha.yourdomain.com
    service: http://192.168.1.101:8123
  - service: http_status:404

La règle http_status:404 en dernier est obligatoire (filet de sécurité).

Lancement :

cloudflared tunnel --config /path/to/config.yml run

Configuration plus claire ; versionnable en Git (ne commitez pas le Token).

SSH et RDP

Exemple SSH dans config.yml :

- hostname: ssh.yourdomain.com
  service: ssh://localhost:22

Sur le PC local :

# Configurer SSH
cat >> ~/.ssh/config << EOF
Host ssh.yourdomain.com
  ProxyCommand cloudflared access ssh --hostname %h
EOF
# Connexion
ssh [email protected]

RDP : même principe avec rdp://. Ports SSH/RDP non exposés sur Internet.

Renforcer avec Cloudflare Access

Sans Access, quiconque connaît l’URL peut accéder au service. Pour un NAS ou une admin, ajoutez une authentification.

  1. Zero Trust → AccessApplications
  2. Add an applicationSelf-hosted
  3. Renseignez :
    • Application name : ex. « My NAS »
    • Application domain : ex. nas.yourdomain.com
  4. Politique : liste blanche e-mail, OAuth Google/GitHub, MFA

Accès via la page de connexion Cloudflare avant le service. Gratuit — recommandé pour les services sensibles.

Performance et surveillance

Statut du Tunnel (console Zero Trust) :

  • HEALTHY ou DOWN
  • Statistiques de trafic
  • Nombre de clients

Si DOWN : vérifiez réseau local et processus cloudflared.

Logs (Docker) : docker logs cloudflared

Erreurs fréquentes :

  • Token invalide : recopiez-le
  • Échec de connexion : service interne down ?
  • Certificat : souvent résolu en quelques minutes

Mises à jour :

docker pull cloudflare/cloudflared:latest
docker restart cloudflared

Cloudflare garantit la compatibilité environ un an ; mettez à jour régulièrement.

V. Questions fréquentes et précautions

Vitesse et stabilité

Depuis la Chine, la vitesse n’est pas excellente.

Mesures personnelles :

  • Latence : 300-800 ms
  • Débit : 1-5 Mo/s selon l’heure et la région
  • Stabilité : coupures brèves occasionnelles

Causes : nœuds surtout à l’étranger, priorité moindre en gratuit aux heures de pointe.

Adapté : accès NAS occasionnel, démo de projet, SSH distant.

Peu adapté : streaming, jeux en ligne, gros transferts fréquents, production orientée Chine.

Alternatives si la vitesse compte : frp + cloud domestic, Tailscale P2P.

Sécurité

Cloudflare Tunnel est intrinsèquement sûr :

  • HTTPS bout en bout
  • Aucun port entrant
  • Zero Trust par défaut
  • Protection DDoS Cloudflare

Recommandations :

  1. Ne pas exposer les bases de données (MySQL, Redis, etc.)
  2. Access sur services sensibles (NAS, SSH, admin)
  3. Surveiller les logs
  4. Mettre à jour systèmes et applications internes

Bien plus sûr qu’un port ouvert sur Internet.

Limites du plan gratuit

  • Jusqu’à 50 utilisateurs
  • Trafic illimité
  • UDP non supporté (TCP OK)
  • HTTP/3 QUIC non disponible en Chine pour l’instant
  • Domaine obligatoire, hébergé chez Cloudflare

Alternatives

SolutionAvantagesInconvénientsCas d’usage
frpRapide, stableServeur cloud payantProduction, utilisateurs Chine
TailscaleP2P direct, rapideUsage privé, pas publication publiqueInterconnexion personnelle
ngrokSimpleGratuit limité, domaine custom payantDémo temporaire
DDNSTOÉquipe chinoise, bon débitLimite d’appareils en gratuitUtilisateurs Chine

Choisissez selon votre contexte ; aucune solution universelle.

Astuces pratiques

1. Sous-domaine court
nas.yourdomain.com se retient mieux que mynas.yourdomain.com.

2. Nommage cohérent

  • nas. — NAS
  • blog. — blog
  • dev. — environnement de dev
  • ssh. — SSH

3. Sauvegardez le Token
Dans un gestionnaire de mots de passe (1Password, Bitwarden). Perdu = recréer le Tunnel.

4. Alertes
Webhooks ou e-mails Cloudflare quand le Tunnel tombe (Settings dans Zero Trust).

Conclusion

Cloudflare Tunnel est une solution gratuite, sécurisée et simple de tunnel vers le réseau local, idéale pour développeurs solo et homelab. Pas d’IP publique, pas de serveur cloud, pas de redirection de ports — configuration en ~30 minutes.

Atouts :

  • Gratuit, trafic illimité
  • Architecture Zero Trust
  • HTTPS et DDoS inclus
  • HTTP, SSH, RDP, etc.
  • Plusieurs services par Tunnel

Limites :

  • Vitesse depuis la Chine modérée
  • Coupures occasionnelles
  • Domaine chez Cloudflare obligatoire
  • Pas d’UDP

Pour un accès personnel occasionnel ou un public à l’étranger, c’est largement suffisant. Production domestique ou exigence de latence faible : autres options.

Après une après-midi avec frp et un VPS, Tunnel configuré en dix minutes — vous comprendrez le sentiment « j’aurais dû commencer par là ».

Essayez maintenant ; questions en commentaire, je répondrai.

Configuration complète de Cloudflare Tunnel pour l’accès à distance

De la création du Tunnel au hostname public — tunnel gratuit en 30 minutes, HTTP/SSH/RDP

Estimated time: PT30M

  1. 1

    Step 1: Préparation : compte Cloudflare et domaine

    Inscription Cloudflare :
  2. 2

    Step 2: Créer un Tunnel dans la console Cloudflare

    Étapes :
  3. 3

    Step 3: Installer cloudflared

    Docker (recommandé) :
  4. 4

    Step 4: • Windows

    installer le MSI
  5. 5

    Step 5: • macOS

    brew install cloudflared
  6. 6

    Step 6: Configurer le hostname public (Public Hostname)

    Étapes :
  7. 7

    Step 7: • Subdomain

    ex. nas → nas.yourdomain.com
  8. 8

    Step 8: • Domain

    votre domaine (hébergé chez Cloudflare)
  9. 9

    Step 9: • Path

    vide sauf besoin de préfixe (/api)
  10. 10

    Step 10: • Type

    HTTP
  11. 11

    Step 11: • URL

    http://IP_interne:port
  12. 12

    Step 12: Ex.

    http://192.168.1.100:5000
  13. 13

    Step 13: • Visiteur → Cloudflare

    HTTPS (certificat auto)
  14. 14

    Step 14: • Cloudflare → service interne

    tunnel chiffré
  15. 15

    Step 15: Vérification et configuration avancée

    Vérifier l’accès :
  16. 16

    Step 16: • Première visite

    attendre quelques minutes (DNS)
  17. 17

    Step 17: • Connexion

FAQ

Quelle différence entre Cloudflare Tunnel, frp et ngrok ? Pourquoi le choisir ?
Comparé à frp (solution très répandue) :
• frp est pratique et simple à configurer, mais exige un serveur cloud avec IP publique
• Cela coûte plusieurs dizaines d'euros par mois, plus la configuration et la maintenance
• Cloudflare Tunnel supprime ce coût ; CDN et protection DDoS Cloudflare sont inclus gratuitement

Comparé à ngrok (très populaire à l'étranger) :
• La version gratuite attribue un domaine aléatoire qui change à chaque redémarrage, avec limite de trafic
• Pour un domaine personnalisé, il faut la version payante
• Cloudflare Tunnel est gratuit, domaine personnalisé illimité, trafic illimité

Comparé à Tailscale/ZeroTier (réseau P2P) :
• Ce sont des solutions de réseau virtuel, avec une logique différente
• Idéales pour l'interconnexion point à point (téléphone, PC, serveurs)
• Moins adaptées pour publier un site accessible à tous
• Cloudflare Tunnel convient mieux à la publication de services vers l'extérieur

En résumé, les atouts de Cloudflare Tunnel : gratuit, sécurisé, simple.
Comment fonctionne Cloudflare Tunnel ? Pourquoi est-il plus sûr ?
L'approche de Cloudflare Tunnel est ingénieuse : au lieu de « percer un trou de l'extérieur », la connexion part de l'intérieur vers l'extérieur.

Flux concret :
1) Vous exécutez cloudflared (démon) sur un appareil du réseau local
2) Il se connecte activement au réseau mondial Cloudflare et établit un tunnel chiffré
3) Quand quelqu'un accède à votre domaine (ex. nas.yourdomain.com), la requête arrive d'abord sur le CDN Cloudflare
4) Cloudflare transmet la requête à votre service interne via le tunnel chiffré
5) La réponse repart par le même tunnel

Votre service interne reste ainsi « invisible » de l'extérieur : aucun port ouvert, pas d'IP publique, une seule connexion chiffrée sortante.

Du point de vue sécurité, c'est l'approche Zero Trust : aucune connexion n'est faite confiance par défaut, tout le trafic est authentifié et chiffré.

Métaphore approximative : une ligne dédiée entre chez vous et Cloudflare, utilisable uniquement par vous ; personne ne voit où se trouve votre serveur.
Quelle vitesse depuis la Chine ? Quels cas d'usage ?
La vitesse depuis la Chine n'est pas excellente.

Mesures observées :
• Latence 300-800 ms (accès depuis la Chine)
• Débit de téléchargement souvent 1-5 Mo/s selon l'heure et la région
• Stabilité : coupures brèves occasionnelles, globalement correcte

Pourquoi ?
• Les nœuds CDN Cloudflare sont surtout à l'étranger ; le trafic chinois fait un détour
• Les utilisateurs gratuits ont une priorité relative plus basse, possible limitation aux heures de pointe

Cas adaptés :
• Accès occasionnel au NAS pour télécharger un fichier
• Montrer un projet personnel à des amis
• SSH à distance (la latence importe peu)

Cas peu adaptés :
• Streaming (saccades)
• Serveur de jeu (latence trop élevée)
• Transferts fréquents de gros fichiers
• Production orientée utilisateurs chinois

Si la vitesse est critique, envisagez frp + serveur cloud en Chine, ou Tailscale en P2P. Pour un accès occasionnel personnel ou un public à l'étranger, Cloudflare Tunnel suffit largement.
Comment configurer Cloudflare Tunnel ? Que faut-il préparer ?
Prérequis :

1) Compte Cloudflare (gratuit, inscription sur cloudflare.com)
2) Un nom de domaine (petit coût ; chez Alibaba Cloud, Tencent Cloud, un .com ou .top coûte quelques dizaines de yuan/an ; ensuite pointer les DNS vers Cloudflare)
3) Plan Zero Trust gratuit Cloudflare (console Cloudflare → Zero Trust → plan gratuit ; moyen de paiement requis mais sans débit)
4) Un appareil sur le réseau local (connecté à Internet, allumé en permanence ou quand nécessaire : PC, NAS, Raspberry Pi, etc.)
5) Le service interne à exposer (IP et port, ex. 192.168.1.100:5000)

Étapes :

1) Créer un Tunnel dans la console Cloudflare :
• Zero Trust → Networks → Connectors → Cloudflare Tunnels → Create a tunnel
• Récupérer le Token

2) Installer cloudflared (Docker le plus simple) :
docker run -d --restart=always --name cloudflared cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <VOTRE_TOKEN>

3) Configurer le hostname public :
• Onglet Public Hostname → Add a public hostname
• Renseigner Subdomain, Domain, URL, etc.

La configuration prend environ 30 minutes.
Quels protocoles sont supportés ? Comment configurer SSH et RDP ?
Cloudflare Tunnel supporte HTTP, SSH, RDP et d'autres protocoles.

Configuration HTTP :
• Dans Public Hostname, Type HTTP, URL http://IP_interne:port
• Même sans HTTPS côté service interne, Cloudflare fournit HTTPS ; le parcours utilisateur reste chiffré

Configuration SSH :
• Dans config.yml :
hostname: ssh.yourdomain.com
service: ssh://localhost:22
• Puis sur le PC local, configurer SSH :
cat >> ~/.ssh/config << EOF
Host ssh.yourdomain.com
ProxyCommand cloudflared access ssh --hostname %h
EOF
• Connexion : ssh [email protected]

RDP (bureau à distance Windows) : même principe avec rdp://.

Avantage : les ports SSH/RDP ne sont plus exposés sur Internet. Un Tunnel peut avoir plusieurs sous-domaines :
• nas.mydomain.com → http://192.168.1.100:5000
• blog.mydomain.com → http://192.168.1.100:8080
• ssh.mydomain.com → ssh://localhost:22
Comment renforcer la sécurité avec Cloudflare Access ? Quelles limites ?
Renforcer avec Cloudflare Access :
• Zero Trust → Access → Applications
• Add an application → Self-hosted
• Renseigner l'application (ex. My NAS, domaine nas.yourdomain.com)
• Politique d'authentification : liste blanche d'e-mails, OAuth Google/GitHub, MFA

Après configuration, l'accès passe par la page de connexion Cloudflare ; validation requise avant d'atteindre le service. Gratuit pour un usage personnel — fortement recommandé pour les services sensibles.

Limites :
• Plan gratuit Cloudflare :
- Jusqu'à 50 utilisateurs (largement suffisant en solo)
- Trafic illimité
- UDP non supporté (TCP OK)
- HTTP/3 QUIC non disponible en Chine pour l'instant
• Obligation : domaine hébergé chez Cloudflare ; sans cela, pas de Tunnel

Sécurité :
• Tunnel très sûr (HTTPS bout en bout, aucun port entrant, Zero Trust, protection DDoS Cloudflare)
• Recommandations :
- Ne pas exposer directement MySQL, Redis, etc.
- Ajouter Access sur NAS, SSH, interfaces d'administration
- Surveiller les logs, maintenir systèmes et logiciels à jour

9 min de lecture · Publié le: 30 nov. 2025 · Mis à jour le: 27 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog