PostgreSQL installeres med én kommando. Det, folk gør forkert, er fjernadgangen: de åbner port 5432 for hele verden, sætter en adgangskode og undrer sig så over, hvorfor loggene er fulde af loginforsøg. Denne guide installerer Postgres på Ubuntu 24.04, opretter en database og viser to sikre måder at forbinde udefra.
1. Installation
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
På Ubuntu 24.04 er det PostgreSQL 16. Som standard lytter den kun på localhost; lad det være sådan, medmindre du har en grund.
2. Opret en bruger og en database
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
Apps på samme server forbinder med postgresql://app:PASSWORD@localhost:5432/appdb.
3. Forbind fra din laptop: SSH-tunnel (anbefalet)
Intet at åbne, intet at konfigurere på serveren. Tunnelen videresender en lokal port gennem SSH:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
På en NAT-plan tilføjer du din personlige SSH-port fra panelet:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
Mens tunnelen er oppe, peger du din databaseklient på localhost:5433. SSH krypterer alt, og port 5432 forbliver lukket mod internettet. Grafiske værktøjer som DBeaver og pgAdmin har en fane til »SSH-tunnel«, der gør det samme.
4. Direkte adgang for en anden server (tilladelsesliste)
Skal en applikationsserver et andet sted forbinde direkte, så tillad kun dens IP. Databaseserveren skal så ligge på en plan med dedikeret IP, fordi NAT-planer ikke tager imod indgående forbindelser ud over SSH.
I /etc/postgresql/16/main/postgresql.conf:
listen_addresses = '*'
Nederst i /etc/postgresql/16/main/pg_hba.conf:
hostssl appdb app 198.51.100.20/32 scram-sha-256
Åbn firewallen for netop den adresse, og genstart:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl kræver en krypteret forbindelse; Ubuntu-pakken leveres med et selvsigneret certifikat, så klienterne skal forbinde med sslmode=require.
5. Fornuftige første indstillinger
Til en server med 2 GB RAM, i postgresql.conf:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
Genstart efter ændringen. Det er nok til de fleste små apps; finjustér, når du ser rigtige forespørgsler.
6. Backups
Et natligt dump, der gemmes i en uge:
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 laver et komprimeret dump, som du gendanner med pg_restore. Kopiér også dumpene uden for serveren; Managed Backups tilføjer daglige gendannelsespunkter af hele maskinen.
Kommentarer
Ingen kommentarer endnu. Vær den første.