−25%

op Windows bij jaarbetaling, tot 31/10. Naar de pakketten

EQVPS

Hoe installeer je PostgreSQL op een VPS en verbind je veilig

Installeer PostgreSQL 16 op Ubuntu, maak een database en gebruiker aan, en verbind op afstand zonder poort 5432 aan internet bloot te stellen: via SSH-tunnel of allowlist.

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.

Gerelateerd

FAQ

Moet ik poort 5432 openzetten naar internet?

Liever niet. Openstaande databasepoorten worden voortdurend gescand en met brute force aangevallen. Verbind via een SSH-tunnel of, als een applicatieserver direct moet verbinden, sta alleen zijn IP toe in zowel pg_hba.conf als de firewall.

Kan ik PostgreSQL op een NAT-plan gebruiken?

Ja. Apps op dezelfde server verbinden lokaal, en jij bereikt de database vanaf je laptop via een SSH-tunnel over je persoonlijke SSH-poort. Wat een NAT-plan niet kan, is een directe inkomende verbinding op 5432 van een andere server accepteren.

Hoeveel RAM heeft PostgreSQL nodig?

Het draait op een paar honderd megabyte en gebruikt alles wat je het geeft als cache. Een gangbaar beginpunt is shared_buffers rond 25% van het RAM. Voor de database van een kleine app is 2 GB RAM op de server ruim voldoende.

Hoe maak ik een back-up van de database?

Gebruik pg_dump in het custom-formaat ('pg_dump -Fc') en draai het vanuit cron. Bewaar ook kopieën buiten de server. Managed Backups voegen dagelijkse herstelpunten van de hele server toe.

Welke PostgreSQL-versie krijg ik?

Ubuntu 24.04 levert PostgreSQL 16 en Debian 12 versie 15. Voor een nieuwere hoofdversie voeg je de officiële apt-repository van PostgreSQL (apt.postgresql.org) toe.

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.