Перейти к основному содержимому

Переменные окружения

Переменные для операторов, читаемые backend, frontend и обслуживающими скриптами. Тестовые canary исключены.

Backend

ПеременнаяПо умолчаниюНазначение
NODE_ENVdevelopmentRuntime
PORT3001 dev, 8080 prodHTTP
TRUST_PROXYнет (0 Helm)Число proxy
CORS_ORIGINлокальныеOrigins
SERVE_FRONTENDнетtrue обслуживает frontend
DOCKER_ENVнетDocker при true
DATA_DIRbackend/data; CLI ~/.libre-webuiДанные
PLATFORM_PREFLIGHT_TMP_DIRbackend/temp/preflight; cacheDB/WAL
PLUGIN_UPLOAD_TEMP_DIRlibre-webui-plugin-uploadsЗагрузки
PLUGINS_DIR$DATA_DIR/pluginsПлагины
BASE_URLhttp://localhost:3001OAuth
LOG_LEVELinfoЛоги
LOG_FORMATtextjson структурированный
OTEL_EXPORTER_OTLP_ENDPOINTнетOTLP opt-in
OTEL_EXPORTER_OTLP_HEADERSнетkey=value
OTEL_SERVICE_NAMElibre-webuiservice.name
WEBUI_HOSTloopback; Docker 0.0.0.0Listen
OPEN_BROWSERtruefalse не открывает
FULL_DOCUMENT_CONTEXT_MAX_TOKENS32000Полный документ
GALLERY_RETENTION_DAYSнетRetention медиа
RECOVERY_DRILL_INTERVAL_HOURSнетУпражнение N часов
RECOVERY_DRILL_HISTORY60История

Source разрешает относительные DATA_DIR, PLUGINS_DIR, PLATFORM_PREFLIGHT_TMP_DIR от backend. DATA_DIR=./databackend/data; DATA_DIR=./backend/databackend/backend/data. Меняйте после остановки и backup. Два состояния без выбора дают безопасный отказ.

npx, global npm и Homebrew используют ~/.libre-webui; относительные пути — от вызывающего каталога. Cache: ~/Library/Caches/libre-webui, %LOCALAPPDATA%\libre-webui, ${XDG_CACHE_HOME:-~/.cache}/libre-webui; Homebrew var/libre-webui/preflight; Docker/Helm /app/backend/data, /app/backend/temp/preflight.

Основа платформы

Адрес Redis использует схемы redis: или rediss:.

solo: SQLite, локальные зашифрованные blobs/vectors, local coordination, embedded worker. team: PostgreSQL, S3, PGVector, Redis, external worker. Неполная конфигурация отклоняется.

ПеременнаяПо умолчаниюНазначение
LIBRE_PLATFORM_MODEsolosolo/team
DATABASE_BACKENDsqlitesqlite/postgres
DATABASE_URLнетPostgreSQL
DATABASE_SSL_MODEverify-fullTLS
POSTGRES_MIGRATION_MODEapplyapply/validate
POSTGRES_POOL_MAX10Pool
POSTGRES_CONNECT_TIMEOUT_MS5000Connect
POSTGRES_IDLE_TIMEOUT_MS30000Idle
POSTGRES_STATEMENT_TIMEOUT_MS30000Statement
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS60000Lock
BLOB_STORE_BACKENDlocallocal/s3
VECTOR_STORE_BACKENDembeddedembedded/pgvector
COORDINATION_BACKENDlocal/redisCoordination
REDIS_URLнетRedis
REDIS_KEY_PREFIXlibreNamespace
REDIS_CONNECT_TIMEOUT_MS5000Timeout
JOB_WORKER_MODEembedded/externalWorker
RESOURCE_LEASE_TTL_MS30000Lease
JOB_WORKER_CONCURRENCY4Jobs
CHAT_STREAM_EVENT_RETENTION_HOURS24Chat
PLATFORM_EVENT_RETENTION_DAYS30Events
PLATFORM_JOB_RETENTION_DAYS30Jobs
LIBRE_SKIP_STARTUP_INTEGRITY_SCANнет1 пропускает scan
STORAGE_ENCRYPTION_KEYSнетКарта с legacy = ENCRYPTION_KEY
STORAGE_ENCRYPTION_ACTIVE_KEY_IDнетАктивный ключ
BLOB_QUOTA_BYTES_PER_USER10737418240Quota
BLOB_QUOTA_RESERVATION_TTL_MS3600000Reservation
S3_BUCKETнетBucket
S3_REGIONнетRegion
S3_ENDPOINTproviderEndpoint
S3_ACCESS_KEY_IDSDKAccess
S3_SECRET_ACCESS_KEYSDKSecret
S3_SESSION_TOKENнетToken
S3_FORCE_PATH_STYLEfalsePath-style
S3_BLOB_PREFIXlibre/blobsPrefix

Без карты используется ENCRYPTION_KEY как legacy, затем ${DATA_DIR}/.encryption_key без генерации. Ключи должны совпадать; конфликт, права, symlink и отсутствие дают безопасный отказ.

Redis — coordination, не канонические данные. Team использует shared admission для HTTP/WebSocket/STT/TTS/audio/import/terminal; ошибка 503 или abort, без local fallback. Основа.

Team передаёт всё app/worker. Helm: env, секреты secrets.redisUrl, secrets.databaseUrl, secrets.storageEncryptionKeys. Резервируйте (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX; remote DATABASE_SSL_MODE=verify-full, private Compose disable; общий secrets.jwtSecret. S3 получает ciphertext.

Архивы сохраняют параметры в подписанной зашифрованной конфигурации. App/worker имеют одинаковые OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT, OLLAMA_MAX_CONTEXT; только полные положительные десятичные значения, 300000ms и неверные формы отклоняются.

Helm TRUST_PROXY только 016, не true. PostgreSQL schema точная, Recreate, без mixed/zero-downtime. Активный team требует worker.replicaCount >= 1.

Приватный helper резервного копирования

deploy/private/libre-webui-backup.

| LIBRE_WEBUI_STACK_DIR | /opt/libre-webui | Compose | | LIBRE_WEBUI_BACKUP_DIR | /var/backups/libre-webui | Backup | | 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 | Image | | LIBRE_WEBUI_RESTORE_CONFIG_DIR | /etc/libre-webui/restored | Config |

Файл /etc/libre-webui/backup.env, root, 0600; custom directory требует ReadWritePaths=. Приватное развёртывание.

Аутентификация

Необязательные режимы обозначаются как optional и optional.

Контакт Web Push по умолчанию — mailto:admin@localhost.

VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY и VAPID_SUBJECT настраивают Web 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 допускает первого admin. JWT связан с sid. AUDIT_RETENTION_DAYS 180. TLS mode может быть require; тестовый log level — warn.

Общий OIDC SSO

Стабильный идентификатор пользователя находится в claim sub.

Групповая claim по умолчанию — groups.

OIDC_GROUP_CLAIM и OIDC_SYNC_GROUPS управляют синхронизацией групп.

OIDC_CALLBACK_URL, OIDC_ALLOWED_EMAIL_DOMAINS и OIDC_ADMIN_GROUPS настраивают callback, домены и административные группы.

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, callback, domains, groups. Требует issuer/ID/secret. Header 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; fallback BASE_URL.

Ollama

OLLAMA_BASE_URL http://localhost:11434, OLLAMA_TIMEOUT 300000, OLLAMA_LONG_OPERATION_TIMEOUT 900000, OLLAMA_MAX_CONTEXT 32768.

Веб-поиск

SEARXNG_URL задаёт endpoint; admin включает отдельно.

Libre Claw

LIBRE_CLAW_BASE_URL http://127.0.0.1:8766, LIBRE_CLAW_TIMEOUT_MS 30000.

Runtime Work

Домашний каталог Codex по умолчанию — ~/.codex.

Образ по умолчанию — node:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3, а сеть и namespace — libre-webui-work и libre-webui-work.

По умолчанию команда и backend имеют значения docker и docker.

В team обязательны AGENT_CLI_MODELS_ENABLED=false и CODEX_OAUTH_MODELS_ENABLED=false.

Тайм-аут команды по умолчанию равен 120000; несколько лимитов по умолчанию имеют значения 2, 2 и 2, а верхняя граница пула — 100. Остальные стандартные значения включают 256, 2g, 3, 4173, 48, 500, 50000, 5Gi, 6080 и 6081. В нативном Docker Engine развёртывания Compose обязаны задать WORK_PREVIEW_BIND на достижимый непубличный интерфейс моста; у WORK_DOCKER_PUBLISHED_HOST значение по умолчанию в приложении совпадает с WORK_PREVIEW_BIND, а в Compose это host.docker.internal.

Все переменные Work из исходной таблицы сохранены: 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 разделены :; режимы могут быть admins, admins, admins, all-users, all-users, all-users, all-users, all-users. Backend может быть kubernetes, Codex читает auth.json. Agent CLI/Codex только solo; team требует false. Папки в /workspace, блокируются .ssh, .gnupg, .aws, .config. claude, codex admin-only.

Сеть 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, output около 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.

Обнаружение моделей поставщиков

PLUGIN_MODEL_DISCOVERY_TTL_MS 21600000, PLUGIN_MODEL_DISCOVERY_RETRY_MS 600000, PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS 3000.

Ключи поставщиков

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.

Environment keys только trusted manifest; custom требует user key. PLUGINS_DIR относительный от backend/source или caller/package; также читается backend/plugins, переносите в $DATA_DIR/plugins, без symlink.

Frontend

VITE_API_BASE_URL, VITE_WS_BASE_URL, VITE_APP_VERSION, VITE_DEMO_MODE, VITE_API_TIMEOUT, VITE_BACKEND_URL, VITE_DEBUG_VERBOSE, VITE_LOG_LEVEL, ELECTRON_BUILD. VITE_WS_BASE_URL абсолютный ws:/wss: без credentials/query/fragment; Electron file: fallback ws://localhost:3001.

Обслуживающие скрипты

CHANGELOG_AI, CHANGELOG_AI_MODEL, CHANGELOG_AI_TIMEOUT_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

Связанные документы