Files
neural-hunt/.env.example
jbergner bcfbef390f
Some checks failed
release-tag / release-image (push) Failing after 2m44s
RC-7
2026-08-11 16:58:07 +02:00

172 lines
7.9 KiB
Plaintext

# Core
# Docker image names. The project builds three independent runtime images.
NEURALHUNT_SERVER_IMAGE=neuralhunt-server:local
NEURALHUNT_CUSTOMER_IMAGE=neuralhunt-customer-service:local
# Public listener: put this behind your normal HTTPS reverse proxy.
HTTP_ADDR=:8080
# Private control-plane listener: expose only through VPN/private reverse proxy.
ADMIN_HTTP_ADDR=:8081
# REQUIRED for normal/public operation. Generate unique secrets; startup refuses
# the known development defaults. For local throwaway development only, you may
# set ALLOW_INSECURE_DEV_DEFAULTS=1.
JWT_SECRET=replace-with-at-least-32-random-characters
ADMIN_USER=admin
ADMIN_PASSWORD=replace-with-a-strong-unique-password
# Admin session cookies are Secure by default. Set false only for local HTTP dev.
ADMIN_COOKIE_SECURE=true
# ALLOW_INSECURE_DEV_DEFAULTS=1
# WebSocket hardening. Same-origin browser WebSockets work automatically. Add
# explicit extra origins only when your proxy topology genuinely needs them.
WS_ALLOWED_ORIGINS=
WS_MAX_USER_CONNECTIONS=5000
WS_MAX_LEADERBOARD_CONNECTIONS=500
# Legacy token-in-query fallback is disabled by default because URLs are logged.
# WS_ALLOW_QUERY_TOKEN=1
# Local data paths. Docker Compose overrides both to /data/... so the named volume remains persistent.
SQLITE_PATH=./data/neuralhunt.db
ARTIFACT_DIR=./data/artifacts
# Optional absolute base URL. Leave empty to store relative /artifacts/... links.
ARTIFACT_PUBLIC_BASE_URL=
# Runtime defaults. These are copied into SQLite on first start and can then be
# changed in the Admin UI.
DEFAULT_GUESS_MIN_INTERVAL_SEC=10
DEFAULT_CLIENT_SUBMIT_INTERVAL_SEC=11
DEFAULT_GUESS_LOTTERY_WINDOW_SEC=60
DEFAULT_GUESS_LOTTERY_MAX_ACCEPTED=0
# Anti-Sybil friction for newly created browser identities. 0 disables each part.
DEFAULT_SYBIL_POW_BITS=15
DEFAULT_SYBIL_WARMUP_SEC=15
# OpenAI cost circuit breaker. Rolling windows; 0 disables the individual limit.
DEFAULT_OPENAI_MAX_CALLS_1H=20
DEFAULT_OPENAI_MAX_CALLS_24H=100
DEFAULT_OPENAI_MAX_COST_24H_USD=5.00
DEFAULT_OPENAI_BUDGET_RESERVE_USD=0.20
DEFAULT_TASK_RANGE_BITS=28
DEFAULT_ACTIVE_TASK_COUNT=1
DEFAULT_PRESENCE_TTL_SEC=35
DEFAULT_MAX_NODES=2000
DEFAULT_PUBLIC_SCORE_PRECISION=2
# RIFT full-art collection (default). For normal operation you only need these
# two values. Create the global RIFT character anchor once from Admin → ARTIFACT
# (or let the first winner create it as a fallback). Each task can then receive
# its own JPEG/PNG style reference in Admin → TASK ACTIONS; the bundled style
# reference is only the fallback for tasks without a custom style.
ARTIFACT_MODEL=gpt-image-2
OPENAI_API_KEY=
# Optional OpenAI endpoint override. Normally leave this unchanged/omitted.
OPENAI_BASE_URL=https://api.openai.com
# Advanced overrides only; the built-in preset already uses OpenAI, 1024x1536
# portrait output, medium quality and a deterministic programmatic SVG card frame.
# ARTIFACT_PRESET=raccoon_full_art_v1
# ARTIFACT_PROVIDER=openai
# ARTIFACT_WIDTH=1024
# ARTIFACT_HEIGHT=1536
# ARTIFACT_QUALITY=medium
# ARTIFACT_HTTP_TIMEOUT=4m
# ARTIFACT_PROMPT=... # only used by legacy preset/providers
# ARTIFACT_NEGATIVE_PROMPT=... # only used by legacy/local providers
# ComfyUI local API. COMFYUI_WORKFLOW_PATH must point to a workflow exported in
# API format. The workflow can use placeholders documented in README.md.
# When Neural Hunt runs in Docker and ComfyUI runs on the host, use
# http://host.docker.internal:8188 and mount/copy the workflow into /data.
COMFYUI_URL=
COMFYUI_WORKFLOW_PATH=
COMFYUI_POLL_TIMEOUT=4m
# AUTOMATIC1111 Stable Diffusion WebUI API. Start A1111 with --api.
# Docker-to-host example: http://host.docker.internal:7860
A1111_URL=
A1111_USER=
A1111_PASSWORD=
A1111_SAMPLER=
A1111_CFG_SCALE=7
# ─────────────────────────────────────────────────────────────────────────────
# OPTIONAL BEACON HUNT
# ─────────────────────────────────────────────────────────────────────────────
# 0 = legacy random lottery, 1 = PULSE/FLUX/ORBIT choice + future drand reveal.
# These defaults are stored in SQLite on first start and can then be changed in
# the game Admin UI under Runtime.
DEFAULT_BEACON_HUNT_ENABLED=0
DEFAULT_BEACON_BONUS_WEIGHT=2
# Public randomness beacon. Defaults are normally sufficient.
BEACON_DRAND_URL=https://api.drand.sh
BEACON_DRAND_BEACON_ID=quicknet
# ─────────────────────────────────────────────────────────────────────────────
# OPTIONAL HOSTED CUSTOMER SERVICE / PREPAID WORKERS
# ─────────────────────────────────────────────────────────────────────────────
# Same secret is read by the game server and Customer Service. Generate a
# separate random value; do not reuse JWT_SECRET.
CUSTOMER_SERVICE_SHARED_SECRET=replace-with-a-separate-32-plus-char-random-secret
# Customer portal (8090), private Customer-Service admin (8091), and the
# Docker-network-only worker registration listener (8092).
CS_HTTP_ADDR=:8090
CS_ADMIN_HTTP_ADDR=:8091
CS_INTERNAL_ADDR=:8092
CS_PUBLIC_BASE_URL=https://customers.example.com
CS_COOKIE_SECURE=true
CS_SESSION_TTL=24h
CS_ADMIN_USER=admin
CS_ADMIN_PASSWORD=replace-with-another-strong-unique-password
# Manual prepaid top-ups are a deliberately gated test/support bypass. Keep 0
# in production unless you explicitly need private admin grants.
CS_ALLOW_MANUAL_CREDITS=0
# Hosted worker billing: 1.0 means one credit is consumed for each paid minute
# of each running worker. Billing is prepaid; the worker stops before a minute
# that cannot be funded.
CS_WORKER_CREDITS_PER_MINUTE=1.0
# id:price-in-cents:CURRENCY:credits ; entries separated by semicolons.
CS_CREDIT_PACKAGES=starter:499:EUR:60;plus:1999:EUR:300;power:4999:EUR:900
# Docker worker orchestration. CS_WORKER_IMAGE is now a dedicated worker image
# and may point directly at a registry tag, e.g. registry.example.com/neuralhunt/worker:v4.1.
# When CS_WORKER_AUTO_PULL=true, Customer Service asks Docker Engine to pull the
# image if it is not already present. Public registries need no extra values.
# For a private registry, use a read-only deploy/robot token; credentials are
# sent only to Docker Engine as X-Registry-Auth and never to worker containers.
CS_WORKER_IMAGE=neuralhunt-worker:local
CS_WORKER_AUTO_PULL=true
CS_WORKER_REGISTRY_SERVER=
CS_WORKER_REGISTRY_USERNAME=
CS_WORKER_REGISTRY_PASSWORD=
# Leave empty for the dedicated worker image. Compatibility override for old
# monolithic V4.0 images: /app/neuralhunt-client
CS_WORKER_ENTRYPOINT=
CS_WORKER_NETWORK=neuralhunt_backend
CS_WORKER_REGISTER_URL=http://customer-service:8092/internal/workers/register
DOCKER_HOST=unix:///var/run/docker.sock
# Game endpoints as seen from Customer Service. Compose sets them to app:8080/8081.
CS_GAME_PUBLIC_URL=http://app:8080
CS_GAME_ADMIN_URL=http://app:8081
CUSTOMER_SQLITE_PATH=/customer-data/customer-service.db
# PayPal. Start in sandbox. Live mode is additionally locked in code until the
# explicit approval acknowledgement is set because paid prize/chance products
# may require PayPal approval depending on their exact commercial design.
PAYPAL_ENABLED=false
PAYPAL_ENVIRONMENT=sandbox
PAYPAL_CLIENT_ID=
PAYPAL_CLIENT_SECRET=
PAYPAL_WEBHOOK_ID=
# Only after provider/legal approval for the live product:
# PAYPAL_LIVE_APPROVAL_ACK=I_HAVE_PAYPAL_APPROVAL
# Host capacity guards independent of reverse-proxy request limits.
CS_MAX_WORKERS_PER_CUSTOMER=20
CS_MAX_WORKERS_GLOBAL=1000
CS_MAX_RUNNING_WORKERS_PER_CUSTOMER=10
CS_MAX_RUNNING_WORKERS_GLOBAL=100