Как обновить PostgreSQL до версии 17 в n8n на VPS от Бегет
Многие выбирают облачную платформу Бегет для размещения self-hosted версии n8n на VPS по следующим причинам:
- Низкие тарифы - от 9 ₽ в день. Можно пополнить баланс на 30 ₽ и протестировать работу n8n в течение трёх дней на выбранном тарифе.
- Прозрачное проксирование запросов к OpenAI API - вы можете без проблем обращаться к
api.openai.comдаже с российских IP, минуя блокировку:{"error":{"code":"unsupported_country_region_territory", "message":"Country, region, or territory not supported", "param":null, "type":"request_forbidden"}} - Бесплатная установка n8n - при заказе нового VPS вы можете сразу получить настроенную версию n8n с защищённым HTTPS-доступом.
Однако стоит учитывать один нюанс: при автоматической установке используется устаревшая версия PostgreSQL - 11 (выпущена в 2018 году). Актуальная версия на 2025 год - PostgreSQL 17, содержащая множество улучшений в области безопасности и производительности. N8n корректно работает с 17 версией.
Ниже - пошаговая инструкция по обновлению PostgreSQL до версии 17 для n8n на VPS от Бегет.
Пошаговая инструкция
1. Подключение к серверу по SSH
ssh root@<ip_адрес_сервера>
2. Переход в директорию n8n
cd /opt/beget/n8n
3. Остановка сервиса n8n
docker compose stop n8n
4. Создание дампа базы данных
Уточните имя контейнера с PostgreSQL:
docker compose ps | grep postgres
Скорее всего, он называется n8n-postgres-1. Выполните дамп БД:
docker exec -it n8n-postgres-1 pg_dump -U root n8n > n8n_backup.sql
5. Остановка сервиса PostgreSQL
docker compose stop postgres
6. Создание резервных копий
mv db_storage db_storage_backup mkdir db_storage cp init-data.sh init-data_backup.sh cp docker-compose.yml docker-compose_backup.yml
7. Обновление версии PostgreSQL в docker-compose.yml
sed -i 's#postgres:11#postgres:17#g' docker-compose.yml
8. Обновление скрипта инициализации init-data.sh
Содержимое должно быть следующим:
cat > init-data.sh << 'EOF'
#!/bin/bash
set -e;
if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER "${POSTGRES_NON_ROOT_USER}" WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE "${POSTGRES_DB}" TO "${POSTGRES_NON_ROOT_USER}";
GRANT CREATE ON SCHEMA public TO "${POSTGRES_NON_ROOT_USER}";
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi
EOF9. Загрузка нового образа PostgreSQL
docker compose pull postgres
10. Запуск новой версии PostgreSQL
docker compose up -d postgres
11. Проверка логов PostgreSQL
docker compose logs postgres
12. Восстановление дампа в новую базу данных
cat n8n_backup.sql | docker exec -i n8n-postgres-1 psql -U root -d n8n
13. Запуск сервиса n8n
docker compose start n8n
14. Проверка логов n8n
docker compose logs n8n --tail 100
15. Проверка интерфейса n8n
Убедитесь, что все workflows работают корректно. Если всё в порядке - удалите временные файлы:
rm init-data_backup.sh docker-compose_backup.yml n8n_backup.sql rm -rf db_storage_backup
16. Очистка неиспользуемых Docker-образов
docker image prune -a
Если вы всё сделали по инструкции - поздравляю! Теперь ваша система работает с актуальной и безопасной версией PostgreSQL 17.