PostgreSQL terpasang dengan satu perintah. Kesalahan orang biasanya ada di akses jarak jauh: membuka port 5432 ke seluruh dunia, memasang kata sandi, lalu heran mengapa log penuh percobaan login. Panduan ini menginstal Postgres di Ubuntu 24.04, membuat database, dan menunjukkan dua cara aman untuk terhubung dari luar.
1. Instalasi
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
Di Ubuntu 24.04 itu PostgreSQL 16. Secara bawaan ia hanya mendengarkan di localhost; biarkan begitu kecuali Anda punya alasan.
2. Buat pengguna dan database
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
Aplikasi di server yang sama terhubung dengan postgresql://app:PASSWORD@localhost:5432/appdb.
3. Terhubung dari laptop: terowongan SSH (disarankan)
Tidak ada yang perlu dibuka, tidak ada yang perlu dikonfigurasi di server. Terowongan meneruskan port lokal melalui SSH:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
Di paket NAT, tambahkan port SSH pribadi Anda dari panel:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
Selama terowongan aktif, arahkan klien database Anda ke localhost:5433. SSH mengenkripsi semuanya dan port 5432 tetap tertutup dari internet. Alat grafis seperti DBeaver dan pgAdmin punya tab “terowongan SSH” yang melakukan hal yang sama.
4. Akses langsung untuk server lain (daftar izin)
Jika server aplikasi di tempat lain harus terhubung langsung, izinkan hanya IP-nya. Untuk itu server database harus berada di paket dengan IP khusus, karena paket NAT tidak menerima koneksi masuk selain SSH.
Di /etc/postgresql/16/main/postgresql.conf:
listen_addresses = '*'
Di akhir /etc/postgresql/16/main/pg_hba.conf:
hostssl appdb app 198.51.100.20/32 scram-sha-256
Buka firewall untuk satu alamat itu saja lalu mulai ulang:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl mewajibkan koneksi terenkripsi; paket Ubuntu menyertakan sertifikat yang ditandatangani sendiri, jadi klien harus terhubung dengan sslmode=require.
5. Pengaturan awal yang masuk akal
Untuk server dengan RAM 2 GB, di postgresql.conf:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
Mulai ulang setelah perubahan. Ini cukup untuk sebagian besar aplikasi kecil; lakukan penyetelan lebih lanjut ketika Anda melihat kueri sungguhan.
6. Backup
Dump setiap malam, disimpan selama seminggu:
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 menghasilkan dump terkompresi yang dipulihkan dengan pg_restore. Salin juga dump ke luar server; Managed Backups menambahkan titik pemulihan harian untuk seluruh mesin.
Komentar
Belum ada komentar. Jadilah yang pertama.