Skip to main content

Production Deployment

So betreibst du StoreStash sicher in Produktion.

Voraussetzungen​

  • Server mit Docker Engine 24+ (Linux empfohlen)
  • Domain mit DNS-Eintrag (z.B. storestash.deinedomain.de)
  • TLS-Zertifikat (Let's Encrypt empfohlen)

Checkliste​

  • SECRET_KEY mit zufälligem String gesetzt
  • DEBUG=false
  • POSTGRES_PASSWORD geändert (nicht changeme!)
  • TLS/HTTPS konfiguriert
  • Firewall: nur Port 443 offen
  • Backup-Strategie eingerichtet
  • Kein SSH-Zugang aus dem Internet

TLS mit Reverse Proxy​

Option A: Traefik (empfohlen)​

Traefik als vorgeschalteter Proxy mit automatischem Let's Encrypt:

# docker-compose.override.yml
services:
traefik:
image: traefik:v3.0
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.le.acme.email=deine@email.de
- --certificatesresolvers.le.acme.storage=/acme/acme.json
- --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
ports:
- "80:80"
- "443:443"
volumes:
- ./acme:/acme
- /var/run/docker.sock:/var/run/docker.sock:ro

nginx:
labels:
- traefik.http.routers.storestash.rule=Host(`storestash.deinedomain.de`)
- traefik.http.routers.storestash.tls.certresolver=le
ports: [] # Ports entfernen, Traefik ĂĽbernimmt

Option B: Caddy​

Caddy als Reverse Proxy mit automatischem HTTPS:

storestash.deinedomain.de {
reverse_proxy localhost:3000
}

Environment für Produktion​

SECRET_KEY=ein-sehr-langer-zufaelliger-string-mindestens-32-zeichen
DEBUG=false
SEED_DEFAULT_DATA=true
POSTGRES_PASSWORD=sicheres-datenbank-passwort
CORS_ORIGINS=https://storestash.deinedomain.de
PORT=3000

Monitoring​

Empfohlen: Uptime Kuma fĂĽr:

  • Health-Check auf /health
  • Benachrichtigung bei Ausfall
  • Response-Time Monitoring