bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Развёртывание Strapi Headless CMS на VPS: PostgreSQL, Nginx и SSL

calendar_month Aug 16, 2026 schedule 17 мин. чтения visibility 23 просмотров
Развёртывание Strapi Headless CMS на VPS: PostgreSQL, Nginx и SSL
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Развёртывание Strapi Headless CMS на VPS: PostgreSQL, Nginx и SSL

TL;DR

В этом руководстве мы пошагово настроим мощную Headless CMS Strapi на вашем виртуальном приватном сервере (VPS). Вы научитесь устанавливать и конфигурировать все необходимые компоненты: базу данных PostgreSQL для хранения контента, веб-сервер Nginx для обработки запросов и обеспечения безопасности, а также SSL-сертификаты с помощью Certbot для шифрования трафика. В результате вы получите полностью функциональную, безопасную и готовую к использованию платформу для управления контентом, доступную по вашему доменному имени.

  • Установка Strapi v5.x.x и сопутствующего ПО (Node.js 22.x, PostgreSQL 16.x, Nginx 1.28.x, PM2).
  • Конфигурация PostgreSQL для работы со Strapi, создание пользователя и базы данных.
  • Настройка Nginx как обратного прокси для Strapi-приложения и веб-сервера.
  • Автоматическое получение и обновление SSL-сертификатов Let's Encrypt с помощью Certbot.
  • Обеспечение постоянной работы Strapi с помощью PM2 и его автозапуска.
  • Базовые меры безопасности, такие как настройка фаервола и SSH-доступа.

Что мы настраиваем и зачем

Схема: Что мы настраиваем и зачем
Схема: Что мы настраиваем и зачем

В современном мире контент — король, а его эффективное управление критически важно для любого цифрового проекта. Strapi — это ведущая Headless CMS (Content Management System) с открытым исходным кодом, написанная на Node.js. "Headless" означает, что она предоставляет только бэкенд для управления контентом через мощный API (REST и GraphQL), полностью отделяя его от фронтенда (веб-сайта, мобильного приложения, IoT-устройства и т.д.). Это даёт разработчикам беспрецедентную гибкость в выборе технологий для фронтенда и обеспечивает высокую производительность.

Мы будем разворачивать Strapi на вашем собственном VPS. Это позволит вам получить полный контроль над инфраструктурой, оптимизировать производительность под свои нужды, обеспечить максимальную безопасность данных и избежать зависимости от сторонних облачных провайдеров, которые часто масштабируются по цене нелинейно. В итоге вы получите мощную платформу для создания и управления любым типом контента, будь то блог, интернет-магазин, корпоративный сайт или сложное веб-приложение. Ваш контент будет доступен через API, готовый к интеграции с любым клиентским приложением.

Существуют альтернативы облачным управляемым сервисам Strapi Cloud или другим SaaS-CMS, таким как Contentful, Sanity или Prismic. Эти решения удобны тем, что снимают с вас заботы по инфраструктуре, но они часто имеют ограничения по функционалу, объему данных или количеству пользователей в бесплатных и базовых планах. Самостоятельное развертывание Strapi на VPS, хоть и требует начальных усилий по настройке, в долгосрочной перспективе обеспечивает значительно большую гибкость, экономию средств при масштабировании и полный суверенитет над вашими данными. Вы будете владеть всей цепочкой: от сервера до базы данных и самого приложения.

Какой VPS-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой VPS-конфиг нужен под эту задачу

Выбор правильного VPS-конфига критически важен для стабильной и быстрой работы Strapi. Требования могут варьироваться в зависимости от объема контента, количества одновременных пользователей и сложности плагинов, но для старта и небольших проектов можно ориентироваться на следующие минимальные параметры:

  • CPU: 2 ядра. Strapi, будучи Node.js-приложением, может активно использовать CPU при обработке запросов и генерации API.
  • RAM: 4 ГБ. Этого объема будет достаточно для работы операционной системы, PostgreSQL и самого Strapi. Если планируется большой объем контента или много плагинов, лучше сразу взять 8 ГБ.
  • Диск: 80-100 ГБ SSD. SSD значительно ускоряет работу базы данных и загрузку приложения. 80 ГБ будет достаточно для ОС, всех компонентов и приличного объема медиафайлов. Если вы планируете хранить очень много изображений и видео, рассмотрите возможность использования внешнего объектного хранилища (S3-совместимого) или увеличьте объем диска.
  • Сеть: 100 Мбит/с или 1 Гбит/с порт. Для большинства задач 100 Мбит/с достаточно, но 1 Гбит/с обеспечит лучшую производительность при большом количестве запросов к API или загрузке медиафайлов.

Для развертывания Strapi с PostgreSQL, Nginx и SSL, как описано в этом руководстве, оптимальным выбором будет VPS с 2 ядрами CPU, 4-8 ГБ RAM и 80-100 ГБ SSD. Например, можно рассмотреть VPS с указанными характеристиками.

Когда нужен dedicated, а не VPS

Dedicated-сервер (выделенный сервер) становится необходим, когда ваш проект значительно масштабируется и требования превышают возможности стандартного VPS:

  • Высокая нагрузка: Тысячи одновременных пользователей, сотни запросов к API в секунду.
  • Большой объем данных: Терабайты медиафайлов или очень большая база данных, требующая максимальной производительности дисковой подсистемы.
  • Специфические требования: Необходимость в особой конфигурации оборудования, специализированных картах расширения или максимальной изоляции.
  • Безопасность и соответствие: Иногда требования регуляторов или корпоративные политики безопасности требуют использования выделенных ресурсов.

Для большинства проектов Strapi на старте и даже на этапе активного роста VPS будет более чем достаточно. Переход на dedicated-сервер — это шаг для проектов с очень высокой нагрузкой или особыми требованиями. В этом случае, вам потребуется соответствующий подходящий dedicated.

Локация: на что влияет

Выбор локации VPS-сервера влияет на несколько ключевых аспектов:

  • Задержка (Latency): Чем ближе сервер к вашей целевой аудитории, тем меньше задержка при доступе к сайту или API. Это критично для пользовательского опыта и SEO.
  • Законодательство: Законы о защите данных (например, GDPR в Европе) могут требовать хранения данных в определенной юрисдикции.
  • Цена: Цены на VPS в разных регионах могут незначительно отличаться.

Выбирайте локацию, максимально близкую к основным пользователям вашего Strapi-проекта или к месту развертывания фронтенда, если он также хостится на VPS.

Подготовка сервера

Схема: Подготовка сервера
Схема: Подготовка сервера

Прежде чем приступить к установке Strapi и его компонентов, необходимо выполнить базовую настройку свежего VPS. Это обеспечит безопасность и стабильность вашей системы. Мы будем использовать Ubuntu Server 24.04 LTS, так как это популярный и хорошо поддерживаемый дистрибутив.

1. Подключение по SSH

Подключитесь к вашему серверу как пользователь root или с предоставленными провайдером учетными данными:


ssh root@ВАШ_IP_АДРЕС

2. Обновление системы

Всегда начинайте с обновления пакетного менеджера и установленных пакетов до актуальных версий. Это гарантирует наличие последних исправлений безопасности и стабильности.


sudo apt update && sudo apt upgrade -y

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


sudo reboot

После перезагрузки переподключитесь по SSH.

3. Создание нового пользователя с правами sudo

Работать под root небезопасно. Создайте нового пользователя и предоставьте ему права sudo.


sudo adduser strapiuser
sudo usermod -aG sudo strapiuser

Замените strapiuser на желаемое имя пользователя. Вам будет предложено ввести пароль и другую информацию (можно оставить пустой). После создания пользователя, переключитесь на него.


su - strapiuser

Теперь все дальнейшие команды, требующие прав администратора, будут выполняться с префиксом sudo.

4. Настройка SSH-ключей (рекомендуется)

Для повышения безопасности рекомендуется отключить аутентификацию по паролю для SSH и использовать только SSH-ключи. Сначала скопируйте ваш публичный SSH-ключ на сервер.


# Выполните на ЛОКАЛЬНОЙ машине
ssh-copy-id strapiuser@ВАШ_IP_АДРЕС

Затем, на сервере, отредактируйте файл конфигурации SSH:


sudo nano /etc/ssh/sshd_config

Найдите и измените следующие строки (или добавьте, если отсутствуют):


# Отключить вход по паролю
PasswordAuthentication no
# Отключить вход для root
PermitRootLogin no

Сохраните изменения (Ctrl+O, Enter) и выйдите (Ctrl+X). Перезапустите службу SSH:


sudo systemctl restart sshd

Теперь вы сможете входить только с помощью SSH-ключа под пользователем strapiuser.

5. Настройка фаервола (UFW)

UFW (Uncomplicated Firewall) — это простой в использовании инструмент для управления фаерволом. Настроим его, чтобы разрешить только необходимые подключения.


sudo apt install ufw -y # Установка UFW, если не установлен
sudo ufw allow OpenSSH   # Разрешить SSH (порт 22)
sudo ufw allow http      # Разрешить HTTP (порт 80)
sudo ufw allow https     # Разрешить HTTPS (порт 443)
sudo ufw enable          # Включить фаервол
sudo ufw status          # Проверить статус

При включении UFW вам будет предложено подтвердить действие. Введите y и нажмите Enter.

6. Установка Fail2Ban

Fail2Ban помогает защититься от атак перебора паролей (brute-force) путем блокировки IP-адресов, с которых поступает слишком много неудачных попыток входа.


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Fail2Ban будет работать "из коробки" с базовыми настройками для SSH. Для более тонкой настройки можно скопировать и отредактировать файл /etc/fail2ban/jail.conf в /etc/fail2ban/jail.local.

Теперь ваш сервер готов к установке необходимого программного обеспечения.

Установка ПО — пошагово

Схема: Установка ПО — пошагово
Схема: Установка ПО — пошагово

В этом разделе мы установим все необходимые компоненты для работы Strapi: Node.js (с NPM), PostgreSQL, Nginx и PM2. Все версии ПО будут актуальны на 2026 год, обеспечивая максимальную совместимость и безопасность.

1. Установка Node.js и npm (версия 22.x)

Strapi — это Node.js-приложение. Мы установим актуальную LTS-версию Node.js (22.x), которая будет поддерживаться в 2026 году.


# Добавить репозиторий NodeSource для Node.js 22.x
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
# Установить Node.js и npm
sudo apt install -y nodejs
# Проверить установленные версии
node -v
npm -v

Убедитесь, что версии соответствуют (например, v22.x.x и 10.x.x).

2. Установка PostgreSQL (версия 16.x)

PostgreSQL — рекомендуемая база данных для Strapi. Мы установим стабильную версию 16.x.


# Установить PostgreSQL и пакеты dev
sudo apt install -y postgresql postgresql-contrib
# Проверить статус службы PostgreSQL
sudo systemctl status postgresql

Служба должна быть активна (active (exited) или active (running)). Если нет, запустите её: sudo systemctl start postgresql.

3. Установка Nginx (актуальная версия 1.28.x)

Nginx будет выступать в роли обратного прокси для Strapi, обслуживать SSL-сертификаты и статические файлы.


# Установить Nginx
sudo apt install -y nginx
# Проверить статус службы Nginx
sudo systemctl status nginx

Nginx должен быть запущен. Вы можете проверить его работу, перейдя по IP-адресу вашего сервера в браузере — должна появиться стандартная страница приветствия Nginx.

4. Установка PM2

PM2 — это менеджер процессов для Node.js-приложений. Он позволяет запускать Strapi в фоновом режиме, автоматически перезапускать его в случае сбоев и управлять несколькими приложениями.


# Установить PM2 глобально
sudo npm install -g pm2
# Настроить PM2 для автозапуска при старте системы
pm2 startup systemd
# Вывод команды выше даст вам команду, которую нужно будет выполнить с sudo, например:
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u strapiuser --hp /home/strapiuser
# Скопируйте и выполните эту команду. Она создаст systemd-юнит для PM2.

После выполнения команды pm2 startup systemd вам будет предоставлена команда, которую нужно выполнить с sudo. Это создаст systemd-сервис, который будет запускать PM2 и ваши приложения при старте сервера.

Конфигурация

Схема: Конфигурация
Схема: Конфигурация

Теперь, когда все компоненты установлены, пришло время их настроить для совместной работы со Strapi.

1. Создание базы данных PostgreSQL для Strapi

Сначала создадим пользователя и базу данных в PostgreSQL, к которым Strapi будет подключаться.


# Подключиться к PostgreSQL как пользователь postgres
sudo -i -u postgres psql

Внутри консоли PostgreSQL выполните следующие команды:


CREATE USER strapiuser WITH PASSWORD 'ваш_очень_сложный_пароль';
CREATE DATABASE strapidb WITH OWNER strapiuser;
GRANT ALL PRIVILEGES ON DATABASE strapidb TO strapiuser;
\q

Замените ваш_очень_сложный_пароль на надежный пароль. Выйдите из консоли PostgreSQL (\q).

2. Создание Strapi-проекта

Перейдите в домашнюю директорию вашего пользователя (/home/strapiuser) или в другую удобную директорию, например /var/www. Мы будем использовать /var/www для веб-приложений.


sudo mkdir -p /var/www/strapi
sudo chown -R strapiuser:strapiuser /var/www/strapi
cd /var/www/strapi

Создайте новый Strapi-проект. Мы используем флаг --no-run, чтобы он не запускался сразу.


npx create-strapi-app@latest my-strapi-project --quickstart --no-run

Во время установки вам будет предложено выбрать тип установки. Для данного руководства выберите Custom (manual settings), а затем PostgreSQL в качестве базы данных. Введите данные для подключения к базе данных, которые вы создали ранее (Host: 127.0.0.1, Port: 5432, Database: strapidb, Username: strapiuser, Password: ваш_очень_сложный_пароль).

Перейдите в директорию проекта:


cd my-strapi-project

3. Настройка переменных окружения Strapi

Секреты и конфигурационные параметры лучше хранить в файле .env. Создайте или отредактируйте файл .env в корневой директории вашего Strapi-проекта.


nano .env

Добавьте или обновите следующие строки:


HOST=0.0.0.0
PORT=1337
APP_KEYS=ваш_очень_сложный_и_длинный_ключ_для_приложения # Генерируется автоматически при --quickstart, но лучше перегенерировать
API_TOKEN_SALT=ваш_очень_сложный_и_длинный_ключ_для_api_токенов
ADMIN_JWT_SECRET=ваш_очень_сложный_и_длинный_ключ_для_админ_панели
JWT_SECRET=ваш_очень_сложный_и_длинный_ключ_для_jwt

DATABASE_CLIENT=pg
DATABASE_HOST=127.0.0.1
DATABASE_PORT=5432
DATABASE_NAME=strapidb
DATABASE_USERNAME=strapiuser
DATABASE_PASSWORD=ваш_очень_сложный_пароль
DATABASE_SSL=false

NODE_ENV=production

Для генерации сильных случайных ключей для APP_KEYS, API_TOKEN_SALT, ADMIN_JWT_SECRET, JWT_SECRET вы можете использовать команду:


node -e "console.log(crypto.randomBytes(32).toString('hex'))"

Выполните её несколько раз, чтобы получить уникальные ключи для каждого параметра. Сохраните файл.

4. Запуск Strapi с PM2

Теперь запустим Strapi в production-режиме с помощью PM2.


# Убедитесь, что вы находитесь в корневой директории вашего Strapi-проекта (/var/www/strapi/my-strapi-project)
npm run build
pm2 start npm --name "strapi-app" -- run start
# Сохранить список процессов PM2 для автозапуска
pm2 save

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


pm2 list
pm2 logs strapi-app

Strapi должен быть запущен и слушать на порту 1337 (по умолчанию).

5. Настройка Nginx как обратного прокси

Создадим конфигурационный файл Nginx для вашего домена (например, api.yourdomain.com).


sudo nano /etc/nginx/sites-available/api.yourdomain.com

Вставьте следующую конфигурацию, заменив api.yourdomain.com на ваш домен:


server {
    listen 80;
    server_name api.yourdomain.com;

    location / {
        proxy_pass http://localhost:1337;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_cache_bypass $http_upgrade;
    }
}

Сохраните файл. Создайте символическую ссылку на этот файл в sites-enabled и проверьте синтаксис Nginx:


sudo ln -s /etc/nginx/sites-available/api.yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t

Если синтаксис в порядке (syntax is ok), перезагрузите Nginx:


sudo systemctl restart nginx

На этом этапе ваш Strapi должен быть доступен по HTTP через Nginx по адресу http://api.yourdomain.com (убедитесь, что DNS-запись для вашего домена указывает на IP вашего VPS).

6. Настройка SSL с Certbot (Let's Encrypt)

Для обеспечения безопасности и доверия необходимо настроить HTTPS. Certbot автоматически получит и установит SSL-сертификаты от Let's Encrypt.


# Установить Certbot и плагин Nginx
sudo apt install -y certbot python3-certbot-nginx
# Получить и установить сертификат
sudo certbot --nginx -d api.yourdomain.com

Certbot задаст вам несколько вопросов: адрес электронной почты для уведомлений, согласие с условиями обслуживания и, возможно, предложит перенаправлять HTTP-трафик на HTTPS (выберите "2: Redirect"). Certbot автоматически обновит конфигурацию Nginx, добавив SSL-параметры.

Проверьте, что Certbot настроил автоматическое обновление сертификатов:


sudo systemctl status certbot.timer

Таймер должен быть активен. Если нет, включите его: sudo systemctl enable certbot.timer. Теперь ваш Strapi доступен по HTTPS: https://api.yourdomain.com.

7. Проверка работоспособности

Откройте ваш домен (например, https://api.yourdomain.com) в браузере. Вы должны увидеть страницу приветствия Strapi или страницу входа в админ-панель. Если это первый запуск, вам будет предложено создать первого администратора.

Вы также можете проверить доступность API через curl:


curl -I https://api.yourdomain.com/admin/

Вы должны увидеть HTTP-заголовки с кодом состояния 200 OK или 302 Found (перенаправление на страницу входа).

Бэкапы и обслуживание

Схема: Бэкапы и обслуживание
Схема: Бэкапы и обслуживание

Регулярное резервное копирование и своевременное обслуживание — ключ к долгосрочной стабильности и безопасности вашего Strapi-проекта.

Что бэкапить

Для полноценного восстановления Strapi вам потребуется резервировать несколько типов данных:

  • База данных PostgreSQL: Содержит весь ваш контент, структуру коллекций и пользователей. Это самый важный компонент.
  • Файлы Strapi-проекта: Включают конфигурационные файлы (особенно .env), плагины, кастомные контроллеры и сервисы. Хотя большинство данных в БД, настройки приложения тоже важны.
  • Медиафайлы: Изображения, видео и другие файлы, загруженные через Strapi. По умолчанию они хранятся в ./public/uploads внутри проекта, если не настроено внешнее хранилище (S3).

Простой скрипт автобэкапа

Создадим простой скрипт для бэкапа базы данных и файлов, который будет запускаться по расписанию через cron.

Создайте директорию для бэкапов (например, /var/backups/strapi):


sudo mkdir -p /var/backups/strapi
sudo chown -R strapiuser:strapiuser /var/backups/strapi

Создайте файл скрипта backup_strapi.sh в домашней директории пользователя strapiuser:


nano /home/strapiuser/backup_strapi.sh

Вставьте следующее содержимое:


#!/bin/bash

# --- Конфигурация ---
BACKUP_DIR="/var/backups/strapi"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="strapidb"
DB_USER="strapiuser"
STRAPI_PROJECT_PATH="/var/www/strapi/my-strapi-project"
RETENTION_DAYS=7 # Сколько дней хранить бэкапы

# --- Создание директории бэкапа для текущей даты ---
CURRENT_BACKUP_DIR="$BACKUP_DIR/$DATE"
mkdir -p "$CURRENT_BACKUP_DIR"

# --- Бэкап PostgreSQL ---
echo "Dumping PostgreSQL database '$DB_NAME'..."
PGPASSWORD='ваш_очень_сложный_пароль' pg_dump -U "$DB_USER" -h localhost "$DB_NAME" > "$CURRENT_BACKUP_DIR/$DB_NAME.sql"
if [ $? -eq 0 ]; then
    echo "PostgreSQL dump successful."
else
    echo "Error dumping PostgreSQL database!"
    exit 1
fi

# --- Бэкап файлов Strapi-проекта и медиафайлов ---
echo "Archiving Strapi project files..."
tar -czf "$CURRENT_BACKUP_DIR/strapi_project.tar.gz" -C "$(dirname "$STRAPI_PROJECT_PATH")" "$(basename "$STRAPI_PROJECT_PATH")"
if [ $? -eq 0 ]; then
    echo "Strapi project files archived successful."
else
    echo "Error archiving Strapi project files!"
    exit 1
fi

# --- Удаление старых бэкапов ---
echo "Cleaning up old backups (older than $RETENTION_DAYS days)..."
find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +"$RETENTION_DAYS" -exec rm -rf {} \;
echo "Cleanup complete."

echo "Backup finished at $DATE"

Замените ваш_очень_сложный_пароль на ваш пароль от пользователя PostgreSQL. Сделайте скрипт исполняемым:


chmod +x /home/strapiuser/backup_strapi.sh

Добавьте скрипт в cron для ежедневного запуска (например, в 3:00 ночи).


crontab -e

Добавьте следующую строку в конец файла, чтобы скрипт запускался каждый день в 03:00:


0 3   * /home/strapiuser/backup_strapi.sh >> /var/log/strapi_backup.log 2>&1

Эта команда будет перенаправлять вывод скрипта в файл /var/log/strapi_backup.log, что поможет отслеживать его выполнение.

Куда складывать бэкапы

Крайне важно хранить бэкапы ВНЕ основного сервера. Если сервер выйдет из строя, вы потеряете и данные, и бэкапы. Рекомендуемые варианты:

  • Внешний S3-совместимый объектный хранилище: Например, Amazon S3, DigitalOcean Spaces, Backblaze B2. Это экономично и надежно. Вы можете использовать утилиты типа s3cmd или rclone для автоматической синхронизации директории бэкапов с S3.
  • Отдельный VPS: Недорогой VPS в другой локации, используемый исключительно для хранения бэкапов. Можно синхронизировать по rsync или sftp.
  • Локальное хранилище на вашем компьютере: Для очень маленьких проектов, но это не автоматизировано и не масштабируемо.

Обновления: rolling vs maintenance window

Обновление ПО на продакшн-сервере требует осторожности.

  • Обновление ОС и базовых пакетов (apt upgrade): Рекомендуется выполнять регулярно (раз в месяц), но всегда в "окно обслуживания" (maintenance window), когда нагрузка минимальна. Перед обновлением сделайте полный бэкап. После обновления, особенно если обновлялось ядро, требуется перезагрузка.
  • Обновление Strapi: Обновления Strapi (особенно между мажорными версиями, например, с v4 на v5) могут требовать миграции базы данных и кода. Всегда тестируйте обновления на стейджинг-сервере перед применением на продакшне. Выполняйте в окно обслуживания.
  • Обновление Node.js: Обновление Node.js также может влиять на Strapi. Проверяйте совместимость версий.

Всегда делайте бэкап перед любым крупным обновлением!

Troubleshooting + FAQ

В этом разделе собраны ответы на часто задаваемые вопросы и решения типичных проблем, с которыми вы можете столкнуться при развертывании Strapi.

Nginx выдает ошибку 502 Bad Gateway

Что проверить: Ошибка 502 обычно означает, что Nginx не может связаться с бэкенд-сервисом (в нашем случае Strapi). Убедитесь, что Strapi запущен и слушает на правильном порту (по умолчанию 1337). Проверьте логи Nginx (sudo tail -f /var/log/nginx/error.log) и логи Strapi (pm2 logs strapi-app).

Как фиксить: Убедитесь, что PM2 процесс Strapi активен (pm2 list). Если нет, попробуйте запустить его вручную (cd /var/www/strapi/my-strapi-project && npm run start) и посмотрите на ошибки. Проверьте, что proxy_pass http://localhost:1337; в конфигурации Nginx указывает на правильный порт.

Strapi не запускается, ошибки подключения к базе данных

Что проверить: Проверьте файл .env в корне Strapi-проекта. Убедитесь, что параметры DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USERNAME и DATABASE_PASSWORD верны. Проверьте, что PostgreSQL запущен (sudo systemctl status postgresql) и что пользователь strapiuser имеет права доступа к базе данных strapidb.

Как фиксить: Сбросьте пароль пользователя PostgreSQL (sudo -i -u postgres psql -c "ALTER USER strapiuser WITH PASSWORD 'новый_пароль';") и обновите его в .env. Убедитесь, что локальный хост 127.0.0.1 разрешен для подключения в файле /etc/postgresql/16/main/pg_hba.conf (должна быть строка host all all 127.0.0.1/32 md5 или scram-sha-256). После изменений в pg_hba.conf перезапустите PostgreSQL: sudo systemctl restart postgresql.

Не могу получить SSL-сертификат с Certbot

Что проверить: Убедитесь, что ваш домен (например, api.yourdomain.com) правильно указывает на IP-адрес вашего VPS через A-запись в DNS. Certbot должен иметь возможность связаться с вашим сервером по порту 80 (HTTP) для проверки владения доменом. Проверьте, что Nginx запущен и корректно слушает порт 80.

Как фиксить: Временно отключите UFW (sudo ufw disable) и попробуйте снова. Если это помогло, значит, фаервол блокирует порты. Убедитесь, что sudo ufw allow http и sudo ufw allow https включены. Проверьте конфигурацию Nginx на наличие ошибок (sudo nginx -t). Убедитесь, что нет других процессов, занимающих порт 80 или 443.

Какой VPS-конфиг минимально подойдёт?

Для минимального развёртывания Strapi для небольшого проекта или тестирования можно начать с VPS с 2 ядрами CPU, 4 ГБ RAM и 80 ГБ SSD. Этого будет достаточно для работы операционной системы, PostgreSQL и самого Strapi без высокой нагрузки. Однако, если вы планируете активное использование, большой объем контента или множество пользователей, рекомендуется увеличить RAM до 8 ГБ и, возможно, рассмотреть более производительные диски.

Что выбрать — VPS или dedicated для этой задачи?

Для большинства проектов Strapi, особенно на начальных и средних этапах развития, VPS является оптимальным выбором. Он предлагает отличный баланс между производительностью, гибкостью и стоимостью. Выделенный сервер (dedicated) становится оправданным только при очень высоких нагрузках (тысячи одновременных пользователей, интенсивные операции с БД), необходимости в максимальной изоляции ресурсов, специфических требованиях к аппаратному обеспечению или особых регуляторных нормах. Начните с VPS и масштабируйтесь до dedicated, если и когда ваши потребности превысят возможности виртуализации.

Медленная работа админ-панели Strapi

Что проверить: Медленная работа админ-панели может быть вызвана недостатком ресурсов VPS (CPU или RAM), медленной базой данных или неоптимизированными запросами. Проверьте использование ресурсов сервера (htop или free -h).

Как фиксить: Увеличьте объем RAM на VPS, если он близок к исчерпанию. Оптимизируйте запросы к базе данных, если у вас очень сложные структуры контента. Убедитесь, что база данных находится на SSD-диске. Для продакшн-окружения всегда запускайте Strapi в режиме NODE_ENV=production, так как в development-режиме он потребляет больше ресурсов.

Выводы и следующие шаги

Схема: Выводы и следующие шаги
Схема: Выводы и следующие шаги

Поздравляем! Вы успешно развернули Strapi Headless CMS на вашем VPS, настроив PostgreSQL, Nginx и SSL-сертификаты. Теперь у вас есть мощная, безопасная и гибкая платформа для управления контентом, готовая к интеграции с любым фронтенд-приложением.

Вот несколько следующих шагов, которые вы можете предпринять для дальнейшего развития вашего Strapi-проекта:

  • Разработка фронтенда: Используйте ваш Strapi API для создания веб-сайтов (с помощью React, Vue, Next.js, Nuxt.js), мобильных приложений или других цифровых продуктов.
  • Расширение функционала Strapi: Изучите документацию Strapi для создания кастомных полей, плагинов, жизненных циклов и ролей пользователей.
  • Мониторинг и оптимизация: Внедрите инструменты мониторинга (например, Prometheus + Grafana) для отслеживания производительности сервера и Strapi, чтобы своевременно реагировать на потенциальные проблемы и оптимизировать ресурсы.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

развёртывание strapi headless cms на vps: postgresql, nginx и ssl
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.