--- title: NPMplus created: 2026-06-06 updated: 2026-06-06 type: app tags: [catalogue, reverse-proxy, nginx, lets-encrypt, webui, fork] confidence: medium contested: true sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/ZoeyVid/NPMplus] --- # 🟢 NPMplus > **Fork enrichi de Nginx Proxy Manager, avec support Fail2ban, ModSecurity, CrowdSec et users locaux intégrés**. Réputation : ajoute de vraies briques sécurité manquantes à NPM, mais avec un tradeoff sur la stabilité. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | [github.com/ZoeyVid/NPMplus](https://github.com/ZoeyVid/NPMplus) | | **GitHub** | [ZoeyVid/NPMplus](https://github.com/ZoeyVid/NPMplus) | | **License** | AGPL-3.0 (fork de MIT) | | **Langage** | JavaScript (Node.js), Lua, Shell | | **Étoiles GitHub** | 2.1k ⭐ | | **Dernière MAJ** | 2026-05 | | **Catégorie** | [[cat-reverse-proxy\|Reverse Proxy]], Web Server | ## 📝 Description **NPMplus** (anciennement maintenu par `zhouhankui`, désormais par `ZoeyVid`) est un **fork actif de [[app-nginx-proxy-manager]]** qui répond à une critique récurrente du projet original : NPM est pratique pour la GUI, mais **pauvre en sécurité** (pas de WAF, pas de fail2ban, pas de protection brute-force sur l'admin). NPMplus embarque nativement : - **Fail2ban** (avec jails SSH, Nginx auth, admin GUI) - **ModSecurity WAF** avec l'**OWASP Core Rule Set** - **CrowdSec** (bouncer intégré) - **Sauvegardes automatisées** vers S3/Backblaze - **LDAP / OAuth2** pour les users (pas uniquement admin local) - **API étendue** au-delà de ce qu'offre NPM upstream Le tradeoff est connu : NPMplus **divergence forte** vis-à-vis de l'upstream NPM, ce qui complique la mise à jour. Le repo Reddit `r/nginxproxymanager` note que la stabilité est parfois en retrait par rapport au NPM officiel. À évaluer selon le besoin. **Public cible** : utilisateurs qui veulent **la GUI de NPM** mais qui ne veulent **pas empiler 4 conteneurs sécurité à côté** (Fail2ban séparé, CrowdSec séparé, WAF séparé, etc.). ## 🚀 Installation ### Option 1 : Docker Compose (recommandé) ```yaml # docker-compose.yml version: '3.8' services: npmplus: image: zoeyvid/npmplus:latest container_name: npmplus restart: unless-stopped ports: - "80:80" - "443:443" - "81:81" # WebUI admin volumes: - npmplus_data:/data - npmplus_letsencrypt:/etc/letsencrypt environment: - DISABLE_IPV6=true - NPMPLUS_ENABLE_FAIL2BAN=true - NPMPLUS_ENABLE_MODSEC=true - NPMPLUS_MODSEC_RULESET=owasp networks: - proxy networks: proxy: external: true volumes: npmplus_data: npmplus_letsencrypt: ``` ### Option 2 : Variante Traefik (déconseillée) NPMplus peut coexister avec Traefik dans une architecture à plusieurs niveaux (Traefik en frontal, NPMplus en interne pour un sous-domaine spécifique), mais c'est inhabituel. Le plus courant est de **remplacer Traefik par NPMplus** pour profiter de la GUI. ## ⚙️ Configuration Initiale 1. **Lancer** : `docker compose up -d` 2. **Accéder à l'admin** : `http://IP_SERVEUR:81` 3. **Login par défaut** : - Email : `admin@example.com` - Password : `changeme` 4. **Changer immédiatement** le mot de passe admin 5. **Ajouter un Proxy Host** : - Domain : `app.example.com` - Forward Hostname/IP : `app-internal` - Forward Port : `8080` - Activer : **Block Common Exploits**, **Websockets Support**, **HSTS** 6. **SSL** : onglet SSL → `Request a new SSL Certificate` (Let's Encrypt) ```bash # Vérifier que Fail2ban tourne docker exec npmplus fail2ban-client status # Vérifier que ModSecurity est actif docker exec npmplus nginx -T 2>/dev/null | grep -i modsecurity ``` ## 🔀 Alternatives ### Open Source - [[app-nginx-proxy-manager]] — Upstream stable, moins de features sécurité - [[app-swag]] — LinuxServer SWAG, plus mature, pas de GUI - [[app-caddy]] — Pas de GUI, mais HTTPS automatique - [[app-caddymanager]] — WebUI pour Caddy (plus simple) ### Comparaison NPMplus vs NPM vs SWAG | Critère | NPMplus | NPM | SWAG | | :--- | :--- | :--- | :--- | | Interface web | ✅ | ✅ | ❌ | | Fail2ban | ✅ Intégré | ❌ | ✅ Intégré | | ModSecurity WAF | ✅ | ❌ | ⚠️ Config manuelle | | CrowdSec | ✅ | ❌ | ⚠️ | | Stabilité | ⚠️ (fork) | ✅ Upstream | ✅ Très mature | | Mises à jour upstream | ❌ Divergé | ✅ | ✅ | | Backup S3 | ✅ | ❌ | ⚠️ Scripts | | Users LDAP/OAuth | ✅ | ❌ | ❌ | ### Propriétaires (ce que NPMplus remplace) - **Cloudflare Access** (en partie) - **Sucuri WAF** (en self-hosted) - **ModSecurity + Nginx + Certbot** (config manuelle) ## 🔒 Sécurité - ✅ **Fail2ban préinstallé** avec jails prêtes à l'emploi - ✅ **ModSecurity OWASP CRS** activable en un toggle - ✅ **CrowdSec** intégrable - ✅ **HTTPS forcé** + HSTS + certificats auto - ⚠️ **GUI admin exposée** : changer le port par défaut (81) et mettre derrière une auth - ⚠️ **Docker socket** : NPMplus ne le monte pas directement (bon point) - ⚠️ **Pas d'audit de sécurité formel** du fork (communauté uniquement) - ⚠️ **Mises à jour moins fréquentes** que l'upstream NPM ## 📚 Ressources - [README GitHub](https://github.com/ZoeyVid/NPMplus) - [Documentation open-appsec sur NPMplus](https://docs.openappsec.io/integrations/npmplus) - [Discussion r/nginxproxymanager NPM vs NPMPlus](https://www.reddit.com/r/nginxproxymanager/comments/1j6sm95/whats_the_consensus_npm_or_npmplus/) - [Wiki selfh.st](https://selfh.st/apps/?tag=Reverse+Proxy) ## 🔗 Pages Liées - [[cat-reverse-proxy]] — Catégorie Reverse Proxy - [[app-nginx-proxy-manager]] — Upstream - [[app-swag]] — Concurrent LinuxServer - [[app-caddy]] — Alternative simple - [[comparatif-reverse-proxy]] — Comparaison détaillée - [[securisation-home-lab]] — Sécurité