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

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

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

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

🔗 Pages Liées