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.
Komentarze
Brak komentarzy. Bądź pierwszy.