Ortam Değişkenleri

Neta kurulumunda environment değişkenleri uygulamanın hangi URL'leri kullanacağını, Supabase bağlantılarını, JWT secret değerlerini ve portları belirler.

Dosya Ayrımı

Docker Compose:

text
.env

dosyasını kullanır.

Lokal Next.js geliştirme:

text
.env.local

dosyasını kullanır.

Bu ayrım önemlidir. .env.local hosted Supabase'e bakarken Docker full-stack farklı bir .env ile çalışıyor olabilir.

Full-Stack Değerleri

Full-stack mod için env üretmek:

bash
node scripts/generate-full-stack-env.mjs > .env

Temel değişkenler:

env
NETA_INSTALL_MODE=full-stack
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NETA_PORT=3000
NEXT_PUBLIC_SUPABASE_URL=http://localhost:8000
SUPABASE_API_PORT=8000
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
JWT_SECRET=...
POSTGRES_PASSWORD=...
POSTGRES_PORT=54322
JWT_EXPIRY=3600
SMTP_ADMIN_EMAIL=admin@neta.local

NEXT_PUBLIC_SITE_URL

Neta uygulamasının public URL değeridir.

Local örnek:

env
NEXT_PUBLIC_SITE_URL=http://localhost:3000

Production örnek:

env
NEXT_PUBLIC_SITE_URL=https://app.example.com

Auth redirect ve site URL kontrollerinde kullanılır.

NEXT_PUBLIC_SUPABASE_URL

Tarayıcıdan erişilebilen Supabase API URL değeridir.

Full-stack local örnek:

env
NEXT_PUBLIC_SUPABASE_URL=http://localhost:8000

Production örnek:

env
NEXT_PUBLIC_SUPABASE_URL=https://api.example.com

Bu URL dışarıdan erişilebilir olmalıdır. Tarayıcı Auth, REST ve Storage çağrıları için bu değeri kullanır.

SUPABASE_INTERNAL_URL

Uygulama container içinden Supabase proxy'ye bağlanırken kullanılabilir.

Full-stack Compose içinde varsayılan:

env
SUPABASE_INTERNAL_URL=http://neta-supabase-proxy:8000

Bu değer genellikle manuel ayarlanmaz, Compose içinde verilir.

NEXT_PUBLIC_SUPABASE_ANON_KEY

Supabase anon JWT değeridir. Client tarafında kullanılabilir, ama yine de doğru JWT secret ile üretilmiş olmalıdır.

Full-stack modda script tarafından otomatik üretilir.

SUPABASE_SERVICE_ROLE_KEY

Service role key yüksek yetkili bir anahtardır.

Güvenlik kuralları:

  • Client tarafında paylaşılmamalıdır.
  • Public repository'ye yazılmamalıdır.
  • Sadece server-side işlemlerde kullanılmalıdır.
  • Coolify/Dokploy gibi panellerde secret olarak saklanmalıdır.

JWT_SECRET

Supabase Auth ve JWT doğrulama için kullanılan gizli değerdir.

NEXT_PUBLIC_SUPABASE_ANON_KEY ve SUPABASE_SERVICE_ROLE_KEY bu secret ile uyumlu olmalıdır. Secret değişirse tokenlar da yeniden üretilmelidir.

POSTGRES_PASSWORD

Bundled PostgreSQL için ana parola değeridir.

Full-stack modda:

  • neta-db
  • neta-auth
  • neta-rest
  • neta-storage
  • neta-migrations

servislerinin veritabanı bağlantılarında kullanılır.

Port Değerleri

env
NETA_PORT=3000
SUPABASE_API_PORT=8000
POSTGRES_PORT=54322

Bu değerler host makinede hangi portların dışarı açılacağını belirler.

Container içi portlar genellikle sabittir.

SMTP Değerleri

MVP kurulumda e-posta doğrulama varsayılan olarak otomatik onaylıdır. Yine de ileride e-posta akışları için SMTP ayarları kullanılabilir.

Örnek:

env
SMTP_ADMIN_EMAIL=admin@example.com
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=...
SMTP_PASS=...
SMTP_SENDER_NAME=Neta

App-Only Değerleri

App-only modda minimum değerler:

env
NEXT_PUBLIC_SITE_URL=https://app.example.com
NEXT_PUBLIC_SUPABASE_URL=https://project-ref.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...

Migration için ayrıca:

env
DATABASE_URL=postgresql://postgres:password@host:5432/postgres

Güvenlik Notları

  • .env ve .env.local dosyalarını commit etme.
  • Service role key'i sadece sunucu tarafında kullan.
  • Production ortamında güçlü secret değerleri kullan.
  • Domain ve Supabase URL değerlerinin birbiriyle uyumlu olduğundan emin ol.
  • Coolify/Dokploy panellerinde secret değerlerini public build loglarında göstermemeye dikkat et.