Files
2026-06-09 18:40:21 +02:00

165 lines
6.7 KiB
Markdown

---
title: DockFlare
created: 2026-06-06
updated: 2026-06-06
type: app
tags: [catalogue, reverse-proxy, cloudflare, tunnel, docker, dns, webui]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/ChrispyBacon-dev/DockFlare]
---
# ☁️ DockFlare
> **Gestionnaire de tunnels Cloudflare automatisé par labels Docker, avec WebUI de supervision**. Réputation : excellent complément à [[app-cloudflared]] pour les utilisateurs qui veulent piloter leurs tunnels depuis Docker.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [github.com/ChrispyBacon-dev/DockFlare](https://github.com/ChrispyBacon-dev/DockFlare) |
| **GitHub** | [ChrispyBacon-dev/DockFlare](https://github.com/ChrispyBacon-dev/DockFlare) |
| **License** | MIT |
| **Langage** | Python (Flask), JavaScript |
| **Étoiles GitHub** | 2.2k ⭐ |
| **Dernière MAJ** | 2026-06 |
| **Catégorie** | [[cat-reverse-proxy\|Reverse Proxy]], Tunnel, Cloudflare |
## 📝 Description
**DockFlare** est une **WebUI + orchestrateur** pour **Cloudflare Tunnels** qui automatise la création des ingress rules et des DNS CNAME à partir de **labels Docker** posés sur vos conteneurs. Au lieu de gérer manuellement votre `config.yml` de `cloudflared`, vous déclarez l'intention sur le conteneur et DockFlare réconcilie l'état réel sur l'API Cloudflare.
Le principe de fonctionnement : un daemon Python surveille les événements Docker (`docker events`), lit les labels `dockflare.enable=true`, `dockflare.hostname=app.example.com`, et **propage la configuration** sur l'API Cloudflare. La WebUI affiche l'état de tous les tunnels et de leurs ingress rules, avec édition manuelle possible.
**DockFlare ne remplace pas cloudflared** — il orchestre sa configuration. Vous avez toujours besoin d'un (ou plusieurs) agents `cloudflared` qui font passerelle entre Internet et votre réseau. DockFlare est à `cloudflared` ce que **Traefik** est à Nginx : un planificateur intelligent.
**Public cible** : utilisateurs qui veulent **la simplicité de Cloudflare Tunnel** (pas de port forwarding, IP masquée) **combinée à l'auto-discovery Docker** (à la Traefik). Idéal pour les setups derrière un NAT strict ou un CGNAT.
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel run
environment:
- TUNNEL_TOKEN=${TUNNEL_TOKEN}
networks:
- dockflare-net
depends_on:
- dockflare
dockflare:
image: alplat/dockflare:latest
container_name: dockflare
restart: unless-stopped
ports:
- "5000:5000" # WebUI
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- CF_API_TOKEN=${CF_API_TOKEN}
- CF_ACCOUNT_ID=${CF_ACCOUNT_ID}
- CF_TUNNEL_ID=${CF_TUNNEL_ID}
- TUNNEL_NAME=home-tunnel
- LABELS_MODE=secure
networks:
- dockflare-net
networks:
dockflare-net:
```
> 💡 **Variables d'environnement sensibles** : `TUNNEL_TOKEN` et `CF_API_TOKEN` doivent être dans un `.env` non versionné.
### Option 2 : Variante Traefik
DockFlare est **complémentaire** de Traefik dans certains setups : Traefik gère le reverse proxy interne, DockFlare gère l'exposition publique via Cloudflare. Les deux peuvent coexister.
```yaml
# Sur une app exposée à la fois en interne (Traefik) et en externe (Cloudflare)
services:
mon-app:
labels:
# Traefik (interne)
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`app.lan`)"
# DockFlare (externe via Cloudflare)
- "dockflare.enable=true"
- "dockflare.hostname=app.example.com"
- "dockflare.service=http://mon-app:80"
```
## ⚙️ Configuration Initiale
1. **Créer un tunnel Cloudflare** : `cloudflared tunnel create home-tunnel` puis récupérer le token
2. **Créer un token API Cloudflare** avec permissions `Zone:DNS:Edit` et `Account:Cloudflare Tunnel:Edit`
3. **Renseigner** `.env` avec `TUNNEL_TOKEN`, `CF_API_TOKEN`, `CF_ACCOUNT_ID`, `CF_TUNNEL_ID`
4. **Lancer** : `docker compose up -d`
5. **Accéder à la WebUI** : `http://localhost:5000`
6. **Ajouter des labels** sur les conteneurs à exposer
```yaml
# Exemple labels
labels:
- "dockflare.enable=true"
- "dockflare.hostname=photos.example.com"
- "dockflare.service=http://immich-server:2283"
- "dockflare.access.policy=authenticated" # optionnel
```
## 🔀 Alternatives
### Open Source
- **cloudflared** standalone (sans DockFlare) : config manuelle via `config.yml`
- [[app-traefik]] : auto-discovery Docker mais pas spécifique à Cloudflare
- [[app-pangolin]] : concurrent plus large (tunnel + auth + reverse proxy)
- [[app-caddy]] : peut s'intégrer à Cloudflare via le plugin DNS
### Comparaison DockFlare vs cloudflared standalone vs Traefik
| Critère | DockFlare | cloudflared seul | Traefik + Cloudflare |
| :--- | :--- | :--- | :--- |
| Auto-discovery Docker | ✅ | ❌ | ✅ |
| WebUI | ✅ | ❌ | ⚠️ Dashboard basique |
| Édition manuelle | ✅ | ✅ (config.yml) | ⚠️ |
| Tunnel Cloudflare | ✅ (orchestre) | ✅ (mote) | ⚠️ Plugin |
| Auth intégrée | ⚠️ Basique | ❌ | ⚠️ ForwardAuth |
| Multi-tunnel | ✅ | ⚠️ Config complexe | ⚠️ |
| Sans port forwarding | ✅ | ✅ | ⚠️ Selon config |
### Propriétaires (ce que DockFlare remplace)
- **Cloudflare Zero Trust dashboard** (en partie, pour la partie tunnel)
- **Ngrok Business** (en self-hosted)
## 🔒 Sécurité
-**Pas d'exposition de ports** sur l'IP publique (Cloudflare Tunnel)
-**IP d'origine masquée** derrière le réseau Cloudflare
-**WebUI protégée** par token / mot de passe configurable
-**Cloudflare Access** intégrable (auth Zero Trust)
- ⚠️ **Token Cloudflare = accès total au compte** : rotation régulière recommandée
- ⚠️ **Socket Docker monté** : envisager [[app-docker-socket-proxy]] en amont
- ⚠️ **Pas de rate-limiting natif** : compter sur Cloudflare côté edge
## 📚 Ressources
- [README GitHub](https://github.com/ChrispyBacon-dev/DockFlare)
- [Wiki - BasicUsageSingleDomain](https://github.com/ChrispyBacon-dev/DockFlare/wiki/BasicUsageSingleDomain.md)
- [Documentation Cloudflare Tunnels](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/)
- [Wiki selfh.st](https://selfh.st/apps/?tag=Reverse+Proxy)
## 🔗 Pages Liées
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
- [[app-traefik]] — Concurrent auto-discovery
- [[app-pangolin]] — Concurrent orienté tunnel + auth
- [[app-cloudflared]] — Composant sous-jacent
- [[comparatif-reverse-proxy]] — Comparaison détaillée
- [[securisation-home-lab]] — Sécurité