Установка PostgreSQL на VPS — стандартная задача для тех, кто разворачивает приложение на Django, Rails, Laravel или Node.js: именно эту СУБД рекомендуют большинство современных фреймворков. PostgreSQL ценят за строгость типов, честные транзакции, JSONB и предсказуемое поведение под нагрузкой — при этом на небольшом проекте она нетребовательна и спокойно живёт на одном сервере с приложением. В этом руководстве пошагово разберём, как поставить Postgres на сервере с Ubuntu 24.04 LTS: установка из репозитория, создание ролей и баз, разбор pg_hba.conf, настройка памяти под ваш объём RAM и бэкапы через pg_dump. Все команды актуальны и проверены.
Выбор сервера: что важно для PostgreSQL
PostgreSQL любит две вещи: память и быстрый диск. Память идёт под shared_buffers и кеш операционной системы — чем больше данных помещается в RAM, тем меньше чтений с диска. А каждая транзакция фиксируется в журнале WAL, поэтому задержки записи напрямую влияют на скорость INSERT и UPDATE: NVMe-накопитель здесь даёт кратное преимущество перед SATA SSD.
Для небольшого продакшена — приложение плюс база на одном сервере — разумный выбор у Cheap-Host это тариф Pro: 12 vCPU, 16 ГБ RAM и 128 ГБ NVMe за 750 ₽/мес. Запаса по памяти хватит и на рост базы, и на кеш ОС, а KVM-виртуализация гарантирует, что выделенные ресурсы действительно ваши. Если проект совсем маленький, можно стартовать и на Start (8 ГБ RAM, 450 ₽/мес), а позже сделать апгрейд без потери данных.
Установка PostgreSQL на Ubuntu 24.04
Обновляем систему и ставим PostgreSQL вместе с пакетом дополнений (в нём полезные расширения вроде pg_stat_statements):
sudo apt update && sudo apt upgrade -y
sudo apt install postgresql postgresql-contrib -y
Из репозитория Ubuntu 24.04 устанавливается PostgreSQL 16. Служба запускается автоматически — проверяем:
sudo systemctl status postgresql
psql --version
Автозапуск при перезагрузке включён из коробки, но убедиться не помешает:
sudo systemctl enable postgresql
Установщик создал системного пользователя postgres — суперпользователя СУБД. Входим в консоль psql от его имени:
sudo -u postgres psql
Если видите приглашение postgres=# — база работает. Выйти можно командой \q.
Создание роли и базы данных
В PostgreSQL пользователи называются ролями. Правило то же, что и в любой СУБД: приложение не должно работать под суперпользователем. Создаём отдельную роль и базу, владельцем которой она станет. В консоли sudo -u postgres psql:
CREATE ROLE appuser WITH LOGIN PASSWORD 'Slozhny-Parol_2026!';
CREATE DATABASE appdb OWNER appuser;
\q
Проверяем подключение по TCP от имени новой роли:
psql -h 127.0.0.1 -U appuser -d appdb
Система спросит пароль и пустит в базу. Полезные команды внутри psql:
\l— список баз данных;\dt— таблицы текущей базы;\du— список ролей;\conninfo— параметры текущего подключения;\q— выход.
Строка подключения для приложения будет выглядеть так: postgresql://appuser:пароль@127.0.0.1:5432/appdb.
pg_hba.conf: как Postgres решает, кого пускать
Аутентификацией управляет файл /etc/postgresql/16/main/pg_hba.conf. Каждая строка — правило: тип подключения, база, роль, адрес и метод проверки. Два метода, которые нужно понимать:
- peer — для локальных unix-сокетов: PostgreSQL сверяет имя системного пользователя Linux с именем роли. Именно поэтому
sudo -u postgres psqlработает без пароля, аpsql -U appuserбез ключа-h— нет. - scram-sha-256 — современная парольная аутентификация для TCP-подключений. В Ubuntu 24.04 она используется по умолчанию для локальных host-правил — менять ничего не нужно.
После любых правок pg_hba.conf применяем конфигурацию без перезапуска:
sudo systemctl reload postgresql
По умолчанию PostgreSQL слушает только 127.0.0.1 (параметр listen_addresses в postgresql.conf) — снаружи база недоступна, и для связки «приложение и база на одном VPS» это правильное состояние. Если базу нужно открыть для другого сервера, добавьте в pg_hba.conf строку вида host appdb appuser 203.0.113.10/32 scram-sha-256, пропишите listen_addresses = '*' и обязательно ограничьте порт 5432 файрволом — как это сделать, разбирали в статье про настройку UFW.
Настройка памяти под небольшой проект
Дефолтный shared_buffers в PostgreSQL — всего 128 МБ: этого мало даже для скромной базы. Основные параметры живут в /etc/postgresql/16/main/postgresql.conf. Ориентиры для VPS, где база работает рядом с приложением:
| Параметр | 8 ГБ RAM | 16 ГБ RAM | За что отвечает |
|---|---|---|---|
| shared_buffers | 2GB | 4GB | Кеш страниц данных (~25% RAM) |
| effective_cache_size | 4GB | 8GB | Оценка доступного кеша для планировщика |
| work_mem | 16MB | 32MB | Память на сортировку в одном запросе |
| maintenance_work_mem | 256MB | 512MB | Память для VACUUM и построения индексов |
Редактируем конфиг и перезапускаем службу (смена shared_buffers требует именно restart, а не reload):
sudo nano /etc/postgresql/16/main/postgresql.conf
sudo systemctl restart postgresql
С work_mem будьте аккуратны: это лимит на одну операцию сортировки, а их в сложном запросе может быть несколько, и выполняются они параллельно в разных сессиях. Ставить гигабайты не нужно. Для типового небольшого проекта приведённых значений достаточно — глубокий тюнинг имеет смысл только после появления реальной нагрузки и медленных запросов.
Бэкапы: pg_dump и расписание
Логический бэкап одной базы делается утилитой pg_dump. Сжатый дамп в собственном формате PostgreSQL (его удобно восстанавливать выборочно через pg_restore):
sudo -u postgres pg_dump -Fc appdb -f /var/backups/appdb-$(date +%F).dump
Восстановление в чистую базу:
sudo -u postgres pg_restore -d appdb /var/backups/appdb-2026-07-17.dump
Если нужен дамп всех баз вместе с ролями — используйте pg_dumpall, он выводит обычный SQL. Ежедневный бэкап проще всего повесить на cron от пользователя postgres:
sudo -u postgres crontab -e
# добавить строку:
0 3 * * * pg_dump -Fc appdb -f /var/backups/appdb-$(date +\%F).dump
Копии, лежащие только на самом сервере, бэкапом считаются условно: при отказе диска вы потеряете и базу, и дампы. Настройте выгрузку на внешнее хранилище — схему 3-2-1 мы подробно разбирали в материале о резервном копировании VPS.
PostgreSQL или MySQL: короткая шпаргалка
Частый вопрос новичков — какую СУБД ставить. Честный ответ: для небольшого проекта обе справятся, выбирайте по экосистеме.
- PostgreSQL — Django, Rails, современные Node.js- и Go-приложения, геоданные (PostGIS), JSONB, сложная аналитика, строгие транзакции.
- MySQL — WordPress и большинство PHP-CMS, готовые веб-приложения, где MySQL указан в требованиях. Инструкция по ней у нас тоже есть: установка MySQL на VPS.
Держать обе СУБД на одном сервере можно — 16 ГБ RAM тарифа Pro это позволяют, — но без необходимости лучше не плодить сущности: каждая база хочет свой кусок памяти.
FAQ
Какая версия PostgreSQL ставится на Ubuntu 24.04?
Из штатного репозитория командой apt install postgresql устанавливается PostgreSQL 16. Для большинства проектов этого достаточно; более новые мажорные версии можно поставить из официального репозитория PGDG, но для небольшого проекта это не обязательно.
PostgreSQL или MySQL — что выбрать для небольшого проекта?
Оба варианта рабочие. MySQL чаще выбирают под WordPress и классические PHP-CMS, PostgreSQL — под Django, Rails, Node.js-приложения и всё, где важны сложные запросы, JSONB и строгость типов. Если фреймворк или CMS рекомендует конкретную СУБД — берите её.
Сколько ресурсов нужно VPS для PostgreSQL?
Небольшой проект стартует и на 2 ГБ RAM, но комфортный минимум для базы вместе с приложением — 8–16 ГБ: PostgreSQL активно использует память под shared_buffers и кеш ОС. Быстрый NVMe-диск важнее числа ядер — база чувствительна к задержкам записи WAL.
Почему psql пишет peer authentication failed?
Метод peer сопоставляет имя системного пользователя Linux с именем роли PostgreSQL, поэтому подключаться суперпользователем нужно как sudo -u postgres psql. Роли приложения подключайтесь по TCP: psql -h 127.0.0.1 -U appuser -d appdb — тогда сработает парольная аутентификация scram-sha-256.
Как открыть PostgreSQL для удалённых подключений?
Задайте listen_addresses в postgresql.conf, добавьте в pg_hba.conf строку host для конкретного IP с методом scram-sha-256 и откройте порт 5432 в файрволе только для доверенных адресов. Открывать порт всему интернету нельзя.
Вывод
Установка PostgreSQL на Ubuntu 24.04 сводится к одной команде apt, а вся содержательная работа — в том, что после неё: отдельная роль для приложения, понимание pg_hba.conf, shared_buffers под ваш объём RAM и ежедневный pg_dump с выгрузкой копий наружу. Этого набора небольшому проекту хватит надолго — Postgres славится тем, что просто работает и не напоминает о себе.
Если под PostgreSQL нужен сервер — у Cheap-Host тариф Pro от 750 ₽/мес: 12 vCPU, 16 ГБ RAM, 128 ГБ NVMe, KVM с полным root-доступом и безлимитным трафиком. Деплой за 45–60 секунд, апгрейд ресурсов — без потери данных: cheap-host.onl.