Isometric illustration of a database installed on a server, a Windows desktop and a container

PostgreSQL Kurulumu: Ubuntu, Windows ve Docker Üzerinde Adım Adım (PostgreSQL 18)

Ubuntu 24.04, Windows ve Docker üzerinde PostgreSQL 18 kurulumunu adım adım anlatan rehber: güvenli roller, uzak erişim, Türkçe ICU locale ve sık görülen hataların çözümü.

Kasım 2, 2026

PostgreSQL 18 kurulumu için üç yol öneriyoruz: production’daki (üretim ortamındaki) Linux sunucularda resmi PGDG paket deposu, Windows sunucularda postgresql.org’un kurulum sihirbazı, geliştirme ve test ortamlarında ise resmi Docker imajı. Hangi yolu seçerseniz seçin, kurulumun asıl önemli kısmı sonrasında gelir: uygulamaya ayrı bir rol açmak, ağ erişimini dar tutmak ve Türkçe veri için doğru locale’i ilk günden seçmek.

Bu rehberde üç kurulum yöntemini adım adım anlatıyor, ardından yeni bir sunucuyu production’a hazır hale getiren ayarlara geçiyoruz: roller ve parolalar, uzak erişim (listen_addresses ve pg_hba.conf), TLS, Türkçe sıralama kuralları ve ilk gün en sık karşılaşılan hatalar. Komutları temiz bir Ubuntu 24.04 sistemde ve resmi postgres:18 Docker imajında, PostgreSQL 18.6 ile test ettik.

PostgreSQL Kurulumu

PostgreSQL sunucunuzu production'a hazır kuralım

Aryasoft'un kıdemli PostgreSQL uzmanları kurulumu, kimlik doğrulama ve ağ erişimini, yedekleme ve izlemeyi sizin ortamınıza göre yapılandırır ve yazılı olarak teslim eder.

Bize Ulaşın

Hangi Kurulum Yöntemini Seçmelisiniz?

Dört yöntem de aynı PostgreSQL sunucusunu kurar. Aralarındaki fark, hangi sürümü alabildiğiniz ve güncellemelerin nasıl geldiğidir.

Yöntem PostgreSQL sürümü Güncellemeler En uygun kullanım
Ubuntu + PGDG deposu 18 dahil desteklenen tüm sürümler Ara sürümler olağan apt güncellemeleriyle gelir Production’daki Linux sunucular (önerilen)
Ubuntu’nun kendi paketi Ubuntu 24.04’te yalnızca 16 Ubuntu güncellemeleriyle PostgreSQL 16’nın yeterli olduğu sunucular
Windows kurulum sihirbazı Desteklenen tüm sürümler Her ara sürüm için yeni kurulum dosyası çalıştırılır Windows sunucular ve geliştirici bilgisayarları
Docker (postgres:18) Seçtiğiniz etiket Yeni imaj çekilir, container yeniden oluşturulur Geliştirme, CI ve test ortamları

Hangi sürüm? PostgreSQL 18 güncel ana sürümdür (Ekim 2026 itibarıyla 18.6) ve 14 Kasım 2030’a kadar desteklenir. Uygulama üreticiniz veya kullandığınız bir eklenti daha eski bir sürüm şart koşmuyorsa yeni kurulumlara 18 ile başlayın.

Ubuntu 24.04’te PostgreSQL Kurulumu

Aşağıdaki adımlar postgresql.org’daki resmi talimatları izler. Komutları sudo yetkisine sahip bir kullanıcıyla çalıştırın.

1. PGDG deposunu ekleyin

postgresql-common paketi, PostgreSQL topluluğunun (PGDG) resmi paket deposunu ve imza anahtarını sisteme ekleyen bir script ile gelir. Script onay ister; otomatik kurulumlarda -y parametresini ekleyin.

sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh

Bu adımdan sonra apt-cache madison postgresql komutu, Ubuntu’nun kendi 16.x paketinin yanında PGDG deposundan gelen 18.x paketlerini de listeler.

2. PostgreSQL 18’i kurun

sudo apt update
sudo apt install -y postgresql-18

Paket kurulurken 18/main adlı bir veritabanı kümesi (cluster) otomatik olarak oluşturulur ve çalıştırılır. Testimizde küme şu ayarlarla geldi:

Ayar Varsayılan değer
Yerel bağlantılar peer kimlik doğrulaması (Linux kullanıcı adı = veritabanı rolü)
TCP bağlantıları scram-sha-256 parola doğrulaması
Data checksum Açık
Locale Sunucunun ortam ayarından alınır (temiz bir sistemde C.UTF-8)
Yapılandırma dosyaları /etc/postgresql/18/main/ (postgresql.conf, pg_hba.conf)
Veri dizini /var/lib/postgresql/18/main
Sunucu logu /var/log/postgresql/postgresql-18-main.log

3. Servisi kontrol edin

pg_lsclusters
sudo pg_ctlcluster 18 main status
sudo pg_ctlcluster 18 main restart
sudo pg_ctlcluster 18 main reload

pg_lsclusters, makinedeki her kümenin sürümünü, portunu, durumunu ve dizinlerini gösterir. Her küme aynı zamanda postgresql@18-main adlı bir systemd servisidir; systemctl komutlarını da kullanabilirsiniz.

Hangi değişikliğin neyi gerektirdiğini bilmek, gereksiz yeniden başlatmaları önler: pg_hba.conf değişiklikleri için reload yeterlidir; listen_addresses ve port gibi ayarlar ise servisin yeniden başlatılmasını gerektirir.

4. Uygulama rolünü ve veritabanını oluşturun

Kurulumdan sonra tek veritabanı rolü postgres‘tir ve parolası yoktur. Yerel bağlantılar peer doğrulaması kullandığı için yönetim işlemlerini postgres işletim sistemi kullanıcısıyla yaparsınız:

sudo -u postgres psql -c "SELECT version();"
sudo -u postgres psql -c "CREATE ROLE appuser WITH LOGIN PASSWORD 'ChangeMe-Str0ng!';"
sudo -u postgres psql -c "CREATE DATABASE appdb OWNER appuser;"

Uygulamaları hiçbir zaman postgres rolüyle çalıştırmayın. Her uygulamaya, kendi veritabanının sahibi olan ayrı bir rol verin ve ek yetkileri yalnızca gerçekten gerektiğinde tanımlayın.

5. Parola güvenliğini doğrulayın

PostgreSQL 18 parolaları varsayılan olarak SCRAM-SHA-256 ile saklar. Eski MD5 yöntemi kaldırılma sürecindedir; geri dönmeyin. Aşağıdaki komutlar parolanın doğru biçimde saklandığını ve TCP üzerinden parolayla bağlanılabildiğini doğrular:

sudo -u postgres psql -c "SELECT rolname, left(rolpassword, 14) AS hash_prefix FROM pg_authid WHERE rolname = 'appuser';"
PGPASSWORD='ChangeMe-Str0ng!' psql -h 127.0.0.1 -U appuser -d appdb -c "SELECT current_user, current_database(), inet_server_addr();"

İlk sorgu SCRAM-SHA-256$ önekini döndürmelidir. Script’lerde parolanın komut satırında görünmemesi için PGPASSWORD yerine ~/.pgpass dosyasını kullanın.

Uzak Erişimi Güvenle Açın

Yeni bir kurulum yalnızca sunucunun kendisinden gelen bağlantıları kabul eder. Uzak erişimi iki ayar birlikte yönetir:

Ayar Belirlediği şey Değişiklik sonrası
listen_addresses Sunucunun hangi ağ arayüzlerinde bağlantı kabul edeceği Yeniden başlatma
pg_hba.conf Kimin, hangi adresten, hangi veritabanına, hangi yöntemle bağlanabileceği Reload

Aşağıdaki örnek, appdb veritabanını yalnızca 10.10.20.0/24 uygulama ağından gelen appuser rolüne ve yalnızca şifreli bağlantıyla açar:

sudo -u postgres psql -c "ALTER SYSTEM SET listen_addresses = '*';"
echo "hostssl appdb    appuser    10.10.20.0/24    scram-sha-256" | sudo tee -a /etc/postgresql/18/main/pg_hba.conf
sudo pg_ctlcluster 18 main restart
sudo -u postgres psql -c "SELECT line_number, type, database, user_name, address, auth_method, error FROM pg_hba_file_rules;"

Son sorgu, sunucunun okuduğu kuralları ve hatalı satırları gösterir; her değişiklikten sonra kontrol edin. pg_hba.conf kuralları yukarıdan aşağıya okunur ve eşleşen ilk kural uygulanır. O kuralda doğrulama başarısız olursa sonraki satırlara bakılmaz.

TLS hakkında: hostssl yalnızca şifreli bağlantıları kabul eder. Ubuntu paketi, kendinden imzalı bir sertifikayla TLS’i açık getirdiği için şifreleme hemen çalışır. Testimizde izin verilen ağdaki istemci TLS 1.3 ile bağlandı; aynı istemci şifrelemeyi kapattığında “no pg_hba.conf entry” hatasıyla reddedildi. İstemcilerin sunucu kimliğini doğrulaması gerekiyorsa (sslmode=verify-full) kendinden imzalı sertifikayı kurumunuzun sertifika otoritesinden alınmış bir sertifikayla değiştirin.

Uyarı

Bağlantı hatasını aşmak için “host all all 0.0.0.0/0 trust” gibi geniş kurallar eklemeyin. Her kuralda veritabanını, rolü ve mümkün olan en dar ağı belirtin; 5432 portunu güvenlik duvarında yalnızca uygulama sunucularına açın. İnternetten erişilebilen bir veritabanı portu, parola deneme saldırılarının ilk hedefidir.

Windows’ta PostgreSQL Kurulumu

postgresql.org’un Windows sayfası, PostgreSQL sunucusunu, pgAdmin yönetim aracını ve StackBuilder’ı (eklenti ve sürücü indirme aracı) bir arada kuran bir sihirbaza yönlendirir. PostgreSQL 18 kurulum dosyası Windows Server 2025 ve 2022 üzerinde test edilmiştir.

  1. PostgreSQL 18 kurulum dosyasını postgresql.org/download/windows/ adresinden indirin ve yönetici olarak çalıştırın.
  2. Kurulum dizinini onaylayın.
  3. Bileşenleri seçin: PostgreSQL Server, pgAdmin 4, Stack Builder ve Command Line Tools. psql ve pg_dump gibi araçları kuran Command Line Tools’u mutlaka seçili bırakın.
  4. Veri dizinini seçin. Sunucularda sistem diski yerine veritabanı için ayrılmış diski kullanın.
  5. postgres yönetici rolünün parolasını belirleyin ve kurumsal parola yöneticinizde saklayın.
  6. Başka bir PostgreSQL kurulumu yoksa varsayılan 5432 portunu koruyun.
  7. Locale’i seçin. Bu seçim, veritabanlarının varsayılan sıralama kurallarını belirler.
  8. Kurulumu tamamlayın. PostgreSQL bundan sonra bir Windows servisi olarak çalışır.

Windows’a özgü üç noktaya dikkat edin:

Konu Ne yapmalı?
Kullanıcı ve bilgisayar adları Yalnızca ASCII karakter kullanın. Türkçe karakter içeren adlar kurulum hatalarına yol açabilir.
pg_hba.conf değişiklikleri Windows’ta reload gerektirmeden yeni bağlantılara hemen uygulanır.
Güvenlik duvarı Uzak istemciler için 5432 portuna, yalnızca uygulama sunucularına açık bir gelen kuralı tanımlayın.

Kurulumdan sonra paketle gelen psql ile bağlanabilirsiniz:

psql "host=127.0.0.1 port=5432 dbname=postgres user=postgres"

Rol, veritabanı ve pg_hba.conf kuralları Linux’takiyle aynıdır.

Docker ile PostgreSQL 18

Geliştirme ve test ortamları için resmi imaj saniyeler içinde çalışan bir sunucu sağlar. Adlandırılmış bir volume, container silinse veya yenilense bile verinin korunmasını sağlar.

docker run -d --name pg18 \
  -e POSTGRES_USER=appuser \
  -e POSTGRES_PASSWORD='ChangeMe-Str0ng!' \
  -e POSTGRES_DB=appdb \
  -p 127.0.0.1:5432:5432 \
  -v pg18data:/var/lib/postgresql \
  --restart unless-stopped \
  postgres:18
docker logs pg18
docker exec -it pg18 psql -U appuser -d appdb

İlk açılışta imaj kümeyi oluşturur, belirttiğiniz rolü ve veritabanını açar. Bağlanmadan önce docker logs çıktısında “PostgreSQL init process complete; ready for start up.” satırını bekleyin. -p 127.0.0.1:5432:5432 parametresi portu yalnızca host makinenin kendisine açar. Testimizde oluşturduğumuz tablo, container silinip aynı volume ile yeniden başlatıldıktan sonra yerinde duruyordu.

Not

PostgreSQL 18 imajı veriyi /var/lib/postgresql/18/docker altında tutar ve volume olarak /var/lib/postgresql dizinini tanımlar. Volume’u bu dizine bağlayın. İnternette sık görülen /var/lib/postgresql/data örnekleri PostgreSQL 17 ve öncesi içindir.

Docker imajının pratikte önemli üç davranışı vardır:

Davranış Sonucu
Ortam değişkenleri yalnızca ilk açılışta uygulanır Mevcut bir volume’da POSTGRES_PASSWORD değiştirmek etkisizdir; parolayı ALTER ROLE ile değiştirin.
Container içi bağlantılara parola sorulmaz docker exec çalıştırabilen herkes fiilen veritabanı yöneticisidir.
latest etiketi yeni ana sürüme geçer postgres:18 gibi sabit bir etiket kullanın; yeni ana sürüm, eski veri dizini üzerinde açılamaz.

Türkçe Veri İçin Doğru Locale

Verileriniz Türkçe ise locale kararını küme veya veritabanını oluşturmadan önce verin. Varsayılan C.UTF-8 locale’i “istanbul ılık” ifadesini “ISTANBUL ILIK” olarak büyütür ve noktalı İ harfini kaybeder. ICU tabanlı tr-TR locale’i ise doğru sonucu, yani “İSTANBUL ILIK”i döndürür ve ç, ğ, ı, ö, ş, ü harflerini Türk alfabesine göre sıralar.

Bir veritabanının locale sağlayıcısı sonradan değiştirilemez; seçimi oluşturma anında yapın:

# Ubuntu: a new cluster with an ICU Turkish default (options after -- go to initdb)
sudo pg_createcluster 18 trmain --port 5433 --start -- --locale-provider=icu --icu-locale=tr-TR --locale=C.UTF-8

# Docker: pass the same options to initdb on first start
docker run -d --name pg18tr -e POSTGRES_PASSWORD='ChangeMe-Str0ng!' \
  -e POSTGRES_INITDB_ARGS="--locale-provider=icu --icu-locale=tr-TR" \
  -v pg18trdata:/var/lib/postgresql postgres:18

Mevcut bir kümede, yalnızca tek bir veritabanını Türkçe kurallarla oluşturup sonucu kontrol edebilirsiniz:

CREATE DATABASE trdb TEMPLATE template0 ENCODING 'UTF8'
  LOCALE_PROVIDER icu ICU_LOCALE 'tr-TR' LOCALE 'C.UTF-8';
-- connect to trdb, then:
SELECT datname, datlocprovider, datlocale FROM pg_database WHERE datname = 'trdb';
SELECT upper('istanbul ılık') AS upper_tr, lower('İSTANBUL IŞIK') AS lower_tr;

İpucu

Yeni kurulmuş ve henüz veri yüklenmemiş bir Ubuntu sunucusunda ana kümeyi Türkçe locale ile yeniden oluşturmak en temiz yoldur: önce sudo pg_dropcluster 18 main –stop, ardından yukarıdaki ICU seçenekleriyle pg_createcluster 18 main. Veri bulunan bir kümede ise yeni bir ICU veritabanı oluşturup veriyi dump ve restore ile taşıyın.

Kurulum Sonrası Kontrol Listesi

Kontrol Beklenen sonuç
Sürüm SELECT version(); 18.6 veya daha yeni bir sürüm döndürüyor; ara sürüm güncellemeleri için bir takvim belirlenmiş.
Kimlik doğrulama SHOW password_encryption; scram-sha-256 döndürüyor; MD5 parola kullanan rol yok.
Ağ Her uzak kural belirli bir veritabanı, rol ve dar bir ağ tanımlıyor; pg_hba_file_rules hata göstermiyor.
TLS Uzak kurallar hostssl kullanıyor; gerekiyorsa kurumsal sertifika planlanmış.
Locale Türkçe veri için ICU tr-TR seçilmiş.
Data checksum SHOW data_checksums; on döndürüyor.
Bellek ve bağlantılar Varsayılan değerler (shared_buffers 128 MB, max_connections 100) donanıma ve iş yüküne göre yeniden boyutlandırılmış.
Yedekleme Yedekler zamanlanmış, kopyalar sunucu dışında tutuluyor ve bir geri yükleme denenmiş.
İzleme Sunucu logu, disk alanı, bağlantı sayısı ve yedekleme durumu ilk günden izleniyor.

Sık Karşılaşılan Hatalar ve Çözümleri

Aşağıdaki hataların tamamıyla bu rehberi hazırlarken yaptığımız testlerde karşılaştık.

Hata mesajı Neden Çözüm
FATAL: Peer authentication failed for user "appuser" psql yerel soket üzerinden bağlandı ve Linux kullanıcı adınız rol adından farklı. TCP ile parolayla bağlanın (psql -h 127.0.0.1 -U appuser -d appdb) veya yönetim için sudo -u postgres psql kullanın.
FATAL: password authentication failed for user "appuser" Parola yanlış veya role henüz parola atanmamış. ALTER ROLE appuser WITH PASSWORD '...'; ile parolayı belirleyin.
FATAL: no pg_hba.conf entry for host ... İstemci adresi, veritabanı ve kullanıcıyla eşleşen kural yok veya kural hostssl ve istemci şifreleme kullanmadı. Kuralı ekleyin veya düzeltin, reload edin; hostssl kurallarında sslmode=require ile bağlanın.
Connection refused Sunucu durmuş veya yalnızca localhost’u dinliyor. pg_lsclusters ile durumu kontrol edin; listen_addresses ayarlayıp yeniden başlatın; güvenlik duvarını kontrol edin.
connection to server on socket ... No such file or directory Bu portta çalışan yerel bir sunucu yok. Kümeyi sudo pg_ctlcluster 18 main start ile başlatın; başlamazsa sunucu logunu okuyun.
FATAL: database "appdb" does not exist (Docker) Container ilk kurulum bitmeden durduruldu veya volume’da zaten bir küme vardı. İlk açılışın tamamlanmasını bekleyin; yeni kurulumda volume’u silip yeniden başlatın, aksi halde veritabanını CREATE DATABASE ile oluşturun.

Ne Zaman Uzman Desteği Almalısınız?

Bir test sunucusu birkaç saatlik bir iştir. Aşağıdaki durumlarda ise deneyimli bir ekiple çalışmanızı öneririz:

  • Sunucu production verisi tutacak ve tanımlı bir yedekleme ve geri dönüş (point-in-time recovery) planı gerekiyor.
  • Yüksek erişilebilirlik gerekiyor: bekleme sunucuları, otomatik failover veya ikinci bir lokasyon.
  • Uygulamalar farklı ağlardan veya bir bağlantı havuzu üzerinden bağlanıyor ve erişimin güvenlik denetiminden geçmesi gerekiyor.
  • İş yükü, bellek, checkpoint ve autovacuum ayarlarının performansı doğrudan belirlediği büyüklükte.
  • Yeni sunucu SQL Server’ın, Oracle’ın veya desteği biten bir PostgreSQL sürümünün yerini alıyor.

Aryasoft’un yalnızca kıdemli uzmanlardan oluşan ekibi, SQL Server için sunduğu tüm hizmetleri PostgreSQL için de sunuyor: kurulum ve sıkılaştırmadan (hardening) performans iyileştirmeye ve sürüm yükseltmeye kadar. PostgreSQL hizmetlerimize göz atabilir, yeni sunucunuzun 8×5 veya 7×24 bakım-destek kapsamında uzaktan veritabanı yöneticisi (Remote DBA) tarafından takip edilmesini istiyorsanız yönetilen veritabanı hizmetlerimizi inceleyebilirsiniz.

Sıkça Sorulan Sorular

Yeni production sistemleri için 18’i kurun. PostgreSQL 19’un ilk sürüm adayı 15 Ekim 2026’da yayımlandı ve genel kullanıma sunulması 19 Kasım 2026 için planlanıyor. Eklentilerin, sürücülerin ve bulut servislerinin yeni bir ana sürümü desteklemesi genellikle birkaç ay sürer; 18’den 19’a geçişi daha sonra planlı bir yükseltmeyle yapabilirsiniz.
Ubuntu 24.04’te bu paket PostgreSQL 16’yı kurar ve 16, 9 Kasım 2028’e kadar desteklenir. Uygulamanız için 16 yeterliyse geçerli bir seçimdir. PostgreSQL 18 veya aynı sunucuda birden fazla sürüm için PGDG deposunu kullanın.
Ubuntu’da parola tanımlı değildir; yerel girişler postgres işletim sistemi kullanıcısı üzerinden yapılır. Windows’ta parolayı kurulum sırasında siz belirlersiniz, Docker’da ise POSTGRES_PASSWORD değişkeninden alınır.
Mümkündür, ancak container işin en kolay kısmıdır. Production; güvenilir bir depolama katmanı, container dışında saklanan yedekler, izleme, test edilmiş bir yükseltme yolu ve failover planı ister. Yaygın yaklaşım, geliştirme ve test için Docker, production için ise ayrılmış sunucular veya yönetilen bir bulut servisi kullanmaktır.
PGDG deposu kullanan Ubuntu’da 18.6’dan 18.7’ye gibi güncellemeler olağan apt güncellemeleriyle gelir; ardından servisi yeniden başlatırsınız. Windows’ta yeni kurulum dosyasını çalıştırın, Docker’da yeni imajı çekip container’ı aynı volume ile yeniden oluşturun. Ara sürüm güncellemeleri dump veya pg_upgrade gerektirmez.

Kaynaklar

Bu rehberdeki teknik bilgiler Ekim ve Kasım 2026’da aşağıdaki resmi dokümantasyonla karşılaştırıldı. Sürümler ve paket ayrıntıları değişebilir; kurulumdan önce ilgili sayfadan teyit edin.

  1. PostgreSQL: Linux indirmeleri (Ubuntu)
  2. PostgreSQL Wiki: Apt deposu
  3. PostgreSQL: Windows kurulum dosyaları
  4. PostgreSQL: Versioning Policy
  5. PostgreSQL 18 sürüm notları
  6. PostgreSQL 18 dokümantasyonu: The pg_hba.conf File
  7. PostgreSQL 18 dokümantasyonu: Peer Authentication
  8. PostgreSQL 18 dokümantasyonu: Password Authentication
  9. PostgreSQL 18 dokümantasyonu: Connections and Authentication
  10. PostgreSQL 18 dokümantasyonu: Secure TCP/IP Connections with SSL
  11. PostgreSQL 18 dokümantasyonu: ALTER SYSTEM
  12. PostgreSQL 18 dokümantasyonu: CREATE DATABASE
  13. PostgreSQL 18 dokümantasyonu: initdb
  14. PostgreSQL 18 dokümantasyonu: Collation Support
  15. PostgreSQL 18 dokümantasyonu: Authentication Problems
  16. Ubuntu Server dokümantasyonu: Install and configure PostgreSQL
  17. Docker Hub: postgres resmi imajı

PostgreSQL Kurulumu

PostgreSQL sunucularınızı sağlam temeller üzerine kurun

Aryasoft’un kıdemli PostgreSQL ekibiyle görüşün. Sunucularınızı kurar ve sıkılaştırırız, yedekleme ve izlemeyi devreye alırız, verilen her kararı yazılı olarak belgeleriz.

4.7/5