PostgreSQL installeer je met één commando. Waar mensen de fout in gaan, is externe toegang: ze zetten poort 5432 open voor de wereld, stellen een wachtwoord in en vragen zich dan af waarom de logs vol inlogpogingen staan. Deze handleiding installeert Postgres op Ubuntu 24.04, maakt een database aan en laat twee veilige manieren zien om van buitenaf te verbinden.
1. Installeren
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
Op Ubuntu 24.04 is dat PostgreSQL 16. Standaard luistert het alleen op localhost; laat dat zo tenzij je een reden hebt.
2. Maak een gebruiker en een database aan
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
Apps op dezelfde server verbinden met postgresql://app:PASSWORD@localhost:5432/appdb.
3. Verbinden vanaf je laptop: SSH-tunnel (aanbevolen)
Niets openzetten, niets instellen op de server. De tunnel stuurt een lokale poort door via SSH:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
Op een NAT-plan voeg je je persoonlijke SSH-poort uit het paneel toe:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
Zolang de tunnel open is, laat je je databaseclient naar localhost:5433 wijzen. SSH versleutelt alles en poort 5432 blijft dicht voor internet. Grafische tools zoals DBeaver en pgAdmin hebben een tabblad „SSH-tunnel” dat hetzelfde doet.
4. Directe toegang voor een andere server (allowlist)
Moet een applicatieserver elders direct verbinden, sta dan alleen zijn IP toe. De databaseserver moet daarvoor op een plan met dedicated IP staan, omdat NAT-plannen behalve SSH geen inkomende verbindingen accepteren.
In /etc/postgresql/16/main/postgresql.conf:
listen_addresses = '*'
Onderaan /etc/postgresql/16/main/pg_hba.conf:
hostssl appdb app 198.51.100.20/32 scram-sha-256
Open de firewall voor dat ene adres en herstart:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl dwingt een versleutelde verbinding af; het Ubuntu-pakket levert een zelfondertekend certificaat mee, dus clients moeten verbinden met sslmode=require.
5. Verstandige eerste instellingen
Voor een server met 2 GB RAM, in postgresql.conf:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
Herstart na de wijziging. Dat is genoeg voor de meeste kleine apps; stem verder af als je echte queries ziet.
6. Back-ups
Een nachtelijke dump, een week bewaard:
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 maakt een gecomprimeerde dump die je terugzet met pg_restore. Kopieer de dumps ook naar buiten de server; Managed Backups voegen dagelijkse herstelpunten van de hele machine toe.
Reacties
Nog geen reacties. Wees de eerste.