Initial vault setup
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
---
|
||||
title: Middleware Manager
|
||||
created: 2026-06-06
|
||||
updated: 2026-06-06
|
||||
type: app
|
||||
tags: [catalogue, reverse-proxy, traefik, middleware, ui, go, pangolin]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/hhftechnology/middleware-manager]
|
||||
---
|
||||
|
||||
# 🚦 Middleware Manager
|
||||
|
||||
> **Web UI pour attacher, configurer et orchestrer les middlewares Traefik sans toucher au YAML**. Édition visuelle des middlewares, gestion de services custom, installation de plugins, mTLS. Compatible **Pangolin** et **Traefik standalone**.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [docs.pangolin.net/.../middlewaremanager](https://docs.pangolin.net/self-host/community-guides/middlewaremanager) |
|
||||
| **GitHub** | [hhftechnology/middleware-manager](https://github.com/hhftechnology/middleware-manager) |
|
||||
| **License** | MIT |
|
||||
| **Langage** | Go (64.3 %), TypeScript (35.2 %) |
|
||||
| **Étoiles GitHub** | 498 ⭐ |
|
||||
| **Dernière MAJ** | 2026-03-24 (v4.5.0) |
|
||||
| **Catégorie** | [[cat-reverse-proxy|Reverse Proxy]], UI, Traefik, Middleware |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**Middleware Manager** (par HHF Technology, mêmes éditeurs que Traefik Log Dashboard) est un **microservice qui génère la configuration dynamique de Traefik** à partir d'une interface web. Il résout la douleur classique de Traefik : **les middlewares sont puissants mais syntaxiquement pénibles** à écrire en YAML/TOML/labels Docker. Middleware Manager offre une **UI avec formulaires** pour créer des middlewares (auth, rate-limit, headers, redirect, stripPrefix, etc.), les attacher à des ressources (routers, services), et **génère le dynamic config** consommé par Traefik.
|
||||
|
||||
**Caractéristiques principales** :
|
||||
|
||||
- ✅ **Découverte automatique** des ressources depuis **Pangolin** ou **Traefik** (API)
|
||||
- ✅ **Création de middlewares** : rate-limit, basicauth, headers, redirect, stripPrefix, retry, compress, ipWhiteList, etc.
|
||||
- ✅ **Templates de middlewares** réutilisables avec **priorités** configurables
|
||||
- ✅ **Custom services** : load balancer, weighted, mirroring, failover
|
||||
- ✅ **Plugin manager** : installer/retirer des plugins Traefik depuis l'UI (écrit dans le static config)
|
||||
- ✅ **mTLS** : activation et configuration via le plugin `mtlswhitelist` par ressource
|
||||
- ✅ **Explorer Traefik** : inspecter routers/services/middlewares en lecture
|
||||
- ✅ **Override sécurisé** : ne modifie pas les ressources existantes, ajoute des middlewares
|
||||
- ✅ **Compatible Traefik v2 et v3**
|
||||
|
||||
**Public cible** : utilisateurs de **Traefik** qui veulent **une UI à la Nginx Proxy Manager** mais en restant sur Traefik. Particulièrement adapté à **Pangolin** (le couple est documenté officiellement) pour ajouter de la finesse sur les middlewares sans passer par les labels Docker manuels.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Variante A : avec Pangolin (recommandé si vous utilisez Pangolin)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
middleware-manager:
|
||||
image: hhftechnology/middleware-manager:latest
|
||||
container_name: middleware-manager
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./data:/data # base SQLite
|
||||
- ./config/middleware-manager:/app/config # config interne
|
||||
- ./config/traefik:/etc/traefik # MÊME chemin que le static config Traefik
|
||||
environment:
|
||||
- ACTIVE_DATA_SOURCE=pangolin
|
||||
- PANGOLIN_API_URL=http://pangolin:3001/api/v1
|
||||
- TRAEFIK_STATIC_CONFIG_PATH=/etc/traefik/traefik_config.yml
|
||||
- TRAEFIK_CONF_DIR=/conf
|
||||
- DB_PATH=/data/middleware.db
|
||||
- PORT=3456
|
||||
ports:
|
||||
- "3456:3456"
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
```
|
||||
|
||||
### Variante B : avec Traefik standalone (sans Pangolin)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
middleware-manager:
|
||||
image: hhftechnology/middleware-manager:latest
|
||||
container_name: middleware-manager
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- ./traefik_config/static:/etc/traefik
|
||||
- ./config:/app/config
|
||||
environment:
|
||||
- ACTIVE_DATA_SOURCE=traefik
|
||||
- TRAEFIK_API_URL=http://traefik:8080
|
||||
- TRAEFIK_CONF_DIR=/conf
|
||||
- TRAEFIK_STATIC_CONFIG_PATH=/etc/traefik/traefik.yml
|
||||
- DB_PATH=/data/middleware.db
|
||||
- PORT=3456
|
||||
ports:
|
||||
- "3456:3456"
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
```
|
||||
|
||||
### Variante Traefik (exposer l'UI derrière Traefik)
|
||||
|
||||
```yaml
|
||||
# ajout au bloc ci-dessus
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=proxy"
|
||||
- "traefik.http.routers.mm.rule=Host(`traefik-ui.example.com`)"
|
||||
- "traefik.http.routers.mm.entrypoints=websecure"
|
||||
- "traefik.http.routers.mm.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.mm.loadbalancer.server.port=3456"
|
||||
- "traefik.http.routers.mm.middlewares=auth@docker"
|
||||
```
|
||||
|
||||
### Configuration Traefik (statique) pour autoriser Middleware Manager
|
||||
|
||||
```yaml
|
||||
# traefik.yml (statique)
|
||||
providers:
|
||||
http:
|
||||
endpoint: "http://middleware-manager:3456/api/v1/traefik-config"
|
||||
pollInterval: 5s
|
||||
```
|
||||
|
||||
> ⚠️ **Important** : ce provider http **remplace** celui de Pangolin s'il existait. Il faut que `middleware-manager` soit en mesure de **lire et écrire** la config dynamique.
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Lancer le conteneur** et vérifier la connexion à l'API Traefik/Pangolin (logs).
|
||||
2. **Accéder à l'UI** : `http://YOUR_HOST:3456` (ou `https://traefik-ui.example.com`).
|
||||
3. **Créer un compte admin** depuis l'UI (1er démarrage).
|
||||
4. **Importer les middlewares existants** (découverte automatique, ou créer depuis zéro).
|
||||
5. **Créer un middleware** : menu "Middlewares" → type (rate-limit, headers, etc.) → paramètres.
|
||||
6. **L'attacher à une ressource** : menu "Resources" → choisir le router → ajouter le middleware.
|
||||
7. **Vérifier** dans le dashboard Traefik (`:8080/api/http/routers`) que le middleware est appliqué.
|
||||
|
||||
> 💡 **Astuce** : en cas de problème de résolution DNS du conteneur `middleware-manager`, utiliser son IP directement :
|
||||
> `docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' middleware-manager`
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
|
||||
- [[app-traefik]] — UI native Traefik (lecture seule, basique)
|
||||
- [[app-nginx-proxy-manager]] — UI complète, mais pour Nginx (pas Traefik)
|
||||
- [[app-pangolin]] — UI pour la gestion tunnels/resources (couche au-dessus de Traefik)
|
||||
- **Traefik Pilot** (abandonné)
|
||||
- **Kopia**, **Heimdall** — dashboards mais pas de gestion de config
|
||||
- Édition manuelle YAML + GitOps (ArgoCD, Flux) — l'approche "pro"
|
||||
|
||||
### Propriétaires (ce que Middleware Manager remplace)
|
||||
|
||||
- **Traefik Enterprise / Maesh** (payant, abonné)
|
||||
- **Cloudflare Workers + KV** (config-as-code)
|
||||
- **Kong Manager** (édition EE)
|
||||
- **Ambassador Edge Stack** (config managée)
|
||||
|
||||
### Comparaison rapide
|
||||
|
||||
| Critère | Middleware Manager | Nginx Proxy Manager | Traefik natif | Pangolin |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| Reverse proxy | Traefik | Nginx | Traefik | Traefik (managé) |
|
||||
| Middlewares UI | ✅ Complet | Partiel (basicauth, custom) | ❌ (YAML) | Limité (auth, resources) |
|
||||
| Plugins Traefik | ✅ Install UI | ❌ | ❌ | ❌ |
|
||||
| mTLS UI | ✅ | ❌ | ❌ | ❌ |
|
||||
| Custom services | ✅ | ❌ | ✅ (YAML) | ❌ |
|
||||
| License | MIT | MIT | MIT | Custom |
|
||||
|
||||
**Verdict** : **Middleware Manager** pour les power users Traefik qui veulent **une vraie UI** sans abandonner Traefik. **Nginx Proxy Manager** pour qui veut la simplicité Nginx. **Pangolin** pour qui veut une couche d'orchestration tunnels + auth au-dessus de Traefik (peut coexister avec Middleware Manager).
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- **Auth sur l'UI Middleware Manager** : OBLIGATOIRE, ne jamais l'exposer sans
|
||||
- **Permissions sur `./config/traefik`** : le conteneur doit pouvoir **lire ET écrire** le static config (pour les plugins)
|
||||
- **DB SQLite** dans `./data` : `chmod 700`, sauvegarder régulièrement
|
||||
- **API key API Traefik** : ne pas exposer le port 8080 Traefik en direct (uniquement via Traefik lui-même)
|
||||
- ⚠️ **Override middleware** : mal configuré, peut casser l'accès à un service → **tester toujours sur un service non-critique d'abord**
|
||||
- **HTTPS obligatoire** en production (Traefik devant) : l'UI manipule des secrets
|
||||
- **Pas d'audit log** natif sur les modifications : activer les logs Traefik (au moins les access logs)
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Documentation officielle Pangolin](https://docs.pangolin.net/self-host/community-guides/middlewaremanager)
|
||||
- [GitHub HHF Technology](https://github.com/hhftechnology/middleware-manager)
|
||||
- [Discussions / release notes](https://github.com/hhftechnology/middleware-manager/discussions)
|
||||
- [Forum HHF Technology](https://forum.hhf.technology/tag/middleware-manager/315)
|
||||
- [Docker Hub](https://hub.docker.com/r/hhftechnology/middleware-manager)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
|
||||
- [[app-traefik]] — Le reverse proxy sous-jacent
|
||||
- [[app-pangolin]] — Partenaire naturel (Pangolin + Middleware Manager)
|
||||
- [[app-nginx-proxy-manager]] — Concurrente UI pour Nginx
|
||||
- [[comparatif-reverse-proxy]] — Comparaison détaillée
|
||||
- [[middleware-traefik]] — Concepts middlewares
|
||||
Reference in New Issue
Block a user