Initial vault setup
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
---
|
||||
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é
|
||||
Reference in New Issue
Block a user