−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 остаётся закрытым для интернета. В GUI-клиентах вроде DBeaver и pgAdmin есть вкладка «SSH tunnel», которая делает то же самое.

4. Прямой доступ для другого сервера (белый список)

Если серверу приложения где-то ещё нужно подключаться напрямую, разрешите только его IP. Для этого сервер базы должен быть на тарифе с выделенным 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

Откройте файрвол для этого одного адреса и перезапустите:

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

hostssl требует зашифрованного соединения — пакет Ubuntu поставляется с самоподписанным сертификатом, поэтому клиентам стоит подключаться с sslmode=require.

5. Разумная первичная настройка

Для сервера с 2 ГБ RAM в postgresql.conf:

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

После изменения перезапустите. Большинству небольших приложений этого хватит; дальше настраивайте, глядя на реальные запросы.

6. Бэкапы

Ночной дамп с хранением неделю:

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 даёт сжатый дамп, который восстанавливается через pg_restore. Копируйте дампы и за пределы сервера; Managed Backups добавляют ежедневные точки восстановления всей машины.

Связанное

Частые вопросы

Стоит ли открывать порт 5432 в интернет?

Лучше не надо. Открытые порты баз данных постоянно сканируют и перебирают пароли. Подключайтесь через SSH-туннель, а если серверу приложения нужно подключаться напрямую — разрешите только его IP и в pg_hba.conf, и в файрволе.

Можно ли PostgreSQL на NAT-тарифе?

Да. Приложения на том же сервере подключаются локально, а со своего ноутбука вы заходите в базу через SSH-туннель по персональному SSH-порту. Чего NAT-тариф не умеет — принять прямое входящее соединение на 5432 с другого сервера.

Сколько RAM нужно PostgreSQL?

Запускается он в нескольких сотнях мегабайт и берёт под кеш всё, что дадите. Частая отправная точка — shared_buffers примерно 25% RAM. Для базы небольшого приложения комфортно 2 ГБ памяти на сервере.

Как делать бэкап базы?

Используйте pg_dump в собственном формате ('pg_dump -Fc') и запускайте его по cron. Храните копии и вне сервера. Managed Backups добавляют ежедневные точки восстановления всего сервера.

Какая версия PostgreSQL установится?

В Ubuntu 24.04 это PostgreSQL 16, в Debian 12 — 15. Для более новой мажорной версии подключите официальный apt-репозиторий PostgreSQL (apt.postgresql.org).

Комментарии

Пока нет комментариев. Будьте первым.

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

Комментарии проходят модерацию перед публикацией.