Cloudflare Tunnel (cloudflared) permet d’exposer un service hébergé sur votre VPS, dans un réseau privé, ou même sur votre laptop, sans IP publique ni port ouvert. Le service appelle Cloudflare en sortie et reçoit le trafic public via ce tunnel. Sécurité maximum, zero attack surface côté origin.
Voir notre guide Cloudflare.
Pourquoi Tunnel
- Pas d’IP publique exposée
- Pas de port 80/443 ouvert sur firewall
- Pas de besoin de DDNS pour IP dynamique (laptop, home server)
- Authentification Cloudflare Access (Zero Trust) facilement intégrable
- Gratuit dans le plan Free
Étape 1 — Installer cloudflared
# Linux
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
# macOS
brew install cloudflared
# Vérifier
cloudflared --version
Étape 2 — Login et créer un tunnel
# Login (ouvre le navigateur)
cloudflared tunnel login
# Créer un tunnel
cloudflared tunnel create mon-tunnel
# > Tunnel credentials saved in /home/user/.cloudflared/UUID.json
# Lister
cloudflared tunnel list
Étape 3 — Configurer ingress
# ~/.cloudflared/config.yml
tunnel: UUID
credentials-file: /home/user/.cloudflared/UUID.json
ingress:
- hostname: app.exemple.sn
service: http://localhost:3000
- hostname: db-admin.exemple.sn
service: http://localhost:8080
- service: http_status:404
Étape 4 — Route DNS et lancer
# Créer les CNAME automatiquement
cloudflared tunnel route dns mon-tunnel app.exemple.sn
cloudflared tunnel route dns mon-tunnel db-admin.exemple.sn
# Démarrer
cloudflared tunnel run mon-tunnel
# Service systemd
sudo cloudflared service install
sudo systemctl enable --now cloudflared
Étape 5 — Cloudflare Access (auth zero-trust)
Pour protéger un service interne, ajouter Cloudflare Access :
- Zero Trust dashboard → Applications → Add Application → Self-hosted
- Application domain :
db-admin.exemple.sn - Identity provider : Google, GitHub, OTP email, etc.
- Policy : « Allow only emails ending @exemple.sn »
Désormais, tout accès à db-admin.exemple.sn passe par auth Cloudflare. Plus besoin de VPN.
Cas d’usage typique
- Exposer Forgejo / NocoDB / Uptime Kuma sans port public
- Accéder à un home lab depuis l’extérieur
- Démos client sécurisées
- Accès admin à un VPS sans port 22 ouvert (alternative Tailscale SSH)