You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.7 KiB
Plaintext
106 lines
2.7 KiB
Plaintext
# Runtime environment
|
|
ENVIRONMENT=production
|
|
LOG_LEVEL=info
|
|
|
|
# PostgreSQL
|
|
POSTGRES_USER=knowfoolery
|
|
POSTGRES_PASSWORD=change-me
|
|
POSTGRES_HOST=postgres
|
|
POSTGRES_PORT=5432
|
|
POSTGRES_DB=knowfoolery
|
|
POSTGRES_SSLMODE=disable
|
|
POSTGRES_MAX_OPEN_CONNS=25
|
|
POSTGRES_MAX_IDLE_CONNS=10
|
|
POSTGRES_CONN_MAX_LIFETIME=5m
|
|
POSTGRES_CONN_MAX_IDLE_TIME=1m
|
|
|
|
# Redis
|
|
REDIS_HOST=redis
|
|
REDIS_PORT=6379
|
|
REDIS_PASSWORD=
|
|
REDIS_DB=0
|
|
REDIS_POOL_SIZE=10
|
|
REDIS_MIN_IDLE_CONNS=5
|
|
REDIS_DIAL_TIMEOUT=5s
|
|
REDIS_READ_TIMEOUT=3s
|
|
REDIS_WRITE_TIMEOUT=3s
|
|
|
|
# Service ports
|
|
GAME_SESSION_PORT=8080
|
|
QUESTION_BANK_PORT=8081
|
|
USER_SERVICE_PORT=8082
|
|
LEADERBOARD_PORT=8083
|
|
ADMIN_SERVICE_PORT=8085
|
|
GATEWAY_PORT=8086
|
|
GATEWAY_INTERNAL_PORT=18086
|
|
|
|
# Gateway
|
|
GATEWAY_PUBLIC_PREFIX=/api/v1
|
|
GATEWAY_ALLOWED_ORIGINS=https://app.knowfoolery.com
|
|
GATEWAY_ALLOWED_METHODS=GET,POST,PUT,DELETE,OPTIONS
|
|
GATEWAY_ALLOWED_HEADERS=Origin,Content-Type,Accept,Authorization
|
|
GATEWAY_ALLOW_CREDENTIALS=true
|
|
GATEWAY_CORS_MAX_AGE_SECONDS=300
|
|
GATEWAY_UPSTREAM_TIMEOUT=3s
|
|
GATEWAY_RATE_WINDOW=1m
|
|
GATEWAY_RATE_GENERAL=100
|
|
GATEWAY_RATE_AUTH=5
|
|
GATEWAY_RATE_API=60
|
|
GATEWAY_RATE_ADMIN=30
|
|
GATEWAY_CSP=default-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'
|
|
GATEWAY_ENABLE_HSTS=true
|
|
GATEWAY_HSTS_MAX_AGE=31536000
|
|
GATEWAY_FRAME_OPTIONS=DENY
|
|
GATEWAY_CONTENT_TYPE_OPTIONS=true
|
|
GATEWAY_REFERRER_POLICY=strict-origin-when-cross-origin
|
|
GATEWAY_PERMISSIONS_POLICY=geolocation=(), microphone=(), camera=(), payment=(), usb=()
|
|
|
|
# Inter-service HTTP timeout
|
|
UPSTREAM_HTTP_TIMEOUT=3s
|
|
|
|
# Feature configs
|
|
QUESTION_CACHE_TTL=5m
|
|
QUESTION_RANDOM_MAX_EXCLUSIONS=200
|
|
QUESTION_BULK_MAX_ITEMS=5000
|
|
GAME_SESSION_DURATION=30m
|
|
GAME_SESSION_MAX_ATTEMPTS=3
|
|
GAME_SESSION_MIN_ANSWER_LATENCY_MS=300
|
|
GAME_SESSION_LOCK_TTL=3s
|
|
GAME_SESSION_ACTIVE_KEY_TTL=35m
|
|
GAME_SESSION_END_REASON_DEFAULT=abandoned
|
|
LEADERBOARD_TOP_LIMIT=10
|
|
LEADERBOARD_PLAYER_HISTORY_DEFAULT_LIMIT=20
|
|
LEADERBOARD_PLAYER_HISTORY_MAX_LIMIT=100
|
|
LEADERBOARD_CACHE_TTL=60s
|
|
LEADERBOARD_UPDATE_REQUIRE_AUTH=true
|
|
USER_ADMIN_LIST_DEFAULT_LIMIT=50
|
|
USER_ADMIN_LIST_MAX_LIMIT=200
|
|
ADMIN_AUDIT_RETENTION_DAYS=90
|
|
|
|
# Auth (Zitadel)
|
|
ZITADEL_URL=https://auth.knowfoolery.com
|
|
ZITADEL_ISSUER=https://auth.knowfoolery.com
|
|
ZITADEL_AUDIENCE=knowfoolery-api
|
|
ZITADEL_CLIENT_ID=replace-me
|
|
ZITADEL_CLIENT_SECRET=replace-me
|
|
|
|
# Observability
|
|
METRICS_ENABLED=true
|
|
METRICS_SERVICE_NAME=knowfoolery
|
|
TRACING_ENABLED=true
|
|
TRACING_SERVICE_NAME=knowfoolery
|
|
TRACING_SERVICE_VERSION=0.1.0
|
|
TRACING_ENVIRONMENT=production
|
|
TRACING_OTLP_ENDPOINT=http://jaeger:4318/v1/traces
|
|
TRACING_JAEGER_ENDPOINT=http://jaeger:14268/api/traces
|
|
TRACING_SAMPLE_RATE=0.2
|
|
PROMETHEUS_PORT=9090
|
|
GRAFANA_PORT=3000
|
|
JAEGER_UI_PORT=16686
|
|
JAEGER_COLLECTOR_PORT=14268
|
|
JAEGER_OTLP_GRPC_PORT=4317
|
|
JAEGER_OTLP_HTTP_PORT=4318
|
|
JAEGER_AGENT_PORT=6831
|
|
GRAFANA_ADMIN_USER=admin
|
|
GRAFANA_ADMIN_PASSWORD=change-me
|