цены сверены 17 октября 2026 года

Установка PostgreSQL на VPS с Ubuntu 24.04

PostgreSQL 16 ставится из репозитория Ubuntu 24.04 командой sudo apt install postgresql. По умолчанию база слушает только localhost, и это безопасно: наружу её открывайте, только если это нужно, и только для одного IP.

Установка PostgreSQL на VPS с Ubuntu 24.04
Содержание
  1. Установка
  2. Вход под администратором
  3. Пользователь и база
  4. Почему база слушает только localhost
  5. Удалённый доступ с одного IP
  6. Резервная копия pg_dump
  7. Восстановление
  8. Что делать дальше
Команды проверены 12 октября 2026 годачистая Ubuntu 24.04 · PostgreSQL 16Как мы проверяем

Установка

PostgreSQL это сервер баз данных. В репозитории Ubuntu 24.04 лежит версия 16. Её получают вместе с обновлениями системы, поэтому отдельный репозиторий не нужен.

sudo apt update
sudo apt install postgresql

Первая команда обновляет список пакетов. Вторая ставит сервер и клиент psql, создаёт кластер (набор баз) и запускает службу. Подготовку самого сервера описывает статья первая настройка VPS на Ubuntu.

Проверьте, что всё запустилось:

sudo systemctl status postgresql
pg_lsclusters

systemctl status показывает состояние службы. pg_lsclusters выводит кластеры Ubuntu: в строке должна быть версия 16, имя main, порт 5432 и статус online.

Вход под администратором

При установке создаётся системный пользователь postgres, он же администратор базы. Войти можно так:

sudo -u postgres psql

sudo -u postgres запускает команду от имени пользователя postgres, а psql открывает консоль базы. В консоли приглашение выглядит как postgres=#. Выход: \q.

Пользователь и база

В консоли psql выполните:

CREATE USER app_user WITH PASSWORD 'замените-на-длинный-пароль';
CREATE DATABASE app_db OWNER app_user;

Первая команда создаёт пользователя app_user с паролем. Вторая создаёт базу app_db и делает его владельцем. Команды SQL заканчиваются точкой с запятой. Имена и пароль замените на свои, пароль возьмите длинный и случайный.

Выйдите (\q) и проверьте вход уже под новым пользователем:

psql -h 127.0.0.1 -U app_user -d app_db

-h 127.0.0.1 задаёт адрес сервера, -U пользователя, -d базу. Введите пароль. Если приглашение стало app_db=>, всё работает. Адрес 127.0.0.1 указан намеренно: так вход идёт по паролю, а не через системного пользователя.

Полезные команды внутри psql: \l показывает список баз, \dt таблицы текущей базы, \du пользователей.

Почему база слушает только localhost

После установки PostgreSQL принимает подключения только с самого сервера. Проверьте:

sudo ss -tlnp | grep 5432

ss -tlnp показывает слушающие TCP-порты и программы, а grep оставляет нужную строку. Адрес 127.0.0.1:5432 означает, что снаружи в базу не попасть.

Это хорошо. Базу сканируют и подбирают к ней пароли так же, как SSH. Если приложение работает на том же сервере, ему внешний доступ не нужен: оно подключается через 127.0.0.1. Пока вам не нужен доступ снаружи, ничего не меняйте.

Удалённый доступ с одного IP

Нужен он, например, чтобы подключаться из программы на своём компьютере. Понадобятся три шага. Для примера берём адрес 203.0.113.5, подставьте свой постоянный адрес.

Шаг 1. Сервер должен слушать внешний адрес. Откройте основной конфиг:

sudo nano /etc/postgresql/16/main/postgresql.conf

Найдите строку listen_addresses и задайте:

listen_addresses = 'localhost,198.51.100.10'

Здесь 198.51.100.10 это адрес вашего сервера. Укажите его, а не '*': так сервер слушает только нужный интерфейс. Проверьте, что этот адрес есть в выводе команды ip -4 addr. У некоторых хостеров внешний адрес на сервере не виден, в выводе только внутренний: тогда укажите внутренний.

Шаг 2. Разрешите вход только вашему адресу в pg_hba.conf. В нём перечислены правила: кто, откуда и как может подключаться.

sudo nano /etc/postgresql/16/main/pg_hba.conf

Добавьте строку в конец файла:

host    app_db    app_user    203.0.113.5/32    scram-sha-256

Поля: тип подключения (host), база, пользователь, адрес клиента (/32 значит ровно один адрес) и способ проверки пароля. Правила читаются сверху вниз.

Перезапустите службу, чтобы применить listen_addresses:

sudo systemctl restart postgresql

Для изменений только в pg_hba.conf хватает reload, а вот смена listen_addresses требует именно перезапуска.

Шаг 3. Откройте порт в файрволе только для своего адреса:

sudo ufw allow from 203.0.113.5 to any port 5432 proto tcp

Правило пропускает на порт 5432 только соединения с адреса 203.0.113.5. Остальные подключения отбрасываются. Подробнее о ufw и порядке включения читайте в статье настройка файрвола ufw.

Если ваш домашний адрес меняется, правило перестанет работать или, хуже, начнёт пускать чужого владельца этого адреса. Для динамического IP удобнее подключаться через SSH-туннель: ssh -L 5432:127.0.0.1:5432 user@сервер. Тогда порт 5432 наружу открывать не нужно. Подробнее о входе по SSH в статье подключение к VPS по SSH.

Резервная копия pg_dump

sudo -u postgres pg_dump app_db > app_db.sql

pg_dump выгружает базу в текстовый файл с командами SQL. Файл создаётся в текущем каталоге. Записывает его ваша оболочка, а не пользователь postgres, поэтому команда работает и из домашнего каталога.

Формат поменьше и удобнее для больших баз:

sudo -u postgres pg_dump -Fc app_db > app_db.dump

Ключ -Fc включает сжатый «custom»-формат. Его читает pg_restore.

Восстановление

Пустая база должна существовать. Для текстового файла:

sudo -u postgres psql -d app_db < app_db.sql

< передаёт файл в psql, и тот выполняет команды из него. Файл читает ваша оболочка: вариант psql -f app_db.sql из домашнего каталога завершится ошибкой Permission denied, потому что у пользователя postgres нет доступа к вашему каталогу. Для формата -Fc так же:

sudo -u postgres pg_restore -d app_db < app_db.dump

pg_restore загружает копию в указанную базу. Проверяйте восстановление на тестовой базе: копия, которую ни разу не открывали, остаётся предположением. Хранить дампы на том же сервере опасно, копируйте их на другой. О расписании и хранении читайте в статье резервные копии VPS.

Что делать дальше

Если база нужна боту или сайту, подбирайте сервер с запасом по памяти: PostgreSQL использует оперативную память под кэш. Сравнить тарифы можно на странице подбора VPS: конфигурации «2 ядра 4 ГБ» сейчас стоят от 650 ₽ до 6 400 ₽ в месяц, цены сверены 17 октября 2026 года. Признаки нехватки ресурсов описаны в статье как понять, что VPS не хватает.