Self-hosted PostgreSQL vs Supabase Karşılaştırması

Kendi sunucunda çalışan, 1986'dan bu yana olgunlaşan açık kaynak ilişkisel veritabanı

VS
Supabase

Gerçek PostgreSQL üzerine kurulu, yönetilen açık kaynak backend platformu

17 dk okumaVeritabanı

Hızlı Karar

Bu kararın tek doğru cevabı yok. Küçük bir ekipsen ve hız önceliğinse Supabase doğru seçim: auth, storage, realtime ve pooler hazır geliyor. Öngörülebilir yük, veri yerleşimi kısıtı (17 bölgede Türkiye yok) ya da kullanıcıyla katlanan maliyet varsa self-hosted PostgreSQL kazanıyor. Tek uyarı: resmi doküman self-host'ta yönetilen backup/PITR'ın kapandığını yazıyor — kontrolle birlikte restore provasını da devralıyorsun. Yedek almak değil, geri dönebilmek kriterdir.

Self-hosted PostgreSQLSupabase
Tam sonucu oku

Puan Karşılaştırması

Grafik yükleniyor...

Detaylı Puanlama

Detaylı Puanlama: Self-hosted PostgreSQL ve Supabase — kategori bazında 10 üzerinden puanlar
KategoriSelf-hosted PostgreSQLSupabase
Performans
8/10
8/10
Öğrenme Kolaylığı
5/10
8/10
Ekosistem
9/10
8/10
Topluluk
9/10
9/10
İş Pazarı
8/10
7/10
Gelecek
8/10
8/10

Artıları & Eksileri

Self-hosted PostgreSQL

Artıları

  • Yazılım tamamen ücretsiz (PostgreSQL License) — maliyet altyapına sabitlenir
  • Tam uzantı özgürlüğü: pgvector, PostGIS, pg_cron ne istersen kurabilirsin
  • Veri fiziksel olarak seçtiğin sunucuda kalır — veri yerleşimi doğrudan senin kontrolünde
  • PITR çekirdek özellik (WAL arşivleme + pg_basebackup)
  • Vendor kilidi yok — zaten kendi altyapındasın
  • Major sürüm 5 yıl resmi destek alıyor, öngörülebilir patch takvimi
  • RLS 9.5'ten beri çekirdek özellik, istediğin gibi kullanabilirsin

Eksileri

  • Auth, Storage, Realtime çekirdekte yok — ayrı kurulmalı ve işletilmeli
  • Bağlantı havuzlama için PgBouncer/Supavisor gibi ayrı bir araç gerekiyor
  • Backup/PITR/HA/monitoring tamamen senin sorumluluğunda, resmi SLA yok
  • Öğrenme eğrisi daha dik: auth+pooling+HA'yı elle kurmak zaman istiyor
  • Resmi bir müşteri vakası/benchmark sayfası yayınlanmıyor (topluluk projesi)

En Uygun

Sabit ve öngörülebilir bütçe gereken orta-büyük ölçekli projelerKVKK/veri yerleşimi sözleşme şartı olan sistemlerpgvector/PostGIS gibi özel uzantı kombinasyonları gerektiren işlerDevOps kapasitesi olan ve restore provasını takvimleyecek ekiplerVendor bağımsızlığı kritik olan uzun ömürlü projeler

Supabase

Artıları

  • Auth, Storage, Realtime, Data API hazır geliyor — auth katmanını sıfırdan yazmıyorsun
  • Free planda $0/ay ile başlıyorsun (500MB DB, 5GB egress, 50k MAU)
  • Dedicated/Shared pooler seçenekleriyle bağlantı havuzlama hazır (Supavisor)
  • HIPAA (BAA), ISO 27001, GDPR DPA gibi hazır uyumluluk sertifikaları
  • Health Check Advisors ile servis hata oranı otomatik izleniyor (Eylül 2026)
  • Grafana Cloud tek-tık entegrasyonu ile gözlemlenebilirlik (Temmuz 2026)
  • Altında gerçek PostgreSQL çalıştığı için pg_dump ile taşınabilir, vendor kilidi düşük

Eksileri

  • Maliyet kullanıcı/veri arttıkça kademeli büyüyor ($0,125/GB disk, $0,09/GB egress, $0,00325/MAU)
  • 17 bölge arasında Türkiye yok — KVKK açısından yurt dışı aktarım sorusu doğuyor
  • Free planda otomatik backup yok, Pro'da yalnız 7 gün
  • Uzantılar platformun küratörlü kataloğuyla sınırlı, tam OS-seviyesi serbestlik yok
  • Self-host seçeneği 'community-supported' — resmi SLA yok, managed backup/PITR devre dışı kalıyor

En Uygun

Tek kişilik veya küçük ekiplerde hızlı 0'dan-1'e geçişAuth/Storage/Realtime'ı sıfırdan kurmak istemeyen ürün ekipleriHIPAA/ISO 27001/GDPR gibi hazır sertifikasyon gerektiren projelerYönetilen izleme ve otomatik hata-oranı uyarısı isteyen ekiplerVendor bağımsızlığını pg_dump ile koruyarak hızlı başlamak isteyenler

Kod Karşılaştırması

Self-hosted PostgreSQL
# Self-hosted PostgreSQL - WAL arşivleme + PITR kurulumu (postgresql.conf)
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /var/backups/pg_wal_archive/%f && cp %p /var/backups/pg_wal_archive/%f'
max_wal_senders = 3

# Temel yedek al (pg_basebackup)
pg_basebackup -D /var/backups/base -Ft -z -P -U replicator -h localhost

# PITR: belirli bir zamana geri dön (recovery.signal + postgresql.conf)
# 1) Base backup'ı restore dizinine aç
# 2) Aşağıdaki satırları postgresql.conf'a ekle, recovery.signal dosyasını oluştur
restore_command = 'cp /var/backups/pg_wal_archive/%f %p'
recovery_target_time = '2026-09-23 09:00:00+03'

# pg_hba.conf - yalnız uygulama sunucusundan bağlantı
host    appdb    app_user    10.0.0.5/32    scram-sha-256

-- SQL (psql): Uzantı kurulumu (tam özgürlük - self-host'a özgü)
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS pg_cron;

# Bağlantı havuzlama (PgBouncer, pgbouncer.ini)
[databases]
appdb = host=127.0.0.1 port=5432 dbname=appdb
[pgbouncer]
pool_mode = transaction
max_client_conn = 500
default_pool_size = 25
Supabase
-- SQL (Supabase SQL Editor): 1) Tabloyu oluştur ve RLS'yi aç (Data API bunu zorunlu kılıyor)
create table public.notes (
  id uuid default gen_random_uuid() primary key,
  user_id uuid references auth.users not null,
  content text not null,
  created_at timestamptz default now()
);
alter table public.notes enable row level security;

create policy "kullanicilar kendi notlarini okur"
  on public.notes for select
  using (auth.uid() = user_id);

create policy "kullanicilar kendi notlarini yazar"
  on public.notes for insert
  with check (auth.uid() = user_id);

// 2) supabase-js ile sorgu (RLS otomatik uygulanır)
import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.SUPABASE_URL!,
  process.env.SUPABASE_ANON_KEY!
)

const { data: notes, error } = await supabase
  .from('notes')
  .select('id, content, created_at')
  .order('created_at', { ascending: false })

// 3) Postgres istemcisiyle bağlantı dizeleri (resmi "Endpoints and IP versions" tablosu)
// Direct connection (kalıcı backend, pg_dump, migration):
// postgresql://postgres:[YOUR-PASSWORD]@db.[PROJECT-REF].supabase.co:5432/postgres
// Dedicated pooler (yalnız transaction mode, ücretli planlarda):
// postgresql://postgres:[YOUR-PASSWORD]@db.[PROJECT-REF].supabase.co:6543/postgres
// Dizeyi elle kurma: Dashboard > Connect ekranından kopyala (shared pooler host'u bölgeden türetilemez).

Sonuç

Bu kararın tek doğru cevabı yok. Küçük bir ekipsen ve hız önceliğinse Supabase doğru seçim: auth, storage, realtime ve pooler hazır geliyor. Öngörülebilir yük, veri yerleşimi kısıtı (17 bölgede Türkiye yok) ya da kullanıcıyla katlanan maliyet varsa self-hosted PostgreSQL kazanıyor. Tek uyarı: resmi doküman self-host'ta yönetilen backup/PITR'ın kapandığını yazıyor — kontrolle birlikte restore provasını da devralıyorsun. Yedek almak değil, geri dönebilmek kriterdir.

Ücretsiz Danışmanlık Al
SSS

Sıkça Sorulan Sorular

Supabase standart PostgreSQL kullandığı için `pg_dump`/`pg_dumpall` ile veya native Postgres replikasyonuyla çıkış yapabilirsin; resmi doküman proje-arası taşımayı Node.js script örneğiyle (auth/storage dahil) anlatıyor. Auth, Storage ve Realtime gibi Supabase-özel servisleri self-host tarafında yeniden kurmak (Docker Compose ile resmi self-host stack'i çalıştırarak) ayrı bir iştir — veri taşımak ile servis parite kurmak farklı adımlardır.

Giriş

"Kendi Postgres sunucumu mu işletmeliyim, yoksa Supabase'e mi yazmalıyım?" sorusu artık teorik değil — 2026 ortasında Supabase art arda kurumsal özellikler yayınladı: Grafana Cloud ile tek-tık gözlemlenebilirlik (23 Temmuz), Unified Logs açık betası (16 Temmuz), CipherStash ile alan-seviyesi aranabilir şifreleme (9 Temmuz) ve Eylül'de Health Check Advisors. Aynı dönemde PostgreSQL çekirdeği sakin ritminde ilerledi: Ağustos'ta 18.6/17.11/16.15/15.19/14.24 ve 19 Beta 3 yayınlandı, her major sürüm hâlâ 5 yıl resmi destek alıyor. Ama ikisi de aynı motoru, gerçek PostgreSQL'i, çalıştırıyor. Seçtiğin şey motor değil, sorumluluk modeli: Supabase'de auth, storage, realtime, pooler ve (kısmen) backup senin yerine yönetiliyor; kendi sunucunda hepsini sen kuruyor ve izliyorsun. Aşağıda maliyet eğrisini, yedekleme/PITR disiplinini, uzantı özgürlüğünü, RLS sorumluluğunu ve KVKK açısından veri yerleşimini resmi kaynaklara dayanarak karşılaştırıyoruz. Kaynağı olmayan hiçbir rakam bu yazıda yok.

Karşılaştırma Matrisi

Karşılaştırma Matrisi: Self-hosted PostgreSQL / Supabase
ÖzellikSelf-hosted PostgreSQLSupabase
Yazılım maliyetiÜcretsiz (PostgreSQL License) (Öne çıkan)Free $0, Pro $25/ay'dan
Compute maliyetiVPS/donanım faturana bağlıAdd-on $10/ay'dan (64 vCPU'ya kadar)
Otomatik backupKendin kurarsın (WAL/pg_basebackup)Free'de yok, Pro'da 7 gün (Öne çıkan)
PITRÇekirdek özellik, kendin kurarsınAyrı ücretli add-on
Auth/Storage/RealtimeYok, ayrı kurulmalıPlatformda hazır (Öne çıkan)
Bağlantı havuzlamaPgBouncer/Supavisor kurulmalıShared/Dedicated pooler hazır (Öne çıkan)
Uzantı özgürlüğüTam (superuser erişimi) (Öne çıkan)Küratörlü katalog
RLS zorunluluğuUygulama kararına bağlıData API RLS gerektirir
Bölge/veri yerleşimiSen seçersin (ör. Türkiye VPS) (Öne çıkan)17 bölge, Türkiye yok
Uyumluluk sertifikalarıResmi beyan yokHIPAA (BAA), ISO 27001, GDPR DPA (Öne çıkan)
Vendor kilidi / çıkışYok (zaten kendi altyapın) (Öne çıkan)pg_dump ile düşük, teorik risk
Operasyonel destekTamamen sendeYönetilen planda platform üstlenir (Öne çıkan)
LisansPostgreSQL LicenseApache-2.0
Sürüm destek süresiMajor sürüm 5 yılSürekli platform güncellemesi

Derinlemesine İnceleme

Self-hosted PostgreSQL

Genel Bakış

PostgreSQL, kökleri 1986'da Berkeley Üniversitesi'ndeki POSTGRES projesine dayanan, PostgreSQL Global Development Group tarafından geliştirilen açık kaynak ilişkisel veritabanı yönetim sistemi. PostgreSQL License altında ücretsiz dağıtılıyor; 13 Ağustos 2026'da 18.6/17.11/16.15/15.19/14.24 minor sürümleri ve 19 Beta 3 yayınlandı, her major sürüm ilk yayınından itibaren 5 yıl resmi destek alıyor. Kendi sunucunda işlettiğinde motorun kendisi hiçbir maliyet taşımıyor — bütçe tamamen altyapına ve işletme zamanına kayıyor. Çekirdek, ACID uyumlu işlemler, gelişmiş sorgu planlayıcısı, JSON/JSONB desteği ve geniş bir uzantı mimarisi sunuyor: pgvector ile vektör arama, PostGIS ile coğrafi veri, pg_cron ile zamanlanmış görevler tek bir veritabanı içinde birleştirilebiliyor. Ancak PostgreSQL yalnız veritabanı motorunu sağlıyor — kimlik doğrulama, dosya depolama, realtime abonelikler, bağlantı havuzlama ve yönetilen yedekleme gibi 'platform' işlevlerinin hiçbiri çekirdekte yok; bunları Supabase'in açık kaynak bileşenleriyle ya da kendi araçlarınla (PgBouncer, GoTrue, MinIO vb.) ayrı kurman gerekiyor. Resmi proje bir vakıf/topluluk yapısı olduğu için ticari müşteri vaka sayfası ya da resmi benchmark sayfası yayınlamıyor; buna karşılık versiyonlama politikası ve destek takvimi tamamen şeffaf ve resmi olarak belgelenmiş durumda.

Ekosistem

Paket yöneticisi
PGDG apt/yum repo, Docker resmi imaj
Geliştirme ortamı
psqlpgAdminDBeaver
Popüler kütüphaneler
pgvectorPostGISpg_cronPgBouncerTimescaleDB
GitHub yıldızı
22,183

Supabase

Genel Bakış

Supabase, 2019'da kurulan Supabase Inc. tarafından geliştirilen, gerçek PostgreSQL üzerine inşa edilmiş açık kaynaklı (Apache-2.0) yönetilen backend platformu. GitHub deposu Eylül 2026 itibarıyla 110.687 yıldıza ulaşmış durumda. Fiyatlandırma Free ($0/ay), Pro ($25/ay'dan, kademeli kullanım ücretleriyle), Team ($599/ay'dan, SOC2+ISO27001+SSO) ve özel fiyatlı Enterprise olarak dörde ayrılıyor; ayrı bir compute add-on'u $10/ay'dan 64 vCPU/256GB RAM'e kadar ölçekleniyor. 2026 yazından itibaren platform belirgin şekilde kurumsal yöne ağırlık verdi: Grafana Cloud ile tek-tık gözlemlenebilirlik (23 Temmuz), Unified Logs açık betası (16 Temmuz), CipherStash ile alan-seviyesi aranabilir şifreleme (9 Temmuz), Supabase MCP sunucusu için Okta-yönetimli erişim (24 Ağustos) ve Health Check Advisors (18 Eylül) art arda yayınlandı. Platform 17 bölge sunuyor ve seçilen bölgede Postgres veritabanı, Auth servisi ve Storage objeleri kalıyor — ama bölge listesinde Türkiye yok. Self-host seçeneği de mevcut: resmi Docker Compose stack'i Auth/Storage/Realtime/PostgREST'i içeriyor, ancak resmi doküman branching, gelişmiş metrikler, yönetilen backup/PITR, analytics/vector bucket'lar ve platform yönetim API'sinin self-host'ta bulunmadığını, ayrıca bu modun 'community-supported' olduğunu açıkça belirtiyor.

Ekosistem

Paket yöneticisi
npm (@supabase/supabase-js), Docker Compose (self-host)
Geliştirme ortamı
Supabase DashboardSupabase CLIpsql
Popüler kütüphaneler
@supabase/supabase-jsSupavisorGoTruePostgREST
GitHub yıldızı
110,687

Teknik Analiz

Aylık maliyet eğrisi nasıl büyüyor?

Supabase'in fiyat merdiveni nettir: Free planda $0/ay (500MB DB, 5GB egress, 50k aylık aktif kullanıcı), Pro planı $25/ay'dan başlıyor ve büyüdükçe kademeli ek ücretlere geçiyor — 8GB disk sonrası GB başına $0,125, 250GB egress sonrası GB başına $0,09, 100k MAU sonrası kullanıcı başına $0,00325. Team planı $599/ay'dan başlıyor ve SOC2 + ISO 27001 + SSO + 14 gün backup gibi kurumsal gereksinimleri ekliyor. Ayrıca ayrı bir compute add-on var: 1GB RAM'lik Micro instance $10/ay'dan başlayıp 64 vCPU/256GB RAM'e kadar ölçekleniyor. Self-hosted PostgreSQL tarafında "fiyat sayfası" diye bir şey yok, çünkü yazılımın kendisi PostgreSQL Lisansı altında ücretsiz. Sen bu satırı okurken maliyet zaten VPS/donanım faturana kaymış durumda — PostgreSQL.org resmi bir maliyet ya da TCO karşılaştırması yayınlamıyor (yalnız üçüncü taraf hosting linkleri var). Pratik sonuç: küçük ölçekte Supabase'in Free planı muhtemelen daha ucuz görünür, ama kullanıcı/veri arttıkça iki modelin eğrisi farklı yönlere gider — biri kademeli kullanım-bazlı fatura, diğeri sabit altyapı + senin zamanın.

Auth, Storage, Realtime'ı kendin kurmanın gerçek maliyeti

Supabase'in resmi self-hosting dokümanı bu noktada dürüst: kendi sunucunda barındırdığında sunucu provisioning, servis konfigürasyonu ve yönetimi, yüksek erişilebilirlik/ölçeklenebilirlik, yedekleme ve felaket kurtarma ile izlemenin tamamı senin sorumluluğuna geçiyor. Supabase'in kendi Docker Compose self-host stack'i Auth (GoTrue), Storage, Realtime ve PostgREST servislerini de içeriyor — yani bileşenleri sıfırdan yazmak zorunda değilsin, ama işletmek zorundasın. Aynı dokümana göre self-host'ta branching, gelişmiş metrikler, yönetilen backup/PITR, analytics/vector bucket'lar ve platform yönetim API'si mevcut değil. Saf PostgreSQL'de ise "auth/storage/realtime" kavramı yok — bunlar Supabase'in DB üzerine eklediği katman. PostgreSQL çekirdeği yalnız veritabanı motoru sağlıyor; bu bir eksiklik değil, kapsam farkı. Eğer kendi sunucunda bu üç servisi Supabase'in açık kaynak bileşenleriyle kurarsan, veriyi ve altyapıyı kontrol edersin ama yönetilen platformun otomatik sağladığı SLA, izleme ve ölçekleme mekanizmalarından mahrum kalırsın — bunu bir ekip olarak üstlenip üstlenemeyeceğini dürüstçe değerlendirmen gerekir.

Yedekleme, PITR ve restore provası disiplini

Supabase'in yönetilen platformunda backup planına göre kademeli: Pro planı son 7 günün günlük yedeklerine erişebiliyor, Team planı 14 güne, Enterprise planı 30 güne kadar. Free planda otomatik backup yok — resmi doküman açıkça "Free tier projeleri Supabase CLI'nin db dump komutuyla düzenli export almalı ve off-site yedek tutmalı" diyor. Point-in-time recovery ayrı, saniye hassasiyetinde bir add-on olarak sunuluyor. Self-hosted PostgreSQL'de PITR, çekirdeğin resmi bir özelliği — WAL arşivleme ve pg_basebackup ile kurulur, ama kurulumu ve işletilmesi tamamen sana ait. Önemli bir nüans: self-host Supabase'de de yönetilen backup/PITR **devre dışı** (madde 2'deki aynı doküman) — yani kontrolü kendine alırken restore provasını da kendine alıyorsun. Bu yazının verdict_hint'inin özeti tam burada somutlaşıyor: yedek almak kriter değil, geri dönebilmeyi düzenli test etmek kriter. Hangi seçeneği seçersen seç, restore provasını takvimlemeyen bir ekip için "yedek var" cümlesi anlamsız bir güvence.

Bağlantı havuzlama ve uzantı özgürlüğü

Supabase üç pooler modu sunuyor: serverless/edge fonksiyonlar için "Shared pooler, transaction mode"; yalnız IPv4 destekleyen araçlar için "Shared pooler, session mode"; ve ücretli planlarda veritabanıyla aynı makinede çalışan, daha düşük gecikmeli "Dedicated pooler". Bunun altındaki motor, açık kaynak Supavisor — self-host'ta da kullanılabilir. Saf PostgreSQL'de havuzlama çekirdekte yok; PgBouncer ya da Supavisor gibi ayrı bir araç kurup işletmen gerekiyor, resmi doküman bağlantı/kimlik doğrulama ayarlarını anlatır ama bir pooler önermez. Uzantı tarafında tablo tersine dönüyor: kendi sunucunda superuser erişimin olduğu için istediğin uzantıyı (pgvector, PostGIS, pg_cron, ne istersen) derleyip kurabilirsin — tam özgürlük. Supabase'de "Database Extensions" kataloğu üzerinden platform tarafından küratörlü, izin verilen bir uzantı listesi açılıyor; CREATE EXTENSION çalışır ama OS-seviyesi serbestlik yok. Supabase'in güncel olarak tam desteklediği uzantı sayısı bu araştırmada doğrulanamadı — docs sayfası mevcut ama içerik bu turda tam çekilemedi, iddia olarak burada yer almıyor.

RLS ve güvenlik sorumluluğu kimde?

Supabase'de Row Level Security, platformun Data API modelinin merkezinde — resmi doküman "Data API... Row Level Security gerektirir" diyor, yani frontend'den doğrudan tabloya erişim RLS politikalarına bağlı çalışıyor. Bu seni doğru alışkanlığa zorluyor: her tabloda RLS açık olmalı, aksi halde Data API üzerinden veri sızıntısı riski doğar. Self-hosted saf PostgreSQL'de RLS, 9.5 sürümünden beri çekirdek bir özellik, ama platform seni buna zorlamıyor — "kim erişir" kararı tamamen senin uygulama kodunda, bir API katmanı yoksa bu disiplin de yok. Genel güvenlik sorumluluğunda fark daha keskin: Supabase self-host dokümanı "güvenlik sertleştirme ve OS/servislerin güncel tutulması" maddesini açıkça kullanıcı sorumluluğuna yazıyor — yani self-host ettiğin an, yönetilen planın arkasındaki güvenlik ekibi de devre dışı kalıyor. Yönetilen Supabase'de bu iş platformun; kendi sunucunda bu iş senin, patch takviminden firewall kuralına kadar.

KVKK ve veri yerleşimi

Supabase 17 bölge sunuyor ve seçtiğin bölgede Postgres veritabanın, Auth servisin ve Storage objelerin kalıyor — bu kadarı net ve resmi. Ama bölge listesinde **Türkiye yok**; en yakın seçenekler ABD, AB ve Asya-Pasifik bölgeleri. Bu, KVKK'nın yurt dışına veri aktarımı rejimine girdiğin anlamına gelir. İyi haber: Supabase HIPAA uyumlu (BAA ile), ISO 27001 sertifikalı, GDPR için DPA sunuyor ve veriyi AES-256 (durağan) + TLS (aktarımda) ile şifreliyor — yani "yurt dışında ama belgeli" bir konum. Kendi sunucunda, örneğin Türkiye'deki bir VPS'te self-host PostgreSQL çalıştırdığında veri fiziksel olarak seçtiğin sunucuda kalır — veri yerleşimi sorusuna en doğrudan cevap budur. Ama dikkat: PostgreSQL.org resmi bir KVKK/GDPR uyumluluk beyanı yayınlamıyor, çünkü topluluk vakfı ticari bir uyumluluk sertifikası sunmuyor. Yani self-host'ta "veri Türkiye'de" doğru ama "sertifikalı uyumluluk" ayrı bir iş — bunu sen (ya da sözleşme yaptığın hosting sağlayıcın) kanıtlamak zorundasın.

Migration akışı, çıkış kolaylığı ve operasyonel yük

Supabase'in altında gerçek PostgreSQL çalıştığı için pg_dump/pg_restore ile dışa taşıma her zaman mümkün; resmi "migrating within Supabase" rehberi proje-arası taşımayı Node.js script örneğiyle (auth/storage dahil) anlatıyor. Self-host Docker Compose stack'i tamamen açık kaynak (Apache-2.0) ve .env dosyasıyla konfigüre ediliyor — teorik vendor kilidi düşük. Saf self-hosted PostgreSQL'de ise "çıkış" kavramı zaten yok, zira zaten kendi altyapındasın. Operasyonel yük tarafında Supabase yönetilen planda seni büyük ölçüde rahatlatıyor: Eylül 2026'da eklenen Health Check Advisors, PostgREST/Auth/Storage/Edge Functions hata oranlarını otomatik izliyor. Ama self-host Supabase için resmi doküman net: "community-supported" — SLA ya da resmi on-call yok. Saf self-hosted PostgreSQL'de patch takvimi PGDG'nin minor sürüm döngüsüne bağlı (en az 3 ayda bir), ama uygulanması ve izlenmesi tamamen sende. Kısacası: yönetilen Supabase operasyonel yükü platforma devrediyor, self-host (ister saf Postgres ister self-host Supabase) bu yükü sana bırakıyor — karşılığında da tam kontrolü sana veriyor.

Hangi Senaryoda Hangisi

Tek kişilik/2-3 kişilik ekip, hızlı MVP çıkarmak istiyor

Öneri: Supabase (Free/Pro)

Auth/storage/realtime hazır geliyor; DevOps yükü olmadan ürüne odaklanırsın.

KVKK gereği verinin Türkiye'de fiziksel olarak kalması sözleşme şartı

Öneri: Self-hosted PostgreSQL (Türkiye VPS)

Supabase'in 17 bölgesinde Türkiye yok; en yakın bölge AB/İngiltere, bu yurt dışı aktarım sayılır.

pgvector + PostGIS + özel C uzantıları birlikte gerekiyor

Öneri: Self-hosted PostgreSQL

Superuser erişimiyle tam uzantı özgürlüğü var; Supabase'de küratörlü katalog sınırlıyor.

Kullanıcı sayısı hızla 100k+ MAU'ya çıkacak, bütçe sabit kalmalı

Öneri: Self-hosted PostgreSQL

Supabase Pro'da MAU/disk/egress aşımı kademeli ücretlendiriliyor; self-host maliyeti altyapıya sabitlenir.

HIPAA/ISO 27001 gibi üçüncü taraf sertifikasyon gerekiyor, ekipte güvenlik uzmanı yok

Öneri: Supabase (Team/Enterprise)

HIPAA (BAA), ISO 27001, GDPR DPA hazır geliyor; self-host'ta bunu sen kanıtlamak zorundasın.

Ekip restore provasını gerçekten takvimleyecek, DevOps kapasitesi var

Öneri: Self-hosted PostgreSQL

PITR/backup tam kontrolde; ama bu avantaj yalnız disiplinli test edilen bir süreçle gerçek değer üretir.

Kontrolü de, hazır servisleri de istiyor ama SLA gerekmiyor

Öneri: Self-host Supabase (Docker Compose)

Auth/Storage/Realtime hazır bileşenler olarak gelir ama resmi doküman 'community-supported' uyarısı yapıyor, managed backup/PITR yok.

Yaygın Tuzaklar

  • Supabase CLI'nin local development stack'ini (supabase start, Docker) production self-host sanıp dış trafiğe açmak

    Supabase

    Çözüm

    Resmi self-hosting dokümanındaki Docker Compose production stack'ini kullan; local dev stack dış trafiğe açılmamalı.

  • Self-host'ta backup/PITR/HA'nın 'otomatik geleceğini' varsaymak

    Her ikisi

    Çözüm

    Resmi doküman bunları kullanıcı sorumluluğuna yazıyor; WAL arşivleme + restore provasını kendin kurup test et.

  • Supabase'in 'Europe' bölgesini seçip bunun otomatik AB/KVKK uyumu sağladığını sanmak

    Supabase

    Çözüm

    Europe bölgesi İngiltere ve İsviçre gibi AB-dışı ülkeleri de içerebilir; bölge seçimi tek başına regülasyon kanıtı değildir, ayrı bir uyumluluk değerlendirmesi yap.

  • Free planda 'backup var' varsayıp hiç db dump almamak

    Supabase

    Çözüm

    Free planda otomatik backup yok; CLI ile düzenli export al ve off-site sakla.

  • Kendi sunucunda RLS kurmayı 'Supabase'e özgü' sanıp saf Postgres'te güvenliği yalnızca API katmanına bırakmak

    Self-hosted PostgreSQL

    Çözüm

    RLS çekirdek bir PostgreSQL özelliği (9.5+); Data API kullanmasan da hassas tablolarda RLS politikası tanımla.

Geçiş Kılavuzu

Supabase'ten self-hosted PostgreSQL'e geçiş

Tahmini süre: Küçük-orta ölçekli bir proje için, RLS/uzantı/pooler kurulumu dahil, 1-2 hafta (restore provası ve paralel izleme süresi hariç).
  1. 1Mevcut Supabase projendeki şema ve veriyi pg_dump ile tam yedekle (resmi 'migrating within Supabase' rehberindeki yaklaşımı temel al).
  2. 2Hedef sunucuda (VPS) PostgreSQL'i kur, sürüm uyumunu doğrula (kaynak/hedef major sürüm farkına dikkat et).
  3. 3Auth/Storage/Realtime'a ihtiyacın varsa Supabase'in açık kaynak self-host Docker Compose stack'ini ayrı kur, ya da bu servisleri uygulama katmanında yeniden tasarla.
  4. 4pg_restore ile veriyi hedefe aktar, RLS politikalarını ve uzantı bağımlılıklarını (pgvector, PostGIS vb.) tek tek doğrula.
  5. 5Bağlantı havuzlama için PgBouncer veya Supavisor'ı kendi sunucunda kur ve yapılandır.
  6. 6WAL arşivleme + PITR'ı kur, ardından gerçek bir restore provası çalıştır (bu adım atlanmamalı).
  7. 7DNS/connection string'i staged şekilde yeni sunucuya yönlendir, kısa süre paralel izleme yap.
  8. 8Eski Supabase projesini, geri dönüş penceresi kapandıktan sonra kapat.

Gelecek Öngörüsü

Self-hosted PostgreSQL

PostgreSQL çekirdeği yıllık major + ≥3 ayda bir minor kadansıyla ilerliyor (18.6/17.11/16.15/15.19/14.24 + 19 Beta 3, 13 Ağu 2026); her major sürüm 5 yıl destekleniyor, bu da self-host operatörüne öngörülebilir bir patch takvimi veriyor.

Supabase

Supabase 2026 ortasından beri kurumsal yöne ağırlık veriyor: Grafana Cloud gözlemlenebilirlik (23 Tem), Unified Logs open beta (16 Tem), CipherStash alan-seviyesi şifreleme (9 Tem), Health Check Advisors (18 Eyl) ve MCP-sunucusu için Okta-yönetimli erişim (24 Ağu) — platform, tek başına DB'den 'yönetilen backend platformu'na evriliyor.

Altın Bilgi

Asıl çıkarım: bu karşılaştırma "hangi veritabanı" sorusu değil — her iki tarafta da aynı motor, gerçek PostgreSQL çalışıyor. Soru, hangi sorumluluk modelini üstlenebildiğin. Supabase'in self-hosting dokümanı bunu yazıyor: self-host ettiğin an branching, yönetilen backup/PITR ve platform API'si kayboluyor, yerine "server provisioning, HA, backup/DR, monitoring senin sorumluluğunda" geliyor — üstelik self-host Supabase "community-supported", resmi SLA yok. Pratik sonuç: restore provasını yapmıyorsan hangi modeli seçtiğin önemsizleşir; "yedek var" kanıtlanmamış bir iddia olarak kalır. Pro'da bile 7 günle sınırlı, Free'de hiç yok. KVKK'da da benzer risk var: "Europe" bölgesi Londra ve Zürih'i içeriyor ama bunlar AB üyesi değil.

İlgili Blog Yazıları

Tüm Yazıları Gör

İlgili İçerik