−25%

за Windows при годишно плащане, до 31.10. Към плановете

EQVPS

Как да инсталираш PostgreSQL на VPS и да се свързваш безопасно

Инсталирай PostgreSQL 16 на Ubuntu, създай база и потребител и се свързвай отдалечено, без да излагаш порт 5432 в интернет: със SSH тунел или списък с разрешени адреси.

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 добавят дневни точки за възстановяване на цялата машина.

Свързани

Въпроси

Трябва ли да отворя порт 5432 към интернет?

По-добре не. Отворените портове на бази постоянно се сканират и атакуват с отгатване на пароли. Свързвай се през SSH тунел, а ако сървър на приложение трябва да се свързва директно, разреши само неговия IP, и в pg_hba.conf, и във firewall-а.

Мога ли да ползвам PostgreSQL на NAT план?

Да. Приложенията на същия сървър се свързват локално, а ти стигаш до базата от лаптопа си през SSH тунел на личния си SSH порт. Това, което NAT планът не може, е да приема директни входящи връзки към 5432 от други сървъри.

Колко RAM иска PostgreSQL?

Тръгва с няколкостотин мегабайта и ползва всичко, което му дадеш, като кеш. Обичайна отправна точка е shared_buffers около 25% от RAM. За базата на малко приложение сървър с 2 GB RAM е повече от достатъчен.

Как да правя бекъп на базата?

Ползвай pg_dump в персонализиран формат ('pg_dump -Fc') и го пускай от cron. Пази копия и извън сървъра. Managed Backups добавят дневни точки за възстановяване на целия сървър.

Коя версия на PostgreSQL ще получа?

Ubuntu 24.04 идва с PostgreSQL 16, а Debian 12 с 15. За по-нова основна версия добави официалното apt хранилище на PostgreSQL (apt.postgresql.org).

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.