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

180 lines
7.2 KiB
Markdown

---
title: Nginx UI
created: 2026-06-06
updated: 2026-06-06
type: app
tags: [catalogue, reverse-proxy, nginx, gui, web, go, vue, auto-hebergement]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/0xJacky/nginx-ui]
---
# 🖥️ Nginx UI
> **Interface web pour gérer Nginx** sans toucher aux fichiers de conf : édition de vhosts, monitoring serveur, Let's Encrypt intégré, terminal web, support cluster. Le pendant moderne et plus complet de Nginx Proxy Manager, mais pour utilisateurs qui veulent **rester sur du Nginx pur**.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [nginxui.com](https://nginxui.com/) |
| **GitHub** | [0xJacky/nginx-ui](https://github.com/0xJacky/nginx-ui) |
| **License** | AGPL-3.0 |
| **Langage** | Go, Vue, TypeScript |
| **Étoiles GitHub** | 11.2k ⭐ |
| **Dernière MAJ** | 2026-06-04 |
| **Catégorie** | [[cat-reverse-proxy|Reverse Proxy]], [[cat-gui|GUI]] |
## 📝 Description
**Nginx UI** est une **GUI web complète** pour administrer Nginx. Au lieu d'éditer `nginx.conf` à la main, vous avez une interface moderne qui fait tout : édition de blocs, monitoring, backups auto, Let's Encrypt, terminal web, et même un assistant IA (ChatGPT / Deepseek).
**Caractéristiques** :
-**Éditeur visuel de configs** : `NgxConfigEditor` maison, colorisation syntaxique, autocomplete
-**Monitoring serveur** : CPU, RAM, load average, disque en temps réel
-**Let's Encrypt en 1 clic** : intégration Caddy-like, renouvellement automatique
-**Backup automatique** des configs avec versioning et restauration
-**Cluster management** : pousser une config sur plusieurs nodes Nginx d'un coup
-**Terminal web** : accès shell depuis l'UI
-**Log viewer** : logs Nginx en streaming
-**ChatGPT / Deepseek intégré** : assistant IA pour aider à écrire/optimiser les configs
-**MCP (Model Context Protocol)** : permet à des agents IA d'interagir avec Nginx UI
-**Multi-plateforme** : Linux, macOS, Windows, ARM, OpenWrt, FreeBSD
-**Single binary** (hors Docker) : pas de dépendances système
**Positionnement** : c'est l'**alternative moderne à Nginx Proxy Manager**. Comparaison rapide :
- **Nginx UI** : éditeur de conf en texte, plus technique, plus de fonctionnalités, IA, cluster
- **Nginx Proxy Manager** : formulaires web, plus grand public, plus simple pour les débutants, SSL facile
**Public cible** : admins qui veulent **la puissance de Nginx** (configs custom) avec **la commodité d'une GUI** et qui n'ont pas peur de voir la conf sous-jacente.
> ⚠️ **AGPL-3.0** : c'est une licence copyleft forte. Pour un usage personnel/self-hosted c'est OK, mais en entreprise il faut évaluer l'impact (toute modification doit être publiée).
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
nginx-ui:
image: uozi/nginx-ui:latest
container_name: nginx-ui
restart: unless-stopped
environment:
- TZ=Europe/Paris
volumes:
- ./nginx:/etc/nginx # Configs Nginx
- ./nginx-ui:/etc/nginx-ui # Données Nginx UI
- /var/www:/var/www # Sites statiques (optionnel)
- /var/run/docker.sock:/var/run/docker.sock # Optionnel : voir les conteneurs
ports:
- "8080:80" # Port UI par défaut
- "8443:443" # HTTPS optionnel
networks:
- proxy
networks:
proxy:
name: proxy
```
> ⚠️ **Au premier lancement**, le dossier `./nginx` doit être **vide** ou contenir uniquement les configs par défaut. Nginx UI va le prendre en main.
### Variante Traefik (reverse proxy devant Nginx UI)
```yaml
# docker-compose.yml
version: '3.8'
services:
traefik:
# ... votre Traefik habituel
nginx-ui:
image: uozi/nginx-ui:latest
restart: unless-stopped
environment:
- TZ=Europe/Paris
volumes:
- ./nginx:/etc/nginx
- ./nginx-ui:/etc/nginx-ui
- /var/run/docker.sock:/var/run/docker.sock
networks: [proxy]
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx-ui.rule=Host(`nginx.example.com`)"
- "traefik.http.routers.nginx-ui.entrypoints=websecure"
- "traefik.http.routers.nginx-ui.tls.certresolver=letsencrypt"
- "traefik.http.services.nginx-ui.loadbalancer.server.port=80"
```
### Option 2 : Binaire natif (Linux)
```bash
# Install/upgrade
bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ install
# Démarrer
nginx-ui -config app.ini
# Port par défaut : 9000
# HTTP Challenge port : 9180 (pour Let's Encrypt)
```
## ⚙️ Configuration Initiale
1. **Accéder à l'UI** : `http://IP_DU_SERVEUR:8080/install`
2. **Créer le compte admin** (premier démarrage uniquement)
3. **Explorer les sections** :
- **Dashboard** : monitoring serveur en temps réel
- **Configs** : `nginx.conf`, sites-available, sites-enabled
- **Sites** : éditeur visuel par site
- **SSL** : certificats Let's Encrypt
- **Logs** : streaming des logs Nginx
- **Terminal** : shell web (attention sécurité !)
4. **Activer Let's Encrypt** : onglet SSL → New Certificate → entrer le domaine
5. **Backup** : configurer la fréquence dans Settings → Backup
6. **Cluster** (avancé) : ajouter d'autres nodes Nginx pour push de config distant
> 💡 **Convention de fichiers** : Nginx UI suit le standard Debian : `sites-available/` avec symlinks dans `sites-enabled/`. Pour les autres distros, ajuster `nginx.conf` pour inclure ces dossiers.
## 🔄 Alternatives
### Open Source
- [[app-nginx-proxy-manager]] — Concurrent direct, plus simple, formulaires web
- [[app-caddy]] — Reverse proxy, pas de GUI mais Caddyfile très simple
- [[app-traefik]] — Reverse proxy moderne, dashboard mais orienté Docker
- **NginxProxyManager** (même projet, alias)
- **Ajenti** — GUI sysadmin généraliste (supporte Nginx)
### Propriétaires
- **Cloudflare** (CDN + reverse proxy managé)
- **Caddy Studio** (non-officiel)
- **RunCloud** / **Ploi.io** — serveurs web managés avec UI (Nginx + PHP)
## 🔐 Sécurité
- **2FA / TOTP** : recommandé, supporté nativement
- **HTTPS optionnel** : auto-signé par défaut, mettre un vrai cert
- **Terminal web** : désactivable, expose un shell (gros risque si exposé sans auth)
- **Cluster auth** : tokens dédiés pour les nodes distants
- **Pas d'auth par défaut sur le port 80** : **toujours mettre derrière un reverse proxy + auth** si exposé sur Internet
- **Logs d'audit** : toutes les actions admin loggées
> ⚠️ **Recommandation** : ne jamais exposer Nginx UI directement sur Internet. Toujours le mettre **derrière Traefik/Caddy** avec auth (Cloudflare Access, Authelia, Basic Auth).
## 📚 Ressources
- [Documentation officielle](https://nginxui.com/)
- [Démo en ligne](https://demo.nginxui.com/) — `admin` / `admin`
- [GitHub Releases](https://github.com/0xJacky/nginx-ui/releases)
- [Weblate (traductions)](https://weblate.nginxui.com/)
## Pages Liées
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
- [[app-nginx-proxy-manager]] — Concurrent direct
- [[app-caddy]] — Alternative plus simple
- [[app-traefik]] — Combinable en frontal
- [[comparatif-reverse-proxy]] — Comparaison détaillée