−25%

yıllık Windows ödemesinde, 31 Ekim'e kadar. Paketlere git

EQVPS

VPS'e PostgreSQL nasıl kurulur ve güvenli nasıl bağlanılır

Ubuntu'ya PostgreSQL 16 kurun, bir veritabanı ve kullanıcı oluşturun, 5432 portunu internete açmadan uzaktan bağlanın: SSH tüneli veya izin listesiyle.

PostgreSQL tek bir komutla kurulur. İnsanların hata yaptığı yer uzaktan erişimdir: 5432 portunu dünyaya açar, bir parola koyar ve sonra günlüklerin neden giriş denemeleriyle dolu olduğunu merak ederler. Bu rehber Postgres'i Ubuntu 24.04'e kurar, bir veritabanı oluşturur ve dışarıdan bağlanmanın iki güvenli yolunu gösterir.

1. Kurulum

apt update && apt install -y postgresql
systemctl status postgresql --no-pager

Ubuntu 24.04'te bu PostgreSQL 16'dır. Varsayılan olarak yalnızca localhost üzerinde dinler; bir nedeniniz yoksa öyle bırakın.

2. Bir kullanıcı ve bir veritabanı oluşturun

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL

Aynı sunucudaki uygulamalar postgresql://app:PASSWORD@localhost:5432/appdb ile bağlanır.

3. Dizüstü bilgisayarınızdan bağlanın: SSH tüneli (önerilir)

Açılacak bir şey yok, sunucuda yapılandırılacak bir şey yok. Tünel, yerel bir portu SSH üzerinden iletir:

ssh -N -L 5433:localhost:5432 root@203.0.113.10

Bir NAT planında panelden kişisel SSH portunuzu ekleyin:

ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host

Tünel açıkken veritabanı istemcinizi localhost:5433 adresine yönlendirin. SSH her şeyi şifreler ve 5432 portu internete kapalı kalır. DBeaver ve pgAdmin gibi grafik araçlarda aynı işi yapan bir “SSH tüneli” sekmesi bulunur.

4. Başka bir sunucu için doğrudan erişim (izin listesi)

Başka bir yerdeki bir uygulama sunucusunun doğrudan bağlanması gerekiyorsa yalnızca onun IP'sine izin verin. Bunun için veritabanı sunucusunun özel IP'li bir planda olması gerekir, çünkü NAT planları SSH dışında gelen bağlantı kabul etmez.

/etc/postgresql/16/main/postgresql.conf içinde:

listen_addresses = '*'

/etc/postgresql/16/main/pg_hba.conf dosyasının sonunda:

hostssl  appdb  app  198.51.100.20/32  scram-sha-256

Güvenlik duvarını yalnızca o adres için açın ve yeniden başlatın:

ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql

hostssl şifreli bağlantıyı zorunlu kılar; Ubuntu paketi kendinden imzalı bir sertifikayla gelir, bu yüzden istemciler sslmode=require ile bağlanmalıdır.

5. Mantıklı ilk ayarlar

2 GB RAM'li bir sunucu için postgresql.conf içinde:

shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB

Değişiklikten sonra yeniden başlatın. Bu, küçük uygulamaların çoğu için yeterlidir; gerçek sorguları gördüğünüzde ince ayar yapın.

6. Yedekler

Bir hafta saklanan gecelik bir döküm:

mkdir -p /var/backups/pg && chown postgres /var/backups/pg
cat > /etc/cron.d/pg-backup <<'EOF'
30 3 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%u).dump
EOF

-Fc, pg_restore ile geri yüklenen sıkıştırılmış bir döküm oluşturur. Dökümleri sunucu dışına da kopyalayın; Managed Backups tüm makine için günlük geri yükleme noktaları ekler.

İlgili

SSS

5432 portunu internete açmalı mıyım?

Açmasanız iyi olur. Açık veritabanı portları sürekli taranır ve kaba kuvvet saldırılarına uğrar. SSH tüneli üzerinden bağlanın ya da bir uygulama sunucusunun doğrudan bağlanması gerekiyorsa hem pg_hba.conf'ta hem de güvenlik duvarında yalnızca onun IP'sine izin verin.

PostgreSQL'i NAT planında kullanabilir miyim?

Evet. Aynı sunucudaki uygulamalar yerel olarak bağlanır; siz de dizüstü bilgisayarınızdan kişisel SSH portunuz üzerinden kurduğunuz bir SSH tüneliyle veritabanına ulaşırsınız. NAT planının yapamadığı şey, başka bir sunucudan 5432'ye gelen doğrudan bağlantıyı kabul etmektir.

PostgreSQL ne kadar RAM ister?

Birkaç yüz megabaytla çalışır ve verdiğiniz her şeyi önbellek olarak kullanır. Yaygın bir başlangıç noktası, shared_buffers değerini RAM'in yaklaşık %25'i yapmaktır. Küçük bir uygulamanın veritabanı için sunucuda 2 GB RAM fazlasıyla yeterlidir.

Veritabanını nasıl yedeklerim?

pg_dump'ı özel biçimde ('pg_dump -Fc') kullanın ve cron'dan çalıştırın. Kopyaları sunucu dışında da tutun. Managed Backups tüm sunucu için günlük geri yükleme noktaları ekler.

Hangi PostgreSQL sürümünü alırım?

Ubuntu 24.04 PostgreSQL 16 ile, Debian 12 ise 15 ile gelir. Daha yeni bir ana sürüm için resmi PostgreSQL apt deposunu (apt.postgresql.org) ekleyin.

Yorumlar

Henüz yorum yok. İlk olun.

Bir yorum bırakın

Yorumlar görünmeden önce denetlenir.