Üç openplate konteynerinin her ayarı bir ortam değişkenidir. Bu sayfa uygulama, çekirdek sunucu (openplate-core) ve çıkarım servisi için bunların tümünü listeler. Çoğu isteğe bağlıdır. Birini ayarlanmamış bıraktığında, satırındaki varsayılan değer geçerli olur.
Bazı ayarlar başlatmayı kasten durdurur. Hizmetin kullanamadığı bir değer ya da bir ikilinin tek tarafı kapsayıcının kapanmasına neden olur. Çıkış iletisi değişkenin adını belirtir. Kapsayıcı bir tahminle başlamaz. Başlatmayı durduran ayarlar bu tür tüm kuralları listeler.
Bir değişkeni ayarlama
Docker Compose. İlgili satırı compose dosyasının yanındaki .env dosyasına ekle, örneğin LOG_LEVEL=debug. Ardından docker compose -f <your file> up -d komutunu tekrar çalıştır. Dağıtılan her compose dosyası, hizmetinin okuduğu her değişkeni kapsayıcıya aktarır. docker compose restart, .env dosyasını tekrar okumaz.
Quadlet. İlgili satırı birimin yanındaki <unit>.env dosyasına ekle, örneğin app.env, core.env veya inference.env. Kapsayıcının bu sayfadaki kendi adlarını kullan. Ardından birimi yeniden başlat, örneğin systemctl --user restart core.service. podman.md dosyaları açıklar. Kapsayıcı olmadan. Uygulama ve çekirdek sunucunun her biri, çalıştıkları klasördeki bir .env dosyasını okur. Değişkeni kabukta veya systemd biriminde de ayarlayabilirsin. Docker olmadan, uygulamanın kurulumunu gösterir.
Varsayılan sütunu, değişken ayarlanmadığında hizmetin ne yaptığını belirtir. Bir compose dosyası kendi değerini aktarabilir, örneğin MODEL_PROFILE: lite. Compose dosyası bu değeri adın yanında gösterir.
Compose dosyalarının senin yerine doldurduğu adlar
Üç topoloji dosyası (compose.core.yml, compose.inference.yml ve compose.full.yml), bazı kapsayıcı değişkenlerini .env içindeki paylaşılan adlardan doldurur. Paylaşılan adı orada ayarla. Bu dosyalarda kapsayıcı değişkeninin tek başına hiçbir etkisi yoktur.
.env içinde | Doldurulan |
|---|
PUBLIC_APP_URL | uygulamanın APP_URL değeri ve çekirdek sunucunun CLIENT_BASE_URL değeri |
PUBLIC_SYNC_URL | uygulamanın CORE_URL değeri ve çekirdek sunucunun SERVER_PUBLIC_URL değeri |
PUBLIC_INFERENCE_URL | uygulamanın DEFAULT_INFERENCE_BASE_URL değeri |
INFERENCE_API_KEY | uygulamanın DEFAULT_INFERENCE_API_KEY değeri ve çıkarım hizmetinin API_KEYS değeri |
POSTGRES_USER, POSTGRES_PASSWORD, SYNC_DB_NAME | veritabanı ve çekirdek sunucunun DATABASE_URL değeri |
Tek başına uygulama olan docker/compose.yml, kendi adı altında APP_URL değerini alır. Çekirdek sunucunun kendi hızlı başlangıç dosyası apps/core/docker/compose.yml şeklindedir. Kendi adları altında SERVER_PUBLIC_URL ve CLIENT_BASE_URL değerlerini alır. DATABASE_URL değerini POSTGRES_USER, POSTGRES_PASSWORD ve POSTGRES_DB değerlerinden oluşturur.
Uygulama
Uygulama kapsayıcısı, ghcr.io/lowcarbcheck/openplate. Hiçbir şey ayarlanmadan başlar. configuration.md kapsamlı özelliklerini ayrıntılı olarak açıklar.
Sunucu ve adresler
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
NODE_ENV | İmajda production, aksi halde development | production derlenmiş uygulamayı sunar, APP_URL değerini zorunlu kılar ve 1 değerini TRUST_PROXY varsayılanı yapar. İmaj bunu kendisi ayarlar. | |
APP_URL | http://localhost:3000, üretimde zorunludur | İnsanların açtığı genel adres, örneğin https://openplate.example.com. Ön sayfa bunu paylaşım bağlantılarına yerleştirir. Sunucu üretim ortamında bu olmadan başlamaz. | Caddy |
PORT | 3000 | Sunucunun dinlediği bağlantı noktası. | |
HOST | ayarlanmamış, her arayüz | Sunucunun dinlediği adres. Bir konteyner içinde ayarlanmamış olarak bırak. Konteyner olmadan, aynı makinedeki bir ters proxy için 127.0.0.1 değeri sunucuyu bu makinede tutar. | Docker olmadan |
TRUST_PROXY | canlı ortamda 1, aksi halde kapalı | Uygulamanın önünde kaç ters proxy olduğu: bir sayı, true, false veya loopback ya da 10.0.0.0/8 gibi bir Express ön ayarı veya adres aralığı. Siteler arası form gönderilerini engelleyen denetim, bir proxy arkasındayken doğru değere ihtiyaç duyar. Proxy yoksa 0 kullan. | Uygulamanın tek başına kullanımı |
CSP_CONNECT_EXTRA | ayarlanmamış | Boşluklarla ayrılmış, Content-Security-Policy başlığının connect-src yönergesi için ek kaynaklar. Başka bir sunucudaki kendi yapay zeka uç noktan buna ihtiyaç duyar. | Özel yapay zeka uç noktaları |
Dil ve içerik
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
DEFAULT_UI_LANGUAGE | en | Ziyaretçinin bir dil seçmeden önce gördüğü dil: en, de, fr, it, es veya tr. Kişinin kendi seçimi her zaman geçerlidir. Başka herhangi bir değer önyüklemeyi durdurur. | |
NUTRIENT_REFERENCE_BASIS | dge | Besin Öğeleri ekranının aktardığı referans değerler: dge (Alman DGE), efsa (AB) veya us (NASEM). Başka herhangi bir değer önyüklemeyi durdurur. | |
CONTENT_DIR | ayarlanmamış, yasal sayfalar yok | Yasal sayfalar için salt okunur bağlanmış markdown dosyaları klasörü. Bir klasörü belirtmeyen değer önyüklemeyi durdurur. | İçerik sayfaları |
Eşitleme ve örnek türü
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
CORE_URL | ayarlanmamış, eşitleme kapalı | Çekirdek sunucunun bir tarayıcının eriştiği adresi. Kaynağı Content-Security-Policy içine girer. Yönetilen bir kurulumda uygulama sunucusu da her yiyecek aramasının hesabını kontrol etmek için bu adrese erişir. Hatalı biçimlendirilmiş bir değer önyüklemeyi durdurur. | Eşitleme |
SYNC_SERVER_URL | ayarlanmamış | Kullanım dışı. CORE_URL değişkeninin eski adı. Bir sürüm daha çalışmaya devam eder ve yalnızca bu ayarlandığında önyükleme sırasında tek bir uyarı günlüğe kaydedilir. İkisi de farklı adreslere ayarlanmışsa, bu sürüm için eski ad geçerli olur ve önyükleme her ikisini de belirten tek bir uyarı günlüğe kaydeder. Eski adı kaldıran sürümden önce eski satırı sil. | Eşitleme |
INSTANCE_MODE | open | open veya managed. Yönetilen bir kurulumda bir yönetici insanları davet eder ve çekirdek sunucu yapay zekayı sağlar. managed, CORE_URL gerektirir. Başka herhangi bir değer önyüklemeyi durdurur. | Yönetilen örnekler |
Örnek tarafından sağlanan yapay zeka
Gıda veri tabanı
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
FOOD_DB_API_URL | https://lowcarbcheck.org | Sunucunun gıda adlarını aradığı LowCarbCheck gıda veri tabanı. Boş bir değer aramayı kapatır. | Gıda veritabanı anahtarı |
FOOD_DB_API_KEY | ayarlanmamış, anonim katman | LowCarbCheck anahtarın. Bunu yalnızca sunucu okur ve hiçbir zaman bir tarayıcıya ulaşmaz. | Gıda veritabanı anahtarı |
FOOD_DB_BACKFILL | false | true, kişilerin bir yapay zeka yanıtından kaydettiği gıdaları öneri olarak LowCarbCheck'e iletir. FOOD_DB_API_KEY gerektirir ve bu olmadan kapalı kalır. true veya false dışındaki herhangi bir değer önyüklemeyi durdurur. | Yiyecek veritabanına öneriler |
FOOD_DB_DAILY_CALL_LIMIT | 3200 | Bu sunucunun bir UTC gününde yapacağı en fazla LowCarbCheck çağrısı sayısı. Bu sınır aşıldığında besin aramaları gece yarısı UTC'ye kadar duraklar ve uygulama bunu belirtir. Varsayılan değer, ücretsiz bir anahtarın ayda 100.000 olan sınırını korur. Pozitif bir tam sayı dışındaki her şey önyüklemeyi durdurur. | Gıda veritabanı anahtarı |
Analitik, bülten ve güncellemeler
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
MATOMO_URL | ayarlanmamış, analitik kapalı | Kendi çalıştırdığın bir Matomo kurulumu. MATOMO_SITE_ID ile birlikte ayarla. | Analitik |
MATOMO_SITE_ID | ayarlanmamış | Matomo site kimliği, pozitif bir tam sayı. MATOMO_URL ile birlikte ayarla. | Analitik |
MATOMO_EVENT_LEVEL | product | Örneğin ne kadar sayım yapacağı: pageviews, product veya research. Yukarıdaki ikisine ihtiyaç duyar. | Bir düzeyin belirledikleri |
NEWSLETTER_SUBSCRIBE_URL | ayarlanmamış, form yok | Sunucunun açılış sayfasındaki bülten formunu ilettiği yer. NEWSLETTER_TURNSTILE_SITE_KEY ile birlikte ayarla. | Bülten kaydı |
NEWSLETTER_TURNSTILE_SITE_KEY | ayarlanmamış | Bu formun Cloudflare Turnstile site anahtarı. Kayıt güvenlik doğrulaması değildir, bkz. Turnstile ile kayıt olma. | Bülten kaydı |
UPDATE_CHECK | açık | Bunu off veya false olarak ayarlamak, sunucunun yeni sürümler için openplate.de/latest.json dosyasını çekmesini engeller. Ayrıca projenin günlük sorgu sayımını da durdurur. | Sürüm denetimi |
Günlük kaydı
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
LOG_LEVEL | info | Sunucunun ne kadar günlük tutacağı, pino düzeyi olarak: debug, info, warn veya error. | |
Bir örneği kapatma
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
MOVED_TO_URL | ayarlanmamış | Bu örneği kapatır ve kullanıcıları başka bir örneğe yönlendirir, örneğin https://app.openplate.de. Her sayfa isteği yeni adresi belirten bir sayfa sunar, telefonlarda yüklü service worker önbelleklerini temizler ve kendi kaydını siler, API ise 410 döndürür. Değer, APP_URL dışındaki bir ana bilgisayarda bulunan bir https:// adresi olmalıdır; başka herhangi bir şey önyüklemeyi durdurur. | Kullanıcıları başka bir örneğe taşıma |
Çekirdek sunucu (openplate-core)
Çekirdek sunucu konteyneri, ghcr.io/lowcarbcheck/openplate-core. İki değere ihtiyacı vardır: compose dosyalarının senin için doldurduğu DATABASE_URL ve SERVER_SECRET. Diğer her şey isteğe bağlıdır ve sen ayarlayana kadar kapalıdır. openplate-core'un README dosyası özellikleri açıklar.
Sunucu ve adresler
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
NODE_ENV | İmaj içinde production | E-posta ayarlandığında production, aşağıdaki her iki bağlantı adresinin de başka bir ana makinede https:// adresi olmasını gerektirir. | E-posta için genel adresler gerekir |
PORT | 3000 | Hizmetin dinlediği bağlantı noktası. | |
HOST | ayarlanmamış, her arayüz | Hizmetin dinlediği adres. Bir kapsayıcı içinde ayarlanmamış olarak bırak. 127.0.0.1, geliştirme örneğini kendi makinesinde tutar. | |
TRUST_PROXY | false | Önde kaç tane ters vekil sunucu bulunduğu: bir sayı, true veya false. Bir vekil sunucu arkasında yanlış değer verilirse, her istek vekil sunucudan geliyormuş gibi görünür. Bu durumda bir kişi herkesin sınırını tüketebilir. | Önem taşıyan üç ayar |
SERVER_PUBLIC_URL | ayarlanmamış | Bu hizmetin kendi genel adresi. Davet ve parola sıfırlama mektuplarındaki bağlantılara yazılır. CLIENT_BASE_URL ile birlikte ayarla. | E-posta için genel adresler gerekir |
CLIENT_BASE_URL | ayarlanmamış | Bu bağlantıların diğer yarısı olan openplate uygulamasının adresi. | E-posta için genel adresler gerekir |
INSTANCE_NAME | openplate | /health el sıkışması (instance.name) ve başlatma günlüğü için örnek adını belirler. Mektuplar bunu kullanmaz. En fazla 64 karakter. | |
INSTANCE_LANGUAGE | en | Bir istek dil belirtmediğinde mektup dilini ayarlar. Kabul edilen değerler: en, de, fr, it, es veya tr. Başka herhangi bir değer başlatmayı durdurur. | |
NUTRIENT_REFERENCE_BASIS | dge | Yeni bir örnek şu başvuru değerlerinden biriyle başlar: dge, efsa veya us. Bir yönetici daha sonra canlı ayarı yönetici API üzerinden değiştirebilir. Başka herhangi bir değer başlatmayı durdurur. | |
CONTENT_DIR | ayarlanmamış | Bildirim mektuplarının metnini içeren, salt okunur bağlanmış bir dizin. Uygulama, yasal sayfalarını bu dizinden okuyabilir. Hizmet, başlatma sırasında bunu hiçbir zaman denetlemez. | Bildirim mektupları |
LEGAL_DECLARATION_RECEIPTS_PER_DAY | 200 | Örneğin herhangi bir 24 saatlik süre içinde, tüm adreslerin toplamına göndereceği en fazla bildirim makbuzu sayısı. Bu sınırdan sonra da bildirim kaydedilmeye ve sana gönderilmeye devam eder, ancak makbuzu gönderilmez. | Bildirim mektupları |
LEGAL_DECLARATION_RECEIPTS_PER_NETWORK_PER_DAY | 10 | Tek bir gönderici ağı (bir IPv4 adresi veya bir IPv6 /64) için aynı sınır. Yeniden başlatma bu sayacı sıfırlar. | Bildirim mektupları |
Veritabanı
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
DATABASE_URL | yok, zorunludur | Postgres bağlantı dizesi. Compose dosyaları bunu senin için oluşturur. | |
DATABASE_SSL | false | Postgres TLS gerektiriyorsa true olarak ayarla. true, false, 1 veya 0 kabul eder. | |
MIGRATIONS_DIR | drizzle/migrations | Bu ayar, hizmetin başlatma sırasında veritabanı geçişlerini nerede bulacağını belirler. İmaj bunları orada tutar, bu yüzden ayarlanmamış olarak bırak. | |
Gizli anahtarlar
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
SERVER_SECRET | yok, zorunludur | Kök gizli anahtarı en az 32 karakter olmalıdır. Bunu openssl rand -hex 32 ile üret ve veritabanıyla birlikte yedekle. Bu gizli anahtarı değiştirmek, tüm hesapların erişimini kalıcı olarak engeller. | Önem taşıyan üç ayar |
ADMIN_TOKEN | ayarlanmamış | İşletmeci yönetici kimlik bilgisi en az 24 karakter olmalıdır. İlk hesabı oluşturmak için buna ihtiyacın olur. Belirteç ve yönetici hesabı olmadığında yönetici API 404 döndürür. | İlk hesabı oluştur |
Hesaplar ve kayıt
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
OPEN_SIGNUP | ayarlanmamış, yalnızca davetiyeler | true, herkesin kendi adresiyle bir hesap talep etmesine izin verir. Bu işlem e-posta gerektirir. Sunucu yalnızca true değerini kabul eder. false dahil başka herhangi bir değer başlatmayı durdurur. | Turnstile ile kayıt olma |
TURNSTILE_SECRET_KEY | ayarlanmamış, captcha yok | Kayıt captchasını doğrulayan Cloudflare Turnstile gizli anahtarı. TURNSTILE_SITE_KEY ile birlikte ve yalnızca OPEN_SIGNUP=true ile ayarla. | Turnstile ile kayıt olma |
TURNSTILE_SITE_KEY | ayarlanmamış | Genel Turnstile site anahtarı. /health bunu yayınlar, uygulama da captchayı bununla ekrana çizer. | Turnstile ile kayıt olma |
Davetler ve denemeler
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
MEMBER_INVITE_DAILY_AI_LIMIT | ayarlanmamış, üyeler davet edemez | Bir üye davet ettiğinde bir hesabın UTC günü başına aldığı yapay zeka isteği sayısı, 1 ile 10000 arası. MEMBER_INVITE_ALLOWANCE_DAYS ile birlikte ayarla. | Üye davetleri |
MEMBER_INVITE_ALLOWANCE_DAYS | ayarlanmamış | Bu kotanın kayıttan sonra kaç gün geçerli kalacağı. | Üye davetleri |
MEMBER_INVITE_LIFETIME_CAP | 5 | Bir üyenin toplamda gönderebileceği davet sayısı, 0 veya daha fazla. Bu, yukarıdaki ikiliyi veya MEMBER_INVITE_TRIAL=true gerektirir. | Üye davetleri |
MEMBER_INVITE_TRIAL | false | true, bir üye davetinin günlük kota yerine aşağıdaki tarama denemesini vermesini sağlar. Denemeyi gerektirir ve yukarıdaki ikiliyle kullanılamaz. | |
TRIAL_SCANS | ayarlanmamış, deneme yok | Yeni bir hesabın aldığı ücretsiz yapay zeka taramaları, 1 ile 100 arası. TRIAL_DAILY_AI_LIMIT ile birlikte ayarla ve TRIAL_ADDRESS_PEPPER değerini de bunlarla belirle. | |
TRIAL_DAILY_AI_LIMIT | ayarlanmamış | Deneme boyunca UTC günü başına yapay zeka isteği sayısı, 1 ile 10000 arası. | |
TRIAL_DAYS | ayarlanmamış, bitiş tarihi yok | Deneme ayrıca bu kadar gün sonraki gece yarısında biter, 1 ile 90 arası, hangisi önce gelirse. Deneme ikilisini gerektirir. | |
TRIAL_TIME_ZONE | UTC | Bu gece yarısının Europe/Berlin gibi bir IANA adı biçimindeki saat dilimi. TRIAL_DAYS gerektirir. Bilinmeyen bir bölge önyüklemeyi durdurur. | |
TRIAL_ADDRESS_PEPPER | ayarlanmamış | Posta kutusu başına tek bir denemeyi zorunlu kılan gizli anahtar. En az 32 karakter olmalıdır. Deneme ikilisiyle birlikte zorunludur. Bu değeri değiştirmek, hangi posta kutularının deneme aldığını unutturur. | |
TRIAL_HASH_RETENTION_DAYS | 365 | Silinen bir hesabın posta kutusu özetinin, silinme anından itibaren saklanacağı gün sayısı, 1 ile 3650 arası. Bu sürenin ardından saatlik bir tarama özeti siler ve aynı posta kutusu yeniden deneme hakkı alabilir. Tarama denemesi sunmayan bir kurulum hiçbir özet saklamaz. | |
AI_TRIAL_INSTANCE_DAILY_LIMIT | ayarlanmamış, sınır yok | Tüm deneme hesaplarının birlikte UTC günü başına harcayabileceği toplam miktar. Denemeyi gerektirir. | |
AI_TRIAL_NETWORK_DAILY_LIMIT | AI_TRIAL_INSTANCE_DAILY_LIMIT değerinin onda biri, en az 1 | Tek bir ağdan (bir IPv6 /64 veya bir IPv4 adresi) gelen deneme isteklerinin, UTC günü başına deneme sınırından harcayabileceği miktar. AI_TRIAL_INSTANCE_DAILY_LIMIT olmadan devre dışıdır ve bu değerin üzerine çıkamaz. Tek bir IPv4 operatör NAT'ı arkasındaki kişiler bu miktarı paylaşır. | |
DEFAULT_FREE_DAILY_AI_LIMIT | ayarlanmamış, kapalı | Kendine ait ücretsiz bir sınırı bulunmayan her hesabın aldığı UTC günü başına Yapay Zeka istekleri, 0 ile 10000 arası. Hiçbir zaman bitmez ve tarama sayısı yoktur. Tüketilen bir gün Retry-After ile 429 yanıtı verir. Tarama denemesinin yerini alır, bu yüzden deneme ikilisiyle birlikte ayarlanması açılışı durdurur. Hâlâ bir deneme hakkı olan hesap bu sınıra tabi olur. | |
DEFAULT_CAPABILITIES | ayarlanmamış, kontrol yok | Kendine ait bir yetenek listesi bulunmayan bir hesabın kullanabilecekleri: scan,recipes gibi virgülle ayrılmış etiketler ya da hiçbir şey için none. Ayarlanmamış veya boş olması, Yapay Zeka vekilinin hiçbir özelliği kontrol etmediği ve her isteğin geçtiği anlamına gelir. Hesabın sahip olmadığı bir özellik için yapılan istek 403 capability-required alır. | |
CAPABILITY_SCHEMA_MAP | ayarlanmamış, boş | Virgülle ayrılmış schemaName:label ikilileri. Listelediğin yapılandırılmış çıktı şemasını isteyen bir istek, X-Openplate-Feature başlığı ne derse desin bu etikete ihtiyaç duyar. | |
E-posta
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
SMTP_HOST | ayarlanmamış | Şema, port veya yol içermeyen SMTP sunucu adı veya adresi. | SMTP |
SMTP_PORT | 587 | 465 ilk bayttan itibaren TLS kullanır. Bu makinedeki bir e-posta yakalayıcı hariç diğer tüm portlar STARTTLS ile yükseltilmelidir. | SMTP |
SMTP_USER | ayarlanmamış | SMTP kullanıcı adı. SMTP_PASSWORD ile birlikte ayarla veya giriş gerektirmeyen bir sunucu için ikisini de boş bırak. | SMTP |
SMTP_PASSWORD | ayarlanmamış | SMTP parolası. | SMTP |
SMTP_FROM | ayarlanmamış | address veya Name <address> biçiminde gönderici. SMTP bunu gerektirir. | SMTP |
MAIL_API_URL | ayarlanmamış | Resend uyumlu bir HTTP e-posta API'si. MAIL_API_KEY, MAIL_API_FROM ve MAIL_OPERATOR_EMAIL ile birlikte ayarla. | Bir HTTP e-posta API'si |
MAIL_API_KEY | ayarlanmamış | Bearer belirteci olarak gönderilen e-posta API anahtarı. | Bir HTTP e-posta API'si |
MAIL_API_FROM | ayarlanmamış | E-posta API'si için gönderici adresi. | Bir HTTP e-posta API'si |
MAIL_OPERATOR_EMAIL | ayarlanmamış | Kendi adresin. Bir iptal veya para çekme işleminin kopyasını alır. Her iki aktarım yöntemi de bunu gerektirir. | SMTP |
NODE_EXTRA_CA_CERTS | ayarlanmamış | Kapsayıcı içinde, ek sertifika yetkililerini içeren bir PEM dosyasının yolu. Node.js bunu başlangıçta okur. Sertifikasını özel bir yetkilinin imzaladığı bir e-posta aktarıcısı için dosyayı bağla. | Özel sertifika yetkilisine sahip bir geçiş sunucusu |
Yapay zeka vekili ve sınırları
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
UPSTREAM_BASE_URL | ayarlanmamış, yapay zeka yok | Sağlayıcının OpenAI uyumlu adresi, örneğin https://openrouter.ai/api/v1. Bunu UPSTREAM_API_KEY ile birlikte ayarla. | Yönetilen örnekler |
UPSTREAM_API_KEY | ayarlanmamış | Sağlayıcı anahtarı. Hiçbir zaman bir tarayıcıya ulaşmaz. | Yönetilen örnekler |
UPSTREAM_ZDR | ayarlanmamış | Yalnızca OpenRouter. true olarak ayarlanırsa vekil, OpenRouter'dan bir isteği yalnızca veri saklama süresi sıfır olan uç noktalara yönlendirmesini ister. Diğer tüm ana makineler bunu yoksayar. true, false veya boştan farklı bir değer açılışı durdurur. | Yapay zeka vekil sunucusu |
UPSTREAM_PROVIDER_ONLY | ayarlanmamış | Yalnızca OpenRouter. Sağlayıcı kısa adlarının virgülle ayrılmış bir listesi, örneğin google-vertex. İstek bunlardan birine gider ya da başarısız olur, asla başka bir sağlayıcıya geri dönmez. Diğer tüm ana makineler bunu yoksayar. | Yapay zeka vekil sunucusu |
UPSTREAM_TIMEOUT_MS | 120000 | Vekil sunucunun, sağlayıcının ilk yanıtı için ve ardından yanıt parçaları arasında milisaniye cinsinden beklediği süre. | |
AI_TIERS_FILE | ayarlanmamış | Her istek türünün modelinin nereden geldiği. Ayarlanmadığında model AI_ADVERTISED_MODEL olur; yönlendirme ise tam olarak bu dosya var olmadan önceki gibi UPSTREAM_ZDR ve UPSTREAM_PROVIDER_ONLY üzerinden sağlanır. bundled, modeli, yönlendirmesini ve fiyatını tutan çekirdek imajındaki dosyayı (ai-tiers.json) kullanır. Mutlak bir yol ise bağladığın bir dosyayı kullanır. Hatalı bir değer veya bozuk bir dosya açılışı durdurur. | Yapay zeka vekil sunucusu |
AI_ADVERTISED_MODEL | ayarlanmamış | Aşama dosyası olmadığında her taramanın kullandığı model. /health modeli adlandırır ve vekil bunu her isteğe yazar. Uygulama bir model olmadan tarama yapmaz. Bir aşama dosyası olduğunda, yalnızca acil bir önlem olarak varsayılan aşamanın modelini geçersiz kılar ve çekirdek her başlangıçta bir uyarı günlüğü düşer. | Yönetilen örnekler |
AI_MAX_OUTPUT_TOKENS | 8192 | Bir isteğin isteyebileceği en fazla çıktı belirteci. | |
AI_RATE_LIMIT_PER_MINUTE | 20 | Bir hesabın herhangi bir 60 saniye içinde yapabileceği en fazla istek sayısı. | |
AI_INSTANCE_DAILY_LIMIT | ayarlanmamış, sınır yok | UTC günü başına yapay zeka birimi cinsinden günlük örnek sınırı. Bir tabak taraması bir birim tutar. | Yapay zeka vekil sunucusu |
AI_BUDGET_ALERT_FRACTION | 0.2 | Bir OpenRouter anahtarında, anahtar sınırının bu oranından daha azı kaldığında her sıfırlama döneminde bir kez MAIL_OPERATOR_EMAIL adresine e-posta gönder. 0'dan büyük ve 1'den küçük olmalıdır. | Yapay zeka vekil sunucusu |
AI_MAX_REQUEST_BYTES | 8000000 | Vekil sunucunun kabul ettiği bayt cinsinden en büyük istek boyutu. | |
AI_MAX_IMAGE_PARTS | 1 | İstek başına en fazla görsel sayısı. Bu sınırı aşan istekler, sayım başlamadan önce 400 ai-request-too-large döndürür. | |
AI_MAX_TEXT_BYTES | 49152 | İleti metni ve response_format birleştirilerek istek başına en fazla metin baytı. Daha fazlasını içeren istekler aynı 400 yanıtını döndürür. | |
AI_MAX_MESSAGES | 4 | İstek başına en fazla ileti sayısı. Bu sınırı aşan istekler aynı 400 yanıtını döndürür. | |
AI_UNIT_INPUT_TOKENS | 8192 | Yapay zeka birimi başına tahmini girdi belirteci. Her istek bir birim tutar, ayrıca ek her AI_UNIT_INPUT_TOKENS için bir birim eklenir. Günlük sınırlar bu birimleri sayar. | Yapay zeka vekil sunucusu |
AI_IMAGE_INPUT_TOKENS | 1500 | Bir görsel için tahmini girdi belirteci. Metin, toplam bayt sayısının 4'e bölünmesiyle hesaplanır. | |
Onay
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
HEALTH_CONSENT_VERSION | ayarlanmadı, onay istenmez | Her hesabın kabul etmesi gereken 2026-09-28 gibi sağlık verisi onayı sürümü. 1 ila 32 harf, rakam, ., _ veya - kullan. Değişen bir sürüm herkesten tekrar onay ister. | Açık onay |
Anlık bildirim
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
VAPID_PUBLIC_KEY | ayarlanmadı, bildirim yok | Web anlık bildirimleri için genel anahtar. Üçünü birden ayarla ya da hiçbirini ayarlama. pnpm core-api push keygen ile bir çift oluştur. | |
VAPID_PRIVATE_KEY | ayarlanmamış | Web anlık bildirimleri için özel anahtar. | |
VAPID_SUBJECT | ayarlanmamış | Bir anlık bildirim servisinin sana nasıl ulaşacağı: bir mailto: adresi veya bir https:// adresi. | |
PUSH_ENDPOINT_HOSTS | ayarlanmamış | Bir cihazın kaydedebileceği, virgülle ayrılmış ek bildirim sunucuları. *.example.org, example.org altındaki her sunucuyu kapsar. Varsayılan tarayıcı bildirim servislerine her zaman izin verilir. Bunu yalnızca özel sunucular için ayarla. Hatalı biçimlendirilmiş bir girdi başlatmayı durdurur. | |
Planlar
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
PLANS_UPSTREAM_URL | ayarlanmadı, plan yok | /v1/plans/* alan faturalandırma servisinin dahili adresi. Bunu PLANS_UPSTREAM_SECRET ile birlikte ayarla. | Ücretli planlar |
PLANS_UPSTREAM_SECRET | ayarlanmamış | Faturalandırma servisinin denetlediği paylaşılan gizli anahtar. | Ücretli planlar |
BILLING_TOKEN | ayarlanmamış | Faturalandırma servisinin en az 24 karakterden oluşan kendi kimlik bilgisi. Yalnızca üç yönetici rotasına erişir, başka hiçbir yere erişmez. | Ücretli planlar |
BILLING_MAX_DAILY_AI_LIMIT | 1000 | BILLING_TOKEN değerinin bir hesaba yazabileceği en yüksek günlük yapay zeka sınırı. Bunu en yüksek planında veya üzerinde tut. ADMIN_TOKEN buna bağlı değildir. | Ücretli planlar |
Geri bildirim, paylaşım ve araştırma
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
SYNC_FEEDBACK | false | true, 30 gün boyunca saklanan fotoğraflarıyla birlikte bildirilen tahminleri kabul eder. Bu fotoğrafları görüntüleyebilirsin. | Bildirilen tahminler |
FEEDBACK_DAILY_LIMIT | 5 | Bir hesabın UTC günü başına gönderebileceği rapor sayısı. | |
FEEDBACK_MAX_REQUEST_BYTES | 8000000 | Servisin kabul ettiği bayt cinsinden en büyük rapor boyutu. | |
SYNC_SHARING | false | true, bir kliniysen ile bir günlüğü paylaşmayı etkinleştirir. | |
SYNC_RESEARCH | false | true, araştırma katkılarını ve çalışma konsolunu etkinleştirir. | Eşitleme |
Günlük kaydı ve diğerleri
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
LOG_LEVEL | info | debug, info, warn veya error. Başka herhangi bir değer başlatmayı durdurur. | |
SYNC_NOTICE | ayarlanmamış | Her uygulamanın bağlandığında gösterdiği kısa bir ileti, en fazla 280 karakter. | |
SYNC_NOTICE_URL | ayarlanmamış | Bildirimin yanında yer alan bir bağlantı, https:// veya http://. SYNC_NOTICE gerektirir. | |
SERVICE_VERSION | ayarlanmamış, kalıbın sürümü | /health tarafından bildirilen sürümün yerine geçer. Ayarlanmamış olarak bırak. | |
Çıkarım servisi (openplate-inference)
Çıkarım konteyneri, ghcr.io/lowcarbcheck/openplate-inference. Model çalışma zamanını ve servisi tek bir konteynerde çalıştırır. openplate-inference yapılandırma kılavuzu seçenekleri ayrıntılı olarak açıklar.
Servis ve erişim
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
PORT | 8300 | Servisin dinlediği port. Konteynerin dışa açtığı tek porttur. | |
API_KEYS | ayarlanmamış, geçici bir anahtar | İstekte bulunanın göndermesi gereken, virgülle ayrılmış anahtarlar. Ayarlanmadığında servis başlangıçta tek bir anahtar oluşturur, bunu bir kez ekrana yazar ve bir sonraki yeniden başlatmada unutur. | Anahtarı al |
LOG_LEVEL | info | debug, info, warn veya error. Başka herhangi bir değer başlatmayı durdurur. | |
PROFILE | MODEL_PROFILE değerinden ayarlanır | Başlangıç günlüğünün yazdırdığı profil adı: lite, quality veya custom. Konteyner bunu MODEL_PROFILE üzerinden ayarlar ve başka hiçbir şeyi değiştirmez. | |
Model ve ağırlıklar
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
MODEL_PROFILE | lite | Konteynerin indirip çalıştırdığı ağırlıklar: lite, lite-apache veya quality. external hiçbir şey indirmez ve MODEL_RUNTIME_URL adresindeki kendi çalışma zamanını kullanır. | Donanım |
MODELS_DIR | /models | Ağırlıkların konteyner içinde, bir birimde bulunduğu yer. Yalnızca ağırlıkları başka bir yere bağladığında değiştir. | |
WEIGHTS_MIRROR_BASE | ayarlanmamış | Ağırlıkları indirmek için bir yansı, yedek olarak Hugging Face kullanılır. Servis her iki durumda da sağlama toplamlarını denetler. | |
MODEL_RUNTIME_URL | http://127.0.0.1:8080, birlikte gelen çalışma zamanı | /v1 olmadan, kendi çalışma zamanının adresi. MODEL_PROFILE=external bunu gerektirir. Başka herhangi bir profilde, farklı bir adres konteyneri durdurur. | Harici mod değişkenleri |
MODEL_RUNTIME_API_KEY | ayarlanmamış | Anahtar gerektiren bir çalışma zamanı veya vekil sunucu için, servisin çalışma zamanına gönderdiği anahtar. | Harici mod değişkenleri |
MODEL_ID | openplate-plate-1 | Servisin çalışma zamanına gönderdiği model adı. vLLM sunulan tam adına ihtiyaç duyar. | Harici mod değişkenleri |
RUNTIME_PORT | 8080 | Birlikte gelen llama-server portu, yalnızca konteynerin yerel geri döngü adresinde. | |
CONTEXT_SIZE | 8192 | İşlemdeki her tarama için bağlam. Konteyner bunu llama.cpp için CONCURRENCY ile çarpar. | |
LLAMA_THREADS | çekirdek sayısı eksi iki, en az 1 | llama.cpp için CPU iş parçacıkları. | |
LLAMA_EXTRA_ARGS | ayarlanmamış | llama-server komutunun sonuna eklenecek, boşluklardan ayrılmış ek bayraklar. Yalnızca birlikte gelen çalışma zamanı için. | |
GPU_LAYERS | algılanan: GPU ile 99, aksi takdirde 0 | GPU'ya kaç model katmanının aktarılacağı. 0 değeri CPU kullanımını zorunlu kılar. | |
NVIDIA_VISIBLE_DEVICES | NVIDIA konteyner çalışma zamanı tarafından ayarlanır | --gpus all ayarlar. void veya none dışındaki herhangi bir değer, konteynerin GPU kullanmasını sağlar. Bunu kendin ayarlamazsın. | |
Sınırlar
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
CONCURRENCY | 2 | Aynı anda işlenen taramalar. Ayrıca llama.cpp yuvalarını da ayarlar. | |
MAX_QUEUE_DEPTH | 8 | Bekleyebilecek taramalar. Bu sınır aşıldığında çağıran taraf 429 yanıtı alır. | |
RATE_LIMIT_RPM | 60 | Anahtar başına dakikadaki istek sayısı. | |
LATENCY_CEILING_MS | 0, kapalı | Servis, bu kadar milisaniye içinde bitiremeyeceği taramaları reddeder. | Donanım |
RUNTIME_COMPLETION_TIMEOUT_MS | 600000 | Çalışma zamanına yapılan tek bir çağrının sürebileceği en uzun süre, milisaniye cinsinden. 0 bu sınırı kapatır. | |
MAX_IMAGE_BYTES | 8388608 | Servisin kod çözme işleminden sonra kabul ettiği en büyük fotoğraf boyutu, bayt cinsinden (8 MiB). | |
IMAGE_MAX_LONG_EDGE | 896 | Servisin her bir fotoğrafı küçülttüğü uzun kenar boyutu, piksel cinsinden, en az 112. | |
Yemek verileri
| Değişken | Varsayılan | Ne yapar | Daha fazlası |
|---|
FOOD_SOURCE | fdc | Makroların nereden geleceği: fdc (imajdaki USDA özeti, ağ bağlantısı gerektirmez), off (Open Food Facts), lcc (LowCarbCheck) veya none. | Yemek verileri |
FDC_DATASET_PATH | ./data/fdc-foods.json | Çalışma dizinine göre USDA özeti. | |
OFF_API_URL | https://world.openfoodfacts.org | Open Food Facts adresi, FOOD_SOURCE=off ile okunur. | |
LCC_API_URL | https://lowcarbcheck.org | LowCarbCheck adresi, FOOD_SOURCE=lcc ile okunur. | |
LCC_API_KEY | ayarlanmamış, anonim katman | LowCarbCheck anahtarın, FOOD_SOURCE=lcc ile okunur. | |
EMBEDDING_RUNTIME_URL | ayarlanmamış | Daha iyi yiyecek eşleştirmesi için /v1/embeddings modeline hizmet veren OpenAI uyumlu bir çalışma zamanı. | |
EMBEDDING_RUNTIME_API_KEY | ayarlanmamış | Bu çalışma zamanının anahtarı. | |
Başlatmayı durduran ayarlar
Başlamayan bir konteyneri fark etmek kolaydır ve maliyeti tek bir yeniden başlatmadır. Sessizce yok sayılan bir ayar ise bir şeyin çalışmadığı halde çalıştığını sanmana yol açar. Bu yüzden aşağıdaki her kural önyüklemeyi durdurur ve günlükte değişkenin adı belirtilir.
Reddedilen adlar
Bu adlar bir zamanlar ayardı. Artık servis bunlardan biri ayarlıyken başlamayı reddeder ve yerine ne kullanılacağını söyler. Çekirdek sunucu boş bir değerle bile bunları reddeder, bu nedenle satırı sil. Uygulama GATEWAY_URL değişkenini yalnızca bir değere sahip olduğunda reddeder.
| Değişken | Reddeden | Yerine şunu kullan |
|---|
GATEWAY_URL | uygulama | INSTANCE_MODE=managed. Çekirdek sunucu yapay zeka vekilini devraldı. |
SIGNUP_MODE | çekirdek sunucu | Hiçbir şey. Hesaplar davetiyelerle oluşturulur ve OPEN_SIGNUP=true kullanıcıların davetiye istemesine olanak tanır. |
SIGNUPS_OPEN | çekirdek sunucu | Hiçbir şey, aynı nedenle. |
REQUIRE_EMAIL_VERIFICATION | çekirdek sunucu | Hiçbir şey. Davetiyenin kendisi adres kontrolüdür. |
EMAIL_FROM | çekirdek sunucu | MAIL_API_FROM veya SMTP_FROM. |
SMTP_SECURE | çekirdek sunucu | Hiçbir şey. Şifrelemeye SMTP_PORT karar verir. |
PIGEON_API_KEY | çekirdek sunucu | MAIL_API_KEY veya SMTP_USER ile SMTP_PASSWORD. |
PIGEON_BASE_URL | çekirdek sunucu | MAIL_API_URL veya SMTP_HOST. |
Değişkenler arası kurallar
Uygulama.
MATOMO_URL ve MATOMO_SITE_ID: ikisini de ayarla ya da hiçbirini ayarlama. MATOMO_EVENT_LEVEL için ikisi de gerekir.
NEWSLETTER_SUBSCRIBE_URL ve NEWSLETTER_TURNSTILE_SITE_KEY: ikisini de ayarla ya da hiçbirini ayarlama.
INSTANCE_MODE=managed için CORE_URL gerekir.
CORE_URL ve desteği sonlandırılan SYNC_SERVER_URL: birini ayarla. İkisi de farklı adreslere ayarlanmışsa, bu sürüm için SYNC_SERVER_URL geçerli olur ve önyükleme tek bir uyarı günlüğe kaydeder.
NODE_ENV=production durumunda APP_URL zorunludur.
MOVED_TO_URL, kullanıcı adı veya parola içermeyen, APP_URL dışındaki bir ana bilgisayarda bulunan bir https:// adresi olmalıdır.
Listesinin dışındaki bir değer önyüklemeyi durdurur: DEFAULT_UI_LANGUAGE, NUTRIENT_REFERENCE_BASIS, INSTANCE_MODE, MATOMO_EVENT_LEVEL ve FOOD_DB_BACKFILL. Pozitif bir tam sayı olmayan FOOD_DB_DAILY_CALL_LIMIT de önyüklemeyi durdurur. CORE_URL, DEFAULT_INFERENCE_BASE_URL, MATOMO_URL veya NEWSLETTER_SUBSCRIBE_URL içindeki hatalı biçimlendirilmiş adresler de önyüklemeyi durdurur. MATOMO_SITE_ID pozitif bir tam sayı değilse veya CONTENT_DIR bir dizin değilse önyükleme yine durur.
Çekirdek sunucu.
DATABASE_URL ve SERVER_SECRET zorunludur.
Asgari uzunluklar: SERVER_SECRET ve TRIAL_ADDRESS_PEPPER için 32 karakter, ADMIN_TOKEN ve BILLING_TOKEN için 24 karakter.
E-posta tek bir aktarım yöntemi kullanır. HTTP e-posta API'si dördüne birden ihtiyaç duyar: MAIL_API_URL, MAIL_API_KEY, MAIL_API_FROM ve MAIL_OPERATOR_EMAIL. SMTP için SMTP_HOST, SMTP_FROM ve MAIL_OPERATOR_EMAIL gerekir, SMTP_USER ve SMTP_PASSWORD ise birlikte kullanılır. İki aktarım yönteminin değişkenlerinin aynı anda bulunması açılışı durdurur, hiçbir aktarım yöntemi olmadan MAIL_OPERATOR_EMAIL kullanılması da aynı şekilde durdurur.
E-posta için SERVER_PUBLIC_URL ve CLIENT_BASE_URL gerekir. NODE_ENV=production etkinken her ikisi de localhost değil, başka bir sunucudaki https:// adresleri olmalıdır.
İkisini de ayarla ya da hiçbirini ayarlama: UPSTREAM_BASE_URL ve UPSTREAM_API_KEY; PLANS_UPSTREAM_URL ve PLANS_UPSTREAM_SECRET; TURNSTILE_SECRET_KEY ve TURNSTILE_SITE_KEY; MEMBER_INVITE_DAILY_AI_LIMIT ve MEMBER_INVITE_ALLOWANCE_DAYS; TRIAL_SCANS ve TRIAL_DAILY_AI_LIMIT.
Üçünü de ayarla ya da hiçbirini ayarlama: VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY ve VAPID_SUBJECT.
X, Y'yi gerektirir: OPEN_SIGNUP=true e-posta gerektirir. Turnstile ikilisi OPEN_SIGNUP=true gerektirir. MEMBER_INVITE_LIFETIME_CAP, üye davet ikilisini veya MEMBER_INVITE_TRIAL=true gerektirir. MEMBER_INVITE_TRIAL=true, deneme ikilisini gerektirir ve üye davet ikilisini reddeder. Deneme ikilisi TRIAL_ADDRESS_PEPPER gerektirir. TRIAL_DAYS ve AI_TRIAL_INSTANCE_DAILY_LIMIT deneme ikilisini gerektirir. AI_TRIAL_NETWORK_DAILY_LIMIT, AI_TRIAL_INSTANCE_DAILY_LIMIT gerektirir. TRIAL_TIME_ZONE, TRIAL_DAYS gerektirir. SYNC_NOTICE_URL, SYNC_NOTICE gerektirir.
"Kapalı" gibi okunup tam tersi anlama geleceği yerlerde sıfır kabul edilmez: AI_INSTANCE_DAILY_LIMIT, AI_TRIAL_INSTANCE_DAILY_LIMIT, AI_TRIAL_NETWORK_DAILY_LIMIT, TRIAL_SCANS, TRIAL_DAILY_AI_LIMIT, TRIAL_DAYS, MEMBER_INVITE_DAILY_AI_LIMIT ve MEMBER_INVITE_ALLOWANCE_DAYS. 0 kabul eden iki tanesi hariç, diğer tüm sayılar da pozitif olmalıdır: TRUST_PROXY ve 0 değerinin üyelere gönderecek hiçbir şey bırakmadığı MEMBER_INVITE_LIFETIME_CAP.
Üst sınırlar: TRIAL_SCANS 100, TRIAL_DAYS 90, TRIAL_DAILY_AI_LIMIT ve MEMBER_INVITE_DAILY_AI_LIMIT 10000, SYNC_NOTICE 280 karakter, INSTANCE_NAME 64 karakter.
SYNC_SHARING, SYNC_RESEARCH, SYNC_FEEDBACK, DATABASE_SSL ve MEMBER_INVITE_TRIAL değişkenleri true, false, 1 veya 0 kabul eder. OPEN_SIGNUP yalnızca true kabul eder.
Listesinin dışındaki bir değer açılışı durdurur: INSTANCE_LANGUAGE, NUTRIENT_REFERENCE_BASIS, LOG_LEVEL, TRIAL_TIME_ZONE ve HEALTH_CONSENT_VERSION. mailto: veya https: olmayan bir VAPID_SUBJECT açılışı durdurur. Şema, bağlantı noktası veya yol içeren bir SMTP_HOST de açılışı durdurur. SERVER_PUBLIC_URL, CLIENT_BASE_URL, UPSTREAM_BASE_URL, PLANS_UPSTREAM_URL veya SYNC_NOTICE_URL içindeki hatalı biçimlendirilmiş adresler de açılışı durdurur.
Çıkarım servisi.
MODEL_PROFILE=external için MODEL_RUNTIME_URL gerekir. Diğer tüm profillerde, paketle gelen adres dışındaki bir MODEL_RUNTIME_URL konteyneri durdurur.
Listesinin dışındaki bir MODEL_PROFILE, FOOD_SOURCE, PROFILE veya LOG_LEVEL açılışı durdurur. http:// veya https:// adresi olmayan bir MODEL_RUNTIME_URL ya da EMBEDDING_RUNTIME_URL de açılışı durdurur.
Sayılar ve boyutlar pozitif tam sayı olmalıdır. LATENCY_CEILING_MS ve RUNTIME_COMPLETION_TIMEOUT_MS değişkenleri 0 değerini de kabul eder. IMAGE_MAX_LONG_EDGE en az 112, PORT en fazla 65535 olmalıdır.
Turnstile ile kayıt olma
Varsayılan olarak bir hesap yalnızca bir davetten gelir. Çekirdek sunucuda OPEN_SIGNUP=true ayarla, böylece herkes kendi adresiyle bir hesap talep edebilir. Servis daha sonra bu adrese bir davet postalar ve mektup adresin çalıştığını kanıtlar. Bu yüzden açık kayıt için e-posta gerekir ve servis bu olmadan başlamaz. Uygulama, kayıt formunu yalnızca çekirdek sunucu kapısının açık olduğunu söylediğinde gösterir.
Captcha, betiklerin servisi istek yağmuruna tutmasını engeller. İki anahtarı yapılandırdığında çekirdek sunucu bir Cloudflare Turnstile captcha'sını kontrol eder:
- 01
Cloudflare kontrol panelinde oturum aç, Turnstile sayfasını aç ve Add widget seçeneğini seç. Ücretsiz bir hesap yeterlidir. Alan adının Cloudflare kullanması gerekmez.
- 02
Gerece bir ad ver, uygulamanın openplate.example.com gibi ana bilgisayar adını ekle ve modu Yönetilen olarak bırak. Oluştur seçeneğini seç.
- 03
Site anahtarını TURNSTILE_SITE_KEY içine, gizli anahtarı ise çekirdek sunucudaki TURNSTILE_SECRET_KEY içine ayarla. Ya iki anahtarı da ayarla ya da hiçbirini ayarlama.
- 04
Çekirdek sunucuyu örneğin docker compose -f <your file> up -d ile yeniden oluştur.
/health ardından site anahtarını yayınlar. Uygulamanın kayıt sayfası captcha'yı gösterir. Gönder düğmesi, kullanıcı bunu çözene kadar etkinleşmez. Gizli anahtar çekirdek sunucuyu asla terk etmez. Servis, ziyaretçinin adresini değil, captcha yanıtını ve gizli anahtarı Cloudflare'e gönderir.
Servis yalnızca kayıt isteğini, yani POST /v1/auth/signup-request isteğini denetler. Giriş yapma, davet açma ve diğer tüm rotalarda doğrulama yoktur. Servis Cloudflare tarafına erişemediğinde 503 döner ve kişi daha sonra tekrar deneyebilir. Denetim başarısızlık durumunda geçit vermez, bu yüzden yanıtsız kalan bir istek asla onaylanmaz.
Uygulamanın Content-Security-Policy ayarı, Cloudflare doğrulamasını yalnızca yönetilen bir kurulumda (INSTANCE_MODE=managed) veya bülten formu açıkken onaylar. Diğer kurulumlarda tarayıcı doğrulamayı engeller ve kimse formu gönderemez. Doğrulamayı açmadan önce uygulamayı yönetilen olarak ayarla.
İki anahtar olmadan da açık kayıt çalışmaya devam eder. Diğer sınırları yine geçerlidir. Servis tek bir adresten saatte beş isteğe ve tek bir posta kutusu için günde bir e-postaya izin verir. Bilinen tek kullanımlık e-posta servislerinden gelen adresleri engeller. Servis başlangıçta bir uyarı günlüğü düşer.
NEWSLETTER_TURNSTILE_SITE_KEY ayrı bir ayardır. Uygulamaya aittir ve açılış sayfasındaki bülten formunu korur. Gizli anahtarı openplate tarafında değil, o formu alan serviste durur. Bülten kaydı bunu açıklar.
İmajı kendin derlemek
Dockerfile dosyaları birkaç derleme argümanı kabul eder. Bunlar çalışan bir konteyner için ayar değildir. OPENPLATE_BUILD_SHA, commit bilgisini uygulamanın paketine basar. Çıkarım imajı, üzerine inşa edilecek llama.cpp sunucu imajı olan BASE_IMAGE değerini alır. Ayrıca derleme için Node.js imajı olan NODE_IMAGE değerini alır. VITE_ALLOWED_HOSTS yalnızca uygulamanın geliştirme sunucusuna uygulanır ve öntanımlı sunucuları yoktur.