Guide pour exposer des services locaux en toute sécurité dans ServBay grâce à Cloudflare Tunnel
Cloudflare Tunnel (anciennement Argo Tunnel) est un service réseau Zero Trust proposé par Cloudflare, qui vous permet d’exposer en toute sécurité des services web, SSH ou d’autres applications en local sur internet, sans ouvrir de ports publics ni configurer des règles de pare-feu complexes. Ce guide détaille comment établir un tunnel sécurisé dans ServBay, un environnement de développement Web local puissant, en utilisant l’outil client cloudflared
, afin d’offrir un accès internet à vos services locaux ServBay.
Principaux avantages :
- Sécurité renforcée : Profitez de la sécurité du réseau Cloudflare, incluant protection DDoS, WAF (pare-feu applicatif), etc.
- Simplification du réseau : Plus besoin de gérer le transfert de ports, le NAT ou des règles de pare-feu.
- Modèle Zero Trust : Les connexions sont initiées depuis votre machine, réduisant la surface d’attaque.
- Intégration Cloudflare : Bénéficiez du cache Cloudflare, d’optimisations, d’analyses et autres services avancés.
Aperçu
ServBay propose aux développeurs un environnement local intégré et facile à gérer prenant en charge de nombreux langages (PHP, Node.js, Python, Go, Java, Ruby, Rust, etc.), bases de données (MySQL, PostgreSQL, MongoDB, Redis, etc.) et serveurs web (Caddy, Nginx, Apache). Par défaut, les sites ou applications développés dans ServBay ne sont accessibles que localement. Avec Cloudflare Tunnel, vous pouvez facilement partager l’avancement de vos développements avec des collègues ou exposer vos services locaux à des utilisateurs externes de façon temporaire ou permanente, tout en tirant parti de la performance et de la sécurité offertes par Cloudflare.
Principe technique
Le principe clé de Cloudflare Tunnel consiste à exécuter le client cloudflared
sur votre réseau local (la machine où tourne ServBay), lequel initie une ou plusieurs connexions cryptées utilisant le protocole QUIC vers un nœud d’edge Cloudflare proche. Ces connexions étant sortantes, il n’est donc pas nécessaire de configurer de règle entrante sur votre routeur ou pare-feu. Quand un utilisateur accède à votre service via le domaine associé au tunnel, le trafic arrive d’abord chez Cloudflare, puis est relayé via le tunnel sécurisé vers le client local cloudflared
, qui transmet les requêtes à votre service local ServBay (par exemple, un site disponible sur https://servbay.local
ou http://localhost:8000
). Les réponses sont renvoyées dans le même sens inverse.
Pré-requis
Avant de démarrer la configuration, assurez-vous de répondre aux conditions suivantes :
- ServBay installé et fonctionnel : Votre environnement ServBay doit être opérationnel et le site ou service à exposer doit être accessible localement (par exemple, via le domaine local par défaut
servbay.local
). - Compte Cloudflare : Vous possédez un compte Cloudflare.
- Nom de domaine géré chez Cloudflare : Vous disposez d’un nom de domaine ajouté à votre compte Cloudflare dont la gestion DNS est assurée par Cloudflare.
- Client
cloudflared
installé : Vous devez avoir installé l’outil en ligne de commandecloudflared
sur votre Mac (machine exécutant ServBay).
1. Installer le client cloudflared
Pour macOS, il est conseillé d’utiliser Homebrew. Si Homebrew n’est pas encore installé, référez-vous à la documentation officielle d’Homebrew.
Installation via Homebrew (recommandé) :
brew update
brew install cloudflared
2
Téléchargement manuel (pour architecture ARM d’Apple) :
# Télécharger le binaire pour macOS ARM (Apple Silicon)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# Déplacer le binaire dans le répertoire PATH du système
sudo mv cloudflared /usr/local/bin/
2
3
4
Vérification de l’installation : Une fois l’installation terminée, vérifiez que cloudflared
fonctionne via la commande suivante :
cloudflared --version
# Exemple de sortie : cloudflared version 2024.5.0 (built 2024-05-01)
2
Le numéro de version peut varier, l’important étant que vous obteniez une version en retour.
2. Se connecter à son compte Cloudflare
Dans le terminal, lancez l’autorisation avec votre compte Cloudflare :
cloudflared tunnel login
Cette commande ouvre automatiquement votre navigateur sur la page d’authentification Cloudflare. Sélectionnez le compte associé à votre nom de domaine, et autorisez l’accès à cloudflared
. En cas de succès, une confirmation s’affiche dans votre navigateur et le terminal indiquera l’emplacement du fichier cert.pem
généré dans le dossier de configuration (en général : ~/.cloudflared/
).
Configuration pratique du tunnel
Nous allons maintenant créer un nouveau tunnel et le configurer pour rediriger le trafic vers le service local exécuté sur ServBay.
Étapes principales de configuration
Créer le tunnel
Dans le terminal, créez un nouveau tunnel. Vous pouvez lui donner un nom significatif, par exemple
servbay-demo-tunnel
.bashcloudflared tunnel create servbay-demo-tunnel
1Après exécution, la commande affiche l’ID du tunnel (un UUID) ainsi que le chemin du fichier de credentials. Notez cet ID, par exemple :
a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
. Un fichier de credentials au format JSON sera généré dans~/.cloudflared/
, servant à authentifier le démarrage du tunnel. Conservez ce fichier en lieu sûr.Configurer l’enregistrement DNS
Pour que Cloudflare route le trafic du domaine souhaité vers votre tunnel, ajoutez une entrée DNS de type CNAME depuis Cloudflare. Utilisez la commande :
bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.votredomaine.com
1Remplacez
servbay-demo-tunnel
par le nom de votre tunnel, etservbay-demo.votredomaine.com
par le sous-domaine que vous souhaitez utiliser (vérifiez quevotredomaine.com
soit bien géré sur votre compte Cloudflare).Cette commande ajoute un CNAME dans la zone DNS de votre domaine chez Cloudflare pointant vers
<TunnelID>.cfargotunnel.com
.Rédiger le fichier de configuration
cloudflared
utilise un fichier YAML pour définir le comportement du tunnel : quels services locaux exposer, sur quels domaines, etc. Par défaut, ce fichier se trouve à :~/.cloudflared/config.yml
. Créez-le si besoin.Exemple de contenu pour
~/.cloudflared/config.yml
:yaml# tunnel : identifiant UUID obtenu lors de la création du tunnel tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file : chemin vers le fichier de credentials généré, dans ~/.cloudflared/ credentials-file: /Users/votreutilisateur/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # Remplacez par votre utilisateur/chemin exact ingress: # Règles de correspondance des requêtes entrantes - hostname: servbay-demo.votredomaine.com # Domaine externe, identique à l’enregistrement DNS service: https://servbay.local # Adresse du service local ServBay. ServBay fournit par défaut servbay.local avec SSL. originRequest: # noTLSVerify: true # Si votre service local utilise un certificat auto-signé (par ex : certificat « User CA » de ServBay), activez cette option pour ignorer la vérification TLS. # Si le site utilise un certificat valide (ex : Let’s Encrypt via ServBay), cette option n’est pas nécessaire. # Pour simplifier les développements locaux, il est courant d’utiliser un certificat « User CA » et noTLSVerify: true. - service: http_status:404 # Règle de repli : toutes les autres requêtes renvoient 404
1
2
3
4
5
6
7
8
9
10
11
12
13
14À noter :
- Remplacez les valeurs de
tunnel
etcredentials-file
par les vôtres (UUID et chemin réel). - Le
hostname
doit être identique au sous-domaine configuré à l’étape 2. service: https://servbay.local
correspond par défaut au site HTTPS local ServBay, avec un certificat SSL local généré par la User CA. Si votre service écoute sur un autre port ou à une autre adresse (par exemple une appli Node.js surhttp://localhost:3000
), adaptez la valeur.originRequest.noTLSVerify: true
sert à désactiver la vérification du certificat SSL local par cloudflared, à activer si vous utilisez des certificats auto-signés, sinon cela peut empêcher la connexion au service local. Si vous avez un certificat reconnu (ex : Let’s Encrypt), ce n’est pas nécessaire.
- Remplacez les valeurs de
Démarrage du service de tunnel
Une fois le fichier de configuration prêt, lancez le tunnel avec :
cloudflared tunnel run servbay-demo-tunnel
N’oubliez pas de remplacer servbay-demo-tunnel
par le nom du tunnel que vous avez créé.
cloudflared
va alors établir la connexion au réseau Cloudflare et maintenir le tunnel actif. Le terminal affichera l’état et les logs du tunnel. Tant que la commande tourne (au premier plan), le tunnel reste actif. Pour tourner en tâche de fond ou en service système (par exemple avec launchctl
sous macOS), référez-vous à la documentation spécifique—hors du périmètre de ce guide.
Vérification du service
Lorsque le tunnel fonctionne, vous pouvez tester l’accès à votre service ServBay depuis n’importe où via le domaine configuré.
Accédez au domaine configuré : Visitez dans votre navigateur l’URL définie lors de l’étape 2, par exemple :
https://servbay-demo.votredomaine.com
.Points à vérifier :
- Le site devrait s’afficher et présenter le même contenu que lorsque vous accédez localement à
https://servbay.local
. - La barre d’adresse du navigateur doit signaler la présence d’un certificat SSL valide. Celui-ci est émis par Cloudflare pour votre domaine (le certificat local de ServBay ne sert qu’au transit entre cloudflared et ServBay).
- Via les outils développeur du navigateur, vérifiez les entêtes HTTP : la présence de champs comme
CF-RAY
indique que le trafic passe bien par Cloudflare.
- Le site devrait s’afficher et présenter le même contenu que lorsque vous accédez localement à
Astuces avancées
Routage multi-services
Il est possible de définir plusieurs règles dans la section ingress
du config.yml
, pour router différents domaines vers différents services locaux ServBay (sites, API, etc.).
ingress:
- hostname: api.votredomaine.com
service: http://localhost:8080 # Par exemple, votre API écoute en local sur le port 8080
- hostname: app.votredomaine.com
service: https://servbay.local # Votre site principal
- service: http_status:404
2
3
4
5
6
Monitoring et logs du trafic
cloudflared
propose divers outils pour surveiller et diagnostiquer les tunnels :
- Consulter les métriques en temps réel :bash
cloudflared tunnel info servbay-demo-tunnel
1 - Voir les logs détaillés : Le tunnel lancé avec
cloudflared tunnel run
affiche les logs dans le terminal. Vous pouvez aussi personnaliser le niveau de log ou rediriger les sorties vers un fichier.
Intégrer Cloudflare Access
Pour renforcer la sécurité, vous pouvez intégrer Cloudflare Access afin d’ajouter des couches d’authentification et d’autorisation sur les services exposés via tunnel. Cloudflare Access, composant de la plateforme Zero Trust de Cloudflare, permet d’obtenir un contrôle d’accès plus granulaire et flexible qu’un VPN traditionnel. Cette configuration s’effectue généralement sur le dashboard Cloudflare.
Dépannage
Si vous rencontrez des problèmes, voici quelques symptômes courants et pistes de résolution :
Problème | Solution |
---|---|
502 Bad Gateway lors de l’accès au domaine | Vérifiez que le service ServBay est bien en ligne et accessible localement (ex : testez https://servbay.local ).Contrôlez l’adresse et le port spécifiés dans service du config.yml.Si le service utilise HTTPS sans avoir activé noTLSVerify: true , activez-le ou vérifiez le certificat. |
Erreur DNS, domaine injoignable | Confirmez que l’enregistrement CNAME est bien en place sur la zone DNS Cloudflare, pointant vers <TunnelID>.cfargotunnel.com . Utilisez dig ou nslookup pour tester la résolution. |
Erreur de certificat à l’accès au domaine | Si le certificat Cloudflare pose problème, vérifiez que hostname dans config.yml est identique au domaine consulté.Pour des erreurs TLS entre cloudflared et votre service local, vérifiez l’adresse du service local, et activez, si besoin, originRequest.noTLSVerify: true . |
Erreur à l’exécution de cloudflared tunnel run | Assurez-vous que le fichier ~/.cloudflared/config.yml existe et est valide (format YAML).Vérifiez les valeurs des clés tunnel et credentials-file .Assurez-vous que cloudflared a accès aux fichiers nécessaires. |
Lenteurs ou instabilités | Vérifiez que la connexion réseau locale est stable. Le tunnel utilise le protocole QUIC : vérifiez que votre environnement le prend bien en charge. Adaptez la configuration régionale Cloudflare ou contactez leur support en cas de besoin. |
Synthèse des avantages
Intégrer Cloudflare Tunnel à ServBay permet aux développeurs de :
- Partager en toute sécurité leur travail local : Montrer facilement un site ou une application en développement à des clients ou collègues.
- Tester des callbacks externes : Tester des systèmes ou webhooks nécessitant un accès depuis l’extérieur du réseau local.
- Profiter d’une sécurité de niveau entreprise : Bénéficier de la protection Cloudflare (DDoS, WAF, etc.) pour prémunir les services locaux.
- Simplifier la configuration réseau : Oublier la gestion fastidieuse des redirections de ports ou paramètres de pare-feu complexes.
- Tirer parti du réseau mondial Cloudflare : Optimiser la rapidité et la fiabilité des accès via le réseau Anycast.
Le puissant environnement de développement local offert par ServBay, associé à la sécurité de Cloudflare Tunnel, propose un workflow performant et sécurisé.
Conclusion
Ce guide vous a expliqué comment installer et configurer cloudflared
dans un environnement ServBay, créer et exploiter un Cloudflare Tunnel, et ainsi exposer vos services web locaux sur internet en toute sécurité. En suivant ces étapes, vous tirez pleinement parti de la prise en charge multi-techno de ServBay et de la sécurité offerte par Cloudflare Tunnel, optimisant ainsi vos processus de développement et de collaboration. N’oubliez pas que Cloudflare Tunnel fait partie de la plateforme Zero Trust : n’hésitez pas à explorer Cloudflare Access et d’autres fonctionnalités avancées pour aller plus loin sur les notions de contrôle d’accès et de sécurité.