मुख्य कंटेंट तक स्किप करें

पर्यावरण चर

वर्तमान बैकएंड, फ़्रंटएंड और रखरखाव स्क्रिप्ट के ऑपरेटर-उन्मुख चर। केवल परीक्षण canary जानबूझकर छोड़े गए हैं।

बैकएंड सर्वर

चरडिफ़ॉल्टउद्देश्य
NODE_ENVdevelopmentरनटाइम मोड
PORTdev में 3001, production में 8080HTTP पोर्ट
TRUST_PROXYunset (Helm में 0)सटीक विश्वसनीय proxy hop count
CORS_ORIGINस्थानीय dev originsअनुमत ब्राउज़र origins comma-separated
SERVE_FRONTENDunsettrue built फ़्रंटएंड serve
DOCKER_ENVunsettrue Docker behavior
DATA_DIRbackend/data; CLI में ~/.libre-webuiस्थायी डेटा डायरेक्टरी
PLATFORM_PREFLIGHT_TMP_DIRbackend/temp/preflight; CLI उपयोगकर्ता cacheDB/WAL scratch copy
PLUGIN_UPLOAD_TEMP_DIROS temp में libre-webui-plugin-uploadsप्लगइन अपलोड scratch
PLUGINS_DIR$DATA_DIR/pluginsWritable प्लगइन डायरेक्टरी
BASE_URLhttp://localhost:3001OAuth callback डिफ़ॉल्ट
LOG_LEVELinfo (tests warn)बैकएंड लॉग level
LOG_FORMATtextjson structured one-line लॉग
OTEL_EXPORTER_OTLP_ENDPOINTunsetOpt-in OTLP/HTTP JSON export
OTEL_EXPORTER_OTLP_HEADERSunsetCollector key=value headers
OTEL_SERVICE_NAMElibre-webuiservice.name
WEBUI_HOSTloopback; Docker 0.0.0.0Listen address
OPEN_BROWSERफ़्रंटएंड serving पर truefalse ब्राउज़र launch suppress
FULL_DOCUMENT_CONTEXT_MAX_TOKENS32000पूर्ण-दस्तावेज़ guard 1000–2000000
GALLERY_RETENTION_DAYSunset, foreverपुराना gallery media हटाएँ
RECOVERY_DRILL_INTERVAL_HOURSunset, बंदSolo recovery drill हर N घंटे
RECOVERY_DRILL_HISTORY60Retained drill प्रविष्टियाँ

स्रोत launches सापेक्ष DATA_DIR, PLUGINS_DIR, PLATFORM_PREFLIGHT_TMP_DIR बैकएंड डायरेक्टरी से resolve। DATA_DIR=./databackend/data, पुराना DATA_DIR=./backend/databackend/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_MODEsolosolo/team
DATABASE_BACKENDsqlitesqlite/postgres
DATABASE_URLunsetPostgreSQL URL
DATABASE_SSL_MODEverify-fulldisable, require, verify-full
POSTGRES_MIGRATION_MODEapplyApply या केवल-पढ़ने validate
POSTGRES_POOL_MAX10Connections प्रति प्रक्रिया 1–100
POSTGRES_CONNECT_TIMEOUT_MS50001–60000 ms
POSTGRES_IDLE_TIMEOUT_MS300001–600000 ms
POSTGRES_STATEMENT_TIMEOUT_MS300001–600000 ms
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS600001–600000 ms
BLOB_STORE_BACKENDlocalएन्क्रिप्टेड local/निजी s3
VECTOR_STORE_BACKENDSQLite में embeddedembedded/pgvector
COORDINATION_BACKENDsolo local, team redisCoordination
REDIS_URLunsetredis:/rediss: URL
REDIS_KEY_PREFIXlibre1–64 namespace
REDIS_CONNECT_TIMEOUT_MS5000Max 60 seconds
JOB_WORKER_MODEsolo embedded, team externalWorker location
RESOURCE_LEASE_TTL_MS300005000–300000 lease TTL
JOB_WORKER_CONCURRENCY41–32 jobs
CHAT_STREAM_EVENT_RETENTION_HOURS24Chat खंड घंटे
PLATFORM_EVENT_RETENTION_DAYS30घटना दिन
PLATFORM_JOB_RETENTION_DAYS30Finished job दिन
LIBRE_SKIP_STARTUP_INTEGRITY_SCANunset1 skip next पुराना स्कैन
STORAGE_ENCRYPTION_KEYSunsetlegacy = ENCRYPTION_KEY वाली JSON मैप
STORAGE_ENCRYPTION_ACTIVE_KEY_IDunsetसक्रिय blob/vector कुंजी
BLOB_QUOTA_BYTES_PER_USER10737418240खुला blob bytes प्रति मालिक
BLOB_QUOTA_RESERVATION_TTL_MS3600000Abandoned reservation min 60000 ms
S3_BUCKETunsetनिजी bucket
S3_REGIONunsetRegion
S3_ENDPOINTप्रदाता डिफ़ॉल्टवैकल्पिक MinIO HTTP(S) एंडपॉइंट
S3_ACCESS_KEY_IDSDK chainAccess कुंजी
S3_SECRET_ACCESS_KEYSDK chainस्पष्ट कुंजी के साथ आवश्यक
S3_SESSION_TOKENunsetSession टोकन
S3_FORCE_PATH_STYLEfalsetrue पथ style
S3_BLOB_PREFIXlibre/blobsOpaque 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 सटीक 016, 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-webuiCompose dir
LIBRE_WEBUI_BACKUP_DIR/var/backups/libre-webuiBackup dir
LIBRE_WEBUI_BACKUP_RETENTION_DAYS14Retention
LIBRE_WEBUI_CONTAINER_NAMElibre-webuiContainer
LIBRE_WEBUI_BACKUP_KEY_DIR/etc/libre-webui/backup-keysKeys
LIBRE_WEBUI_RESTORE_IMAGErequiredRestore इमेज
LIBRE_WEBUI_RESTORE_CONFIG_DIR/etc/libre-webui/restoredRestored 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 emailOrigin का मेल होना चाहिए।

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

Web खोज

SEARXNG_URL एंडपॉइंट prefill; व्यवस्थापक separately enable।

Libre Claw

LIBRE_CLAW_BASE_URL http://127.0.0.1:8766, LIBRE_CLAW_TIMEOUT_MS 30000

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

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 देना चाहिए।

प्रदाता मॉडल खोज

चरडिफ़ॉल्टउद्देश्य
PLUGIN_MODEL_DISCOVERY_TTL_MS21600000 (6 h)कैटलॉग रीफ़्रेश age
PLUGIN_MODEL_DISCOVERY_RETRY_MS600000 (10 min)फिर प्रयास gap
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS3000सूची wait deadline

स्पष्ट रीफ़्रेश मॉडल interval ignore करके प्रदाता contact; late परिणाम next अनुरोध।

प्रदाता प्लगइन Keys

OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY, GEMINI_API_KEY, MISTRAL_API_KEY, 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_URLsame-origin dev proxy या production APIAPI मूल URL
VITE_WS_BASE_URLAPI URL से inferredपूर्ण ws:/wss: for Chat/Work
VITE_APP_VERSIONVite package versionDisplayed version
VITE_DEMO_MODEfalsetrue demo mocks
VITE_API_TIMEOUT300000API समय-सीमा ms
VITE_BACKEND_URLhttp://localhost:3001Auth helpers
VITE_DEBUG_VERBOSEunsetVerbose dev लॉग
VITE_LOG_LEVELunsetफ़्रंटएंड लॉग level
ELECTRON_BUILDunsettrue 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_AI0 AI changelog drafts बंद
CHANGELOG_AI_MODELOllama 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

संबंधित दस्तावेज़