n8n im Queue-Modus mit Redis, PostgreSQL-Persistenz und sauberem Prozess-Supervising — das unspektakuläre, zuverlässige Setup, das Neustarts und Lastspitzen übersteht. Die Automatisierungsschicht hint
Ein vollständiges Muster von Lab bis Produktion: k3s in Docker mit eingebettetem etcd, Rancher für das Management, MetalLB für Layer-2-LoadBalancer-IPs, replizierter Longhorn-Speicher und Traefik-Ingr
Dify — visueller LLM-App-Builder mit RAG, Agenten und Prompt-Workflows — auf PostgreSQL, Redis, Weaviate, SSRF-Proxy und Code-Sandbox. Das Deployment-Muster, das ich für LLM-Anwendungen nutze, an denen auch Nicht-Entwickler bauen.
Ein Deployment-Guide mit lauffähigen Beispielen — kein herunterladbares Produkt. Alles unten ist die tatsächlich eingesetzte Konfiguration, gekürzt auf das, worauf es ankommt.
services:
api:
image: langgenius/dify-api:${DIFY_VERSION:-latest}
container_name: dify-api
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
weaviate:
condition: service_healthy
volumes:
- dify_storage_data:/app/api/storage
ports:
- ${DIFY_API_PORT:-5001}:5001
environment:
- MODE=api
- SECRET_KEY=${DIFY_SECRET_KEY:?DIFY_SECRET_KEY is required}
- INIT_PASSWORD=${DIFY_INIT_PASSWORD:-}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- DB_USERNAME=${POSTGRES_USER:-dify}
- DB_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
- DB_HOST=postgres
- DB_PORT=5432
- DB_DATABASE=${POSTGRES_DB:-dify}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD:?REDIS_PASSWORD is required}
- REDIS_DB=0
- WEAVIATE_HOST=weaviate
- WEAVIATE_PORT=8080
- WEAVIATE_API_KEY=${WEAVIATE_API_KEY:?WEAVIATE_API_KEY is required}
- WEAVIATE_BATCH_SIZE=100
- STORAGE_TYPE=${STORAGE_TYPE:-local}
- STORAGE_LOCAL_PATH=storage
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379/1
- SENTRY_DSN=
- CONSOLE_API_URL=${CONSOLE_API_URL:-http://localhost:5001}
- APP_API_URL=${APP_API_URL:-http://localhost:5001}
- SSRF_PROXY_URL=http://ssrf_proxy:3128
healthcheck:
test:
- CMD
- curl
- -f
- http://localhost:5001/health
interval: 30s
timeout: 10s
retries: 3
networks:
- dify_network
worker:
image: langgenius/dify-api:${DIFY_VERSION:-latest}
container_name: dify-worker
restart: unless-stopped
depends_on:
api:
condition: service_healthy
volumes:
- dify_storage_data:/app/api/storage
environment:
- MODE=worker
- SECRET_KEY=${DIFY_SECRET_KEY:?DIFY_SECRET_KEY is required}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- DB_USERNAME=${POSTGRES_USER:-dify}
- DB_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
- DB_HOST=postgres
- DB_PORT=5432
- DB_DATABASE=${POSTGRES_DB:-dify}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD:?REDIS_PASSWORD is required}
- REDIS_DB=0
- WEAVIATE_HOST=weaviate
- WEAVIATE_PORT=8080
- WEAVIATE_API_KEY=${WEAVIATE_API_KEY:?WEAVIATE_API_KEY is required}
- CELERY_BROKER_URL=redis://:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379/1
- CELERY_WORKER_CONCURRENCY=${CELERY_WORKER_CONCURRENCY:-4}
- CELERY_WORKER_MAX_TASKS_PER_CHILD=${CELERY_WORKER_MAX_TASKS_PER_CHILD:-100}
- SENTRY_DSN=
- CONSOLE_API_URL=${CONSOLE_API_URL:-http://localhost:5001}
- APP_API_URL=${APP_API_URL:-http://localhost:5001}
- SSRF_PROXY_URL=http://ssrf_proxy:3128
healthcheck:
test:
- CMD-SHELL
- celery -p app.celery.app inspect ping -d celery@$$HOSTNAME || exit 1
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
networks:
- dify_network
Auszug — api, worker aus der Compose-Datei. Die übrigen Services (proxies, init jobs, exporters) folgen demselben Muster und binden ihre Konfiguration aus einem config/-Verzeichnis ein.
Kopieren Sie .env.example zu .env und setzen Sie mindestens:
POSTGRES_PASSWORD=<generate-strong-password>
REDIS_PASSWORD=<generate-strong-password>
WEAVIATE_API_KEY=<generate-api-key>
DIFY_SECRET_KEY=<generate-64-char-string>
DIFY_INIT_PASSWORD=
POSTGRES_USER=dify
.env setzen — niemals die Beispielwerte übernehmenEin Guide, kein Produkt. Diese Seite ist Deployment-Dokumentation mit lauffähigen Beispielen — kein Zip, kein Download, kein Supportvertrag. Sie adaptieren die Muster auf Ihre eigene Umgebung, und das Ergebnis gehört Ihnen.
Wenn Sie das produktionsreif in Ihrer Infrastruktur wollen: Das behandle ich im Rahmen des Workshops Self-Hosted AI im Produktionseinsatz — Details auf der Consulting-Seite: 1.000 €/Tag, remote oder vor Ort, Abrechnung per Rechnung.