5.8 KiB
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 |
| GitHub | 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, 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é)
# 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
- Lancer :
docker compose up -d - Accéder à l'admin :
http://IP_SERVEUR:81 - Login par défaut :
- Email :
admin@example.com - Password :
changeme
- Email :
- Changer immédiatement le mot de passe admin
- Ajouter un Proxy Host :
- Domain :
app.example.com - Forward Hostname/IP :
app-internal - Forward Port :
8080 - Activer : Block Common Exploits, Websockets Support, HSTS
- Domain :
- SSL : onglet SSL →
Request a new SSL Certificate(Let's Encrypt)
# 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
- Documentation open-appsec sur NPMplus
- Discussion r/nginxproxymanager NPM vs NPMPlus
- Wiki selfh.st
🔗 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é