Strapi — CMS с открытым исходным кодом и отделённым от сайта фронтендом (headless CMS) на Node.js. Она хранит контент отдельно от сайта и предоставляет его через REST или GraphQL API. Strapi можно развернуть на своём сервере, подключить к собственной базе данных и расширять кодом.

📌
Главное: открытая версия Strapi распространяется по лицензии MIT. Вы управляете инфраструктурой и данными, а Strapi предоставляет админ-панель, модели контента, роли, медиабиблиотеку и API.
🗓️
Актуальность: материал проверен 10 сентября 2026 года по официальной документации, обзору релизов, уведомлению о безопасности и странице Strapi Cloud. В обзоре релизов за июнь–август последней перечислена версия v5.52.2 от 26 августа 2026 года. Ветка Strapi 4 завершена: v4.26.2 от 9 июня 2026 года стала её финальным релизом.

Содержание

  1. Как устроена Strapi
  2. Модели и управление контентом
  3. REST, GraphQL и MCP
  4. Медиа, локализация и права
  5. Быстрый старт и проверка
  6. Деплой и производительность
  7. Тарифы Strapi Cloud
  8. Обновления и безопасность
  9. Полезные сценарии
  10. Когда выбирать Strapi

Как устроена Strapi

Strapi состоит из двух основных частей:

Notion image
  1. Серверная часть (Backend) — приложение, которое работает с данными, правами и API.
  2. Админ-панель (Admin Panel) — интерфейс для редакторов и администраторов.
flowchart LR
    A[Контент-менеджер] -->|CRUD| B[Strapi Backend]
    B -->|REST или GraphQL| C[Сайт или приложение]
    B -->|SQL| D[База данных]
    B -->|Файлы| E[S3, Cloudinary или диск]

Разработчик задаёт модели контента, а редакторы заполняют их через Content Manager — панель управления контентом. Фронтенд получает опубликованные данные по API. Такой подход подходит для сайтов на Next.js, Astro, Nuxt, мобильных приложений и других HTTP-клиентов.

Модели и управление контентом

Content-Type Builder позволяет создавать структуру данных визуально. Основные элементы:

ТипНазначениеПример
Collection TypeНабор однотипных записейСтатьи, товары, авторы
Single TypeЕдинственная записьГлавная страница, настройки
ComponentПереиспользуемая группа полейSEO, карточка героя
Dynamic ZoneУпорядоченный набор разных компонентовСтраница из блоков

Доступны текстовые, числовые, логические, календарные, медийные, реляционные, JSON, UID, email и другие поля. Компоненты бывают одиночными и повторяемыми.

В Content Manager можно создавать, редактировать, публиковать и удалять записи. Для collection types доступны список и отдельная форма редактирования; у single types есть только форма одной записи.

Если включён Draft & Publish, записи можно фильтровать по состояниям:

  • черновик, который ещё не публиковался;
  • опубликованная запись;
  • опубликованная запись с несохранёнными в публикации изменениями;
  • опубликованная запись без новых изменений.

Настройки колонок, поиска, фильтров, сортировки и количества строк сохраняются отдельно для каждого типа контента. Для связей можно выбрать открытие записи в модальном окне, на отдельной странице или в новой вкладке.

Dynamic Zones полезны для управляемого конструктора страниц: разработчик определяет допустимые блоки, а редактор меняет их состав и порядок. Начиная с v5.51.2 компоненту можно задать изображение предпросмотра через ключ preview в блоке info файла schema.json; оно появится в выборе компонентов.

REST, GraphQL и MCP

REST API

После создания collection type Strapi формирует стандартные API-маршруты.

# Получить статьи
GET /api/articles

# Фильтрация
GET /api/articles?filters[title][$contains]=AI

# Сортировка и пагинация
GET /api/articles?sort=publishedAt:desc&pagination[page]=1&pagination[pageSize]=10

# Загрузить выбранные связи
GET /api/articles?populate=author,category

Связанные сущности по умолчанию не подгружаются, поэтому populate лучше задавать явно и только для нужных полей. Это уменьшает размер ответа и нагрузку на базу.

GraphQL

GraphQL подключается плагином @strapi/plugin-graphql и удобен, когда клиенту нужно получить несколько связанных сущностей с точно заданным набором полей.

npm install @strapi/plugin-graphql

REST обычно проще для стандартных CRUD-сценариев и HTTP-кэширования. GraphQL полезен для сложных связанных выборок.

MCP для ИИ-агентов

MCP-сервер Strapi получил статус GA и позволяет совместимому ИИ-клиенту управлять контентом через инструменты Strapi. Доступ к операциям записи ограничивайте правами admin API token. Сервер выключен по умолчанию.

// config/server.ts
export default ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  mcp: {
    enabled: env.bool('STRAPI_MCP_ENABLED', false),
  },
});

После включения и перезапуска MCP endpoint доступен по адресу:

http://localhost:1337/mcp
⚠️
Внимание: создавайте токен с минимально необходимыми правами, храните его в переменной окружения и отзывайте после завершения интеграции.

В v5.49 появились типизированные средства ai.mcp.defineTool, defineResource и definePrompt для расширения MCP из плагинов. С v5.52.0 операции записи агента через MCP попадают в audit logs, если журнал аудита доступен в выбранной редакции Strapi.

Медиа, локализация и права

Медиабиблиотека

Файлы можно хранить локально либо передавать внешнему провайдеру, например AWS S3 или Cloudinary.

⚠️
Для продакшена: локальный каталог требует постоянного диска. В контейнере без подключённого тома файлы могут исчезнуть при пересоздании экземпляра; при горизонтальном масштабировании локальное хранилище также усложняет синхронизацию.

В обновлениях v5.49–v5.52.2 исправлены замена файлов за CDN, проверка лимита размера при замене и работа S3 с обновляемыми краткосрочными credentials. Начиная с v5.52.2 новая медиабиблиотека доступна как beta: в ней появились дерево папок, поиск, фильтры, редактирование focal point и фоновая очередь загрузок.

// config/features.js
module.exports = {
  future: {
    betaMediaLibrary: true,
  },
};

По официальному плану GA новой медиабиблиотеки назначен на 16 сентября 2026 года. До этой даты интерфейс остаётся beta, а прежняя медиабиблиотека используется по умолчанию.

Локализация

Плагин i18n позволяет включать локализацию отдельно для контент-типа и его полей. Локаль передаётся в запросе:

GET /api/articles?locale=ru

Роли и доступ

Strapi разделяет права админ-панели и Content API. Для администраторов настраиваются действия над типами контента, а для API — разрешения публичных и авторизованных пользователей.

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

Быстрый старт и проверка

Для разработки понадобится поддерживаемая LTS-версия Node.js и база данных. Перед развёртыванием сверяйте точные версии Node.js и СУБД с актуальной страницей установки Strapi.

npx create-strapi-app@latest my-project
cd my-project
npm run develop

Для автоматизированного создания проекта:

npx create-strapi-app@latest my-project --non-interactive

После запуска:

  1. Откройте http://localhost:1337/admin.
  2. Создайте первого администратора.
  3. Добавьте тестовый collection type и запись.
  4. Настройте разрешение find для нужной API-роли.
  5. Выполните запрос к созданному endpoint.

Наблюдаемый результат — ответ API с тестовой записью. Если приходит 403, проверьте права роли; если связь отсутствует в ответе, добавьте явный populate.

Деплой и производительность

Strapi можно разместить в Strapi Cloud, на PaaS-платформе или собственном VPS. Для self-hosted-варианта обычно нужны:

  • база данных, совместимая с выбранным релизом Strapi;
  • постоянное файловое либо объектное хранилище;
  • обратный прокси (reverse proxy) с TLS;
  • резервное копирование базы и файлов;
  • контролируемое обновление пакетов Strapi.

Ресурсы сервера выбирайте по числу моделей, плагинов, параллельных запросов и процессу сборки. Перед продакшеном проверьте сборку и работу админ-панели на своей нагрузке.

Базовые меры производительности:

  • используйте пагинацию;
  • выбирайте только нужные поля и связи;
  • добавляйте индексы для часто используемых фильтров;
  • кэшируйте подходящие публичные ответы на reverse proxy или CDN;
  • измеряйте запросы к базе до подключения дополнительного кэша.

Тарифы Strapi Cloud

Цены и лимиты проверены 10 сентября 2026 года по официальной странице Strapi Cloud. Цены указаны без возможных местных налогов.

ПланЦена в месяцAPI-запросыХранилище / трафикРезервные копии
Starter$35 за проект100 тыс.50 / 50 ГБНет
Pro$90 за проект1 млн250 / 500 ГБЕженедельные
Business$450 за проект10 млн1 000 / 1 000 ГБЕжедневные

Starter засыпает при простое; Pro и Business работают в режиме always on. Business включает два окружения и SLA 99,9%. При годовой оплате заявлена скидка до 17%.

Дополнительное потребление оплачивается отдельно:

  • $1,50 за 25 тыс. API-запросов;
  • $0,60 за 1 ГБ хранилища;
  • $30 за 100 ГБ трафика;
  • дополнительное окружение Pro — $60 в месяц;
  • дополнительное окружение Business — $300 в месяц.

Актуальные значения перед покупкой проверяйте на официальной странице Strapi Cloud.

Обновления и безопасность

В мае 2026 года Strapi раскрыл пять исправленных уязвимостей. Среди них были две критические: SQL-инъекция в Content-Type Builder и утечка чувствительных данных через фильтрацию по связям. Подробности и минимальные исправленные версии приведены в официальном уведомлении о безопасности.

🔴
Минимальная версия v5, закрывающая все пять уязвимостей из этого раскрытия, — v5.45.0. Четыре исправления доступны с v5.37.0, но исправление обхода rate limit вошло только в v5.45.0. На практике устанавливайте актуальный поддерживаемый релиз v5, а не останавливайтесь на минимальной версии.

После v5.49 появились и другие изменения безопасности и поведения:

  • v5.50.0 добавила просмотр и отзыв активных сессий;
  • v5.51.0 ограничила срок действия admin password-reset token одним часом по умолчанию;
  • v5.51.2 начала воспринимать % и _ в строковых фильтрах буквально;
  • v5.52.2 применяет лимит размера и при замене загруженного файла;
  • новые проекты v5.52.2 по умолчанию запрещают SVG-загрузки.

Последнее правило не применяется автоматически к старым проектам. Проверьте собственные allowedTypes и deniedTypes, особенно если файлы отдаются с того же origin, что и админ-панель.

Strapi 4 завершена как ветка разработки: v4.26.2 стала финальным релизом. Действующие проекты следует переносить на v5 по официальному руководству.

Полезные сценарии

Контентный сайт с независимым фронтендом

Задача: редакторам нужна админ-панель, а разработчикам — свобода выбрать Next.js, Astro или другой клиент.

Создайте модели статей, авторов и рубрик, настройте Draft & Publish, выдайте фронтенду доступ только для чтения и получайте опубликованные записи через REST или GraphQL. Результат проверяется запросом к Content API и отображением тестовой записи на фронтенде.

Сценарий требует отдельной инфраструктуры и дисциплины обновлений. Если команда не готова обслуживать сервер, вариант в Strapi Cloud может быть проще.

Каталог или база знаний из компонентов

Задача: собирать разные страницы из согласованного набора блоков.

Опишите компоненты для текста, медиа, характеристик и CTA, затем объедините их в Dynamic Zone. Редактор сможет менять порядок блоков, не изменяя код модели. Проверьте результат через preview фронтенда и API-ответ с ожидаемым порядком компонентов.

Dynamic Zone не заменяет дизайн-систему: слишком большое число похожих компонентов усложняет редактору выбор и поддержку схемы.

Управление контентом через ИИ-агента

Задача: разрешить агенту искать, создавать или публиковать записи без собственной REST-прослойки.

Включите MCP, создайте admin API token с минимальными правами и подключите совместимый клиент к /mcp. Сначала используйте роль только для чтения. Успешное подключение подтверждается появлением инструментов для разрешённых типов контента; операции записи через MCP можно отслеживать в audit logs при наличии этой возможности.

Такой доступ не подходит для неконтролируемого публичного агента. Операции записи требуют ограниченной роли, отзываемого токена и журналирования.

Когда выбирать Strapi

Strapi подходит, если:

  • данные и инфраструктура должны оставаться под вашим контролем;
  • в команде есть разработчик для поддержки Node.js-приложения;
  • нужна собственная бизнес-логика, плагины или функции жизненного цикла;
  • одному контентному слою предстоит обслуживать несколько клиентов.

Другой вариант разумнее, если команда не хочет обслуживать сервер, обновления и резервные копии. При выборе сравнивайте полную стоимость владения: лицензию, хостинг, базу, хранилище, наблюдаемость и рабочее время команды.

Официальные ссылки

Следующий шаг

База знаний: EmDash — open-source CMS от Cloudflare на базе Astro

Если вы выбираете CMS или проектируете контентную архитектуру, полезно заранее сопоставить требования к данным, редакционному процессу и поддержке инфраструктуры.

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov