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

180 lines
6.3 KiB
Markdown

---
title: CaddyManager
created: 2026-06-06
updated: 2026-06-06
type: app
tags: [catalogue, reverse-proxy, caddy, webui, multi-instance, alpha]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/caddymanager/caddymanager]
---
# 🖱️ CaddyManager
> **Interface web pour gérer plusieurs instances Caddy, construite sur la stack MEVN**. Réputation : projet alpha prometteur qui comble un manque évident de [[app-caddy]] (l'absence de GUI native).
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [github.com/caddymanager/caddymanager](https://github.com/caddymanager/caddymanager) |
| **GitHub** | [caddymanager/caddymanager](https://github.com/caddymanager/caddymanager) |
| **License** | AGPL-3.0 |
| **Langage** | JavaScript (Vue.js), Node.js, MongoDB optionnel |
| **Étoiles GitHub** | 1.1k ⭐ |
| **Dernière MAJ** | 2026-02 |
| **Catégorie** | [[cat-reverse-proxy\|Reverse Proxy]], Web UI |
## 📝 Description
**CaddyManager** est une **WebUI** construite sur la stack **MEVN** (MongoDB / Express / Vue / Node) qui permet de **gérer à distance plusieurs serveurs Caddy** depuis une interface unique. Le projet répond à un reproche fréquent fait à [[app-caddy]] : sa configuration via `Caddyfile` est simple, mais **pas d'interface graphique** pour les administrateurs qui ne veulent pas toucher aux fichiers.
Avec CaddyManager, on peut :
- **Voir l'état** de toutes les instances Caddy enregistrées (CPU, RAM, uptime)
- **Modifier le Caddyfile** via un éditeur web avec validation
- **Hot-reload** des configurations à distance
- **Gérer les certificats** Let's Encrypt
- **Logs centralisés** (avec tail en live)
- **Authentification** multi-utilisateurs
Le projet supporte **SQLite** (par défaut, simple) ou **MongoDB** (pour des déploiements plus lourds). **Statut alpha** clairement annoncé : à utiliser en test, pas en prod critique sans backup.
**Public cible** : administrateurs qui gèrent **plusieurs instances Caddy** (multi-sites, multi-VPS) et veulent **une console unique**. Concurrent direct de [[app-nginx-proxy-manager]] (GUI pour Nginx) et [[app-caddymanager]] (lui-même).
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
caddymanager:
image: caddymanager/caddymanager:latest
container_name: caddymanager
restart: unless-stopped
ports:
- "5000:5000" # WebUI
environment:
- CADDYMANAGER_DB=sqlite # ou mongodb
- CADDYMANAGER_SECRET=change-me-long-random-string
- MONGO_URI=mongodb://mongo:27017/caddymanager
volumes:
- caddymanager_data:/app/data
depends_on:
- mongo
networks:
- proxy
# Optionnel : MongoDB (sinon SQLite par défaut)
mongo:
image: mongo:7
container_name: caddymanager-mongo
restart: unless-stopped
volumes:
- mongo_data:/data/db
networks:
- proxy
networks:
proxy:
external: true
volumes:
caddymanager_data:
mongo_data:
```
### Option 2 : Variante Traefik (déconseillée)
CaddyManager est lui-même une GUI Caddy : il **n'a pas vocation à coexister** avec Traefik. Si vous utilisez déjà Traefik, **vous n'avez pas besoin** de CaddyManager.
## ⚙️ Configuration Initiale
1. **Lancer** : `docker compose up -d`
2. **Accéder à la WebUI** : `http://localhost:5000`
3. **Créer le compte admin** au premier lancement
4. **Enregistrer une instance Caddy** :
- Nom : `prod-caddy-01`
- URL de l'API Caddy : `http://caddy-instance:2019` (l'API admin de Caddy)
- Authentification : token si configuré sur Caddy
5. **Éditer le Caddyfile** dans l'onglet "Configs" → Save → Reload
```caddyfile
# /etc/caddy/Caddyfile
# CaddyManager génère / édite ce fichier
app.example.com {
reverse_proxy app-backend:8080
}
api.example.com {
basicauth {
admin $2a$14$hash-bcrypt
}
reverse_proxy api-backend:5000
}
```
```bash
# Activer l'API admin de Caddy (côté instance gérée)
# /etc/caddy/Caddyfile - ajouter :
{
admin localhost:2019
# Ou pour accès distant :
# admin 0.0.0.0:2019
}
```
## 🔀 Alternatives
### Open Source
- **Caddyfile + scripts maison** : pas de GUI, mais mature
- [[app-nginx-proxy-manager]] — GUI pour Nginx, plus mature
- [[app-swag]] — Reverse proxy Nginx clé-en-main
- [[app-caddy]] — Caddy lui-même, sans GUI
### Comparaison CaddyManager vs NPM vs Caddy natif
| Critère | CaddyManager | NPM | Caddy seul |
| :--- | :--- | :--- | :--- |
| Reverse proxy | Caddy (multi) | Nginx (mono) | Caddy (mono) |
| Interface web | ✅ | ✅ | ❌ |
| Multi-instance | ✅ | ❌ | ❌ |
| HTTPS auto | ✅ (Caddy) | ✅ | ✅ |
| Stabilité | ⚠️ Alpha | ✅ | ✅ Très stable |
| Maturité | ⚠️ Récent | ✅ Mature | ✅ Très mature |
| API admin Caddy | ✅ Native | N/A | ✅ |
| Hot reload | ✅ | ✅ | ✅ |
### Propriétaires (ce que CaddyManager remplace)
- **RunCloud / ServerPilot** : panels de gestion Caddy/Nginx
- **Ploi** : panel de gestion serveur
- **Cloudflare Dashboard** (pour la partie reverse proxy)
## 🔒 Sécurité
-**Authentification WebUI** (multi-users)
-**Sessions JWT** avec expiration
-**HTTPS supporté** (à configurer via reverse proxy externe)
- ⚠️ **Alpha** : bugs de sécurité probables, à ne pas exposer publiquement
- ⚠️ **API admin Caddy** : très sensible, ne pas exposer sur Internet
- ⚠️ **MongoDB** sans auth par défaut : configurer `MONGO_INITDB_ROOT_USERNAME` / `MONGO_INITDB_ROOT_PASSWORD`
- ⚠️ **Pas d'audit de sécurité** : projet jeune, à mettre derrière un VPN ou un auth fort
## 📚 Ressources
- [README GitHub](https://github.com/caddymanager/caddymanager)
- [Annonce Reddit - CaddyManager 0.0.1](https://www.reddit.com/r/selfhosted/comments/1lnnbo2/caddymanager_001_web_ui_for_managing_caddy/)
- [Discussion communauté Caddy](https://caddy.community/t/caddymanager-0-0-1-a-web-ui-to-manage-multiple-caddy-instances/31396)
- [Wiki selfh.st](https://selfh.st/apps/?tag=Reverse+Proxy)
## 🔗 Pages Liées
- [[cat-reverse-proxy]] — Catégorie Reverse Proxy
- [[app-caddy]] — Caddy lui-même
- [[app-nginx-proxy-manager]] — Concurrent GUI (Nginx)
- [[app-swag]] — Concurrent clé-en-main
- [[comparatif-reverse-proxy]] — Comparaison détaillée
- [[securisation-home-lab]] — Sécurité