Ortam Değişkenleri
Geçerli arka uç, ön yüz ve bakım betiklerinin okuduğu işletmeci değişkenleri burada listelenir. Yalnız teste özel canary değerleri bilinçli olarak yoktur.
Arka Uç Sunucusu
| Değişken | Varsayılan | Amaç |
|---|---|---|
NODE_ENV | development | Çalışma modu |
PORT | geliştirmede 3001, üretimde 8080 | HTTP portu |
TRUST_PROXY | ayarsız (Helm’de 0) | Güvenilir reverse proxy atlama sayısı |
CORS_ORIGIN | yerel geliştirme kökenleri | Virgülle izinli tarayıcı kökenleri |
SERVE_FRONTEND | ayarsız | true derlenmiş ön yüzü sunar |
DOCKER_ENV | ayarsız | true Docker davranışını açar |
DATA_DIR | backend/data; paketli CLI’da ~/.libre-webui | Kalıcı veri dizini |
PLATFORM_PREFLIGHT_TMP_DIR | backend/temp/preflight; CLI’da kullanıcı önbelleği | Başlangıç DB/WAL inceleme alanı |
PLUGIN_UPLOAD_TEMP_DIR | işletim sistemi temp altında libre-webui-plugin-uploads | Eklenti yükleme geçici alanı |
PLUGINS_DIR | $DATA_DIR/plugins | Yazılabilir eklenti dizini |
BASE_URL | http://localhost:3001 | OAuth callback varsayılanı |
LOG_LEVEL | info (testte warn) | Günlük düzeyi |
LOG_FORMAT | text | json yapılandırılmış tek satır günlük |
OTEL_EXPORTER_OTLP_ENDPOINT | ayarsız | İsteğe bağlı OTLP/HTTP JSON dışa aktarımı |
OTEL_EXPORTER_OTLP_HEADERS | ayarsız | Kolektöre virgülle key=value başlıkları |
OTEL_SERVICE_NAME | libre-webui | Telemetri service.name niteliği |
WEBUI_HOST | loopback; Docker’da 0.0.0.0 | HTTP dinleme adresi |
OPEN_BROWSER | ön yüz sunulurken true | false otomatik tarayıcıyı engeller |
FULL_DOCUMENT_CONTEXT_MAX_TOKENS | 32000 | Tam belge bağlamı 1000–2000000 |
GALLERY_RETENTION_DAYS | ayarsız, sonsuza kadar | Eski galeri medyasını silme |
RECOVERY_DRILL_INTERVAL_HOURS | ayarsız, kapalı | Solo’da her N saatte kurtarma tatbikatı |
RECOVERY_DRILL_HISTORY | 60 | Saklanan tatbikat geçmişi |
Kaynak başlatma göreli DATA_DIR, PLUGINS_DIR, PLATFORM_PREFLIGHT_TMP_DIR değerlerini kabuktan bağımsız backend dizinine bağlar. DATA_DIR=./data → backend/data, eski DATA_DIR=./backend/data → backend/backend/data; yalnız durdurma, yedekleme ve bilinçli geçişle değiştirin. İki yerde durum varsa başlangıç tahmin, kopya veya birleştirme yerine güvenli kapanır.
npx, global npm ve Homebrew ~/.libre-webui kullanır; açık göreli yollar çağıranın dizininden mutlağa çevrilir. Önbellek macOS’ta ~/Library/Caches/libre-webui, Windows’ta %LOCALAPPDATA%\libre-webui, diğerlerinde ${XDG_CACHE_HOME:-~/.cache}/libre-webui; Homebrew var/libre-webui/preflight, Docker/Helm /app/backend/data ve /app/backend/temp/preflight kullanır. Veritabanı + WAL sığmıyorsa PLATFORM_PREFLIGHT_TMP_DIR ayarlayın.
Platform Temeli
solo: SQLite, yerel şifreli blob/gömülü vektör, yerel koordinasyon ve gömülü worker. team: PostgreSQL, özel S3, PGVector, Redis ve dış worker. Kısmi ortak bağımlılıklar reddedilir.
| Değişken | Varsayılan | Amaç |
|---|---|---|
LIBRE_PLATFORM_MODE | solo | solo veya team |
DATABASE_BACKEND | sqlite | sqlite veya postgres |
DATABASE_URL | ayarsız | PostgreSQL URL’si |
DATABASE_SSL_MODE | verify-full | disable, require, verify-full |
POSTGRES_MIGRATION_MODE | apply | Kilit altında uygula veya salt okunur validate |
POSTGRES_POOL_MAX | 10 | Süreç başına bağlantı, 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 | Şifreli local veya özel s3 |
VECTOR_STORE_BACKEND | SQLite ile embedded | embedded veya pgvector |
COORDINATION_BACKEND | solo’da local, team’de redis | Yerel veya Redis koordinasyonu |
REDIS_URL | ayarsız | redis: veya rediss: URL |
REDIS_KEY_PREFIX | libre | 1–64 karakter anahtar ad alanı |
REDIS_CONNECT_TIMEOUT_MS | 5000 | En çok 60 saniye |
JOB_WORKER_MODE | solo’da embedded, team’de external | Uygulama veya dış worker |
RESOURCE_LEASE_TTL_MS | 30000 | 5000–300000 kira TTL |
JOB_WORKER_CONCURRENCY | 4 | 1–32 eşzamanlı iş |
CHAT_STREAM_EVENT_RETENTION_HOURS | 24 | Sohbet akış olayı saatleri |
PLATFORM_EVENT_RETENTION_DAYS | 30 | Kalıcı olay günleri |
PLATFORM_JOB_RETENTION_DAYS | 30 | Bitmiş iş günleri |
LIBRE_SKIP_STARTUP_INTEGRITY_SCAN | ayarsız | 1 sonraki derin eski şifre taramasını atlar |
STORAGE_ENCRYPTION_KEYS | ayarsız | ENCRYPTION_KEY ile eşleşen legacy içeren JSON |
STORAGE_ENCRYPTION_ACTIVE_KEY_ID | ayarsız | Yeni blob/vektör yazma anahtarı |
BLOB_QUOTA_BYTES_PER_USER | 10737418240 | Sahip başına açık blob baytı |
BLOB_QUOTA_RESERVATION_TTL_MS | 3600000 | Terk edilen rezervasyon, en az 60000 ms |
S3_BUCKET | ayarsız | Özel S3 bucket |
S3_REGION | ayarsız | S3 bölgesi |
S3_ENDPOINT | sağlayıcı varsayılanı | MinIO veya uyumlu mutlak HTTP(S) ucu |
S3_ACCESS_KEY_ID | SDK kimlik zinciri | Açık erişim anahtarı |
S3_SECRET_ACCESS_KEY | SDK kimlik zinciri | Açık erişim anahtarıyla gerekir |
S3_SESSION_TOKEN | ayarsız | Oturum tokenı |
S3_FORCE_PATH_STYLE | false | Yol biçimli adresleme için true |
S3_BLOB_PREFIX | libre/blobs | Libre’ye ait saydam olmayan önek |
Anahtar haritası yoksa ENCRYPTION_KEY, legacy olarak; o da yoksa ${DATA_DIR}/.encryption_key değiştirilmeden okunur. Açık ayar ve dosya eşleşmelidir. Harita eklenince tüm nesneler yeniden yazılıp doğrulanana kadar eski anahtarı tam legacy ID’siyle koruyun. Çakışma, güvensiz izin, symlink ve eksik anahtar güvenli kapanır.
Redis koordinasyondur, kalıcı gerçek değildir. Tek başına SQLite veya yerel dosyaları kopyalar arasında güvenli yapmaz. Team’de HTTP, Chat/WebSocket, STT/TTS/audio, arşiv içe aktarma ve Work terminal kabulü tüm kopyalarda ortaktır. Hata 503 döndürür veya işlemi keser; yerel geri dönüş yoktur. Bkz. Platform Temeli.
Team Compose/Helm tüm seçicileri uygulama ve worker’a iletir. Helm’de sır olmayanlar env; secrets.redisUrl, secrets.databaseUrl, secrets.storageEncryptionKeys sırdır. En az (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX bağlantı ve pay ayırın. Uzak PostgreSQL için DATABASE_SSL_MODE=verify-full, özel Compose için disable. Team Helm tek kararlı secrets.jwtSecret ister. S3 yalnız şifreli ve saydam olmayan anahtar alır.
Arşivler havuz/zaman aşımı, Redis, blob kotası, platform seçicileri ve S3 adreslemesini imzalı şifreli yapılandırmada saklar.
Uygulama ve worker aynı OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT, OLLAMA_MAX_CONTEXT alır. Yalnız tam pozitif ondalık sayılar geçerlidir; 300000ms, üs, hex, sınır dışı veya standarttan küçük uzun zaman aşımı başlangıcı durdurur.
Helm TRUST_PROXY değerini 0–16 tam sayısıyla sınırlar ve yalnız HTTP Pod’larına yollar; sınırsız true kullanmayın.
PostgreSQL şeması tam sürüm ister. App/worker Recreate kullanır; yükseltmeden önce tüm eski Pod’ları bitirin, bir yeni süreç advisory lock altında geçirir. Karışık sürüm veya sıfır kesinti iddia etmeyin; geri dönüş temiz PostgreSQL/S3’e doğrulanmış yedektir.
Etkin team worker.replicaCount >= 1 ister. Tam askıya alma için app/worker sıfır; app sıfır, worker pozitif yalnız boşaltma/kurtarmadır.
Özel Yedekleme Yardımcısı
deploy/private/libre-webui-backup betiği şunları okur:
| Değişken | Varsayılan | Amaç |
|---|---|---|
LIBRE_WEBUI_STACK_DIR | /opt/libre-webui | Compose dizini |
LIBRE_WEBUI_BACKUP_DIR | /var/backups/libre-webui | Yedek dizini |
LIBRE_WEBUI_BACKUP_RETENTION_DAYS | 14 | Saklama günü |
LIBRE_WEBUI_CONTAINER_NAME | libre-webui | Kapsayıcı adı |
LIBRE_WEBUI_BACKUP_KEY_DIR | /etc/libre-webui/backup-keys | Anahtar dizini |
LIBRE_WEBUI_RESTORE_IMAGE | required | Geri yükleme image’ı |
LIBRE_WEBUI_RESTORE_CONFIG_DIR | /etc/libre-webui/restored | Geri yüklenen yapılandırma |
systemd birimi isteğe bağlı /etc/libre-webui/backup.env okur; root sahibi, 0600 olmalı ve uygulama .env dosyasını okumaz. Özel yedek dizini hizmet drop-in içinde tam ReadWritePaths= ister. Bkz. Özel dağıtım.
Kimlik Doğrulama ve Güvenlik
İkinci faktör politikası optional veya required olabilir. Web Push kişisi varsayılan mailto:admin@localhost; VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT push’ı, TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY, TURNSTILE_EXPECTED_HOSTNAME Turnstile’ı ayarlar.
Temel değişkenler: varsayılan false olan ENABLE_SIGNUP, JWT_SECRET, varsayılan 7d olan JWT_EXPIRES_IN, ENCRYPTION_KEY, DEBUG_ENCRYPTION, Turnstile, MFA_REQUIRED_MODE, WEBAUTHN_RP_ID, VAPID. ENABLE_SIGNUP=false ilk yöneticiyi yine kabul eder. JWT sid ile bağlıdır. AUDIT_RETENTION_DAYS varsayılan 180. TLS modu require, test log düzeyi warn olabilir.
Genel OIDC Tek Oturum Açma
Kararlı kullanıcı ID’si sub, gruplar varsayılan groups claim’inden gelir. OIDC_GROUP_CLAIM, OIDC_SYNC_GROUPS eşitlemeyi; OIDC_CALLBACK_URL, OIDC_ALLOWED_EMAIL_DOMAINS, OIDC_ADMIN_GROUPS callback, etki alanı ve yönetici gruplarını ayarlar.
OIDC_ISSUER_URL <issuer>/.well-known/openid-configuration ile, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET gerekir; OIDC_DISPLAY_NAME varsayılan Single Sign-On, OIDC_SCOPES openid profile email. Origin başlığı eşleşmelidir.
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. Bilet tek kullanımlı, köken denetlenir.
OAuth
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, GITHUB_CALLBACK_URL, HUGGINGFACE_CLIENT_ID, HUGGINGFACE_CLIENT_SECRET, HUGGINGFACE_CALLBACK_URL; varsayılan callback BASE_URL kullanır.
Ollama
OLLAMA_BASE_URL varsayılan http://localhost:11434, OLLAMA_TIMEOUT 300000, OLLAMA_LONG_OPERATION_TIMEOUT 900000, OLLAMA_MAX_CONTEXT 32768.
Web Araması
SEARXNG_URL ucu önceden doldurur; yönetici aramayı ayrıca etkinleştirir.
Libre Claw
LIBRE_CLAW_BASE_URL varsayılan http://127.0.0.1:8766, LIBRE_CLAW_TIMEOUT_MS 30000.
Work Çalışma Zamanı
Codex evi varsayılan ~/.codex. Varsayılan image node:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3, ağ/ad alanı libre-webui-work, komut/backend docker. Team’de AGENT_CLI_MODELS_ENABLED=false, CODEX_OAUTH_MODELS_ENABLED=false gerekir.
Komut zaman aşımı 120000; diğer varsayılanlar 2, 2, 2, havuz üstü 100, ayrıca 256, 2g, 3, 4173, 48, 500, 50000, 5Gi, 6080, 6081.
Tüm Work değişkenleri: 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.
Ana bilgisayar kökleri : ile ayrılır; erişim modları admins, admins, admins, all-users, all-users, all-users, all-users, all-users olabilir. Backend kubernetes olabilir, Codex auth.json okur. Agent CLI/Codex yalnız solo; team false ister. Klasörler /workspace altına bağlanır; .ssh, .gnupg, .aws, .config reddedilir. claude ve codex yalnız yöneticilere görünür.
Ağ WORK_NETWORK_NAME, DNS WORK_RUNTIME_DNS, Kubernetes work.networkPolicy.blockedEgressCidrs kullanır. Terminal WORK_DOCKER_SOCKET, sonra DOCKER_HOST (unix://, tcp://, docker-compose.socket-proxy.yml), sonra /var/run/docker.sock kullanır; ssh:// ve DOCKER_TLS_VERIFY terminali devre dışı bırakır. Helm work.env iletir. Araç bütçesi max(128, WORK_MAX_AGENT_ROUNDS × 8), son durum needs_input, kalıcı çıktı yaklaşık 20 000 karakterdir.
Compose DOCKER_GID varsayılan 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 sıfır veya bir app replikası; tam team PostgreSQL, S3, PGVector, Redis ile birden çok replika ve aynı image, StorageClass, work.env alan dış worker kullanabilir. WORK_DOCKER_PUBLISHED_HOST uygulama varsayılanında WORK_PREVIEW_BIND ile aynıdır, Compose varsayılanında ise host.docker.internal; yerel Docker Engine üzerindeki Compose kurulumları WORK_PREVIEW_BIND için erişilebilir, herkese açık olmayan bir köprü arayüzü kullanmalıdır.
Sağlayıcı Model Keşfi
| Değişken | Varsayılan | Amaç |
|---|---|---|
PLUGIN_MODEL_DISCOVERY_TTL_MS | 21600000 (6 h) | Katalog yenileme yaşı |
PLUGIN_MODEL_DISCOVERY_RETRY_MS | 600000 (10 min) | Başarısız denemeler arası süre |
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS | 3000 | Liste yanıtının yenilemeyi beklemesi |
Açık Modelleri yenile her zaman sağlayıcıya gider ve aralığı yok sayar; süreden taşan sonuç sonraki istekte görünür.
Sağlayıcı Eklenti Anahtarları
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 ilgili sağlayıcıların dağıtım varsayılanlarıdır.
Ortam anahtarı yalnız gölgelenmemiş yerleşik tanımın rotası/auth’uyla kullanılır. İçe aktarılan, yerleşik ID’yi kullanan yazılabilir veya yönetici özel rotası aynı hesabın anahtarını ister; Libre ortam sırrını takmaz. Güven derlenmiş manifest hash’inden gelir.
Kullanıcı anahtarı tanım, kaynak, auth sözleşmesi ve rotaya bağlıdır; hedef değişince yeniden kaydedilmelidir. Eski bağsız anahtar yalnız tam yerleşik rotada ilk kullanımda bağlanır.
Kaynakta göreli PLUGINS_DIR backend’den, paketli başlatıcıda çağırandan çözülür. Uyumluluk için backend/plugins ve eski konumlar okunur. Tanımları $DATA_DIR/plugins içine taşıyın; kurtarma eski yolları dış durum sayar ve yalnız birim yedeğini engeller. Eklenti dizini/JSON fiziksel normal girdi olmalıdır, symlink izlenmez.
Ön Yüz
| Değişken | Varsayılan | Amaç |
|---|---|---|
VITE_API_BASE_URL | aynı kaynaklı geliştirme proxy'si veya üretim API'si | API temel URL |
VITE_WS_BASE_URL | API URL’den çıkarılır | Chat/Work için mutlak ws:/wss: temel |
VITE_APP_VERSION | Vite paket sürümü | Gösterilen uygulama sürümü |
VITE_DEMO_MODE | false | true demo taklitlerini açar |
VITE_API_TIMEOUT | 300000 | API zaman aşımı ms |
VITE_BACKEND_URL | http://localhost:3001 | Bazı auth yardımcıları |
VITE_DEBUG_VERBOSE | ayarsız | Ayrıntılı geliştirme günlüğü |
VITE_LOG_LEVEL | ayarsız | Ön yüz günlük düzeyi |
ELECTRON_BUILD | ayarsız | true Electron Vite davranışı |
VITE_WS_BASE_URL, Chat ve Work terminali için tüm WebSocket yedeklerini geçersiz kılar. Reverse proxy yol öneki içerebilir fakat kimlik bilgisi, query veya fragment olmayan mutlak ws:/wss: olmalıdır. Ayarsızsa Electron file: istemcileri ws://localhost:3001 kullanır; tarayıcı istemcileri temel URL'yi önce VITE_API_BASE_URL'den, ardından tarayıcı kökeninden türetir. Vite, geliştirme kökenini 3001 portundaki backend'e proxy'ler.
Bakım Betikleri
| Değişken | Amaç |
|---|---|
CHANGELOG_AI | 0 yapay zekâ changelog taslağını kapatır |
CHANGELOG_AI_MODEL | Sürüm/changelog Ollama modeli |
CHANGELOG_AI_TIMEOUT_MS | Üretim zaman aşımı ms |
CHANGELOG_AI_MODEL=glm-5.2:cloud npm run changelog
CHANGELOG_AI=0 npm run release:minor
Üretim Örneği
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