−25%

na Windows przy płatności rocznej, do 31.10. Do planów

EQVPS

Jak zainstalować PostgreSQL na VPS-ie i łączyć się bezpiecznie

Zainstaluj PostgreSQL 16 na Ubuntu, utwórz bazę i użytkownika, i łącz się zdalnie bez wystawiania portu 5432 do internetu: przez tunel SSH albo listę dozwolonych.

PostgreSQL instaluje się jednym poleceniem. Ludzie mylą się przy dostępie zdalnym: otwierają port 5432 na świat, ustawiają hasło, a potem dziwią się, że logi są pełne prób logowania. Ten poradnik instaluje Postgresa na Ubuntu 24.04, tworzy bazę danych i pokazuje dwa bezpieczne sposoby łączenia się z zewnątrz.

1. Instalacja

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

Na Ubuntu 24.04 to PostgreSQL 16. Domyślnie nasłuchuje tylko na localhost; zostaw tak, jeśli nie masz powodu, żeby to zmieniać.

2. Utwórz użytkownika i bazę danych

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

Aplikacje na tym samym serwerze łączą się przez postgresql://app:PASSWORD@localhost:5432/appdb.

3. Połączenie z laptopa: tunel SSH (zalecane)

Nic nie trzeba otwierać ani konfigurować na serwerze. Tunel przekierowuje lokalny port przez SSH:

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

Na planie NAT dodaj swój osobisty port SSH z panelu:

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

Dopóki tunel działa, kieruj klienta bazy danych na localhost:5433. SSH wszystko szyfruje, a port 5432 pozostaje zamknięty od strony internetu. Narzędzia graficzne, takie jak DBeaver i pgAdmin, mają zakładkę „tunel SSH”, która robi to samo.

4. Bezpośredni dostęp dla innego serwera (lista dozwolonych)

Jeśli serwer aplikacji w innym miejscu musi łączyć się bezpośrednio, dopuść tylko jego IP. Serwer bazy danych musi wtedy być na planie z dedykowanym IP, bo plany NAT nie przyjmują połączeń przychodzących poza SSH.

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

listen_addresses = '*'

Na końcu /etc/postgresql/16/main/pg_hba.conf:

hostssl  appdb  app  198.51.100.20/32  scram-sha-256

Otwórz zaporę dla tego jednego adresu i zrestartuj:

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

hostssl wymusza szyfrowane połączenie; pakiet Ubuntu zawiera certyfikat z podpisem własnym, więc klienci powinni łączyć się z sslmode=require.

5. Rozsądne pierwsze ustawienia

Dla serwera z 2 GB RAM-u, w postgresql.conf:

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

Po zmianie zrestartuj. To wystarczy dla większości małych aplikacji; dostrajaj, gdy zobaczysz prawdziwe zapytania.

6. Kopie zapasowe

Nocny zrzut, przechowywany przez tydzień:

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 tworzy skompresowany zrzut, który przywracasz przez pg_restore. Kopiuj zrzuty także poza serwer; Managed Backups dodają codzienne punkty przywracania całej maszyny.

Powiązane

FAQ

Czy otwierać port 5432 do internetu?

Lepiej nie. Wystawione porty baz danych są bez przerwy skanowane i atakowane metodą brute force. Łącz się przez tunel SSH, a jeśli serwer aplikacji musi łączyć się bezpośrednio, dopuść tylko jego IP, zarówno w pg_hba.conf, jak i w zaporze.

Czy mogę używać PostgreSQL na planie NAT?

Tak. Aplikacje na tym samym serwerze łączą się lokalnie, a ty dostajesz się do bazy z laptopa tunelem SSH przez swój osobisty port SSH. Plan NAT nie przyjmie natomiast bezpośredniego połączenia przychodzącego na 5432 z innego serwera.

Ile RAM-u potrzebuje PostgreSQL?

Działa na kilkuset megabajtach i wykorzysta jako cache wszystko, co mu dasz. Typowy punkt wyjścia to shared_buffers około 25% RAM-u. Dla bazy małej aplikacji 2 GB RAM-u na serwerze to aż nadto.

Jak robić kopie zapasowe bazy?

Używaj pg_dump w formacie custom ('pg_dump -Fc') i uruchamiaj go z crona. Trzymaj też kopie poza serwerem. Managed Backups dodają codzienne punkty przywracania całego serwera.

Jaką wersję PostgreSQL dostanę?

Ubuntu 24.04 ma PostgreSQL 16, a Debian 12 wersję 15. Dla nowszej wersji głównej dodaj oficjalne repozytorium apt PostgreSQL (apt.postgresql.org).

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.