Гид по технологиям

Установка PostgreSQL 14 и pgAdmin 4 на Ubuntu 22.04

• 9 min read • Базы данных • Обновлено 16 Nov 2025
PostgreSQL 14 и pgAdmin 4 на Ubuntu 22.04 — установка
PostgreSQL 14 и pgAdmin 4 на Ubuntu 22.04 — установка

Кому это нужно

  • Администраторам Linux, которые разворачивают PostgreSQL 14 на Ubuntu 22.04.
  • Разработчикам, которым нужен веб-интерфейс управления базой (pgAdmin 4).
  • Тем, кто хочет безопасно предоставить удалённый доступ к PostgreSQL через HTTPS и Nginx.

Основные результаты этого руководства

  • Рабочая пара «PostgreSQL 14 + pgAdmin 4» на Ubuntu 22.04.
  • Доступ к pgAdmin по HTTPS с сертификатом Let’s Encrypt.
  • Интеграция pgAdmin через uWSGI и проксирование Nginx.
  • Практические чек-листы по безопасности и приёмке.

Предварительные условия

  • Сервер с Ubuntu 22.04 (64-bit) и доступом по SSH.
  • Ненулевой sudo-пользователь (не root) с правами sudo.
  • Полностью квалифицированное доменное имя (FQDN), например pgadmin.example.com.
  • Обновлённая система и базовые утилиты. Выполните:
$ sudo apt update
$ sudo apt upgrade
  • Установите базовые пакеты (если их нет):
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y

Некоторые пакеты могут быть уже установлены.

Important: В этом руководстве предполагается Ubuntu 22.04 и PostgreSQL 14 (поставляется по умолчанию в 22.04). Если у вас другая версия Ubuntu — адаптируйте команды репозиториев и пути соответственно.

Что такое роли и аутентификация в PostgreSQL (одно предложение)

Роль — это сущность PostgreSQL, которая может представлять пользователя или группу; методы аутентификации (peer, scram-sha-256, trust и т.д.) определяются в pg_hba.conf.

Шаг 1 — Установка PostgreSQL 14

Ubuntu 22.04 содержит PostgreSQL 14 в официальных репозиториях. Установите пакеты:

$ sudo apt install postgresql postgresql-contrib

Пакет postgresql-contrib содержит дополнительные утилиты.

Если вы хотите использовать официальный репозиторий PostgreSQL (например, чтобы получить более свежие патчи), добавьте GPG-ключ и репозиторий:

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ sudo apt update

Проверьте статус сервиса:

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-05-16 11:20:35 UTC; 5 days ago
    Process: 30544 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 30544 (code=exited, status=0/SUCCESS)
        CPU: 2ms

May 16 11:20:35 postgresql systemd[1]: Starting PostgreSQL RDBMS...
May 16 11:20:35 postgresql systemd[1]: Finished PostgreSQL RDBMS.

Вы увидите, что служба включена и запущена по умолчанию.

Шаг 2 — Роли PostgreSQL и методы аутентификации

Postgres использует роли (roles) вместо чёткого разделения пользователей и групп. Основные методы аутентификации:

  • peer — локальная проверка по имени Unix-пользователя (по умолчанию при установке).
  • scram-sha-256 — рекомендуемый безопасный метод для паролей.
  • md5 — устаревший метод, по возможности избегайте.
  • trust — без пароля (опасно, использовать только в изолированных окружениях).
  • ident/peer для специальных сетевых сценариев.

По умолчанию создан системный пользователь/роль postgres.

Переключиться на системного пользователя postgres и запустить psql:

$ sudo -i -u postgres
postgres@server:~$ psql
psql (14.3 (Ubuntu 14.3-1.pgdg22.04+1))
Type "help" for help.
postgres=#

Выход из оболочки: \q или exit.

Для однократного запуска psql из вашей учётной записи:

$ sudo -u postgres psql

Шаг 3 — Создание новой роли (пользователя)

Можно использовать createuser или SQL-команды в psql.

Интерактивно:

$ sudo -u postgres createuser --interactive
Enter name of role to add: navjot
Shall the new role be a superuser? (y/n) y

Через psql:

postgres=# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';

Показать роли:

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 username  | Superuser, Create role, Create DB                          | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Совет безопасности: не давайте роли SUPERUSER без необходимости; вместо этого назначайте конкретные привилегии.

Шаг 4 — Создание базы данных

Создать базу командой createdb:

$ sudo -u postgres createdb howtoforge

Или в psql:

postgres=# CREATE DATABASE howtoforge;

Дать права роли:

postgres=# GRANT ALL PRIVILEGES ON DATABASE howtoforge TO username;

Посмотреть список баз:

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 howtoforge| postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
           |          |          |             |             | postgres=CTc/postgres+
           |          |          |             |             | username=CTc/postgres
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

Шаг 5 — Включение удалённого доступа

По умолчанию PostgreSQL слушает только localhost. Для прослушивания всех интерфейсов отредактируйте файл /etc/postgresql/14/main/postgresql.conf и установите:

# CONNECTIONS AND AUTHENTICATION
listen_addresses = '*'     # what IP address(es) to listen on;

Перезапустите PostgreSQL:

$ sudo systemctl restart postgresql

Проверьте прослушиваемые порты:

$ ss -nlt | grep 5432
LISTEN 0      244          0.0.0.0:5432      0.0.0.0:*
LISTEN 0      244             [::]:5432         [::]:*

Настройте правила доступа в /etc/postgresql/14/main/pg_hba.conf (пример):

# TYPE  DATABASE        USER                ADDRESS                 METHOD

# Полный доступ по паролю scram-sha-256
host    all             username            0.0.0.0/0                scram-sha-256

# Доступ к конкретной базе howtoforge по паролю
host    howtoforge      username            0.0.0.0/0                scram-sha-256

# Доступ без пароля из доверенной подсети
host    all             username            192.168.1.134/32        trust

Важно: не оставляйте 0.0.0.0/0 в продакшене; ограничьте IP-диапазоны.

Откройте порт в ufw:

$ sudo ufw allow 5432/tcp

Или ограничьте доступ подсетью:

$ sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

Шаг 6 — Установка pgAdmin 4 (виртуальное окружение Python)

Мы устанавливаем pgAdmin в Python-virtualenv, чтобы не принудительно ставить Apache. Создаём директории данных и логи:

$ sudo mkdir /var/lib/pgadmin
$ sudo mkdir /var/log/pgadmin
$ sudo mkdir /opt/pgadmin

Перейдите в root:

$ sudo su -

Установите зависимости Python:

# как root
$ apt install build-essential python3-dev python3-venv python3-pip -y

Создайте виртуальное окружение и активируйте его:

$ python3 -m venv /opt/pgadmin/venv
$ source /opt/pgadmin/venv/bin/activate

Установите pgAdmin и uWSGI:

(venv) root@server:-$ pip install --upgrade pip
(venv) root@server:-$ pip install --upgrade setuptools
(venv) root@server:-$ pip install wheel
(venv) root@server:-$ pip install pgadmin4
(venv) root@server:-$ pip install uwsgi

Запустите скрипт инициализации pgAdmin (путь может отличаться в зависимости от Python):

(venv) root@server:-$ python3 /opt/pgadmin/venv/lib/python3.10/site-packages/pgadmin4/setup.py

Следуйте инструкциям: укажите email и пароль администратора pgAdmin. Запомните их.

Деактивируйте виртуальное окружение:

(venv) root@server:-$ deactivate

Создайте системного пользователя для запуска pgAdmin:

$ sudo adduser --system --group --home /var/lib/pgadmin --disabled-login --shell /usr/sbin/nologin pgadmin

Назначьте владельцев директорий (в примере используем группу nginx, потому что позже Nginx будет проксировать):

$ sudo chown -R pgadmin:nginx /var/lib/pgadmin /var/log/pgadmin /opt/pgadmin

Шаг 7 — Интеграция uWSGI и pgAdmin

Создайте uWSGI-конфигурацию /opt/pgadmin/pgadmin-uwsgi.ini:

$ sudo nano /opt/pgadmin/pgadmin-uwsgi.ini

Добавьте:

[uwsgi]
socket = /var/lib/pgadmin/pgadmin4.sock
chdir = /opt/pgadmin/venv/lib/python3.10/site-packages/pgadmin4/
module = pgAdmin4:application
threads = 20
processes = 1
mount = /=pgAdmin4:app
manage-script-name = true
chmod-socket = 660

Сохраните файл. Обратите внимание: путь Python (python3.10) должен соответствовать установленной версии в системе.

Шаг 8 — Создание systemd-сервиса для uWSGI

Создайте unit-файл /etc/systemd/system/pgadmin-uwsgi.service:

$ sudo nano /etc/systemd/system/pgadmin-uwsgi.service

Вставьте:

[Unit]
Description=pgadmin4 on uWSGI
Requires=network.target
After=network.target
[Service]
User=pgadmin
Group=nginx
Environment="PATH=/opt/pgadmin/venv/bin"
ExecStart=/opt/pgadmin/venv/bin/uwsgi --ini /opt/pgadmin/pgadmin-uwsgi.ini
[Install]
WantedBy=multi-user.target

Включите и запустите сервис:

$ sudo systemctl enable pgadmin-uwsgi --now
$ sudo systemctl status pgadmin-uwsgi

Если socket создаётся в /var/lib/pgadmin/pgadmin4.sock, убедитесь, что у Nginx есть доступ (правильно настроены права и владельцы).

Шаг 9 — Установка SSL (Let’s Encrypt)

Устанавливаем Certbot через snap:

$ sudo apt install snapd -y
$ sudo snap install core
$ sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Остановите Nginx перед выдачей сертификата standalone режимом:

$ sudo systemctl stop nginx

Получите сертификат (замените email и домен):

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d pgadmin.example.com

Сертификаты будут в /etc/letsencrypt/live/pgadmin.example.com.

Создайте dhparam (может занять время):

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Создайте веб-корень для webroot renewal и скрипт обновления:

$ sudo mkdir -p /var/lib/letsencrypt
$ sudo nano /etc/cron.daily/certbot-renew

Вставьте:

#!/bin/sh
certbot renew --cert-name pgadmin.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Сделайте исполняемым:

$ sudo chmod +x /etc/cron.daily/certbot-renew

Замечание: Вы также можете использовать certbot с плагином nginx, если предпочитаете автоматическую конфигурацию.

Шаг 10 — Установка и настройка Nginx

Добавим официальный репозиторий Nginx, чтобы при необходимости установить стабильную версию:

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
$ sudo apt update
$ sudo apt install nginx
$ nginx -v

Пример конфигурации для /etc/nginx/conf.d/pgadmin.conf (обратите внимание на socket):

$ sudo nano /etc/nginx/conf.d/pgadmin.conf

Вставьте:

server {
    listen 80;
    listen [::]:80;
    server_name pgadmin.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;    
    server_name pgadmin.example.com;
    
    ssl_certificate /etc/letsencrypt/live/pgadmin.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/pgadmin.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/pgadmin.example.com/chain.pem;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_session_timeout  5m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location /pgadmin4/ {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/var/lib/pgadmin/pgadmin4.sock;
    }
}

Затем добавьте в /etc/nginx/nginx.conf перед include /etc/nginx/conf.d/*.conf;:

server_names_hash_bucket_size  64;

Проверка конфигурации и перезапуск:

$ sudo nginx -t
$ sudo systemctl restart nginx

Important: В конфигурации указан location /pgadmin4/ — это соответствует настройке uWSGI, где приложение монтируется как / и менеджер скрипт-имя управляет путями.

Шаг 11 — Настройка брандмауэра

Откройте HTTP/HTTPS порты:

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

Проверьте статус:

$ sudo ufw status

Пример вывода:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
5432/tcp                   ALLOW       192.168.1.0/24
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Шаг 12 — Доступ и первоначальная настройка pgAdmin

Установите пароль для пользователя postgres, чтобы подключаться через pgAdmin:

$ sudo -u postgres psql
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
postgres=# exit

Убедитесь, что UNIX-сокет имеет правильные права для nginx:

$ sudo chown nginx:nginx /var/lib/pgadmin/pgadmin4.sock

Откройте в браузере: https://pgadmin.example.com

Экран входа pgAdmin 4

ALT: Экран входа в pgAdmin 4 с полями для адреса электронной почты и пароля

Войдите под учетными данными, созданными на шаге установки pgAdmin.

Панель управления pgAdmin 4

ALT: Дашборд pgAdmin 4 с боковой панелью и списком серверов

Добавьте новый сервер (Add New Server):

Окно регистрации сервера в pgAdmin

ALT: Окно «Добавить новый сервер» в pgAdmin с полями для имени и вкладкой Connection

В качестве hostname используйте localhost, порт можно оставить пустым (по умолчанию 5432), введите имя пользователя и пароль postgres и отметьте Save password?.

Детали подключения сервера в pgAdmin

ALT: Вкладка параметров подключения сервера в pgAdmin с полями Hostname, Port, Username и Password

После добавления вы увидите панель сервера и сможете создавать таблицы и выполнять запросы.

Дашборд PostgreSQL в pgAdmin

ALT: Страница дашборда сервера PostgreSQL в pgAdmin с графиками и метриками

Пример: создание таблицы и вставка данных через pgAdmin

Откройте дерево БД > Databases > howtoforge > Schemas > Tables.

Дерево базы данных в pgAdmin

ALT: Дерево объектов базы данных в pgAdmin с раскрытыми разделами Databases и Schemas

Правый клик на Tables → Create → Table.

Опция создания таблицы в pgAdmin

ALT: Меню с опцией Create Table в контекстном меню pgAdmin

Заполните имя таблицы и добавьте столбцы (ID int PK, Name varchar(30)).

Окно создания таблицы в pgAdmin

ALT: Окно создания таблицы в pgAdmin с вкладкой Columns

Добавьте строки через Scripts → INSERT Script, отредактируйте и выполните:

INSERT INTO public."table-01"(
"ID", "Name")
VALUES (1, 'Navjot'), (2, 'Adam'), (3, 'Roxy');

ALT для изображения SQL вставки: Окно редактора SQL в pgAdmin с примером INSERT-запроса

Просмотрите данные через View/Edit Data → All Rows.

Просмотр данных в pgAdmin

ALT: Табличный просмотр данных в pgAdmin с отображением строк и столбцов

Настройка бинарных путей для Backup/Restore в pgAdmin

Если pgAdmin не видит утилиты pg_dump/pg_restore, укажите путь к бинарникам PostgreSQL: File → Preferences → Paths → Binary paths и установите /usr/bin для PostgreSQL 14.

Меню настроек pgAdmin

ALT: Меню File → Preferences в pgAdmin, показывающее раздел Paths

Указание пути до бинарников PostgreSQL

ALT: Настройка PostgreSQL Binary Path в pgAdmin с полем /usr/bin

Безопасность и жёсткие настройки (Security hardening)

  • Всегда используйте scram-sha-256 для паролей в pg_hba.conf.
  • Ограничьте подключающиеся IP-адреса в pg_hba.conf и в брандмауэре.
  • Не оставляйте роли с SUPERUSER без надобности; используйте минимальные привилегии.
  • Регулярно обновляйте систему и PostgreSQL-пакеты.
  • Защитите сокет и директории pgAdmin от неавторизованного доступа (правильные владельцы и права файлов).
  • Настройте регулярный бэкап и тест восстановления.

Отладка и распространённые ошибки

  • uWSGI не создаёт сокет — проверьте PATH в systemd-сервисе и права на папку /var/lib/pgadmin.
  • 502 Bad Gateway от Nginx — проверьте, что uWSGI запущен, и путь в uwsgi_pass совпадает с созданным сокетом.
  • Certbot не выдаёт сертификат — убедитесь, что Nginx остановлен и порт 80 доступен для ACME-валидации.
  • pgAdmin не видит pg_dump — проверьте пункт Binary paths в Preferences и что бинарники установлены (обычно /usr/bin).

Минитесты для проверки корректности установки

  • systemctl is-active postgresql
  • systemctl is-active pgadmin-uwsgi
  • ss -nlt | grep 5432
  • ss -xl | grep pgadmin4.sock
  • curl -I https://pgadmin.example.com

Чек-лист перед вводом в эксплуатацию

  1. Установлены последние обновления ОС и пакетов.
  2. PostgreSQL слушает на нужных интерфейсах и ограничен брандмауэром.
  3. Используется scram-sha-256 или другой безопасный метод аутентификации.
  4. uWSGI служба активна и создала UNIX-сокет с корректными правами.
  5. Nginx корректно проксирует /pgadmin4/ на uWSGI.
  6. Сертификаты Let’s Encrypt успешно выпущены и автопродление настроено.
  7. Резервное копирование и проверенное восстановление настроены.
  8. Протестирован доступ под реальными ролями и проверен журнал ошибок.

Критерии приёмки

  • Доступ к pgAdmin через HTTPS для указанных пользователей.
  • Подключение к локальной и удалённой базе данных проходит с учётом правил pg_hba.conf.
  • Выполнение резервного копирования и восстановления через pgAdmin проходит без ошибок.
  • Логи uWSGI/Nginx/Postgres не содержат критичных ошибок за 72 часа после запуска.

Когда этот подход не подходит (контрпримеры)

  • Если вы хотите быструю изолированную среду для тестов — проще использовать Docker-контейнеры.
  • Для управляемого продакшена с SLA и автоматическим бэкапом логичнее рассмотреть управляемые сервисы (например, облачные RDS/Cloud SQL).
  • Если требуется многосерверный кластер с репликацией и высокой доступностью — дополнительно потребуется Patroni/pgpool/replication, а простая конфигурация здесь этого не покрывает.

Альтернативные подходы

  • Развернуть PostgreSQL и pgAdmin в Docker (официальные образы) — быстро, удобно для тестов.
  • Использовать пакетную установку pgAdmin (apt) с Apache, если хотите избегать настройки Python-виртуального окружения.
  • Управляемые БД в облаке — снимают часть операционной нагрузки (patching, бэкапы).

Роль‑ориентированные чек‑листы

DBA:

  • Настроить регулярные бэкапы и тест восстановления.
  • Настроить мониторинг (pg_stat_statements, метрики).

DevOps:

  • Интегрировать автоматизированную доставку конфигураций (Ansible/Chef).
  • Настроить автообновление Certbot и тестовую ротацию ключей.

Разработчик:

  • Проверить подключения из приложений по строке подключения.
  • Тестировать миграции в тестовой среде, реплицировать окружение.

Мини‑методология быстрой проверки работоспособности

  1. Проверьте процессы: postgresql, pgadmin-uwsgi, nginx.
  2. Проверьте сокеты и порты (ss/netstat).
  3. Откройте web-интерфейс и выполните базовую операцию (создать таблицу, вставить строку, сделать backup).
  4. Проверьте логи (journalctl, /var/log/nginx, /var/log/pgadmin).

Короткий глоссарий (1 строка)

  • pgAdmin — веб-интерфейс управления PostgreSQL; uWSGI — приложение WSGI-сервер для запуска Python-приложений; pg_hba.conf — файл контроля доступа PostgreSQL.

Сценарий отката (Runbook)

Если после изменений nginx/uWSGI/SSL сайт перестал отвечать:

  1. Проверить журналы: sudo journalctl -u pgadmin-uwsgi, sudo journalctl -u nginx.
  2. Временно остановить Nginx и uWSGI: sudo systemctl stop nginx pgadmin-uwsgi.
  3. Запустить uWSGI вручную в foreground для отладки (в venv): /opt/pgadmin/venv/bin/uwsgi –ini /opt/pgadmin/pgadmin-uwsgi.ini –die-on-term.
  4. Откатить изменения конфигураций из резервной копии и перезапустить сервисы.

Советы по резервному копированию и восстановлению

  • Планируйте регулярные полный и инкрементальные бэкапы (pg_dump, pg_basebackup).
  • Тестируйте восстановление на отдельной машине не реже раза в квартал.
  • Настройте хранение бэкапов в удалённом хранилище (S3/MinIO) и проверяйте целостность.

Часто задаваемые вопросы (Кратко)

Q: Можно ли установить pgAdmin для локального доступа без HTTPS? A: Возможнo, но в продакшене HTTPS обязателен — особенно при передаче паролей.

Q: Почему pgAdmin не видит mypg_dump? A: Проверьте путь бинарников в Preferences → Paths и наличие утилит в /usr/bin.

Q: Как ограничить доступ к PostgreSQL только для приложений? A: Используйте pg_hba.conf + UFW, назначьте отдельные роли с минимальными правами.


Итог

Вы установили PostgreSQL 14 и pgAdmin 4 на Ubuntu 22.04, настроили удалённый доступ, безопасное соединение через Nginx и Let’s Encrypt и развернули pgAdmin в виртуальном окружении с uWSGI. В статье также приведены чек-листы, тесты и рекомендации по безопасности и откату.

Если остались вопросы — опишите ваш сценарий и ошибки, и мы поможем их диагностировать.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро