−25%

på Windows ved årlig betaling, til 31/10. Se pakkerne

EQVPS

Sådan installerer du PostgreSQL på en VPS og forbinder sikkert

Installér PostgreSQL 16 på Ubuntu, opret en database og en bruger, og forbind på afstand uden at udstille port 5432 mod internettet: via SSH-tunnel eller tilladelsesliste.

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.

Relateret

FAQ

Skal jeg åbne port 5432 mod internettet?

Helst ikke. Udstillede databaseporte bliver scannet og udsat for brute force hele tiden. Forbind gennem en SSH-tunnel eller, hvis en applikationsserver skal forbinde direkte, tillad kun dens IP både i pg_hba.conf og i firewallen.

Kan jeg bruge PostgreSQL på en NAT-plan?

Ja. Apps på samme server forbinder lokalt, og du når databasen fra din laptop gennem en SSH-tunnel over din personlige SSH-port. Det, en NAT-plan ikke kan, er at tage imod en direkte indgående forbindelse på 5432 fra en anden server.

Hvor meget RAM kræver PostgreSQL?

Den kører på et par hundrede megabyte og bruger alt, hvad du giver den, som cache. Et almindeligt udgangspunkt er shared_buffers omkring 25 % af RAM. Til databasen for en lille app er 2 GB RAM på serveren rigeligt.

Hvordan tager jeg backup af databasen?

Brug pg_dump i custom-formatet ('pg_dump -Fc'), og kør det fra cron. Gem også kopier uden for serveren. Managed Backups tilføjer daglige gendannelsespunkter af hele serveren.

Hvilken version af PostgreSQL får jeg?

Ubuntu 24.04 leveres med PostgreSQL 16 og Debian 12 med version 15. Til en nyere hovedversion tilføjer du PostgreSQL's officielle apt-repository (apt.postgresql.org).

Kommentarer

Ingen kommentarer endnu. Vær den første.

Skriv en kommentar

Kommentarer modereres, før de vises.