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