Initial vault setup
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
---
|
||||
title: Cloudflared
|
||||
created: 2026-06-06
|
||||
updated: 2026-06-06
|
||||
type: app
|
||||
tags: [catalogue, reverse-proxy, tunnel, cloudflare, zero-trust, go, docker, auto-hebergement]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/cloudflare/cloudflared]
|
||||
---
|
||||
# 🌐 Cloudflared
|
||||
|
||||
> **Client officiel Cloudflare Tunnel** : crée un tunnel sortant chiffré depuis votre serveur vers le réseau Cloudflare, vous permettant d'exposer des services **sans ouvrir de port** et **sans IP publique**. C'est la brique de base de Cloudflare Zero Trust.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [developers.cloudflare.com/cloudflare-one](https://developers.cloudflare.com/cloudflare-one/) |
|
||||
| **GitHub** | [cloudflare/cloudflared](https://github.com/cloudflare/cloudflared) |
|
||||
| **License** | Apache-2.0 |
|
||||
| **Langage** | Go |
|
||||
| **Étoiles GitHub** | 14.4k ⭐ |
|
||||
| **Dernière MAJ** | 2026-06-01 |
|
||||
| **Catégorie** | [[cat-reverse-proxy|Reverse Proxy]], [[cat-tunnel|Tunnel]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**Cloudflared** est le **daemon Cloudflare Tunnel** : un binaire léger qui établit une connexion sortante chiffrée (QUIC/HTTP2) vers le réseau Cloudflare, puis relaie le trafic entrant depuis Internet vers vos services locaux. **Vous n'ouvrez aucun port** sur votre box/firewall.
|
||||
|
||||
**Caractéristiques** :
|
||||
|
||||
- ✅ **Pas d'IP publique requise** : fonctionne derrière n'importe quel NAT/CGNAT
|
||||
- ✅ **Pas de ports ouverts** : connexion sortante uniquement (pas d'attaque entrante possible)
|
||||
- ✅ **HTTPS automatique** via les certificats edge de Cloudflare
|
||||
- ✅ **Protection DDoS** incluse (mitigation Cloudflare, gratuite en mode basic)
|
||||
- ✅ **Zero Trust Access** : authentification via Cloudflare Access (OAuth, OTP, mTLS, etc.) — **ajoute de l'auth devant n'importe quelle app**
|
||||
- ✅ **HTTP, HTTPS, WebSocket, TCP, SSH, RDP** : tunnel L4 et L7
|
||||
- ✅ **Multi-plateforme** : Linux, macOS, Windows, ARM, Docker, packages DEB/RPM, Homebrew
|
||||
- ✅ **Apache-2.0** : open source (le daemon), pas le service Cloudflare
|
||||
- ✅ **TryCloudflare** : tester sans même avoir un domaine
|
||||
|
||||
**Positionnement** : c'est **l'alternative moderne à un reverse proxy classique** (Nginx, Caddy, Traefik) pour les cas où :
|
||||
- Vous n'avez pas d'IP publique fixe
|
||||
- Vous êtes derrière un NAT/CGNAT (FAI type SFR Free Orange en France)
|
||||
- Vous voulez déléguer la gestion TLS/DDoS à Cloudflare
|
||||
- Vous voulez un tunnel simple sans exposition réseau
|
||||
|
||||
**Différence avec les reverse proxies classiques** :
|
||||
- **Caddy / Traefik / Nginx** : vous publiez un port (80/443), le client vous contacte directement
|
||||
- **Cloudflared** : le client ne peut pas vous contacter directement, il doit passer par Cloudflare. **Vous n'exposez rien** sur Internet.
|
||||
|
||||
**Public cible** : auto-hébergeurs derrière CGNAT/NAT, ou ceux qui veulent la protection DDoS/HTTPS de Cloudflare "gratos".
|
||||
|
||||
> ⚠️ **Point important** : Cloudflared vous rend **dépendant de Cloudflare** (lock-in). Si Cloudflare a une panne ou vous bannit, vos services sont inaccessibles. À mettre en balance avec les avantages.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Prérequis
|
||||
- Un **compte Cloudflare** (gratuit)
|
||||
- Un **domaine** géré par Cloudflare (DNS moved to their nameservers)
|
||||
- Le binaire `cloudflared` installé
|
||||
|
||||
### Option 1 : Docker Compose (recommandé)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
cloudflared:
|
||||
image: cloudflare/cloudflared:2026.5.2
|
||||
container_name: cloudflared
|
||||
restart: unless-stopped
|
||||
command: tunnel run
|
||||
environment:
|
||||
- TUNNEL_TOKEN=eyJhIjoiYWJj... # Token de votre tunnel
|
||||
networks:
|
||||
- proxy
|
||||
# Optionnel : pour des cas avancés
|
||||
# volumes:
|
||||
# - ./config:/home/nonroot/.cloudflared
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
name: proxy
|
||||
```
|
||||
|
||||
### Configuration du tunnel (UI Cloudflare, plus simple)
|
||||
|
||||
1. **Dashboard Cloudflare** → Zero Trust → Networks → Tunnels
|
||||
2. **Create a tunnel** → type `Cloudflared`
|
||||
3. **Copier le token** généré → le mettre dans `TUNNEL_TOKEN`
|
||||
4. **Ajouter une "Public Hostname"** :
|
||||
- Subdomain: `app`
|
||||
- Domain: `example.com`
|
||||
- Service: `http://app:8080` (ou `http://192.168.1.10:8080`)
|
||||
|
||||
### Configuration manuelle (config.yaml)
|
||||
|
||||
```yaml
|
||||
# /home/nonroot/.cloudflared/config.yml
|
||||
tunnel: abc123def456
|
||||
credentials-file: /home/nonroot/.cloudflared/abc123def456.json
|
||||
|
||||
ingress:
|
||||
- hostname: app.example.com
|
||||
service: http://app:8080
|
||||
- hostname: api.example.com
|
||||
service: http://api:3000
|
||||
- service: http_status:404 # Catch-all par défaut
|
||||
```
|
||||
|
||||
```bash
|
||||
# Lier le tunnel (une seule fois)
|
||||
cloudflared tunnel login
|
||||
cloudflared tunnel create mytunnel
|
||||
cloudflared tunnel route dns mytunnel app.example.com
|
||||
cloudflared tunnel run mytunnel
|
||||
```
|
||||
|
||||
### Variante : SSH over tunnel (L4)
|
||||
|
||||
```bash
|
||||
# Exposer SSH sans port ouvert
|
||||
cloudflared access ssh --hostname ssh.example.com --listener localhost:2222
|
||||
```
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Créer un compte Cloudflare** (gratuit) : [dash.cloudflare.com/sign-up](https://dash.cloudflare.com/sign-up)
|
||||
2. **Ajouter votre domaine** (gratuit) : changez les nameservers chez votre registrar
|
||||
3. **Installer cloudflared** : binaire, package, ou Docker
|
||||
4. **Créer un tunnel** dans Zero Trust → Networks → Tunnels
|
||||
5. **Mapper les hostnames** vers vos services locaux
|
||||
6. **(Optionnel) Activer Cloudflare Access** : ajouter une auth (email OTP, OAuth, mTLS) devant vos services
|
||||
7. **Tester** : `https://app.example.com` doit fonctionner sans port ouvert
|
||||
|
||||
> 💡 **TryCloudflare** : pour tester sans configurer votre domaine, `cloudflared tunnel --url http://localhost:8080` génère une URL temporaire `*.trycloudflare.com`.
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
- [[app-pangolin]] — Tunneling + reverse proxy + auth (alternative "indie" sans dépendance Cloudflare)
|
||||
- **BoringTunnel / FRP (Fast Reverse Proxy)** — tunnels TCP/HTTP self-hosted (sans CDN)
|
||||
- **WireGuard + VPS** — tunnel VPN pur, plus bas niveau
|
||||
- **Tailscale Funnel** — expose des services via votre mesh Tailscale
|
||||
- **ngrok** (version open source partielle) — tunnels HTTP sortants
|
||||
- **ZeroTier** — réseau overlay type VPN
|
||||
|
||||
### Propriétaires
|
||||
- **ngrok** (complet, le plus connu) — payant au-delà de la version gratuite
|
||||
- **Cloudflare Tunnel** lui-même est le service propriétaire, cloudflared est juste le client
|
||||
- **Tailscale Funnel** (version commerciale)
|
||||
- **Loophole / localhost.run** — tunnels éphémères
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- **Pas de port exposé** : attaque DDoS/scan impossible directement
|
||||
- **QUIC + HTTP/2** chiffrés bout-en-bout
|
||||
- **mTLS** entre cloudflared et l'edge Cloudflare
|
||||
- **Cloudflare Access** : auth OIDC/SAML/mTLS en amont de vos apps
|
||||
- **IP whitelisting** : restreindre l'accès à un pays, une équipe, etc.
|
||||
- **Audit logs** : toutes les requêtes loggées dans le dashboard Cloudflare
|
||||
|
||||
> ⚠️ **Lock-in Cloudflare** : si Cloudflare bannit votre compte ou a une panne, vous perdez l'accès. Gardez un plan B (reverse proxy classique ou accès direct) en cas d'urgence.
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Documentation officielle Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/)
|
||||
- [TryCloudflare (test sans domaine)](https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/do-more-with-tunnels/trycloudflare/)
|
||||
- [Cloudflare Zero Trust](https://one.dash.cloudflare.com/)
|
||||
- [Release notes](https://github.com/cloudflare/cloudflared/releases)
|
||||
|
||||
## Pages Liées
|
||||
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
|
||||
- [[app-pangolin]] — Alternative self-hosted (pas de lock-in Cloudflare)
|
||||
- [[app-caddy]] — Reverse proxy classique (alternative sans tunnel)
|
||||
- [[cat-security|Sécurité]] — Catégorie Sécurité
|
||||
- [[comparatif-reverse-proxy]] — Comparaison détaillée
|
||||
Reference in New Issue
Block a user