Сам 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 добавляют ежедневные точки восстановления всей машины.
Комментарии
Пока нет комментариев. Будьте первым.