Files
neta/docs/05-env-ayarlari.md
T

130 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.