Web istemcisi (Arayüz)
nivq web istemcisini çalıştırın — kullanıcıların açtığı tarayıcı arayüzü. nginx (ya da herhangi bir webserver) ile servis edilen, runtime'da yapılandırılan statik bir tek sayfa uygulaması; tek build her yerde çalışır — Docker, Kubernetes, bare metal.
Üç kurulum yolu — Hızlı başlangıç, Kubernetes, Bare metal — API'yi ayağa kaldırır. Web istemcisi ise kullanıcılarınızın açtığı tarayıcı arayüzüdür ve ayrı bir statik tek sayfa uygulaması olarak gelir: bir kez build edilir, bir webserver ile servis edilir, nivq API'nize yönlendirilir. Her modda API'nin yanında çalıştırırsınız.
Tek build, runtime'da yapılandırma
Arayüz düz bir statik paketdir. Dağıtıma göre değişen ayarlar — API URL'iniz, auth sunucusu, OIDC client id — build'e gömülmez, runtime'da okunur. Yani aynı imaj (ya da aynı dist/ klasörü) her ortamda yeniden build olmadan çalışır; sadece API'nize yönlendirirsiniz.
İmajı çekin
Web istemcisi özel bir imajdır (ghcr.io/nivorbit/images/nivq-web); API ile aynı registry ve giriş. 8080 portunda nginx arkasında statik bir build'dir, root değil:
docker pull ghcr.io/nivorbit/images/nivq-web:0.2.2Yapılandırın — runtime'da
İki eşdeğer yol; platformunuza uyanı seçin.
A. Ortam değişkenleri (Docker & Kubernetes için önerilen)
Konteyner açılışta config'ini ortam değişkenlerinden üretir. Yalnızca NIVQ_API_BASE_URL zorunludur:
| Değişken | Varsayılan | Nedir |
|---|---|---|
NIVQ_API_BASE_URL | (zorunlu) | nivq API URL'iniz (BACKEND_URL), tarayıcıdan erişildiği haliyle |
NIVQ_AUTH_SERVER_URL | = NIVQ_API_BASE_URL | OIDC issuer — API kendi kimlik sağlayıcısıdır, olduğu gibi bırakın |
NIVQ_CLIENT_ID | nivq-app | OIDC client id — API'de değiştirmediyseniz bırakın |
NIVQ_WORKSPACE_NAME | NivQ | Arayüzde gösterilen ad |
NIVQ_PRIMARY_COLOR | #f35553 | Marka vurgu rengi |
docker run -d --name nivq-web -p 3000:8080 \
-e NIVQ_API_BASE_URL=https://api.example.com \
ghcr.io/nivorbit/images/nivq-web:0.2.2B. Yapılandırma dosyası (mount için ya da kendi webserver'ınızda servis için)
Uygulama açılışta /config/default.json dosyasını okur. NIVQ_API_BASE_URL'i ayarlamadan kendi dosyanızı bağlayın (mount) — olduğu gibi kullanılır:
{
"apiBaseUrl": "https://api.example.com",
"authServerUrl": "https://api.example.com",
"clientId": "nivq-app",
"scope": "openid profile email",
"workspaceName": "Şirketiniz",
"primaryColor": "#f35553"
}docker run -d --name nivq-web -p 3000:8080 \
-v ./config/default.json:/usr/share/nginx/html/config/default.json:ro \
ghcr.io/nivorbit/images/nivq-web:0.2.2http://localhost:3000 adresini açın — giriş sayfasına düşmelisiniz. Üretimde API'de olduğu gibi önüne TLS koyun.
Kendi webserver'ınızda servis edin
Konteyner istemiyor musunuz? Build, düz bir statik paketdir (dist/). Webserver'ınızın docroot'una kopyalayın, yanına bir config/default.json koyun (yukarıdaki B seçeneği) ve servis edin. Bir SPA'nın çalışması için iki kural:
- Bilinmeyen rotalar için
index.html'e düşün (istemci tarafı yönlendirme) — ama/config/,/assets/,/locales/için düşmeyin; oradaki eksik bir dosya HTML değil404dönmeli. /config/default.json'u asla önbelleğe almayın ki config değişiklikleri yeniden yüklemede etkili olsun.
Başlangıç config'leri repoda gelir: deploy/nginx.conf ve deploy/apache.conf (mod_rewrite + mod_headers).
Girişin nasıl bağlandığı
nivq kullanıcıları OIDC (Authorization Code + PKCE) ile doğrudan API'nin kendisine karşı oturum açtırır — ayrıca çalıştırılacak bir auth sunucusu yoktur. API açılışta web istemcisini <FRONTEND_URL>/auth/callback redirect URI'siyle otomatik kaydeder. Bundan iki kural çıkar:
- API'nin
FRONTEND_URL'ini web istemcisinin genel URL'ine ayarlayın (ör.https://app.example.com). - Web istemcisini tam olarak o URL'de servis edin.
Eşleşme birebirdir — SPA başka bir origin'den yüklenirse API girişi reddeder. Sonrasında giriş, API'de yapılandırdığınız sağlayıcı üzerinden ilerler (Google, Microsoft, GitHub — bkz. Kimlik doğrulama & SSO); web istemcisi bunları buton olarak gösterir.
Tek origin, iki tarafta da ayarlı
Web istemcisinin genel URL'i, API'nin FRONTEND_URL'i ve NIVQ_API_BASE_URL (ya da apiBaseUrl) hepsi tutmalı. Girişten sonra tekrar giriş sayfasına dönen bir akış neredeyse her zaman buradaki bir origin uyuşmazlığıdır.
Dağıtım moduna göre
- Docker / Compose — API'nin yanına
nivq-webservisini ekleyin; Hızlı başlangıç compose'u zaten içerir. - Bare metal — aynı konteyneri önünde bir ters vekil ile çalıştırın ya da
dist/'i zaten çalıştırdığınız webserver'da servis edin. Bkz. Bare metal. - Kubernetes — Helm chart, etkinleştirdiğinizde web istemcisini de dağıtır. Bkz. Kubernetes.