Exposer une application interne avec Cloudflare Tunnel

Comment exposer une application interne comme Uptime Kuma via Cloudflare Tunnel, sans IP publique ni port forwarding – depuis TrueNAS, Linux ou n’importe quel serveur.


Introduction

L’accès à des applications internes comme Uptime Kuma, Grafana, ou Portainer peut poser un défi lorsqu’on utilise une connexion 4G/5G ou un réseau NATé (CGNAT).
Le port forwarding est souvent impossible, notamment sur certaines box opérateurs.

👉 La solution : Cloudflare Tunnel (anciennement Argo Tunnel), un service gratuit qui crée un tunnel chiffré entre votre machine locale et l’infrastructure Cloudflare.
Aucune IP publique n’est nécessaire, et vous bénéficiez d’un accès HTTPS sécurisé, stable et intégré à votre domaine Cloudflare.


🔒 Qu’est-ce que Cloudflare Tunnel ?

Cloudflare Tunnel permet de publier une application locale vers Internet en toute sécurité.
Le client cloudflared crée une connexion sortante vers Cloudflare, et Cloudflare s’occupe de tout le reste :

  • Pas besoin d’ouvrir de port sur votre box.
  • Accès HTTPS automatique.
  • Compatible avec les sous-domaines Cloudflare (ex. kuma.mondomaine.fr).
  • Authentification possible via Access (option entreprise).

🧰 Pré-requis

  • Un serveur Linux ou TrueNAS (Debian-based).
  • Un compte Cloudflare et un domaine géré sur Cloudflare DNS.
  • Une application locale accessible (ex. http://localhost:3001 pour Uptime Kuma).

⚙️ Étape 1 : Installer cloudflared

Sur votre machine (exemple : TrueNAS SCALE, Debian, Ubuntu) :

cd ~
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared

Testez :

./cloudflared --version

🪪 Étape 2 : Authentifier votre client

Connectez cloudflared à votre compte Cloudflare :

./cloudflared login

Une page s’ouvre dans votre navigateur.
Sélectionnez votre domaine Cloudflare (ex. mondomaine.fr).

Un fichier de certificat cert.pem sera créé dans ~/.cloudflared/.


🏗️ Étape 3 : Créer un tunnel nommé

Créez un tunnel persistant nommé “uptimekuma” :

./cloudflared tunnel --origincert ~/.cloudflared/cert.pem create uptimekuma

Résultat attendu :

Tunnel credentials written to /home/admin/.cloudflared/<UUID>.json
Created tunnel uptimekuma with ID <UUID>

🌍 Étape 4 : Relier le tunnel à votre domaine Cloudflare

Associez votre tunnel à un sous-domaine (ex. kuma.mondomaine.fr) :

./cloudflared tunnel route dns uptimekuma kuma.mondomaine.fr

Vous verrez :

Added CNAME kuma.mondomaine.fr which will route to this tunnel

🧾 Étape 5 : Créer la configuration du tunnel

Fichier ~/.cloudflared/config.yml :

tunnel: uptimekuma
credentials-file: /home/admin/.cloudflared/<UUID>.json

ingress:
  - hostname: kuma.mondomaine.fr
    service: http://localhost:3001
  - service: http_status:404

Remplacez <UUID>.json par le vrai nom du fichier généré à l’étape 3.


⚙️ Étape 6 : Créer un service systemd (mode user-level)

Sur TrueNAS SCALE (ou Linux sans accès root), créez :

mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/cloudflared-uptimekuma.service

Contenu :

[Unit]
Description=Cloudflare Tunnel (uptimekuma)
After=network-online.target

[Service]
ExecStart=%h/cloudflared tunnel --config %h/.cloudflared/config.yml run
Restart=always
StandardOutput=append:%h/cloudflared.log
StandardError=append:%h/cloudflared.log

[Install]
WantedBy=default.target

Activez le linger pour permettre le démarrage automatique :

sudo loginctl enable-linger admin

Rechargez et démarrez :

systemctl --user daemon-reload
systemctl --user enable --now cloudflared-uptimekuma

Vérifiez :

systemctl --user status cloudflared-uptimekuma
tail -n 20 ~/cloudflared.log

✅ Résultat

  • Votre instance Uptime Kuma est désormais accessible via : https://kuma.mondomaine.fr
  • Le certificat SSL est automatiquement géré par Cloudflare.
  • Le tunnel se relance automatiquement à chaque redémarrage.
  • Aucun port n’a besoin d’être ouvert sur votre réseau.

🔒 Sécuriser l’accès avec Cloudflare Access (optionnel)

Cloudflare permet de restreindre l’accès à vos tunnels avec Cloudflare Zero Trust Access.
Vous pouvez, par exemple, exiger une authentification Google ou GitHub pour accéder à kuma.mondomaine.fr, sans aucune configuration côté serveur.

Activez cette protection depuis :
https://one.dash.cloudflare.com/


⚡ Bonus : affichage automatique du lien tunnel

Pour les tunnels temporaires trycloudflare.com, vous pouvez afficher l’URL avec :

grep -Eo 'https://[a-zA-Z0-9.-]+\.trycloudflare\.com' ~/cloudflared.log | tail -1

🧠 Avantages du Cloudflare Tunnel

AvantageDescription
🚫 Aucun port ouvertFonctionne derrière NAT, 4G, CGNAT
🔒 HTTPS automatiqueCertificat SSL Cloudflare inclus
🧩 DNS intégréGestion native via Cloudflare
🔁 RésilientAuto-reconnexion, tolérance réseau
🧑‍💼 SSO & WAFIntégration avec Cloudflare Access et Firewall
💰 GratuitPas de coût pour un usage personnel

🧰 Cas d’usage typiques

  • Exposer Uptime Kuma, Portainer, Home Assistant, Grafana sans IP publique.
  • Fournir un accès externe à un NAS TrueNAS sécurisé via HTTPS.
  • Déployer un site de monitoring interne accessible depuis l’extérieur.

🚀 Conclusion

Avec Cloudflare Tunnel, publier une application interne devient simple, sécurisé et gratuit.
Que vous soyez derrière une box 4G, un réseau universitaire ou une DMZ verrouillée, vous pouvez exposer vos services locaux sans jamais toucher à vos ports ni à votre pare-feu.

👉 En quelques commandes, vous transformez votre serveur TrueNAS ou Linux en une passerelle HTTPS fiable, directement intégrée à votre domaine Cloudflare.


Mots-clés SEO :
Cloudflare Tunnel, Argo Tunnel, Uptime Kuma, TrueNAS, DNS Cloudflare, tunnel HTTPS, reverse proxy Cloudflare, CGNAT, port forwarding 4G, héberger service local Cloudflare.