PostgreSQL се инсталира с една команда. Хората грешат при отдалечения достъп: отварят порт 5432 към целия свят, слагат парола и после се чудят защо логовете са пълни с опити за вход. Това ръководство инсталира Postgres на Ubuntu 24.04, създава база и показва два безопасни начина за свързване отвън.
1. Инсталация
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
На Ubuntu 24.04 това е PostgreSQL 16. По подразбиране слуша само на localhost; остави го така, освен ако нямаш причина.
2. Създай потребител и база
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
Приложенията на същия сървър се свързват с postgresql://app:PASSWORD@localhost:5432/appdb.
3. Свържи се от лаптопа си: SSH тунел (препоръчително)
Нищо за отваряне, нищо за настройване на сървъра. Тунелът пренасочва локален порт през SSH:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
На NAT план добави личния си SSH порт от панела:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
Докато тунелът е отворен, насочи клиента на базата към localhost:5433. SSH криптира всичко, а порт 5432 остава затворен към интернет. Графични инструменти като DBeaver и pgAdmin имат таб «SSH tunnel», който прави същото.
4. Директен достъп за друг сървър (списък с разрешени адреси)
Ако сървър на приложение другаде трябва да се свързва директно, разреши само неговия IP. Това изисква сървърът на базата да е на план с dedicated IP, защото NAT плановете не приемат входящи връзки освен SSH.
В /etc/postgresql/16/main/postgresql.conf:
listen_addresses = '*'
В края на /etc/postgresql/16/main/pg_hba.conf:
hostssl appdb app 198.51.100.20/32 scram-sha-256
Отвори firewall-а само за този един адрес и рестартирай:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl налага криптирани връзки; пакетът на Ubuntu идва със self-signed сертификат, така че клиентите трябва да се свързват с sslmode=require.
5. Разумни начални настройки
За сървър с 2 GB RAM, в postgresql.conf:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
Рестартирай след промяната. За повечето малки приложения това стига; настройвай фино, след като видиш реални заявки.
6. Бекъпи
Dump всяка нощ, пазен една седмица:
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 прави компресиран dump, който се възстановява с pg_restore. Копирай dump-овете и извън сървъра; Managed Backups добавят дневни точки за възстановяване на цялата машина.
Коментари
Още няма коментари. Бъди първият.