# libnovel scraper — environment overrides # Copy to .env and adjust values; do NOT commit this file with real secrets. # ── Service ports (host-side) ───────────────────────────────────────────────── # Port the scraper HTTP API listens on (default 8080) SCRAPER_PORT=8080 # Port PocketBase listens on (default 8090) POCKETBASE_PORT=8090 # Port MinIO S3 API listens on (default 9000) MINIO_PORT=9000 # Port MinIO web console listens on (default 9001) MINIO_CONSOLE_PORT=9001 # Port Browserless Chrome listens on (default 3030) BROWSERLESS_PORT=3030 # Port the SvelteKit UI listens on (default 3000) UI_PORT=3000 # ── Browserless ─────────────────────────────────────────────────────────────── # Browserless API token (leave empty to disable auth) BROWSERLESS_TOKEN= # Number of concurrent browser sessions in Browserless BROWSERLESS_CONCURRENT=10 # Queue depth before Browserless returns 429 BROWSERLESS_QUEUED=100 # Per-session timeout in ms BROWSERLESS_TIMEOUT=60000 # Optional webhook URL for Browserless error alerts (leave empty to disable) ERROR_ALERT_URL= # Which Browserless strategy the scraper uses: content | scrape | cdp | direct BROWSERLESS_STRATEGY=direct # ── Scraper ─────────────────────────────────────────────────────────────────── # Chapter worker goroutines (0 = NumCPU inside the container) SCRAPER_WORKERS=0 # Host path to mount as the static output directory STATIC_ROOT=./static/books # ── Kokoro-FastAPI TTS ──────────────────────────────────────────────────────── # Base URL for the Kokoro-FastAPI service. When running via docker-compose the # default (http://kokoro:8880) is wired in automatically; override here only if # you are pointing at an external or GPU instance. KOKORO_URL=http://kokoro:8880 # Default voice used for chapter narration. # Single voices: af_bella, af_sky, af_heart, am_adam, … # Mixed voices: af_bella+af_sky or af_bella(2)+af_sky(1) (weighted blend) KOKORO_VOICE=af_bella # ── MinIO / S3 object storage ───────────────────────────────────────────────── MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=changeme123 MINIO_BUCKET_CHAPTERS=libnovel-chapters MINIO_BUCKET_AUDIO=libnovel-audio # ── PocketBase ──────────────────────────────────────────────────────────────── # Admin credentials (used by scraper + UI server-side) POCKETBASE_ADMIN_EMAIL=admin@libnovel.local POCKETBASE_ADMIN_PASSWORD=changeme123 # ── SvelteKit UI ───────────────────────────────────────────────────────────── # Internal URL the SvelteKit server uses to reach the scraper API. # In docker-compose this is http://scraper:8080 (wired automatically). # Override here only if running the UI outside of docker-compose. SCRAPER_API_URL=http://localhost:8080 # Internal URL the SvelteKit server uses to reach PocketBase. # In docker-compose this is http://pocketbase:8090 (wired automatically). POCKETBASE_URL=http://localhost:8090 # Public MinIO URL reachable from the browser (for audio/presigned URLs). # In production, point this at your MinIO reverse-proxy or CDN domain. PUBLIC_MINIO_PUBLIC_URL=http://localhost:9000