Files
wiki/Catalogue-Self-Hosted/apps/app-middleware-manager.md
T
2026-06-09 18:40:21 +02:00

206 lines
9.1 KiB
Markdown

---
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