Yapılandırma .NET kuralıyla ortam değişkenlerinden okunur: Poyra:JwtKey anahtarının değişken karşılığı Poyra__JwtKey’dir. Üretim kompozisyonu .env dosyasını okur.

Sırlar

./scripts/anahtar-uret.sh altı sırrı üretir: Açılışta üç anahtar da doğrulanır: var mı, geçerli base64 mü, tam 32 bayt mı ve bilinen örnek/zayıf anahtarlardan biri mi. Üretimde başarısız doğrulama süreci hiç başlatmaz; geliştirmede yalnız uyarı loglanır.
POYRA_VAULT_KEY kaybolursa kayıtlı kartlar tasarım gereği geri getirilemez. Bu anahtarı diğerlerinden ayrı ve güvenli bir yerde (uzun vadede KMS/HSM) saklayın. .env 600 izinli olmalı, depoya girmemeli ve olağan yedeğe dahil edilmemelidir.

Taban adresler

E-posta ve SMS

SMTP değişkenleri opsiyoneldir: Poyra__Smtp__Host, __Port, __Username, __Password, __From. Host boş bırakılırsa sistem sessizce “gönderildi” demez — gönderici log’a düşer ve uyarır; parola sıfırlama postaları kullanıcıya ulaşmaz. Üretimde SMTP’yi mutlaka doldurun. SMS (ödeme bağlantısını SMS ile göndermek için) ayrı ağaçtadır ve compose şablonunda yer almaz; kullanacaksanız ortam değişkeni olarak ekleyin: Sms__Provider=netgsm ve Sms__Netgsm__UserCode, __Password, __Header. Tanımsızsa SMS gönderimi sessizce kapalı kalır.

Gözlemlenebilirlik

API, OpenTelemetry ile izlenir (ASP.NET Core + HttpClient + Npgsql izleme ve metrikleri). OTEL_EXPORTER_OTLP_ENDPOINT tanımlarsanız OTLP dışa aktarıcı devreye girer; tanımlı değilse hiçbir şey gönderilmez. Loglar konsoladır — docker compose logs -f api ile okunur.

Bilinçli sınırlar ve bilinmesi gereken boşluklar

Bunlar kurulum kararlarınızı etkiler; sürüm ilerledikçe kapanacaktır:
  • CORS yapılandırılmamıştır. API sunucudan sunucuya tasarlandı; tarayıcıdan doğrudan API çağırmayı planlamayın (checkout zaten kendi host’undadır).
  • Panelin DataProtection anahtarları kalıcı volume’de değildir. Panel konteyneri yeniden başladığında tüm panel oturumları düşer (kullanıcılar yeniden giriş yapar) ve panel tek kopya çalışmalıdır. Kalıcılık isterseniz /home/app/.aspnet/DataProtection-Keys için volume bağlayın.
  • Vekil başlıkları okunmaz (X-Forwarded-*); bu yüzden taban adres değişkenlerini açıkça vermek kritiktir — uygulama kendi adresini istekten türetmeye çalışmaz, çalışmamalıdır.
  • Panel ve checkout’ta sağlık ucu yoktur; izlemeyi API’nin /health/* uçlarına ve vekil loglarına kurun.
  • Hız sınırlama (rate limiting) uygulama katmanında yoktur — vekilde kurun. İş katmanında risk motorunun hız sayaçları ve liste uçlarının sabit tavanları vardır.