−25%

auf Windows bei Jahreszahlung, bis 31.10. Zu den Tarifen

EQVPS

PostgreSQL auf einem VPS installieren und sicher verbinden

Installiere PostgreSQL 16 unter Ubuntu, leg Datenbank und Nutzer an und verbinde dich aus der Ferne, ohne Port 5432 ins Internet zu stellen – per SSH-Tunnel oder Allowlist.

PostgreSQL selbst ist mit einem Befehl installiert. Was schiefgeht, ist der Fernzugriff: Port 5432 wird für die Welt geöffnet, ein Passwort gesetzt, und dann wundert man sich, warum die Logs voller Anmeldeversuche sind. Diese Anleitung installiert Postgres unter Ubuntu 24.04, legt eine Datenbank an und zeigt zwei sichere Wege, sich von außen zu verbinden.

1. Installieren

apt update && apt install -y postgresql
systemctl status postgresql --no-pager

Unter Ubuntu 24.04 ist das PostgreSQL 16. Standardmäßig lauscht es nur auf localhost – lass es so, solange du keinen Grund hast.

2. Nutzer und Datenbank anlegen

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL

Apps auf demselben Server verbinden sich mit postgresql://app:PASSWORD@localhost:5432/appdb.

3. Vom Laptop verbinden: SSH-Tunnel (empfohlen)

Nichts zu öffnen, nichts auf dem Server zu konfigurieren. Der Tunnel leitet einen lokalen Port über SSH weiter:

ssh -N -L 5433:localhost:5432 root@203.0.113.10

Bei einem NAT-Tarif ergänzt du deinen persönlichen SSH-Port aus dem Dashboard:

ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host

Solange der Tunnel läuft, richte deinen Datenbank-Client auf localhost:5433. SSH verschlüsselt alles, und Port 5432 bleibt fürs Internet geschlossen. GUI-Tools wie DBeaver und pgAdmin haben einen Reiter „SSH-Tunnel“, der dasselbe erledigt.

4. Direkter Zugriff für einen anderen Server (Allowlist)

Muss ein App-Server anderswo direkt zugreifen, erlaube nur dessen IP. Dafür braucht der Datenbankserver einen Tarif mit eigener IP, denn NAT-Tarife nehmen außer SSH keine eingehenden Verbindungen an.

In /etc/postgresql/16/main/postgresql.conf:

listen_addresses = '*'

Ans Ende von /etc/postgresql/16/main/pg_hba.conf:

hostssl  appdb  app  198.51.100.20/32  scram-sha-256

Öffne die Firewall für genau diese Adresse und starte neu:

ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql

hostssl erzwingt eine verschlüsselte Verbindung – das Ubuntu-Paket bringt ein selbstsigniertes Zertifikat mit, Clients sollten sich also mit sslmode=require verbinden.

5. Vernünftige erste Einstellungen

Für einen Server mit 2 GB RAM, in postgresql.conf:

shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB

Nach der Änderung neu starten. Für die meisten kleinen Apps reicht das; feinjustiere, sobald du echte Abfragen siehst.

6. Backups

Ein nächtlicher Dump, eine Woche lang aufbewahrt:

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 erzeugt einen komprimierten Dump, den du mit pg_restore zurückspielst. Kopier Dumps auch vom Server weg; Managed Backups ergänzen tägliche Wiederherstellungspunkte der ganzen Maschine.

Verwandte Themen

FAQ

Sollte ich Port 5432 ins Internet öffnen?

Lieber nicht. Offene Datenbank-Ports werden ständig gescannt und mit Passwörtern bombardiert. Verbinde dich über einen SSH-Tunnel, oder erlaube, wenn ein App-Server direkt zugreifen muss, nur dessen IP – in pg_hba.conf und in der Firewall.

Kann ich PostgreSQL mit einem NAT-Tarif nutzen?

Ja. Apps auf demselben Server verbinden sich lokal, und von deinem Laptop erreichst du die Datenbank per SSH-Tunnel über deinen persönlichen SSH-Port. Was ein NAT-Tarif nicht kann: eine direkte eingehende Verbindung auf 5432 von einem anderen Server annehmen.

Wie viel RAM braucht PostgreSQL?

Es läuft mit ein paar hundert Megabyte und nutzt für den Cache, was du ihm gibst. Ein üblicher Startpunkt ist shared_buffers bei etwa 25 % des RAM. Für die Datenbank einer kleinen App sind 2 GB Server-RAM bequem.

Wie sichere ich die Datenbank?

Nutze pg_dump im Custom-Format ('pg_dump -Fc') und lass es per cron laufen. Bewahre Kopien auch außerhalb des Servers auf. Managed Backups ergänzen tägliche Wiederherstellungspunkte des ganzen Servers.

Welche PostgreSQL-Version bekomme ich?

Ubuntu 24.04 liefert PostgreSQL 16, Debian 12 liefert 15. Für eine neuere Hauptversion bindest du das offizielle PostgreSQL-apt-Repository ein (apt.postgresql.org).

Kommentare

Noch keine Kommentare. Sei der Erste.

Kommentar hinterlassen

Kommentare werden vor der Anzeige moderiert.