Caddy per Schalter in der .env statt per CLI-Flag

Frage aus dem Betrieb: laesst sich ein Compose-Abschnitt ueber eine Variable
in der .env zu- und abschalten, statt ihn auszukommentieren? Bedingte Bloecke
kennt Compose nicht - aber COMPOSE_PROFILES darf in der .env stehen und
aktiviert das Profil, ohne dass ein Flag noetig ist.

  COMPOSE_PROFILES=        -> Caddy wird nicht angelegt (Standard)
  COMPOSE_PROFILES=caddy   -> Caddy startet bei `docker-compose up -d` mit

Vorteil gegenueber `--profile caddy`: der Schalter wirkt auch bei down, logs
und ps, wo das Flag leicht vergessen wird und dann verwaiste Container
zurueckbleiben.

Empirisch geprueft mit einem separaten Testprojekt (compose 1.29.2): ohne den
Eintrag startete nur der ungeschuetzte Dienst, mit Eintrag beide.

Dokumentiert in .env.example, im Kommentar am caddy-Dienst und in der README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 19:43:59 +02:00
co-authored by Claude Opus 5
parent 22501f4650
commit ffeb4dbfd8
3 changed files with 30 additions and 13 deletions
+11 -3
View File
@@ -54,9 +54,17 @@ JWT_REFRESH_EXPIRES_IN=7d
ENCRYPTION_KEY=change-this-to-64-hex-characters-please-rotate-before-production-xx
# ---------- Optionaler Reverse-Proxy (Caddy) ----------
# Nur nötig, wenn du KEINEN eigenen Reverse-Proxy hast und Caddy das SSL
# übernehmen soll. Starten dann mit: docker-compose --profile caddy up -d
# Ohne dieses Profil bleibt Caddy aus und ändert nichts am Setup.
# Brauchst du nur, wenn du KEINEN eigenen Reverse-Proxy hast (nginx, Nginx
# Proxy Manager, Traefik) und Caddy das SSL übernehmen soll.
#
# EIN/AUS über diesen Schalter nichts auskommentieren:
# leer lassen -> Caddy wird nicht einmal angelegt (Standard)
# =caddy -> Caddy startet bei jedem `docker-compose up -d` mit
# Der Schalter wirkt auch bei `down`, `logs` usw. im Gegensatz zum
# Kommandozeilen-Flag `--profile caddy`, das man leicht vergisst.
COMPOSE_PROFILES=
# Nur relevant, wenn oben `caddy` gesetzt ist:
DOMAIN=crm.example.com
CADDY_DIR=./data/caddy
CADDY_CONFIG_DIR=./data/caddy-config
+12 -7
View File
@@ -826,17 +826,22 @@ dahinter hängst.
Hast du **keinen**, kannst du Caddy als optionalen Dienst dazuschalten. Er holt
und erneuert das SSL-Zertifikat automatisch:
```bash
# In der .env die Domain setzen
Dafür gibt es einen Schalter in der `.env` nichts muss auskommentiert werden:
```env
COMPOSE_PROFILES=caddy # leer = kein Caddy (Standard)
DOMAIN=crm.example.de
HTTPS_ENABLED=true
# Mit Caddy starten (Ports 80 + 443 müssen frei sein)
docker-compose --profile caddy up -d
```
Ohne `--profile caddy` bleibt Caddy aus und nichts ändert sich der Dienst
wird dann gar nicht erst angelegt.
```bash
docker-compose up -d # startet jetzt zusätzlich Caddy
```
Solange `COMPOSE_PROFILES` leer ist, wird der Caddy-Dienst **gar nicht erst
angelegt** der Stack verhält sich exakt wie ohne ihn. Der Schalter wirkt auch
bei `down`, `logs` und `ps`, im Gegensatz zum Flag `--profile caddy`, das man
bei Folgebefehlen leicht vergisst.
**Was dabei zu beachten ist:**
+7 -3
View File
@@ -91,9 +91,13 @@ services:
- ${BANKDATA_DIR:-./data/bankdata}:/app/bankdata
# Optionaler Reverse-Proxy mit automatischem SSL nur fuer Betreiber OHNE
# eigenen Proxy. Startet NICHT mit `docker-compose up -d`, sondern nur mit:
# docker-compose --profile caddy up -d
# Wer nginx / Nginx Proxy Manager / Traefik davor hat, laesst das weg.
# eigenen Proxy. Wird standardmaessig NICHT angelegt.
#
# Einschalten ueber die .env (kein Auskommentieren noetig):
# COMPOSE_PROFILES=caddy
# Danach reicht wie gewohnt `docker-compose up -d`. Alternativ einmalig per
# Flag: `docker-compose --profile caddy up -d`.
# Wer nginx / Nginx Proxy Manager / Traefik davor hat, laesst das Feld leer.
caddy:
image: caddy:2-alpine
container_name: opencrm-caddy