Initial vault setup
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
---
|
||||
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é
|
||||
Reference in New Issue
Block a user