🔀 Caddy — Reverse Proxy¶
Rôle¶
Caddy est le chef d'orchestre des accès web. Chaque requête vers *.galexios.fr passe par Caddy qui la redirige vers le bon service avec un certificat SSL valide automatiquement renouvelé.
| Propriété | Valeur |
|---|---|
| Container | CT110 |
| IP | 192.168.192.110 |
| Ports | 80 (redirect HTTPS), 443 (HTTPS) |
| Config | /etc/caddy/Caddyfile |
Fonctionnement¶
sequenceDiagram
participant A as Appareil
participant AD as Active Directory .124
participant C as Caddy .110:443
participant S as Service cible
A->>AD: nextcloud.galexios.fr ?
AD-->>A: 192.168.192.110
A->>C: HTTPS :443
Note over C: Certificat SSL valide
C->>S: HTTP interne
S-->>C: Reponse
C-->>A: Reponse chiffree TLS
Caddyfile complet¶
# ==========================================
# MACROS ET SNIPPETS
# ==========================================
# TLS Cloudflare avec bypass DNS
(cloudflare_tls) {
tls {
dns cloudflare "{env.CLOUDFLARE_API_TOKEN}"
# Override : force Caddy a utiliser Cloudflare/Internet
# pour la verification ACME (evite la boucle avec l'AD)
resolvers 1.1.1.1 9.9.9.9
}
}
# Pour les backends avec certificats auto-signes
(insecure_https) {
transport http {
tls_insecure_skip_verify
}
}
# ==========================================
# INFRASTRUCTURE CORE ET HYPERVISEURS
# ==========================================
proxmox.galexios.fr {
import cloudflare_tls
reverse_proxy https://192.168.192.2:8006 {
import insecure_https
}
}
proxmoxbackupserver.galexios.fr {
import cloudflare_tls
reverse_proxy https://192.168.192.2:8007 {
import insecure_https
}
}
# ==========================================
# SECURITE ET RESEAU
# ==========================================
adguard.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.105:80
}
vaultwarden.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.103:80
}
kasm.galexios.fr {
import cloudflare_tls
reverse_proxy https://192.168.192.107:443 {
import insecure_https
}
}
# ==========================================
# APPLICATIONS
# ==========================================
jellyfin.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.100:8096
}
audiomuseai.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.100:8000
}
calibre.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.101:8083
}
kavita.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.102:5000
}
transmute.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.104:3313
}
homeassistant.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.106:8123
}
immich.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.108:2283
}
nextcloud.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.111:11000
}
stirlingpdf.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.113:8080
}
docs.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.114:80
}
paperless.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.115:8000
}
openwebui.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.116:8080
}
webtrees.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.117:8080
}
guacamole.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.118:8080
}
scrutiny.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.120:8080
}
jupyter.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.121:8888
}
iventoy.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.122:26000
}
journal.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.123:8000
}
adventurelog.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.125:8015
}
Token Cloudflare
Le token API Cloudflare est stocke dans une variable d'environnement CLOUDFLARE_API_TOKEN, jamais en dur dans le Caddyfile.
Ajouter un nouveau service¶
flowchart LR
A["1. Installer\nle service (CT_ID)"] --> B["2. config 110\nnano Caddyfile"]
B --> C["3. Ajouter bloc\nurl.galexios.fr"] --> D["4. caddy validate"]
D --> E["5. systemctl reload caddy"]
E --> F["6. config AD\nconfig CT_ID url.galexios.fr"]
F --> G["Service accessible"]
# Template a copier dans le Caddyfile
nouveauservice.galexios.fr {
import cloudflare_tls
reverse_proxy 192.168.192.XXX:PORT
}
Commandes essentielles¶
# Entrer dans Caddy
config 110
# Etat du service
systemctl status caddy
# Recharger la config (sans coupure)
systemctl reload caddy
# Valider la syntaxe avant reload
caddy validate --config /etc/caddy/Caddyfile
# Logs en temps reel
journalctl -u caddy -f
# Editer la configuration
nano /etc/caddy/Caddyfile
Dépannage¶
flowchart TD
ERR["Service inaccessible"] --> Q1{"Caddy tourne ?"}
Q1 -->|Non| F1["systemctl start caddy"]
Q1 -->|Oui| Q2{"Certificat valide ?"}
Q2 -->|Non| F2["systemctl reload caddy\nCaddy renouvelle auto"]
Q2 -->|Oui| Q3{"IP/port correct ?"}
Q3 -->|Non| F3["Corriger Caddyfile\n+ reload"]
Q3 -->|Oui| F4["CT du service\ndémarre ?"]