- Home »

Как установить и настроить pgAdmin 4 в серверном режиме на Ubuntu 24
Если ты, как и я, не раз сталкивался с проблемой удобного веб-доступа к PostgreSQL на серверах, то знаешь, что подключение к базе данных через консоль — это конечно классика, но иногда хочется чего-то более визуального и удобного. Особенно когда нужно быстро проверить данные, выполнить несколько запросов или показать что-то коллегам без лишних заморочек с SSH-туннелями. pgAdmin 4 в серверном режиме — это как раз тот инструмент, который превращает управление PostgreSQL в гораздо более приятный процесс.
Сегодня разберём, как поднять pgAdmin 4 на Ubuntu 24 в серверном режиме, чтобы получить полноценный веб-интерфейс для работы с базами данных. Покажу все подводные камни, с которыми можно столкнуться, и поделюсь проверенными решениями.
Что такое pgAdmin 4 в серверном режиме и зачем он нужен
pgAdmin 4 — это веб-приложение на Python (Flask), которое предоставляет мощный интерфейс для администрирования PostgreSQL. В серверном режиме он работает как полноценный веб-сервер, доступный через браузер с любого устройства в сети.
Основные преимущества:
- Удобный веб-интерфейс без необходимости установки клиентского ПО
- Многопользовательский доступ с разграничением прав
- Визуальный редактор запросов с подсветкой синтаксиса
- Мониторинг производительности и активности
- Удобный импорт/экспорт данных
Установка pgAdmin 4 на Ubuntu 24
Первым делом обновляем систему и устанавливаем необходимые пакеты:
sudo apt update
sudo apt upgrade -y
sudo apt install curl ca-certificates gnupg lsb-release
Добавляем официальный репозиторий pgAdmin:
curl -fsSL https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list'
sudo apt update
Устанавливаем pgAdmin 4 в веб-режиме:
sudo apt install pgadmin4-web
Запускаем скрипт настройки:
sudo /usr/pgadmin4/bin/setup-web.sh
Скрипт попросит создать аккаунт администратора — вводим email и пароль. Также нужно будет выбрать веб-сервер (рекомендую Apache, если не планируете кастомные настройки).
Настройка конфигурации pgAdmin 4
Основной файл конфигурации находится в /usr/pgadmin4/web/config_local.py
. Вот базовые настройки, которые стоит изменить:
sudo nano /usr/pgadmin4/web/config_local.py
Добавляем следующие параметры:
# Настройка сервера
SERVER_MODE = True
DEFAULT_SERVER_PORT = 5050
# Безопасность
ENHANCED_COOKIE_PROTECTION = True
WTF_CSRF_TIME_LIMIT = 3600
# Настройка логов
LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
CONSOLE_LOG_LEVEL = 20
# Настройка сессий
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'
Создаём директорию для логов:
sudo mkdir -p /var/log/pgadmin4
sudo chown www-data:www-data /var/log/pgadmin4
Настройка Apache для pgAdmin 4
Если выбрали Apache, нужно активировать несколько модулей:
sudo a2enmod wsgi
sudo a2enmod ssl
sudo a2enmod rewrite
sudo systemctl restart apache2
Конфигурация Apache автоматически создаётся в /etc/apache2/sites-available/pgadmin4.conf
. Для дополнительной безопасности можно добавить SSL:
sudo nano /etc/apache2/sites-available/pgadmin4.conf
Добавляем в конфигурацию:
ServerName your-domain.com
Redirect permanent / https://your-domain.com/
ServerName your-domain.com
SSLEngine on
SSLCertificateFile /path/to/your/cert.pem
SSLCertificateKeyFile /path/to/your/private.key
WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/usr/pgadmin4/venv
WSGIProcessGroup pgadmin
WSGIScriptAlias / /usr/pgadmin4/web/pgAdmin4.wsgi
WSGIApplicationGroup %{GLOBAL}
Require all granted
Настройка безопасности и файрвола
Настраиваем ufw для ограничения доступа:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from your-office-ip to any port 5432
sudo ufw enable
Для дополнительной защиты можно ограничить доступ к pgAdmin только с определённых IP:
sudo nano /etc/apache2/sites-available/pgadmin4.conf
Добавляем блок ограничения:
WSGIApplicationGroup %{GLOBAL}
Require ip 192.168.1.0/24
Require ip your-office-ip
Практические кейсы и решения проблем
Проблема | Симптом | Решение |
---|---|---|
Ошибка 500 при запуске | Internal Server Error | Проверить права доступа: sudo chown -R www-data:www-data /usr/pgadmin4 |
Медленная работа | Долгая загрузка страниц | Увеличить количество процессов WSGI: processes=4 threads=25 |
Не подключается к PostgreSQL | Connection refused | Проверить pg_hba.conf и postgresql.conf на целевом сервере |
Зависание сессий | Таймауты при выполнении запросов | Настроить QUERY_TIMEOUT = 300 в config_local.py |
Подключение к PostgreSQL серверам
После входа в pgAdmin нужно добавить серверы PostgreSQL. Вот типичная конфигурация:
Для локального сервера:
- Host: localhost
- Port: 5432
- Database: postgres
- Username: postgres
Для удалённого сервера:
- Host: IP-адрес сервера
- Port: 5432
- SSL Mode: require (для продакшена)
Если планируешь работать с множеством PostgreSQL серверов, рекомендую поднять отдельную VPS под pgAdmin — так удобнее управлять доступом и не нагружать основные серверы с базами данных.
Альтернативы и сравнение
Стоит упомянуть другие инструменты для работы с PostgreSQL:
- Adminer — лёгкий PHP-скрипт, поддерживает множество СУБД
- DBeaver — десктопное приложение с мощным функционалом
- phpPgAdmin — более старый веб-интерфейс на PHP
- PostgREST — автоматический REST API для PostgreSQL
pgAdmin 4 выигрывает по функциональности и активности разработки, но может быть избыточным для простых задач.
Автоматизация и скрипты
pgAdmin 4 поддерживает командную строку для автоматизации задач:
# Создание бэкапа через pgAdmin CLI
python /usr/pgadmin4/web/pgadmin4.py --backup-server server_name --backup-format custom
# Восстановление
python /usr/pgadmin4/web/pgadmin4.py --restore-server server_name --restore-file backup.dump
Для регулярных задач можно интегрировать pgAdmin с системными скриптами:
#!/bin/bash
# Скрипт для автоматического добавления нового сервера в pgAdmin
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"name": "New Server",
"host": "192.168.1.100",
"port": 5432,
"database": "postgres"
}' \
http://localhost/pgadmin4/api/v1/servers
Мониторинг и обслуживание
Для мониторинга pgAdmin 4 создаём скрипт проверки:
#!/bin/bash
# health_check.sh
response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost/pgadmin4/misc/ping)
if [ $response -eq 200 ]; then
echo "pgAdmin is running"
else
echo "pgAdmin is down, restarting..."
sudo systemctl restart apache2
fi
Добавляем в cron для автоматической проверки:
# Проверка каждые 5 минут
*/5 * * * * /path/to/health_check.sh >> /var/log/pgadmin_health.log 2>&1
Нестандартные способы использования
Интересные возможности, которые не все знают:
- Интеграция с Docker — можно поднять pgAdmin в контейнере и подключить к множеству PostgreSQL серверов
- Кастомные дашборды — через плагины можно создавать собственные панели мониторинга
- Работа с TimescaleDB — pgAdmin отлично работает с расширениями PostgreSQL
- Интеграция с Grafana — можно использовать pgAdmin для настройки подключений, а Grafana для визуализации
Для высоконагруженных проектов имеет смысл арендовать выделенный сервер и разместить там pgAdmin вместе с репликами PostgreSQL для аналитики.
Заключение и рекомендации
pgAdmin 4 в серверном режиме — это мощный инструмент для команд, работающих с PostgreSQL. Он особенно полезен в следующих случаях:
- Нужен удобный веб-интерфейс для разработчиков и аналитиков
- Требуется централизованное управление несколькими PostgreSQL серверами
- Важен многопользовательский доступ с разграничением прав
- Необходим визуальный редактор запросов и мониторинг
Главные рекомендации:
- Обязательно используйте SSL в продакшене
- Настройте ограничения по IP для доступа
- Регулярно обновляйте pgAdmin и следите за безопасностью
- Для критически важных систем поднимайте pgAdmin на отдельном сервере
- Настройте мониторинг доступности и производительности
По опыту могу сказать, что правильно настроенный pgAdmin 4 значительно упрощает жизнь при работе с PostgreSQL и становится незаменимым инструментом для команды. Главное — не забывать про безопасность и регулярное обновление.
Полезные ссылки:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.