Yapılandırma
FlowDesk API’si .NET yapılandırma kurallarını
izler: values.yaml’da yazdığınız Bölüm:AltAnahtar biçimindeki her ayar, konteynere iki
nokta üst üste yerine çift alt çizgiyle bir ortam değişkeni olarak geçer, ör. Database:Provider
konteyner içinde Database__Provider olarak görünür. Chart bu dönüşümü sizin için yapar; siz
yalnızca values.yaml’ı düzenlersiniz.
Veritabanı: Database:Provider
Bölüm başlığı “Veritabanı: Database:Provider”database: provider: PostgreSql # veya SqlServerAynı imaj her iki motorla da çalışır; hangisini seçtiğiniz values.yaml’daki bu tek alanla
belirlenir. Yanlış ayarlanan ya da seçtiğiniz motorla uyuşmayan bir CONNECTION_STRING
(secret’ta) API’nin açılışta veritabanına bağlanamamasına ve pod’un sürekli yeniden
başlamasına yol açar. Bağlantı dizesi biçimleri:
- PostgreSQL (Npgsql biçimi,
Search Path=dboşart):Host=postgres;Port=5432;Database=flowdesk;Username=flowdesk;Password=<parola>;Search Path=dbo - SQL Server:
Server=<host>,1433;Database=flowdesk;User Id=sa;Password=<parola>;TrustServerCertificate=True;Encrypt=True
Sonradan motor değiştirmek veri taşımayı gerektirir. Bu kararı kurulumdan önce verin.
Kimlik doğrulama: Auth:Providers
Bölüm başlığı “Kimlik doğrulama: Auth:Providers”API üç login sağlayıcısını destekler ve aynı anda birden fazlası açık olabilir:
| Sağlayıcı | Ne gerektirir |
|---|---|
EmailPassword |
Hiçbir dış bağımlılık yok: kullanıcılar FlowDesk veritabanında, parolaları PBKDF2 ile saklanır. Ek yapılandırma gerekmez. |
Ldap |
Kurumunuzun LDAP/AD sunucusu. |
Keycloak |
Kurumunuzun Keycloak sunucusu (OIDC); kullanıcı, Keycloak’taki e-posta ile FlowDesk’teki yerel kullanıcı e-postası birebir eşleştirilerek doğrulanır. |
Chart notu.
shftco/flowdesk-kuberneteschart’ının şu ankivalues.yaml’ı yalnızca tek bir sağlayıcıyı (auth.provider, varsayılanKeycloak)Auth:Providers:0’a bağlar ve yalnızca Keycloak’a özgü ayarları (authority,clientId,redirectUris) render eder. LDAP için ayrı birvalues.yamlalanı yoktur.auth.provider: EmailPasswordyazarak parola tabanlı girişe geçebilirsiniz (dış bağımlılığı yoktur); LDAP’ı veya birden çok sağlayıcıyı aynı anda açmak chart’ın bugünkü hâliyle mümkün değildir. SHFT ile görüşün.
Keycloak kullanıyorsanız:
auth: provider: Keycloak authority: 'https://<keycloak-sunucunuz>/realms/<realm>' clientId: flowdesk-web redirectUris: - 'https://<panel-adresiniz>/api/auth/callback/keycloak' requireHttps: true# KEYCLOAK_CLIENT_SECRET secret'ta, values.yaml'da DEĞİL.Keycloak realm’inde: confidential client (Client authentication: ON), Standard Flow açık,
PKCE S256, redirect URI redirectUris ile birebir aynı olmalı (uyuşmazsa girişte
redirect_uri hatası alırsınız). Her kullanıcı Email verified: ON ve Temporary: OFF bir
parola ile tanımlı olmalı, ve aynı e-postayla FlowDesk’te de bir kullanıcı olarak var
olmalı. Biri eksikse o kullanıcı oturum açamaz.
Mesaj kuyruğu: Messaging:Provider
Bölüm başlığı “Mesaj kuyruğu: Messaging:Provider”messaging: provider: RabbitMq # veya KafkaUygulama arka plan işlerini her durumda transactional outbox üzerinden yayınlar; bu ayar
yalnızca yayınlanan mesajın hangi broker’a ulaştığını belirler, uygulama kodunu etkilemez.
RabbitMq seçiliyken broker’a ulaşılamazsa API “Degraded” durumuna düşer ama HTTP trafiğine
cevap vermeye devam eder. Arka plan işleri (bildirimler, otomasyon) birikir.
Kafka seçtiyseniz ek ayarlar gerekir:
messaging: provider: Kafka kafka: bootstrapServers: 'broker1:9092,broker2:9092' consumerGroup: flowdesk topicPrefix: flowdesk securityProtocol: SaslSsl # Plaintext | Ssl | SaslPlaintext | SaslSsl saslMechanism: ScramSha512 # Plain | ScramSha256 | ScramSha512 saslUsername: flowdesk# KAFKA_SASL_PASSWORD secret'ta.Application:Environment=Production iken yerel olmayan bir Kafka broker’ı şifrelenmemiş
(Plaintext) protokolle çalışamaz. API açılışı reddeder.
Lisans: License:Key
Bölüm başlığı “Lisans: License:Key”Lisanslama çevrimiçidir: tek bir anahtar, tek bir endpoint. Kurulumda sabit disk gerektiren, elle yüklenen bir dosya yoktur.
# values.yaml, anahtarın kendisi secret'ta (License__Key), burada değillicensing: stateDirectory: /var/lib/flowdesk # kalıcı olmalı, bkz. aşağı serverUrl: 'https://license-api.flowdesk.com.tr' # SHFT'nin sunucusu, varsayılan yeterli responseSigningKeys: { } # keyId -> açık anahtar (PEM), SHFT verir, bkz. aşağıAkış: API açılışta ve sonrasında 12 saatte bir License:Key’i lisans sunucusuna gönderir;
sunucu ECDSA P-256 ile imzalı bir cevap döner, API bu imzayı License:ResponseSigningKeys
altındaki açık anahtarla doğrular, uygular ve License:StateDirectory altına cache’e alır.
Doğrulama; imzayı, keyId’yi, bir tekrar-oynatma (replay) önleyen nonce’u ve cevabın bu
kuruluma ait olduğunu (installationId) kontrol eder. Dört ayrı sahtecilik yolunu kapatır.
Request body’de talep içeriği, müşteri verisi veya kullanıcı bilgisi hiçbir zaman yer almaz.
Hem License:Key hem License:ResponseSigningKeys:<keyId> SHFT tarafından verilir ve
kurumunuza teslim edilir. Anahtar kurumunuzun kimliğini, imza anahtarı da cevabın gerçekten
SHFT’den geldiğini doğrulamak için kullanılır; ikisi birlikte çalışır, biri eksikse lisans
doğrulanmış sayılmaz.
Hiçbir lisans durumu açılışı engellemez. Bir kurulumun lisans sunucusuna hiç ulaşamaması ya da hiç anahtar girilmemiş olması bile API’nin başlamasını engellemez; sorun çalışır durumdaki bir sistem üzerinde giderilir. Dört durum:
| Durum | Anlamı |
|---|---|
Beklemede (Pending) |
Anahtar girilmemiş, ya da henüz bir cevap alınmamış. Uygulama tam işlevseldir. |
Geçerli (Valid) |
Sunucuya başarıyla bağlanıldı, kurulum yetkilendirilmiş. |
Cache’le çalışıyor (Grace) |
Sunucuya ulaşılamıyor; API cache’teki son imzalı cevapla çalışmaya devam eder, panelde kalan gün sayısı gösterilir. |
Bloke (Blocked) |
Reddedildi ya da cache süresi doldu. İş endpoint’leri FD:0011 döner; lisans ekranı, giriş ve /health açık kalır. Sorunu bu durumda bile giderebilirsiniz. |
License:StateDirectory kalıcı bir volume üzerinde olmalıdır. Kalıcı değilse her yeniden
başlatma, lisans sunucusu için yeni bir kurulum gibi görünür.
Ortam: Application:Environment
Bölüm başlığı “Ortam: Application:Environment”application: environment: Production # veya DevDev, gevşetilmiş kontrollerle kolay bir demo/deneme ortamı sağlar, ör. RabbitMQ’da
guest/guest kabul edilir, yerel olmayan bir Kafka broker’ına şifrelenmemiş protokolle
bağlanmaya izin verilir. Üretimde Production kullanın; Dev bırakmak bu gevşetilmiş
kontrolleri üretimde de açık tutar.
Sırada ne var
Bölüm başlığı “Sırada ne var”Giden/gelen postayı tamamlamak için E-posta ayarları sayfasına geçin.