130 lines
3.8 KiB
Markdown
130 lines
3.8 KiB
Markdown
---
|
||
title: Environment Ayarları
|
||
description: Neta'yı çalıştırmak için gereken ortam değişkenleri.
|
||
order: 5
|
||
status: legacy-v2-archive
|
||
---
|
||
|
||
# Environment Ayarları
|
||
|
||
> Arşiv: Aşağıdaki Supabase env sözleşmesi v2'ye aittir. Güncel environment sözleşmesi `.env.example`, repository `README.md` ve Faz 8 runbook'unda tanımlıdır.
|
||
|
||
Neta'nın çalışması için az sayıda ama kritik ortam değişkeni gerekiyor. Uygulama artık Supabase'i kendi içinde ayağa kaldırmadığı için bütün Supabase bağlantı bilgileri dışarıdan verilir.
|
||
|
||
Local geliştirme için `.env.example` dosyasını `.env.local` olarak kopyalayabilirsiniz. Production tarafında ise aynı değerleri Vercel, Coolify veya Dokploy panelinden environment variable olarak eklemek gerekir.
|
||
|
||
## Gerekli Değişkenler
|
||
|
||
```env
|
||
NEXT_PUBLIC_SITE_URL=https://your-domain.com
|
||
NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co
|
||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
|
||
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
|
||
```
|
||
|
||
## `NEXT_PUBLIC_SITE_URL`
|
||
|
||
Uygulamanın dışarıdan açıldığı URL'dir.
|
||
|
||
Local geliştirmede:
|
||
|
||
```env
|
||
NEXT_PUBLIC_SITE_URL=http://localhost:3000
|
||
```
|
||
|
||
Production'da:
|
||
|
||
```env
|
||
NEXT_PUBLIC_SITE_URL=https://neta.example.com
|
||
```
|
||
|
||
Bu değer özellikle link üretme, callback ve ileride e-posta akışları gibi noktalarda işe yarar.
|
||
|
||
## `NEXT_PUBLIC_SUPABASE_URL`
|
||
|
||
Supabase project API URL değeridir.
|
||
|
||
Supabase panelinde şu bölümden alınır:
|
||
|
||
```txt
|
||
Project Settings -> API -> Project URL
|
||
```
|
||
|
||
Format genellikle şöyledir:
|
||
|
||
```env
|
||
NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
|
||
```
|
||
|
||
Bu değer public olabilir. Browser tarafındaki Supabase client da bu URL'yi kullanır.
|
||
|
||
## `NEXT_PUBLIC_SUPABASE_ANON_KEY`
|
||
|
||
Supabase anon/public key değeridir.
|
||
|
||
Supabase panelinde şu bölümden alınır:
|
||
|
||
```txt
|
||
Project Settings -> API -> Project API keys -> anon public
|
||
```
|
||
|
||
Bu değer browser tarafında kullanılabilir. Zaten `NEXT_PUBLIC_` prefix'i bu yüzden vardır. Güvenlik bu key'in gizli olmasından değil, Supabase RLS policy'lerinin doğru yazılmış olmasından gelir.
|
||
|
||
## `SUPABASE_SERVICE_ROLE_KEY`
|
||
|
||
Bu en hassas değişkendir. Supabase service role key, RLS'i bypass edebilir. Bu yüzden asla `NEXT_PUBLIC_` prefix'iyle tanımlanmamalıdır.
|
||
|
||
Supabase panelinde şu bölümden alınır:
|
||
|
||
```txt
|
||
Project Settings -> API -> Project API keys -> service_role
|
||
```
|
||
|
||
Neta bu key'i sadece server tarafında kullanır.
|
||
|
||
Kullanıldığı yerler:
|
||
|
||
- İlk admin kullanıcısı oluşturma.
|
||
- Müşteri portal kullanıcısı oluşturma.
|
||
- Storage upload işlemleri.
|
||
- Bazı setup fallback kontrolleri.
|
||
|
||
## Local `.env.local` Örneği
|
||
|
||
```env
|
||
NEXT_PUBLIC_SITE_URL=http://localhost:3000
|
||
NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
|
||
NEXT_PUBLIC_SUPABASE_ANON_KEY=ey...
|
||
SUPABASE_SERVICE_ROLE_KEY=ey...
|
||
```
|
||
|
||
`.env.local` dosyası repoya commit edilmemelidir.
|
||
|
||
## Production Env Kontrol Listesi
|
||
|
||
Deploy etmeden önce şunları kontrol ederim:
|
||
|
||
- `NEXT_PUBLIC_SUPABASE_URL` boş değil.
|
||
- `NEXT_PUBLIC_SUPABASE_ANON_KEY` doğru projeye ait.
|
||
- `SUPABASE_SERVICE_ROLE_KEY` doğru projeye ait.
|
||
- Production domain `NEXT_PUBLIC_SITE_URL` içine yazılmış.
|
||
- Supabase Auth tarafında site URL ve redirect URL ayarları production domain ile uyumlu.
|
||
|
||
## Yaygın Hatalar
|
||
|
||
### Login Açılıyor Ama Kayıt Oluşturulamıyor
|
||
|
||
Genellikle `SUPABASE_SERVICE_ROLE_KEY` eksiktir veya yanlış projeye aittir.
|
||
|
||
### Veriler Görünmüyor
|
||
|
||
Bu çoğu zaman env hatası değil, RLS policy hatasıdır. Kullanıcı session'ı doğru olsa bile policy izin vermiyorsa Supabase boş sonuç döndürür.
|
||
|
||
### Storage Upload Çalışmıyor
|
||
|
||
Bucket adı, bucket policy veya service role key kontrol edilmelidir.
|
||
|
||
### AI Asistan Çalışmıyor
|
||
|
||
AI provider ve API key ayarları uygulama içindeki Ayarlar ekranından kaydedilir. Ortam değişkeni olarak değil, `app_settings` tablosu üzerinden yönetilir.
|