pimenov.ai

База знаний

Strapi — open-source Headless CMS для тех, кто хочет владеть своими данными

Разбор Strapi 5 на август 2026: архитектура, API, встроенный MCP-сервер, Strapi AI, требования к серверу, тарифы и границы применимости.

Опубликовано Обновлено

Strapi — одна из самых популярных open-source Headless CMS на Node.js. Вы разворачиваете её на своём сервере, данные хранятся в вашей базе, а контент отдаётся через REST и GraphQL API. По сути — готовый бэкенд для управления контентом, который можно подключить к любому фронтенду.

📌
Главное: Strapi бесплатна (лицензия MIT), работает с PostgreSQL, MySQL и MariaDB, генерирует REST и GraphQL API автоматически для каждой контент-модели. Весь код открыт, данные ваши, хостинг ваш.
🗓️
Актуальность: проверено 2 августа 2026 года по официальной документации и релиз-ноутам. Актуальная ветка — Strapi 5, последние релизы серии — v5.50.x. Strapi 4 достиг End of Life 30 апреля 2026 года.

Зачем вообще нужна Headless CMS

Если коротко: Headless CMS — это когда контент хранится отдельно от фронтенда и отдаётся через API. Вы сами решаете, на чём строить сайт — Next.js, Astro, мобильное приложение или что-то ещё. CMS при этом отвечает только за хранение и редактирование контента.

Strapi — один из главных игроков в этой категории. Отличается тем, что это не облако, а софт, который вы ставите к себе. Для кого-то это преимущество (полный контроль), для кого-то — дополнительная ответственность (нужен сервер, нужны обновления).


Как устроена архитектура

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

  1. Backend — Node.js-приложение, которое обрабатывает запросы, управляет данными и генерирует API
  2. Admin Panel — React-приложение, через которое контент-менеджеры работают с материалами
Notion image
flowchart LR
    A["Контент-менеджер\n(Админ-панель)"] -->|CRUD| B["Strapi Backend\n(Node.js)"]
    B -->|REST / GraphQL| C["Фронтенд\n(Next.js, Astro, Nuxt...)"]
    B -->|SQL| D["База данных\n(PostgreSQL / MySQL)"]
    B -->|Upload| E["Файлы\n(S3 / Cloudinary / Local)"]

Принцип простой: вы создаёте модели контента (Content Types) — через визуальный конструктор или код. Strapi автоматически генерирует REST и GraphQL endpoints для каждой модели. Контент-менеджеры заполняют данные через админку, фронтенд забирает их по API.


Content-Type Builder — конструктор моделей

Одна из главных фишек Strapi — визуальный конструктор контент-моделей прямо в админ-панели. Не нужно писать код, чтобы создать структуру данных для блога, каталога товаров или базы знаний.

Типы контента

ТипЧто этоПример
Collection TypeКоллекция записей одного типаСтатьи, Продукты, Авторы
Single TypeОдна запись (синглтон)Главная страница, Настройки сайта
ComponentПереиспользуемый блок полейSEO-метаданные, Блок «Герой»
Dynamic ZoneЗона, куда можно добавлять разные компонентыКонструктор страниц из блоков

Типы полей

Strapi поддерживает все базовые типы: Text, Rich Text, Number, Date, Boolean, Media (изображения, видео), Relation (связи между моделями), Enumeration, JSON, UID (slug), Email, Password. Плюс кастомные поля через плагины — Color Picker, Google Maps и другие.

💡
Совет: Dynamic Zones — мощный инструмент для страниц-конструкторов. Вы определяете набор компонентов (Герой, Текст, Галерея, CTA), а контент-менеджер собирает страницу из блоков в нужном порядке. Это примерно то, что Notion делает «из коробки», только здесь вы сами определяете набор блоков.

API из коробки: REST и GraphQL

Strapi автоматически генерирует API для каждого Content Type. Не нужно ничего писать — создали модель «Статья», получили готовый набор endpoints.

REST

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

# Получить одну статью
GET /api/articles/1

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

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

# Подгрузка связей (по умолчанию Strapi не грузит связанные данные)
GET /api/articles?populate=author,category

# Выборка по состоянию публикации (параметр publicationFilter, с v5.47)
GET /api/articles?publicationFilter=draftOnly

Параметр publicationFilter работает в REST, Document Service и GraphQL и помогает собрать выборки, которые не выражаются фильтром по одной колонке: например, записи, ни разу не опубликованные в этой локали, или черновики, разошедшиеся с опубликованной версией. Старый параметр hasPublishedVersion продолжает работать.

GraphQL

Доступен через плагин @strapi/plugin-graphql:

query {
  articles(sort: "publishedAt:desc", pagination: { limit: 10 }) {
    title
    slug
    content
    author {
      name
      avatar { url }
    }
  }
}
⚖️
REST vs GraphQL: для большинства проектов REST достаточно — он проще и лучше кэшируется. GraphQL удобнее, когда нужно получить данные из нескольких связанных сущностей одним запросом и не тянуть лишнее.

MCP-сервер: подключение ИИ-агентов к контенту

Главное продуктовое изменение 2026 года. MCP (Model Context Protocol) — открытый протокол, по которому ИИ-агенты вроде Claude, Cursor или Copilot обращаются к внешним системам. Встроенный MCP-сервер появился в v5.47.0 и получил статус GA в v5.49.0.

Агент читает и пишет контент прямо в работающем проекте, без самописной прослойки поверх REST.

  • Для контент-типов публикуется набор инструментов: find, create, update, publish, unpublish и другие. Какие из них увидит агент, определяют права admin-токена: токен только на чтение откроет лишь операции чтения
  • Сервер отключён по умолчанию (server.mcp.enabled = false), пока вы явно его не включите
  • Доступ выдаётся через admin API token: у токена есть владелец, права токена не превышают прав владельца, пересчитываются при смене его ролей и отзываются при деактивации аккаунта
  • Функция бесплатна и доступна в Community-версии на своём сервере
// config/server.ts — MCP выключен по умолчанию
export default ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  mcp: {
    // включайте флагом окружения, а не хардкодом
    enabled: env.bool('STRAPI_MCP_ENABLED', false),
  },
});
⚠️
Внимание: admin API token даёт агенту административный доступ к контенту. Заводите его от аккаунта с минимально необходимой ролью, храните значение в переменной окружения и отзывайте, когда интеграция больше не нужна.

Как проверить, что работает: после включения сервера и рестарта эндпоинт поднимается на http://localhost:1337/mcp. Подключите агента по MCP и попросите вывести список доступных инструментов. Если в клиенте видны инструменты вида find для ваших коллекций, соединение работает.


Плагины

У Strapi развитая экосистема. Плагины ставятся через npm.

Встроенные

  • Content Manager — основной интерфейс управления контентом
  • Content-Type Builder — визуальный конструктор моделей
  • Media Library — управление файлами, изображениями, видео
  • i18n — мультиязычность контента
  • Users & Permissions — управление доступом к API
  • Email — отправка email через Nodemailer

Популярные сторонние

ПлагинЗачемУстановка
SEOMeta-теги, Open Graphnpm i @strapi/plugin-seo
GraphQLGraphQL API поверх RESTnpm i @strapi/plugin-graphql
SlugifyАвтогенерация slugnpm i strapi-plugin-slugify
SitemapАвтогенерация sitemap.xmlnpm i strapi-plugin-sitemap
MeilisearchПолнотекстовый поискnpm i strapi-plugin-meilisearch

Полный каталог — на market.strapi.io. Можно создавать свои плагины через Plugin SDK.


Мультиязычность (i18n)

Strapi поддерживает мультиязычность из коробки:

  1. В Settings → Internationalization добавляете нужные локали (ru, en, de...)
  2. В Content-Type Builder включаете i18n для контент-типа
  3. Для каждого поля решаете, нужна ли локализация
  4. В Content Manager переключаетесь между языками и заполняете контент
# Получить контент на конкретном языке
GET /api/articles?locale=ru

На плане Growth доступны AI-переводы: при обновлении исходной версии контент автоматически переводится во все локали проекта.


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

Встроенная система управления файлами: загрузка, папки, миниатюры, поиск.

Что добавилось за 2026 год:

  • Focal point (v5.35) — вы отмечаете точку, вокруг которой изображение обрезается под разные форматы, и главный объект перестаёт уезжать за край кадра
  • Импорт по URL — файл можно загрузить прямо со стороннего адреса, не скачивая его локально
  • Подписанные URL в Content API (v5.43) — приватные бакеты корректно работают не только в админке, но и для фронтенда
  • AI-метаданные — alt-тексты и подписи генерируются для новых загрузок, а с v5.34 их можно применить и к ранее накопленной библиотеке (требуется лицензия Growth)

Где хранить файлы:

  • Local — на сервере (по умолчанию; на VPS с постоянным диском файлы переживают рестарт, а в контейнере без примонтированного тома пропадут)
  • AWS S3 и S3-совместимые хранилища@strapi/provider-upload-aws-s3 (рекомендуется для продакшена). Официальный провайдер поддерживает полную конфигурацию S3-совместимых сервисов: Cloudflare R2, MinIO, Backblaze B2, DigitalOcean Spaces
  • Cloudinary@strapi/provider-upload-cloudinary
⚠️
Важно: для продакшена локальное хранилище не подходит. В контейнере без постоянного тома файлы теряются при рестарте, а при переезде или горизонтальном масштабировании их придётся переносить руками. Используйте S3 или Cloudinary.

Роли и права доступа

Две системы:

Для админ-панели — Super Admin, Editor, Author + кастомные роли с гранулярным доступом на уровне Content Type и действий (create, read, update, delete, publish).

Для API — Authenticated, Public + кастомные роли. Настраиваете, какие endpoints доступны авторизованным пользователям, какие — всем.


Кастомизация бэкенда

Strapi — это Node.js-приложение, которое можно расширять на уровне кода:

  • Controllers — переопределить логику обработки запросов
  • Services — добавить бизнес-логику
  • Middlewares — логирование, кэширование, rate limiting
  • Lifecycle Hooks — хуки на создание, обновление, удаление записей (автогенерация slug, уведомления, инвалидация кэша)
⚖️
Что учесть при кастомизации: в v5.40.0 Entity Service (strapi.entityService) официально помечен как deprecated, а с Document API (strapi.documents) снята пометка @beta. Новый код пишите на Document Service, старые вызовы постепенно переводите — редактор теперь подсказывает это сам.
// Пример: автогенерация slug при создании статьи
export default {
  async beforeCreate(event) {
    const { data } = event.params;
    if (data.title && !data.slug) {
      data.slug = slugify(data.title);
    }
  },
};

Быстрый старт

# Создать проект
npx create-strapi-app@latest my-project

# Создать проект без интерактивных вопросов (для CI и IaC)
npx create-strapi-app@latest my-project --non-interactive

# Запустить
cd my-project && npm run develop

Откройте http://localhost:1337/admin, создайте первого администратора — и можно работать.


Деплой

ПлатформаСложностьЦенаОсобенности
Strapi CloudНизкаяот $35 за проект/месДеплой из Git, managed-инфраструктура
RailwayНизкаяПо потреблениюOne-click deploy, PostgreSQL в комплекте
RenderНизкаяот $25/мес за инстанс с 2 ГБAuto-deploy из Git. Инстанс за $7 — это 512 МБ, для Strapi мало. С 23 апреля 2026 планы workspace: Hobby $0, Pro $25, Scale $499
Docker (VPS)Средняяот $5/месПолный контроль, нужны DevOps-навыки
AWS / GCPВысокаяВарьируетсяМаксимальная гибкость

Требования к серверу (VPS)

Если разворачиваете Strapi на своём сервере — вот на что ориентироваться:

ПараметрМинимумРекомендуется
CPU1 ядро2+ ядра
RAM2 ГБ4 ГБ+
Диск8 ГБ32 ГБ+ (SSD/NVMe)

Софт

  • Node.js — только Active LTS или Maintenance LTS (на август 2026 это v22, v24 и v26). Нечётные версии (v23, v25) не поддерживаются
  • База данных — PostgreSQL (рекомендуется 17, минимум 14), MySQL (8.4 / 8.0) или MariaDB (11.4 / 10.3) по актуальной документации. README пакета в npm до сих пор показывает старую таблицу с PostgreSQL 14 и MariaDB 10.6 — ориентируйтесь на docs. SQLite подходит только для разработки, MongoDB и другие NoSQL-базы не поддерживаются
  • build-essentials — стандартный набор сборочных утилит (для Debian/Ubuntu)
  • ОС — Ubuntu ≥ 18.04 LTS, Debian ≥ 9.x, CentOS/RHEL ≥ 8 или Docker
💡
Совет: на 2 ГБ RAM Strapi работает, но админ-панель будет подтормаживать — она самый прожорливый компонент. Если используете Strapi только как API (контент редактируете локально), 2 ГБ хватит. Для комфортной работы в админке — берите 4 ГБ.

Производительность: что стоит настроить

  • Reverse Proxy (Nginx) — кэширование, SSL, gzip. Обязательно в продакшене
  • CDN (Cloudflare) — если аудитория глобальная
  • Pagination — всегда, не загружайте всё разом
  • Selective populate — загружайте только нужные связи (по умолчанию Strapi не грузит связанные данные, и это хорошо)
  • Redis — кэширование API-ответов при высокой нагрузке
  • Database indexes — для больших таблиц и сложных фильтров

Тарифы

Лицензия CMS и хостинг тарифицируются раздельно: сначала выбираете план CMS, затем при желании — план Strapi Cloud. Цены ниже указаны на 2 августа 2026 года, актуальные значения смотрите на strapi.io/pricing-cms и strapi.io/pricing-cloud.

Лицензия CMS

ПланЦенаЧто включено
Community (self-hosted)Бесплатно, MITREST и GraphQL, i18n, Draft & Publish, RBAC, медиабиблиотека, Blocks Editor, плагины, MCP-сервер
Growth$45/мес, включено 3 места (+$15 за место)Всё из Community плюс Strapi AI (1 000 кредитов в месяц), Live Preview, Releases, Content History с хранением 30 дней, базовая поддержка
EnterpriseПо запросуВсё из Growth плюс SSO, Review Workflows, Audit Logs, отчёт SOC 2, расширенная поддержка

SSO можно докупить к Growth отдельным add-on за $150/мес (+$50 за место).

Хостинг Strapi Cloud

ПланЦена за проектЛимиты и возможности
Starter$35/мес100 тыс. API-запросов, 50 ГБ хранилища и трафика, CDN, кастомные домены, наблюдаемость 7 дней. Бэкапов нет, проект засыпает при простое — режим always on начинается с Pro
Pro$90/мес1 млн запросов, 250 ГБ хранилища, 500 ГБ трафика, мультиокружения, еженедельные бэкапы, CRON
Business$450/мес10 млн запросов, 1 000 ГБ хранилища и трафика, ежедневные бэкапы, SLA 99,9%

При годовой оплате Strapi даёт скидку до 17%. Превышения лимитов оплачиваются сверху: +$1,50 за 25 тыс. API-запросов, +$0,60 за ГБ хранилища, +$30 за 100 ГБ трафика, дополнительное окружение — от +$60 в месяц.

⚠️
Внимание: бесплатный план Strapi Cloud закрывают, и сроки уже названы. С 1 июля 2026 года Free недоступен для новых регистраций, а 1 сентября 2026 года все оставшиеся бесплатные проекты удаляются. До этой даты нужно перейти на платный план или выгрузить данные.
📌
Нюанс: Cloud считается по проектам и окружениям, лицензия CMS — по местам. Self-hosted бесплатен по лицензии, но сервер, обновления и дежурство стоят времени. При планировании бюджета считайте TCO на 12–24 месяца, включая инфраструктуру и DevOps-часы.

Интеграция с фронтенд-фреймворками

ФреймворкИнтеграцияПримечание
Next.jsREST/GraphQL + @strapi/clientSSG, SSR, ISR — все режимы
AstroREST/GraphQLОтлично для статических сайтов
Nuxt 3REST/GraphQL + @strapi/clientNuxt Content Module совместим
MobileREST APIЛюбой HTTP-клиент

Strapi AI

Strapi AI вышел из беты и доступен в общем релизе. Функции работают на плане Growth: включено 1 000 кредитов в месяц, дополнительные — $1,50 за 100 кредитов. В Enterprise на момент проверки Strapi AI ещё не открыт.

  • AI Content-Type Builder — генерация структуры контента по текстовому описанию, файлу Figma или ZIP-архиву с JS-приложением, с доработкой в чате
  • AI-метаданные для медиа — alt-тексты и подписи для новых загрузок и для уже накопленной библиотеки
  • AI-переводы — автоматический перевод во все локали при обновлении исходной версии

Встроенный MCP-сервер к Strapi AI не относится и лицензии Growth не требует: он бесплатен и работает в Community.


Что изменилось в Strapi 5 за 2026 год

Если вы читали про Strapi год назад, вот сжатая картина обновлений по релизам v5.33–v5.50.

ОбластьЧто появилось
ИИ и агентыВстроенный MCP-сервер (v5.47, GA в v5.49), admin API tokens с ограничением прав по владельцу
РедакторНастраиваемый Blocks editor через API addRichTextBlocks (v5.46): можно добавить свои блоки или убрать лишние
Live previewПредпросмотр видит изображения и видео, ассет меняется прямо в контексте без сохранения (v5.46, требуется Growth)
Content ManagerКолонки, фильтры и сортировка сохраняются между сессиями (v5.36); фильтр и сортировка по статусу публикации (v5.39, v5.45); настройка relationOpenMode (v5.38)
ЗапросыПараметр publicationFilter (v5.47) для выборок поверх черновиков и опубликованных версий
СвязиСамоссылающиеся и скрытые обратные связи переживают публикацию и откат, порядок связей сохраняется при перепубликации
МедиаFocal point, импорт по URL, подписанные URL в Content API, полноценная поддержка S3-совместимых хранилищ
РазработкаEntity Service помечен deprecated в пользу Document Service; флаг --non-interactive в create-strapi-app; Nodemailer v8 в email-провайдере

Безопасность и жизненный цикл версий

13 мая 2026 года Strapi опубликовал скоординированное раскрытие пяти исправленных CVE. Две из них критические: SQL-инъекция в Content-Type Builder (CVE-2026-22599, CVSS 9.3) и утечка чувствительных данных через фильтрацию по связям (CVE-2026-27886). Остальные три — обход rate limit, отсутствие отзыва сессий при сбросе пароля и обход проверки MIME-типа в плагине Upload.

Что из этого следует практически:

  • Если у вас версия ниже v5.37.0, обновляйтесь. Исправления вошли в более ранние релизы, отдельного бэкпорта не будет
  • Смена пароля теперь завершает активные сессии пользователя (v5.33.3)
  • Ограничения по типам загружаемых файлов больше нельзя обойти через Content API (v5.33.3)
  • Обработка параметров запросов ужесточена настройками strictParam, addQueryParams и addInputParams (v5.37)
🔴
Критично: Strapi 4 достиг End of Life 30 апреля 2026 года. Финальный релиз ветки — v4.26.2 от 9 июня 2026 года, новых исправлений и патчей безопасности не будет. В него ещё успели войти отдельные фиксы, включая CVE-2026-27886, но рассчитывать на закрытие следующих находок в четвёртой версии уже нельзя. Миграцию на v5 стоит планировать по официальному гайду.

Когда Strapi — правильный выбор

  • Вам нужен полный контроль над данными и инфраструктурой
  • В команде есть разработчик, который может поддерживать self-hosted решение
  • Бюджет ограничен — Community Edition бесплатна
  • Нужна кастомная бизнес-логика на бэкенде (controllers, services, hooks)
  • Данные должны оставаться на вашем сервере (регуляторные требования, GDPR)

Когда лучше посмотреть на альтернативы

  • Если не хотите заниматься серверами — посмотрите на Sanity (облачная CMS с бесплатным стартовым планом, лимиты уточняйте на сайте)
  • Если у вас уже есть база данных и нужен API поверх неё — Directus
  • Если нужен enterprise с мультиязычностью и governance из коробки — Contentful

Ссылки


По теме

Если вы выбираете CMS для нового проекта или думаете, как перестроить контентную архитектуру на чём-то более управляемом — давайте обсудим.