Auto-héberger votre site avec Cloudflare Tunnel sur Ubuntu

Introduction
Dans cet article, nous allons transformer un PC sous Ubuntu 24.04 en serveur web auto-hébergé, exposé sur Internet avec Cloudflare Tunnel. Aucun besoin d'ouvrir les ports du routeur.
Prérequis
- Un PC sous Ubuntu 24.04
- Un nom de domaine géré par Cloudflare
- Un compte Cloudflare gratuit
- Votre site HTML dans
/var/www/your-site/index.html
Étape 1 - Installer Cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared-linux-amd64.deb
Étape 2 - Connecter votre compte Cloudflare
cloudflared tunnel login
Un onglet s'ouvre dans le navigateur pour autoriser votre machine Ubuntu à utiliser votre compte Cloudflare.
Étape 3 - Créer un tunnel Cloudflare
cloudflared tunnel create your-site-tunnel
Cette commande crée un fichier de credentials dans ~/.cloudflared/.
Étape 4 - Lancer un serveur local temporaire
cd /var/www/your-site python3 -m http.server 3000
Votre site est alors disponible localement sur http://localhost:3000.
Étape 5 - Créer le fichier de configuration
sudo nano /etc/cloudflared/config.yml
Contenu du fichier :
tunnel: your-site-tunnel credentials-file: /home/<your_user>/.cloudflared/<UUID>.json ingress: - hostname: your-site.com service: http://localhost:3000 - service: http_status://404
Étape 6 - Ajouter automatiquement le DNS
cloudflared tunnel route dns your-site-tunnel your-site.com
Cette commande crée le CNAME vers votre tunnel Cloudflare.
Étape 7 - Démarrer le tunnel
cloudflared tunnel run your-site-tunnel
Cloudflare redirige alors le trafic de https://your-site.com vers votre serveur local.
Étape 8 - Tester en ligne
Ouvrez ensuite :
https://your-site.com
Votre site HTML doit maintenant apparaître sans configuration de routeur ni port forwarding.
Conclusion
Cloudflare Tunnel est une solution très pratique pour exposer un site local, une API ou un dashboard de manière simple et sécurisée. Une fois le tunnel prêt, vous pouvez aussi y connecter plus tard une application Next.js, Node.js ou Docker.