Her şey bir ortam değişkenidir. Compose ile bunları docker-compose.yml’in yanındaki .env’e
koyarsınız; birlikte gelen
.env.example açıklamalı tam
listedir.
Yapılandırma başlangıçta doğrulanır. Bir şey yanlışsa sunucu her sorunu yazdırır ve yarı çalışır bir durumda başlamak yerine çıkar.
Sunucu
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
PORT |
3444 |
Uygulamanın dinlediği port |
HOST |
0.0.0.0 |
Konteynerin içindeki bağlanma adresi. Bunu olduğu gibi bırakın — dışarıdan neyin erişilebilir olduğunu kontrol eden ayar bu değildir; o, aşağıdaki CONTEXTATOR_BIND’dır. Docker, yayınlanan bir portu yalnızca konteynerin kendi loopback’ine bağlı bir sürece iletemez |
CONTEXTATOR_BIND |
127.0.0.1 |
docker compose’un portu hangi host arayüzünde yayınladığı (yalnızca Compose — uygulamanın kendisi bunu hiç okumaz). Varsayılan, yalnızca bu makinede ve başka hiçbir yerde yanıt verir. 0.0.0.0 her arayüzde yayınlar — bunu yalnızca önünde bir reverse proxy ya da bir VPN varken yapın, ve TRUST_PROXY ile PUBLIC_BASE_URL’i buna uydurun; aşağıda Bir reverse proxy arkasında çalışmak’a bakın |
LOG_LEVEL |
info |
fatal…trace. İstek başına loglama debug’da açılır |
PUBLIC_BASE_URL |
– | Örn. https://docs.example.com. Panoda gösterilen URL’ler için, ve — bir proxy arkasındayken — MCP connector’larının okuduğu OAuth metadata’sı için kullanılır. Bkz. Bir reverse proxy arkasında çalışmak |
TRUST_PROXY |
0 |
Hangi eşlerin bu sunucuya bir isteğin nereden geldiğini söyleyebileceği. req.ip’i (IP başına oturum açma sınırı, /oauth/register’ın host başına bütçesi, bir audit olayının yanındaki adres) ve req.protocol’ü belirler. 0, X-Forwarded-*’ı tamamen göz ardı eder, ki bu, önünde hiçbir şey olmayan gönderilen Compose şekli için doğrudur. Gerçek bir proxy arkasında bu ayarlanmalıdır — aşağıda Bir reverse proxy arkasında çalışmak’a bakın |
ALLOWED_ORIGINS |
– | /mcp/*’i çağırmasına izin verilen, virgülle ayrılmış tarayıcı origin’leri. Tarayıcı olmayan istemcilere her zaman izin verilir |
SESSION_IDLE_TTL_MS |
1800000 |
Boşta kalan Streamable HTTP transport oturumları 30 dakika sonra kapatılır. Pano oturum açmaları ayrıdır — o AUTH_SESSION_IDLE_MS’tir |
MCP_STRUCTURED_OUTPUT |
0 |
1, MCP araçlarının değişmeyen metnin yanında bir outputSchema yayınlamasını ve structuredContent döndürmesini sağlar. Varsayılan olarak kapalıdır, çünkü bir sonuç bunu taşıdığı anda Claude Code metin yerine yapılandırılmış içeriği okur — bkz. MCP Araçları |
Hesaplar ve oturumlar
İnsanlar panoya kendi hesaplarıyla oturum açar; bu ayarlar bunun nasıl işlediğini şekillendirir. Bkz. Hesaplar ve İzinler.
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
SETUP_CODE |
– | İlk hesap var olmadan önce /setup’ın istediği tek seferlik kod. Ayarlarsanız onu asla logdan okumak zorunda kalmazsınız; boş bırakırsanız sunucu bir tane üretir ve o hesap oluşturulana kadar her başlatmada yazdırır. O andan sonra göz ardı edilir. Kontrol edilirken büyük/küçük harf, tire ve noktalama göz ardı edilir, bu yüzden noktalamaya güvenmek yerine yeterince harf ve rakam verin |
ADMIN_TOKEN |
– | Authorization: Bearer … üzerinden /api/*’e, root izinleriyle davranan makine erişimi — betikler ve CI için. Tarayıcılar bunun yerine bir hesapla oturum açar; bunu bir root parolası gibi görün ve asla birinin içine yapıştırmayın. /mcp/*’i korumaz |
AUTH_SESSION_IDLE_MS |
43200000 (12 sa) |
Bu kadar süre kullanılmayan bir pano oturumu yeniden oturum açmalıdır. Pano kullanımdayken yenilenir |
AUTH_SESSION_TTL_DAYS |
30 |
Ne kadar aktif kullanılırsa kullanılsın bir oturumun ömrünün sert tavanı. AUTH_SESSION_IDLE_MS’ten kısa olmamalıdır |
AUTH_COOKIE_SECURE |
auto |
auto, istek HTTPS üzerinden geldiğinde Secure bayrağını ayarlar. TLS’i sonlandıran bir proxy arkasında 1 ile zorlayın; düz-HTTP bir LAN kurulumu için 0 kullanın, yoksa tarayıcı çerezi düşürür ve oturum açma /login’e geri döner |
AUTH_LOGIN_MAX_ATTEMPTS |
10 |
Bir kilitlenme ya da 429 öncesi, hesap başına ve IP adresi başına başarısız oturum açma sayısı |
AUTH_LOGIN_WINDOW_MIN |
15 |
Dakika cinsinden IP penceresi ve hesap kilitlenmesinin ilk adımı — buradan itibaren ikiye katlanır, bir saatte tavanlanır |
PASSWORD_MIN_LENGTH |
12 |
Geçici olanlar dahil her parolaya uygulanır. Hiçbir kompozisyon kuralı dayatılmaz |
MCP_OAUTH |
1 |
Bir istemcinin /mcp/* üzerinde bir hesap adına davranmasını sağlayan OAuth 2.1 akışı. 0 onu kaldırır; o zaman kapalı bir projeyi yalnızca statik tokenlar açar ve tarayıcı tabanlı connector’lar hiç bağlanamaz |
MCP_OAUTH_ACCESS_TTL_MIN |
60 |
Bir connector’a verilen tek bir access token’ın ömrü |
MCP_OAUTH_REFRESH_TTL_DAYS |
30 |
Bu süre boyunca kullanılmayan bir connector’ın yeniden yetkilendirilmesi gerekir |
Federe oturum açma (OIDC_ISSUER_URL ve geri kalan OIDC_* değişkenleri) kendi sayfasıdır — bkz.
Tek Oturum Açma.
Veritabanı
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
POSTGRES_PASSWORD |
contextator |
Gömülü PostgreSQL’in parolası. Küme ilk oluşturulduğunda uygulanır; sonradan değiştirmek ALTER USER gerektirir — bkz. Yedekleme ve Veri |
DATABASE_URL |
– | Yalnızca yerel geliştirme. Konteyner onu göz ardı eder ve kendi gömülü PostgreSQL’iyle konuşur |
RESET_VECTORS |
0 |
Gömme boyutlarını değiştirirken tek seferlik yıkıcı sıfırlama — bkz. Gömme Modelleri |
Depolama (yalnızca Compose)
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
CONTEXTATOR_PGDATA_VOLUME |
contextator-pgdata |
Veritabanı için volume adı |
CONTEXTATOR_MODELS_VOLUME |
contextator-models |
İndirilen modeller için volume adı |
CONTEXTATOR_DATA_VOLUME |
contextator-data |
Somutlaştırılmış kaynaklar için volume adı |
CONTEXTATOR_PGDATA_PATH |
– | Yukarıdaki volume yerine kullanılan mutlak host dizini |
CONTEXTATOR_MODELS_PATH |
– | Modeller için aynısı |
CONTEXTATOR_DATA_PATH |
– | Somutlaştırılmış kaynaklar için aynısı |
DOCS_HOST_PATH |
./docs |
/docs’a salt okunur bağlanan host klasörü |
Örnekler:
CONTEXTATOR_PGDATA_PATH=/srv/contextator/pgdata # Linux: veritabanını seçtiğiniz bir diskte tutun
CONTEXTATOR_MODELS_PATH=D:/contextator/models # Windows host dizini (ileri eğik çizgiler)
CONTEXTATOR_PGDATA_VOLUME=contextator-pgdata-v2 # ya da yalnızca başka adlı bir volume
Belgeler
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
ALLOWED_DOC_ROOTS |
/docs |
Virgülle ayrılmış. Bir yerel klasör kaynağı bunlardan birinin içinde yaşamak zorundadır. Bu gerçek bir güvenlik sınırıdır — bkz. Güvenlik |
IGNORE_GLOBS |
– | İndeksleme sırasında atlanan, virgülle ayrılmış glob’lar, ör. **/CHANGELOG.md,drafts/**. Her kaynağa uygulanır |
DATA_DIR |
.data (konteynerde /data) |
Git checkout’larını, yüklemeleri ve Notion çekimlerini tutan yazılabilir dizin |
SECRET_KEY |
– | En az 32 karakter (openssl rand -hex 32). Git, Notion ve Confluence token’larını ve webhook secret’larını beklemede şifreler (AES-256-GCM). Yalnızca böyle bir kaynak var olduğunda gerekir. Onu tek başına değiştirmek saklanan her token’ı okunamaz bırakır — bunun yerine rotate edin: emekliye ayrılan anahtarı SECRET_KEY_PREVIOUS’a, yeni anahtarı SECRET_KEY’e ayarlayın, yeniden başlatın, npm run rotate-secret’i çalıştırın, sonra SECRET_KEY_PREVIOUS’ı kaldırıp yeniden başlatın. Güvenlik sayfasındaki rotate runbook’una bakın |
SECRET_KEY_PREVIOUS |
– | Yalnızca bir rotate işleminin (yukarıda) süresi boyunca ayarlanan, emekliye ayrılan anahtar. Hiçbir zaman şifrelemez — okumalar ona geri döner, her yazma SECRET_KEY’i kullanır |
CONFLUENCE_ALLOWED_HOSTS |
– | Bir Confluence kaynağının özel bir adreste (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7) erişebileceği, virgülle ayrılmış host adları (ya da IP literalleri), ör. wiki.corp.example. İç ağdaki bir Data Center örneği için gereklidir; loopback, link-local (169.254.169.254 dahil), belirtilmemiş ve multicast adresler ne listelenirse listelensin reddedilmeye devam eder. Bağlanılan adreste ve her yönlendirmede yeniden kontrol edilir (ADR-0088). Bkz. Confluence |
MAX_STORED_DOCUMENT_BYTES |
1048576 (1 MB) |
read_document için her belgenin metninin ne kadarının veritabanında tutulduğu. Bunun ötesinde önek saklanır ve araç bunu söyler. PostgreSQL tarafından satır dışında sıkıştırılır, bu yüzden maliyet aynı belgenin vektörlerinin küçük bir kesridir |
MAX_CONVERTED_FILE_BYTES |
33554432 (32 MiB) |
Dosya okunmadan önce, taramanın kaydettiği boyuta karşı kontrol edilir, bu yüzden bir sınır asla belleğe zaten alınmış byte’lara uygulanmaz. .md, .mdx ve .txt ayrıştırılmak yerine çözülür ve sınırlanmaz |
MAX_PDF_PAGES |
2000 |
Her sayfa tek seferde belleğe okunmadan önce, bundan daha fazla sayfa bildiren bir PDF’i reddeder |
MAX_DOCX_UNPACKED_BYTES |
268435456 (256 MiB) |
Bir .docx, dizini yazarının yazdığı bir boyutu raporladığı bir zip’tir; her parça bir sayaç üzerinden şişirilir ve bu tavan aşıldığında atılır, ki bir zip bomb’unu gerçekten sınırlayan da budur |
CONVERSION_TIMEOUT_MS |
120000 (2 dk) |
Bunun ötesinde hâlâ dönüştürülmekte olan bir dosya, okunamayan bir PDF gibi adıyla reddedilir; worker thread değiştirilir ve çalışma devam eder |
CONVERSION_IDLE_MS |
60000 (1 dk) |
Dönüştürme worker thread’i dosyalar arasında sıcak tutulur ve bu kadar boşta kaldıktan sonra düşürülür, bu yüzden sessiz bir sunucu büyük bir belgenin büyüttüğü heap’i tutmaya devam etmez |
Yüklemeler
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
UPLOAD_MAX_FILE_BYTES |
52428800 (50 MB) |
Yüklenen dosya başına |
UPLOAD_MAX_FILES_PER_REQUEST |
500 |
Pano büyük klasörleri isteklere kendiliğinden böler |
UPLOAD_MAX_ARCHIVE_BYTES |
268435456 (256 MB) |
Yüklenen arşiv başına |
ARCHIVE_MAX_ENTRIES |
20000 |
Ayıklama sırasında uygulanan koruma |
ARCHIVE_MAX_TOTAL_BYTES |
1073741824 (1 GB) |
Ayıklama sırasında uygulanan koruma |
Gömme
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
EMBEDDING_PROVIDER |
local |
local (CPU, API anahtarı yok) ya da openai |
EMBEDDING_MODEL |
Xenova/multilingual-e5-small |
Herhangi bir transformers.js feature-extraction modeli. Önceki varsayılan, yalnızca 128 token okur: Xenova/paraphrase-multilingual-MiniLM-L12-v2. Yalnızca İngilizce ve daha hızlı: Xenova/all-MiniLM-L6-v2. Üçü de 384 boyutludur |
EMBEDDING_DIMENSIONS |
384 |
Modelle eşleşmelidir. text-embedding-3-small için 1536 |
EMBEDDING_DTYPE |
fp32 |
q8, ~4× daha küçük nicelenmiş bir model indirir |
EMBEDDING_BATCH_SIZE |
16 |
Batch başına gömülen parça sayısı |
MODEL_CACHE_DIR |
.cache/models |
Konteynerin içinde /app/.cache/models |
EMBEDDING_OFFLINE |
0 |
1, model indirmelerini yasaklar (önceden doldurulmuş önbelleğe sahip hava boşluklu makineler) |
OPENAI_API_KEY |
– | Sağlayıcı openai olduğunda gerekir |
OPENAI_EMBEDDING_MODEL |
text-embedding-3-small |
|
EMBEDDING_MAX_INPUT_TOKENS |
– | Modelin kullanışlı biçimde okuduğu — tokenizer’ının kestiği yer değil, eğitildiği pencere. Boş bırakılırsa sunucu bunu yüklü modelden keşfeder ve CHUNK_MAX_TOKENS sığmıyorsa başlatma sonrası uyarır; ayarlanırsa bu keşfin yerini alır, ve çelişen bir CHUNK_MAX_TOKENS başlamayı reddeder |
EMBEDDING_QUERY_PREFIX / EMBEDDING_PASSAGE_PREFIX |
– | Modelin eğitildiği talimat önekleri, sunucu tarafından eklenir, asla sizin tarafınızdan değil. Boş bırakmak modelin karar vermesi anlamına gelir: multilingual-e5-* için query: / passage: , başka her şey için hiçbiri. Sondaki boşluk önemlidir ve .env tırnaksız bir tanesini siler, bu yüzden EMBEDDING_QUERY_PREFIX="query: " yazın. Boş bir değer önek yok değil ayarlanmamış olarak okunur — önekleri olan bir modelde önek yok demenin yolu none’dır. Her iki değer de model id’sinin parçasıdır: birini değiştirmek, tıpkı EMBEDDING_MODEL’i değiştirmek gibi, her projeyi yeniden indeksler. Bkz. Gömme Modelleri |
SEARCH_SCORE_FLOOR |
0.82 |
Altında search_docs’un en iyi sonucunu vermek yerine iyi eşleşme yok dediği cosine similarity. 0 kapatır. Varsayılan embedding modeline karşı ölçülmüştür ve başka bir modelde anlamsızdır |
Arama ve sıralama
Vektör indeksi için ince ayar ve bir yanıtın kendi isabetlerinden nasıl bir araya getirildiği. Varsayılanlar, altın kümenin en iyi ölçtükleridir; bunların geldiği kıyaslama için bkz. İndeksleme Nasıl Çalışır.
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
HNSW_EF_SEARCH |
100 |
Üretim filtresi uygulanmadan önce vektör indeksinin ürettiği aday sayısı — pgvector’ın kendi varsayılanı 40’tır. Her projenin kendi kısmi indeksi vardır, bu yüzden adaylar o projenin satırlarıdır; bir proje yeniden indekslenirken, bir sonraki üretimi aynı indekste durur ve sonradan filtrelenir. Her aramada gecikmeye mal olur |
HNSW_ITERATIVE_SCAN |
relaxed_order |
relaxed_order, strict_order ya da off. Filtre istenenden daha az isabet bıraktığında kısa yanıt vermek yerine taramaya devam eder (pgvector 0.8+; daha eski bir sürümde üç ayar da göz ardı edilir ve arama eskisi gibi davranır). relaxed_order, satırları sırasız döndürür ve sunucu onları kendisi sıralar |
HNSW_MAX_SCAN_TUPLES |
20000 |
Yinelemeli bir taramayı gerçekten bitiren tavan, projenin kendi indeksinin tuple’larıyla sayılır. Bir örnek büyüdükçe değil, bir proje büyüdükçe yükseltin |
SEARCH_MAX_PER_DOCUMENT |
2 |
Bir belgenin bir yanıta katkıda bulunabileceği alıntı sayısı, sıralamadan sonra uygulanır ve altındaki alıntılardan yeniden doldurulur, bu yüzden beş isteyen bir agent yine de beş alır. Altın kümede ölçüldüğünde bir soru kazandırır — düşürdüğü şey sayfada zaten olan bir şeyin neredeyse birebir kopyasıdır. 20 kapatır |
SEARCH_NEIGHBOR_CONTEXT |
1 |
Her isabetin iki yanındaki parçalar, daha fazla sonuç olarak değil, onun çevresinde bağlam olarak gösterilir. 0 kapatır. Bir parça CHUNK_MAX_TOKENS’tır, bu yüzden bir yanındaki, eskiden bir isabetin kullandığı bağlamın yaklaşık üç katıdır |
SEARCH_MAX_RESULT_CHARS |
12000 |
Tek bir render edilmiş search_docs yanıtının tavanı; bunun ötesinde bütün alıntılar düşürülür ve sonuç kaç tanesinin düştüğünü söyler. Varsayılan bir yanıt yaklaşık 3.300 karakterdir |
Senkronizasyon
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
SYNC_DEFAULT_INTERVAL_MINUTES |
60 |
Yeni oluşturulan bir kaynağa dakika cinsinden verilen senkronizasyon aralığı; 0 onu zamansız oluşturur. Zaten var olan bir kaynağa asla ulaşmaz — ne yükseltmede, ne de bu değer değiştiğinde — bu yüzden bir yükseltme kimsenin istemediği hiçbir giden trafiği başlatmaz. Kaynak başına, pano ve API 5 ile 43200 (30 gün) arasını, ya da asla’yı kabul eder |
SYNC_PROBES_PER_TICK |
10 |
Bir tick’in — bir dakikanın — kontrol edebileceği vadesi gelmiş kaynak sayısı. Geri kalanı sırasını korur, en eskiden başlayarak, ve bir sonraki tick onları alır |
Gözlemlenebilirlik
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
AUDIT_LOG_RETENTION_DAYS |
365 |
Bir audit olayının ne kadar tutulduğu. Logun kendisi için bir anahtar yoktur — başarılı olan her durum değiştiren admin isteği kaydedilir. Bkz. Admin API |
METRICS_TOKEN |
– | GET /metrics’e ve başka hiçbir şeye ulaşan bir bearer kimlik bilgisi, bu yüzden scrape etmek Prometheus’a bir ADMIN_TOKEN vermek anlamına gelmez. En az 16 karakter — uzunluk bir taban, entropi değildir, ve bu endpoint hız sınırlı değildir. Ayarlanmazsa, /metrics yine de oturum açmış bir hesaba ya da ADMIN_TOKEN’a yanıt verir, ama yalnızca veritabanı ayaktayken; bir kesinti sırasında okunabilir kalmak isteyen bir örnek bunu ayarlar. Bkz. Admin API |
METRICS_PUBLIC |
0 |
1, /metrics’i hiçbir kimlik bilgisi olmadan yanıtlar. Özel bir ağ için, ya da yolu zaten koruyan bir proxy için — portun erişilebilir olduğu her yerde kapalı bırakın; exposition örneği tanımlar |
Parçalama
| Değişken | Varsayılan | Ne yapar |
|---|---|---|
CHUNK_MAX_TOKENS |
96 |
Parça başına token; embedding modelinin kendi tokenizer’ıyla sayılır |
CHUNK_OVERLAP_TOKENS |
24 |
Bir bölümün ardışık parçaları arasındaki örtüşme. CHUNK_MAX_TOKENS’tan küçük olmalıdır |
Bilinmesi iyi olan:
96, modelin penceresinin bir kesri değildir — varsayılan model 512 token okur — altın kümede en iyi ölçülen değerdir ve pencereyi doldurmak daha kötü ölçer. OpenAI’da ikisini de yükseltin; onun penceresi 8191’dir. Birini değiştirmek yalnızca sonradan indekslenen dosyaları etkiler — her yere uygulamak için zorla yeniden indeksleyin. Bkz. İndeksleme.
Bir reverse proxy arkasında çalışmak
Varsayılan olarak önünde hiçbir şey yoktur — Compose, 3444’ü loopback arayüzünde yayınlar
(CONTEXTATOR_BIND=127.0.0.1), onunla port arasında hiçbir şey olmadan, ve yukarıdaki varsayılanlar
bunun için yazılmıştır. Onu başka bir yerde yayınlamak (CONTEXTATOR_BIND=0.0.0.0), önüne bir şey
koymanın tam zamanıdır. nginx, Caddy, Traefik ya da bir bulut yük dengeleyicisini öne koyun ve iki
ayar birlikte hareket etmelidir:
TRUST_PROXY=172.18.0.0/16 # proxy'nin kendi adresi ya da CIDR'ı, ya da host üzerinde çalışıyorsa `loopback`
PUBLIC_BASE_URL=https://docs.example.com
AUTH_COOKIE_SECURE=1
TRUST_PROXY, bu sunucunun o proxy’den X-Forwarded-For ve X-Forwarded-Proto’yu okumasını sağlayan
şeydir. Arkasında 0’da bırakılırsa üç şey bozulur, ve hiçbiri bunu kendiliğinden söylemez:
- IP başına oturum açma sınırı örnek geneline yayılır. Her istek proxy’nin adresini taşır, bu
yüzden bir kişiden gelen
AUTH_LOGIN_MAX_ATTEMPTSbaşarısızlığı herkese429yanıtı verir. - MCP connector’ları yetkilendirme yapamaz hale gelir.
PUBLIC_BASE_URLayarlanmamışken, OAuth korunan kaynak metadata’sı veWWW-Authenticateişaretçisireq.protocol’den oluşturulur — ki buhttpokur — bu yüzden belgehttp://…reklamını yaparken istemcihttps://…gönderir, ve/oauth/authorizeher seferindeinvalid_targetyanıtı verir.PUBLIC_BASE_URL’i ayarlamak bu yarısını tek başına düzeltir, yukarıdaki blokta olmasının nedeni budur. - Session çerezi
Securebayrağını kaybeder, çünküAUTH_COOKIE_SECURE=autoaynı yönlendirilmiş şemayı izler.AUTH_COOKIE_SECURE=1bu yarısını tek başına düzeltir.
Sunucu hatayı tahmin etmek yerine gözlemler: bu örneğin güvenmediği bir X-Forwarded-* header’ı
taşıyan ilk istek, üçünü de adlandıran tek bir uyarı loglar.
Proxy’yi adlandırın, istemcilerinizin bulunduğu ağı değil. Liste yalnızca eşe karşı değil, her
sıçramaya karşı eşleştirilir — sunucu zinciri soketten dışarı doğru yürür, ve req.ip, listenin
kapsamadığı ilk adrestir. Bu yüzden istemcilerin de 10.0.0.0/8 ya da 192.168.0.0/16 üzerinde
olduğu bir LAN’da TRUST_PROXY=uniquelocal hiçbir şeyi korumaz: bir istemci tam olarak bir proxy gibi
yürünür, ve X-Forwarded-For: 203.0.113.99, o değeri yeniden req.ip’e koyar. TRUST_PROXY=1, aynı
tehlikenin açıkça söylenmiş halidir ve yalnızca porta proxy’den başka hiçbir şeyin ulaşamadığı durumda
güvenlidir. Bir sıçrama sayısı kabul edilmez — bu sunucunun kontrol edemeyeceği bir iddiadır, ve
proxy’nin önünde bir CDN belirdiği gün sessizce yanlış gider.
Proxy’nin, istemcinin gönderdiği her neyse onun üzerine eklemek yerine X-Forwarded-For’u
değiştirdiğinden emin olun (nginx: proxy_set_header X-Forwarded-For $remote_addr;, önüne başka
güvenilir bir proxy konulmadıkça $proxy_add_x_forwarded_for değil). Ekleyen bir proxy, çağırana en
soldaki değeri verir, ve buradaki hiçbir ayar farkı söyleyemez. Panonun önüne Basic authentication koyan
bir nginx örneği için bkz.
Güvenlik.
Değişiklikleri uygulamak
docker compose up -d # konteyneri yeni .env ile yeniden oluşturur
Ayarların çoğu hemen devreye girer. Birkaçı biraz daha fazlasını ister:
EMBEDDING_MODEL— bir sonraki indeksleme çalışması otomatik olarak tam bir yeniden indekslemeye döner. Bu çalışmayı hiçbir şey kendiliğinden başlatmaz: proje sayfası uyuşmazlığı bir Re-index now düğmesiyle gösterir, ve düğmeye basılana kadar arama reddedilmeye devam eder. Çalışmayı günün herhangi bir saatinde başlatmak güvenlidir — eski indeksin yanına yazılır ve sonunda tek bir adımda yayınlanır, bu yüzden proje asla “indekslenmiş içerik yok” durumundan geçmez. Çalışırken proje, parçalarının ve vektör indeksindeki payının iki kopyasını tutar, bu yüzden disk için zirveyi planlayın. Bkz. Gömme Modelleri.EMBEDDING_QUERY_PREFIX/EMBEDDING_PASSAGE_PREFIX— modeli değiştirmek gibi sayılır: ikisini denone’a ayarlamak dahil, birini ayarlamak her projeyi bir sonraki çalışmasında yeniden indeksler.EMBEDDING_DIMENSIONS— bir kezRESET_VECTORS=1gerektirir; bkz. Gömme Modelleri.CHUNK_MAX_TOKENS/CHUNK_OVERLAP_TOKENS— yeni indekslenen dosyalara uygulanır; her şeyi yeniden kurmak için Force re-index’i kullanın.
Bir varsayılan değişikliğini yükseltmek kendi başına bir durumdur: Xenova/multilingual-e5-small,
Xenova/paraphrase-multilingual-MiniLM-L12-v2’den sonra varsayılan oldu. EMBEDDING_MODEL’i hiç
ayarlamamış bir kurulum yükseltmede yeniyi alır, ve mevcut her proje yeniden indekslenene kadar bir
uyuşmazlık olarak okunur. Bunu ertelemek için .env’de eski değeri sabitleyin — ve geri dönmenin
yalnızca ayarı geri almak meselesi olmadığını unutmayın: yeni model altında zaten yeniden indekslenmiş
bir proje geri dönmek için başka bir yeniden indekslemeye ihtiyaç duyar.
Neyin canlı olduğunu kontrol etmek
GET /api/health, çalışan yapılandırmayı raporlar: veritabanı durumu, gömme sağlayıcısı, model,
boyutlar, dtype ve hazırlık ve giriş penceresi, CHUNK_MAX_TOKENS’ın o pencereye sığıp sığmadığı, açık
MCP oturumları, izin verilen belge kökleri, veri dizini, SECRET_KEY’in ayarlanıp ayarlanmadığı ve
yükleme sınırları. Panonun üst çubuğu önemli olanları gösterir.
Çağıranı ne kadar az tanıyorsa o kadar az ayrıntıyla yanıtlar: anonim bir istek — bir monitör, ya da
konteynerin kendi sağlık kontrolü — ok, sürüm, veritabanı durumu ve setup’ın hâlâ beklemede olup
olmadığını alır, makineyi tanımlayan hiçbir şeyi almaz. Gerisi için oturum açın ya da ADMIN_TOKEN
kullanın.
GET /metrics, kendi kimlik bilgisi kurallarına sahip ayrı, Prometheus biçimli bir endpoint’tir —
bkz. Admin API.