8305352497
- ldap_auth Service: User bindet als user@domain (kein Servicekonto noetig), Gruppenpruefung ueber Matching-Rule-In-Chain (verschachtelte Gruppen) - Login-Route: lokaler User zuerst, dann LDAP-Fallback; LDAP-User werden lokal gespiegelt (is_ldap, is_admin, Profildaten aus AD) - Neue Config: ldap_domain, ldap_admin_group, ldap_timeout_seconds - ldap3 Dependency, 7 Unit-Tests (ldap3 gemockt), ruff+mypy sauber - Gruppen-DN verified am DC: CN=Domänen-Admins,CN=Users,DC=insight,DC=local
77 lines
3.2 KiB
Bash
77 lines
3.2 KiB
Bash
# Insight Updater - Environment Template (Zentrale)
|
|
# Copy to .env and fill in secrets
|
|
# Hinweis: WinRM/SSH/Credentials sind in den Satellite gewandert (satellite/config.yaml)
|
|
|
|
# =============================================================================
|
|
# CORE APPLICATION
|
|
# =============================================================================
|
|
APP_ENV=development
|
|
SECRET_KEY=change-me-min-32-characters-random
|
|
JWT_ALGORITHM=RS256
|
|
JWT_PRIVATE_KEY_PATH=/app/keys/private.pem
|
|
JWT_PUBLIC_KEY_PATH=/app/keys/public.pem
|
|
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30
|
|
JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
|
|
|
|
# Initialer Admin (nur beim ersten Start, wenn keine User existieren)
|
|
ADMIN_INITIAL_PASSWORD=admin
|
|
|
|
# =============================================================================
|
|
# DATABASE
|
|
# =============================================================================
|
|
# Development: SQLite (file-based, zero config)
|
|
DATABASE_URL=sqlite+aiosqlite:///./data/app.db
|
|
|
|
# Production: PostgreSQL
|
|
# DATABASE_URL=postgresql+asyncpg://updater:secure-password@db:5432/insight_updater
|
|
DB_NAME=insight_updater
|
|
DB_USER=updater
|
|
DB_PASSWORD=change-me-db-password
|
|
|
|
# =============================================================================
|
|
# JOBS
|
|
# =============================================================================
|
|
# Sekunden ohne Satellite-Report, bevor ein claimed/running Job als failed gilt
|
|
JOB_STALE_TIMEOUT=3600
|
|
|
|
# =============================================================================
|
|
# LDAP / ACTIVE DIRECTORY
|
|
# =============================================================================
|
|
# User-Bind: Es gibt kein Servicekonto. Der User bindet mit seinen eigenen
|
|
# Credentials (user@domain), Gruppenmitgliedschaft wird ueber die eigene
|
|
# Verbindung geprueft. Nur Mitglieder der Admin-Gruppe kommen rein.
|
|
LDAP_ENABLED=true
|
|
LDAP_URI=ldaps://ads-server-01.insight.local:636
|
|
LDAP_DOMAIN=insight.local
|
|
LDAP_USER_SEARCH_BASE=DC=insight,DC=local
|
|
LDAP_USER_FILTER=(sAMAccountName={username})
|
|
# Achtung: DN exakt wie im AD (verified 2026-09-28, Umlaut beachten):
|
|
LDAP_ADMIN_GROUP=CN=Domänen-Admins,CN=Users,DC=insight,DC=local
|
|
LDAP_TIMEOUT_SECONDS=10
|
|
|
|
# =============================================================================
|
|
# FRONTEND (injected at build time via Vite)
|
|
# =============================================================================
|
|
VITE_API_URL=http://localhost:8000
|
|
VITE_APP_TITLE=Insight Updater
|
|
|
|
# =============================================================================
|
|
# LOGGING
|
|
# =============================================================================
|
|
LOG_LEVEL=INFO
|
|
LOG_FORMAT=json # json | console
|
|
|
|
# =============================================================================
|
|
# DOCKER / DEPLOYMENT
|
|
# =============================================================================
|
|
COMPOSE_PROJECT_NAME=insight-updater
|
|
TRAEFIK_NETWORK=traefik-public
|
|
DOMAIN=updater.insight-it.de
|
|
|
|
# =============================================================================
|
|
# EXTERNAL SERVICES
|
|
# =============================================================================
|
|
VAULTWARDEN_URL=https://p.hartmannsche.cloud
|
|
GITEA_URL=https://gitea.insight-it.de
|
|
GITEA_REPO=b0rbor4d/insight-updater
|