पर्यावरण चर
वर्तमान बैकएंड, फ़्रंटएंड और रखरखाव स्क्रिप्ट के ऑपरेटर-उन्मुख चर। केवल परीक्षण canary जानबूझकर छोड़े गए हैं।
बैकएंड सर्वर
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
NODE_ENV | development | रनटाइम मोड |
PORT | dev में 3001, production में 8080 | HTTP पोर्ट |
TRUST_PROXY | unset (Helm में 0) | सटीक विश्वसनीय proxy hop count |
CORS_ORIGIN | स्थानीय dev origins | comma से अलग किए गए सटीक ब्राउज़र origins; * किसी भी मान्य origin को अनुमति देता है |
SERVE_FRONTEND | unset | true built फ़्रंटएंड serve |
DOCKER_ENV | unset | true Docker behavior |
DATA_DIR | backend/data; CLI में ~/.libre-webui | स्थायी डेटा डायरेक्टरी |
PLATFORM_PREFLIGHT_TMP_DIR | backend/temp/preflight; CLI उपयोगकर्ता cache | DB/WAL scratch copy |
PLUGIN_UPLOAD_TEMP_DIR | OS temp में libre-webui-plugin-uploads | प्लगइन अपलोड scratch |
PLUGINS_DIR | $DATA_DIR/plugins | Writable प्लगइन डायरेक्टरी |
BASE_URL | http://localhost:3001 | OAuth callback डिफ़ॉल्ट |
LOG_LEVEL | info (tests warn) | बैकएंड लॉग level |
LOG_FORMAT | text | json structured one-line लॉग |
OTEL_EXPORTER_OTLP_ENDPOINT | unset | Opt-in OTLP/HTTP JSON export |
OTEL_EXPORTER_OTLP_HEADERS | unset | Collector key=value headers |
OTEL_SERVICE_NAME | libre-webui | service.name |
WEBUI_HOST | loopback; Docker 0.0.0.0 | Listen address |
OPEN_BROWSER | फ़्रंटएंड serving पर true | false ब्राउज़र launch suppress |
FULL_DOCUMENT_CONTEXT_MAX_TOKENS | 32000 | पूर्ण-दस्तावेज़ guard 1000–2000000 |
GALLERY_RETENTION_DAYS | unset, forever | पुराना gallery media हटाएँ |
RECOVERY_DRILL_INTERVAL_HOURS | unset, बंद | Solo recovery drill हर N घंटे |
RECOVERY_DRILL_HISTORY | 60 | Retained drill प्रविष्टियाँ |
CORS_ORIGIN की प्रविष्टियाँ serialized ब्राउज़र origins से मेल खाती हैं: scheme,
hostname और वैकल्पिक port, बिना path, क्रेडेंशियल, query या fragment के। अनुरोध में
एक ही canonical origin होना चाहिए; गलत रूप वाले मान और origins की सूचियाँ
CORS_ORIGIN=* होने पर भी अस्वीकार की जाती हैं। जो clients Origin नहीं भेजते,
उन्हें अनुमति बनी रहती है। opaque origin null के लिए स्पष्ट null प्रविष्टि या
* चाहिए।
Docker (DOCKER_ENV=true) और non-production मोड में, HTTP(S) origins के लिए सटीक
localhost और 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 तथा
100.64.0.0/10 में आने वाले literal IPv4 पते भी स्वीकार किए जाते हैं। जो hostnames
केवल इन strings से शुरू होते हैं, जैसे localhost.attacker.example, वे स्थानीय पते
नहीं हैं। IPv6 origins के लिए स्पष्ट प्रविष्टि या * चाहिए; वे नेटवर्क अपवाद में
अपने आप शामिल नहीं होते। native production डिप्लॉयमेंट केवल स्पष्ट origin सूची या
wildcard का उपयोग करते हैं। CORS, API के bearer-token प्रमाणीकरण की जगह नहीं लेता।
स्रोत launches सापेक्ष DATA_DIR, PLUGINS_DIR, PLATFORM_PREFLIGHT_TMP_DIR बैकएंड डायरेक्टरी से resolve। DATA_DIR=./data → backend/data, पुराना DATA_DIR=./backend/data → backend/backend/data; केवल stopped backup/migration में बदलें। दोनों जगह स्थिति पर fail closed।
npx, वैश्विक npm, Homebrew ~/.libre-webui; स्पष्ट सापेक्ष caller डायरेक्टरी से पूर्ण। Cache macOS ~/Library/Caches/libre-webui, Windows %LOCALAPPDATA%\libre-webui, अन्य ${XDG_CACHE_HOME:-~/.cache}/libre-webui; Homebrew var/libre-webui/preflight, Docker/Helm /app/backend/data, /app/backend/temp/preflight। DB+WAL न समाए तो PLATFORM_PREFLIGHT_TMP_DIR।
Platform Foundation
solo: SQLite, स्थानीय एन्क्रिप्टेड blob/embedded vector, स्थानीय coordination, embedded worker। team: PostgreSQL, निजी S3, PGVector, Redis, बाहरी worker। Partial mix reject।
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
LIBRE_PLATFORM_MODE | solo | solo/team |
DATABASE_BACKEND | sqlite | sqlite/postgres |
DATABASE_URL | unset | PostgreSQL URL |
DATABASE_SSL_MODE | verify-full | disable, require, verify-full |
POSTGRES_MIGRATION_MODE | apply | Apply या केवल-पढ़ने validate |
POSTGRES_POOL_MAX | 10 | Connections प्रति प्रक्रिया 1–100 |
POSTGRES_CONNECT_TIMEOUT_MS | 5000 | 1–60000 ms |
POSTGRES_IDLE_TIMEOUT_MS | 30000 | 1–600000 ms |
POSTGRES_STATEMENT_TIMEOUT_MS | 30000 | 1–600000 ms |
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS | 60000 | 1–600000 ms |
BLOB_STORE_BACKEND | local | एन्क्रिप्टेड local/निजी s3 |
VECTOR_STORE_BACKEND | SQLite में embedded | embedded/pgvector |
COORDINATION_BACKEND | solo local, team redis | Coordination |
REDIS_URL | unset | redis:/rediss: URL |
REDIS_KEY_PREFIX | libre | 1–64 namespace |
REDIS_CONNECT_TIMEOUT_MS | 5000 | Max 60 seconds |
JOB_WORKER_MODE | solo embedded, team external | Worker location |
RESOURCE_LEASE_TTL_MS | 30000 | 5000–300000 lease TTL |
JOB_WORKER_CONCURRENCY | 4 | 1–32 jobs |
CHAT_STREAM_EVENT_RETENTION_HOURS | 24 | Chat खंड घंटे |
PLATFORM_EVENT_RETENTION_DAYS | 30 | घटना दिन |
PLATFORM_JOB_RETENTION_DAYS | 30 | Finished job दिन |
LIBRE_SKIP_STARTUP_INTEGRITY_SCAN | unset | 1 skip next पुराना स्कैन |
STORAGE_ENCRYPTION_KEYS | unset | legacy = ENCRYPTION_KEY वाली JSON मैप |
STORAGE_ENCRYPTION_ACTIVE_KEY_ID | unset | सक्रिय blob/vector कुंजी |
BLOB_QUOTA_BYTES_PER_USER | 10737418240 | खुला blob bytes प्रति मालिक |
BLOB_QUOTA_RESERVATION_TTL_MS | 3600000 | Abandoned reservation min 60000 ms |
S3_BUCKET | unset | निजी bucket |
S3_REGION | unset | Region |
S3_ENDPOINT | प्रदाता डिफ़ॉल्ट | वैकल्पिक MinIO HTTP(S) एंडपॉइंट |
S3_ACCESS_KEY_ID | SDK chain | Access कुंजी |
S3_SECRET_ACCESS_KEY | SDK chain | स्पष्ट कुंजी के साथ आवश्यक |
S3_SESSION_TOKEN | unset | Session टोकन |
S3_FORCE_PATH_STYLE | false | true पथ style |
S3_BLOB_PREFIX | libre/blobs | Opaque prefix |
Map absent पर ENCRYPTION_KEY as legacy, फिर ${DATA_DIR}/.encryption_key बिना जनरेट/modify। स्पष्ट config/फ़ाइल match। Versioned map पर पुराना कुंजी सटीक legacy रखें जब तक objects/vectors rewrite/rewrap/verify। Conflicts, असुरक्षित permissions, symlinks, अनुपस्थित keys fail closed।
Redis coordination है, canonical persistence नहीं। Team साझा admission HTTP/WebSocket/STT/TTS/ऑडियो/import/terminal आर-पार replicas; विफलता 503/abort, नहीं स्थानीय वैकल्पिक। Platform Foundation।
Team Compose/Helm सभी selectors/tuning app/worker को। Helm non-रहस्य env, secrets secrets.redisUrl, secrets.databaseUrl, secrets.storageEncryptionKeys। At least (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX plus headroom। दूरस्थ PostgreSQL DATABASE_SSL_MODE=verify-full, निजी Compose disable; सामान्य secrets.jwtSecret। S3 ciphertext।
Archives pool/timeouts, Redis, blob quotas, selectors, S3 addressing signed एन्क्रिप्टेड config में। App/worker समान OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT, OLLAMA_MAX_CONTEXT; पूर्ण positive decimals केवल, 300000ms/exponent/hex/बाहर-of-range reject।
Helm TRUST_PROXY सटीक 0–16, not true। PostgreSQL सटीक schema, Recreate, नहीं mixed/zero-downtime। सक्रिय team requires worker.replicaCount >= 1।
निजी Backup Helper
deploy/private/libre-webui-backup पढ़ता है:
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
LIBRE_WEBUI_STACK_DIR | /opt/libre-webui | Compose dir |
LIBRE_WEBUI_BACKUP_DIR | /var/backups/libre-webui | Backup dir |
LIBRE_WEBUI_BACKUP_RETENTION_DAYS | 14 | Retention |
LIBRE_WEBUI_CONTAINER_NAME | libre-webui | Container |
LIBRE_WEBUI_BACKUP_KEY_DIR | /etc/libre-webui/backup-keys | Keys |
LIBRE_WEBUI_RESTORE_IMAGE | required | Restore इमेज |
LIBRE_WEBUI_RESTORE_CONFIG_DIR | /etc/libre-webui/restored | Restored config |
systemd वैकल्पिक /etc/libre-webui/backup.env पढ़ता है, जिसका मालिक root और मोड 0600 होना चाहिए; अनुप्रयोग का .env नहीं पढ़ा जाता। कस्टम डायरेक्टरी को सेवा के अतिरिक्त कॉन्फ़िगरेशन में सटीक ReadWritePaths= चाहिए। निजी डिप्लॉयमेंट देखें।
प्रमाणीकरण और सुरक्षा
MFA मोड optional या required। Web Push contact डिफ़ॉल्ट mailto:admin@localhost; VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT push; TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY, TURNSTILE_EXPECTED_HOSTNAME Turnstile।
ENABLE_SIGNUP डिफ़ॉल्ट false, JWT_SECRET, JWT_EXPIRES_IN 7d, ENCRYPTION_KEY, DEBUG_ENCRYPTION, Turnstile, MFA_REQUIRED_MODE, WEBAUTHN_RP_ID, VAPID। ENABLE_SIGNUP=false पहला व्यवस्थापक देता। JWT sid bound। AUDIT_RETENTION_DAYS 180। TLS require, tests warn।
Generic OIDC SSO
स्थिर उपयोगकर्ता ID sub, groups डिफ़ॉल्ट groups claim। OIDC_GROUP_CLAIM, OIDC_SYNC_GROUPS; OIDC_CALLBACK_URL, OIDC_ALLOWED_EMAIL_DOMAINS, OIDC_ADMIN_GROUPS।
OIDC_ISSUER_URL में <issuer>/.well-known/openid-configuration, साथ में OIDC_CLIENT_ID और OIDC_CLIENT_SECRET आवश्यक हैं; OIDC_DISPLAY_NAME Single Sign-On, OIDC_SCOPES openid profile email। Origin का मेल होना चाहिए।
WebSocket: CHAT_WS_MAX_PAYLOAD_BYTES 10 MiB, CHAT_WS_MAX_MESSAGES_PER_MINUTE 120, CHAT_WS_MAX_ACTIVE_GENERATIONS_PER_USER 4, CHAT_WS_MAX_CONNECTIONS_PER_USER 5, WEBSOCKET_TICKET_TTL_MS 30000। एकबारगी ticket, Origin जाँच।
OAuth
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, GITHUB_CALLBACK_URL, HUGGINGFACE_CLIENT_ID, HUGGINGFACE_CLIENT_SECRET, HUGGINGFACE_CALLBACK_URL; वैकल्पिक BASE_URL।
Ollama
OLLAMA_BASE_URL http://localhost:11434, OLLAMA_TIMEOUT 300000, OLLAMA_LONG_OPERATION_TIMEOUT 900000, OLLAMA_MAX_CONTEXT 32768। DEFAULT_MODEL डिफ़ॉल्ट रूप से खाली; नए खाते अपनी पसंद चुनने तक इसी मॉडल से शुरू होते हैं (CLI में --model)।
Web खोज
SEARXNG_URL एंडपॉइंट prefill; व्यवस्थापक separately enable।
ईमेल सूचनाएँ
ये चर उस आउटगोइंग मेल सर्वर को seed करते हैं जिसे व्यवस्थापक सेटिंग्स > उपयोगकर्ता प्रबंधन > पहुँच और नीतियाँ > ईमेल सूचनाएँ में प्रबंधित करते हैं। UI में सहेजा गया मान चर पर प्राथमिकता रखता है; UI में फ़ील्ड खाली करने पर चर वाला मान लौट आता है। जब तक व्यवस्थापक स्विच चालू न करे, ईमेल बंद रहता है, और हर उपयोगकर्ता अब भी सेटिंग्स > सूचनाएँ में प्रत्येक सूचना प्रकार के लिए अलग से opt-in करता है।
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
SMTP_HOST | unset | मेल सर्वर का होस्ट नाम |
SMTP_PORT | 587, या tls के साथ 465 | मेल सर्वर पोर्ट |
SMTP_SECURITY | starttls | starttls (सामान्य कनेक्शन अपग्रेड करता है), tls (implicit TLS), या none (भरोसेमंद नेटवर्क) |
SMTP_USER | unset | प्रमाणीकरण उपयोगकर्ता; जो relay बिना साइन-इन मेल स्वीकारता है उसके लिए खाली छोड़ें |
SMTP_PASSWORD | unset | प्रमाणीकरण पासवर्ड; UI में सहेजा पासवर्ड एन्क्रिप्टेड रूप से संग्रहीत और प्राथमिकता वाला होता है |
SMTP_FROM | unset | प्रेषक, उदाहरण के लिए Libre WebUI <[email protected]> |
SMTP_TLS_REJECT_UNAUTHORIZED | true | केवल self-signed प्रमाणपत्र वाले relay के लिए false सेट करें |
BASE_URL | unset | इंस्टेंस का सार्वजनिक URL, संदेशों के भीतर लिंक के लिए उपयोग होता है |
Strands इंजन
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
LIBRE_STRANDS_ACCESS | सेट नहीं (प्रशासक सेटिंग, बंद) | तय करें कि अंतर्निहित Strands इंजन कौन उपयोग कर सकता है: disabled, admins या all-users। कोई अन्य मान इसे बंद स्थिति में लॉक कर देता है |
Work रनटाइम
Codex home ~/.codex। डिफ़ॉल्ट इमेज node:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3, नेटवर्क/namespace libre-webui-work, command/बैकएंड docker। Team में AGENT_CLI_MODELS_ENABLED=false, CODEX_OAUTH_MODELS_ENABLED=false।
Command समय-सीमा 120000; defaults 2, 2, 2, pool max 100, साथ 256, 2g, 3, 4173, 48, 500, 50000, 5Gi, 6080, 6081।
सभी Work variables: WORK_RUNTIME_IMAGE, WORK_DOCKER_COMMAND, WORK_COMMAND_TIMEOUT_MS, WORK_MAX_OUTPUT_CHARS, WORK_MAX_AGENT_ROUNDS, WORK_STATUS_BLURB_MODEL, WORK_MEMORY_LIMIT, WORK_CPU_LIMIT, WORK_PIDS_LIMIT, WORK_PREVIEW_PORT, WORK_PREVIEW_BIND, WORK_DOCKER_PUBLISHED_HOST, WORK_COMPUTER_SCREEN_PORT, WORK_COMPUTER_AUDIO_PORT, WORK_MAX_ACTIVE_RUNTIMES_GLOBAL, WORK_MAX_ACTIVE_RUNTIMES_PER_USER, WORK_MAX_TASKS_GLOBAL, WORK_MAX_TASKS_PER_USER, WORK_NETWORK_NAME, WORK_RUN_LEASE_WAIT_MS, WORK_RUNTIME_DNS, WORK_DOCKER_SOCKET, WORK_TERMINAL_MAX_SESSIONS_PER_TASK, WORK_TERMINAL_IDLE_TIMEOUT_MS, WORK_RUNTIME_IDLE_TIMEOUT_MS, WORK_HOST_WORKSPACES_ENABLED, WORK_HOST_WORKSPACE_ROOTS, WORK_RUNTIME_BACKEND, WORK_K8S_NAMESPACE, WORK_K8S_STORAGE_CLASS, WORK_K8S_WORKSPACE_SIZE, WORK_K8S_POD_READY_TIMEOUT_MS, WORK_K8S_POD_GONE_TIMEOUT_MS, AGENT_CLI_MODELS_ENABLED, TOOLS_ACCESS_MODE, STT_ACCESS_MODE, TTS_ACCESS_MODE, VOICE_MODE_ACCESS_MODE, VOICE_CLONING_ACCESS_MODE, TOOLS_PRIVATE_NETWORK_ALLOWLIST, AGENT_CLI_TIMEOUT_MS, CODEX_OAUTH_MODELS_ENABLED, CODEX_HOME। WORK_RUNTIME_IDLE_TIMEOUT_MS की डिफ़ॉल्ट अब 1800000 (30 मिनट) है, पहले 0 (बंद) थी।
Host roots : separated; access modes admins, admins, admins, all-users, all-users, all-users, all-users, all-users। बैकएंड kubernetes; Codex auth.json। Agent CLI/Codex solo केवल, team असत्य। /workspace mounts; .ssh, .gnupg, .aws, .config reject। claude, codex व्यवस्थापक-केवल।
नेटवर्क WORK_NETWORK_NAME, DNS WORK_RUNTIME_DNS, Kubernetes work.networkPolicy.blockedEgressCidrs। Terminal WORK_DOCKER_SOCKET, DOCKER_HOST (unix://, tcp://, docker-compose.socket-proxy.yml), /var/run/docker.sock; ssh://, DOCKER_TLS_VERIFY terminal अनुपलब्ध। Helm work.env। Tool budget max(128, WORK_MAX_AGENT_ROUNDS × 8), अंतिम needs_input, persisted आउटपुट ~20 000।
Compose DOCKER_GID 0, DOCKER_SOCKET /var/run/docker.sock; team docker-compose.team.work.yml, Helm work.enabled=true; WEBUI_BIND_ADDRESS 127.0.0.1, WEBUI_PORT 8080। Solo 0/1 app replica; team multi-replica PostgreSQL/S3/PGVector/Redis और समान इमेज/StorageClass/work.env बाहरी worker। WORK_DOCKER_PUBLISHED_HOST का app default WORK_PREVIEW_BIND जैसा है, Compose default host.docker.internal; native Docker Engine पर Compose deployments को WORK_PREVIEW_BIND के लिए पहुँच योग्य गैर-सार्वजनिक bridge interface देना चाहिए।
AGENT_CLI_MODELS_ENABLED: सीधे एजेंट CLI मॉडल का चालू/बंद मान स्थिर करता है; मान न हो तो अलग प्रशासकीय स्विच लागू होता है।
प्रदाता मॉडल खोज
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
PLUGIN_MODEL_DISCOVERY_TTL_MS | 21600000 (6 h) | कैटलॉग रीफ़्रेश age |
PLUGIN_MODEL_DISCOVERY_RETRY_MS | 600000 (10 min) | फिर प्रयास gap |
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS | 3000 | सूची wait deadline |
स्पष्ट रीफ़्रेश मॉडल interval ignore करके प्रदाता contact; late परिणाम next अनुरोध।
प्रदाता प्लगइन Keys
OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY, GEMINI_API_KEY, MISTRAL_API_KEY, DEEPSEEK_API_KEY, AWS_BEARER_TOKEN_BEDROCK, OPENROUTER_API_KEY, KIMI_API_KEY, GITHUB_API_KEY, HUGGINGFACE_API_KEY, ELEVENLABS_API_KEY, COMFYUI_API_KEY।
पर्यावरण कुंजी केवल unshadowed bundled विश्वसनीय रूट। Imported/writable समान ID/कस्टम व्यवस्थापक रूट उसी खाते का उपयोगकर्ता कुंजी; नहीं रहस्य attach। Trust compiled मैनिफ़ेस्ट हैश। उपयोगकर्ता कुंजी परिभाषा/स्रोत/auth/रूटिंग bound; बदलाव पर resave। पुराना unbound सटीक shipped रूट पर bind। उपयोगकर्ता द्वारा सहेजी गई कुंजियाँ मॉडल कैटलॉग अपडेट के बाद भी मान्य रहती हैं।
स्रोत सापेक्ष PLUGINS_DIR बैकएंड से, package launcher caller से। backend/plugins और historical locations पढ़ें। $DATA_DIR/plugins में move; recovery पुराना paths बाहरी स्थिति और volume-केवल snapshot block। प्लगइन dirs/JSON physical regular, नहीं symlink।
फ़्रंटएंड
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
VITE_API_BASE_URL | same-origin dev proxy या production API | API मूल URL |
VITE_WS_BASE_URL | API URL से inferred | पूर्ण ws:/wss: for Chat/Work |
VITE_APP_VERSION | Vite package version | Displayed version |
VITE_DEMO_MODE | false | true demo mocks |
VITE_API_TIMEOUT | 300000 | API समय-सीमा ms |
VITE_BACKEND_URL | http://localhost:3001 | Auth helpers |
VITE_DEBUG_VERBOSE | unset | Verbose dev लॉग |
VITE_LOG_LEVEL | unset | फ़्रंटएंड लॉग level |
ELECTRON_BUILD | unset | true Electron Vite behavior |
VITE_WS_BASE_URL Chat/Work WebSocket fallbacks override। Reverse proxy पथ prefix अनुमत, लेकिन पूर्ण ws:/wss: बिना क्रेडेंशियल/क्वेरी/fragment। Unset पर Electron file: → ws://localhost:3001; ब्राउज़र VITE_API_BASE_URL और फिर browser origin से derive करते हैं। Vite dev origin को backend port 3001 पर proxy करता है।
रखरखाव स्क्रिप्ट
| चर | उद्देश्य |
|---|---|
CHANGELOG_AI | 0 AI changelog drafts बंद |
CHANGELOG_AI_MODEL | Ollama release/changelog मॉडल |
CHANGELOG_AI_TIMEOUT_MS | समय-सीमा ms |
CHANGELOG_AI_MODEL=glm-5.2:cloud npm run changelog
CHANGELOG_AI=0 npm run release:minor
उत्पादन उदाहरण
NODE_ENV=production
PORT=3001
SERVE_FRONTEND=true
DATA_DIR=/data/libre-webui
CORS_ORIGIN=https://librewebui.example
BASE_URL=https://librewebui.example
JWT_SECRET=replace-with-a-long-random-secret
ENCRYPTION_KEY=replace-with-64-hex-characters
ENABLE_SIGNUP=false
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_TIMEOUT=300000
OLLAMA_LONG_OPERATION_TIMEOUT=900000
OLLAMA_MAX_CONTEXT=32768
TURNSTILE_SITE_KEY=...
TURNSTILE_SECRET_KEY=...
TURNSTILE_EXPECTED_HOSTNAME=librewebui.example