Большая подборка стилей инфографики для NotebookLM и нейрогенераторов. 17 уникальных визуальных подходов — от ретро-комиксов до киберпанка.
База знаний
Strapi — open-source Headless CMS для тех, кто хочет владеть своими данными
Полный разбор Strapi 5: что это, как устроена архитектура, какие API доступны из коробки, как деплоить, сколько стоит и когда Strapi — правильный выбор, а когда лучше посмотреть в сторону облачных CMS.
Strapi — самая популярная open-source Headless CMS на Node.js. Вы разворачиваете её на своём сервере, данные хранятся в вашей базе, а контент отдаётся через REST и GraphQL API. По сути — готовый бэкенд для управления контентом, который можно подключить к любому фронтенду.
Зачем вообще нужна Headless CMS
Если коротко: Headless CMS — это когда контент хранится отдельно от фронтенда и отдаётся через API. Вы сами решаете, на чём строить сайт — Next.js, Astro, мобильное приложение или что-то ещё. CMS при этом отвечает только за хранение и редактирование контента.
Strapi — один из главных игроков в этой категории. Отличается тем, что это не облако, а софт, который вы ставите к себе. Для кого-то это преимущество (полный контроль), для кого-то — дополнительная ответственность (нужен сервер, нужны обновления).
Как устроена архитектура
Strapi состоит из двух частей:
- Backend — Node.js-приложение, которое обрабатывает запросы, управляет данными и генерирует API
- Admin Panel — React-приложение, через которое контент-менеджеры работают с материалами
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 и другие.
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,categoryGraphQL
Доступен через плагин @strapi/plugin-graphql:
query {
articles(sort: "publishedAt:desc", pagination: { limit: 10 }) {
title
slug
content
author {
name
avatar { url }
}
}
}Плагины
У Strapi развитая экосистема. Плагины ставятся через npm.
Встроенные
- Content Manager — основной интерфейс управления контентом
- Content-Type Builder — визуальный конструктор моделей
- Media Library — управление файлами, изображениями, видео
- i18n — мультиязычность контента
- Users & Permissions — управление доступом к API
- Email — отправка email через Nodemailer
Популярные сторонние
| Плагин | Зачем | Установка |
| SEO | Meta-теги, Open Graph | npm i @strapi/plugin-seo |
| GraphQL | GraphQL API поверх REST | npm i @strapi/plugin-graphql |
| Slugify | Автогенерация slug | npm i strapi-plugin-slugify |
| Sitemap | Автогенерация sitemap.xml | npm i strapi-plugin-sitemap |
| Meilisearch | Полнотекстовый поиск | npm i strapi-plugin-meilisearch |
Полный каталог — на market.strapi.io. Можно создавать свои плагины через Plugin SDK.
Мультиязычность (i18n)
Strapi поддерживает мультиязычность из коробки:
- В Settings → Internationalization добавляете нужные локали (ru, en, de...)
- В Content-Type Builder включаете i18n для контент-типа
- Для каждого поля решаете, нужна ли локализация
- В Content Manager переключаетесь между языками и заполняете контент
# Получить контент на конкретном языке
GET /api/articles?locale=ruМедиа-библиотека
Встроенная система управления файлами: загрузка, папки, миниатюры, поиск. С версии 5.34 — AI-генерация alt-текстов для изображений.
Где хранить файлы:
- Local — на сервере (по умолчанию, но при рестарте контейнера файлы могут пропасть)
- AWS S3 —
@strapi/provider-upload-aws-s3(рекомендуется для продакшена) - Cloudinary —
@strapi/provider-upload-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, уведомления, инвалидация кэша)
// Пример: автогенерация 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
# Запустить
cd my-project && npm run developОткройте http://localhost:1337/admin, создайте первого администратора — и можно работать.
Деплой
| Платформа | Сложность | Цена | Особенности |
| Strapi Cloud | Низкая | от $29/мес | Деплой из Git, managed-инфраструктура |
| Railway | Низкая | По потреблению | One-click deploy, PostgreSQL в комплекте |
| Render | Низкая | от $7/мес | Auto-deploy из Git |
| Docker (VPS) | Средняя | от $5/мес | Полный контроль, нужны DevOps-навыки |
| AWS / GCP | Высокая | Варьируется | Максимальная гибкость |
Требования к серверу (VPS)
Если разворачиваете Strapi на своём сервере — вот на что ориентироваться:
| Параметр | Минимум | Рекомендуется |
| CPU | 1 ядро | 2+ ядра |
| RAM | 2 ГБ | 4 ГБ+ |
| Диск | 8 ГБ | 32 ГБ+ (SSD/NVMe) |
Софт
- Node.js — только Active LTS или Maintenance LTS (v20, v22, v24). Нечётные версии (v23, v25) не поддерживаются
- База данных — PostgreSQL или MySQL для продакшена. SQLite подходит только для разработки
- build-essentials — стандартный набор сборочных утилит (для Debian/Ubuntu)
- ОС — Ubuntu ≥ 18.04 LTS, Debian ≥ 9.x, CentOS/RHEL ≥ 8 или Docker
Производительность: что стоит настроить
- Reverse Proxy (Nginx) — кэширование, SSL, gzip. Обязательно в продакшене
- CDN (Cloudflare) — если аудитория глобальная
- Pagination — всегда, не загружайте всё разом
- Selective populate — загружайте только нужные связи (по умолчанию Strapi не грузит связанные данные, и это хорошо)
- Redis — кэширование API-ответов при высокой нагрузке
- Database indexes — для больших таблиц и сложных фильтров
Тарифы
| Вариант | Цена | Что включено |
| Community (self-hosted) | Бесплатно навсегда | Полный функционал, REST + GraphQL, плагины, i18n |
| Strapi Cloud | от $29/мес | Managed hosting, deploy из Git |
| Enterprise | По запросу | SSO, Audit Logs, Review Workflows, SLA |
Интеграция с фронтенд-фреймворками
| Фреймворк | Интеграция | Примечание |
| Next.js | REST/GraphQL + @strapi/client | SSG, SSR, ISR — все режимы |
| Astro | REST/GraphQL | Отлично для статических сайтов |
| Nuxt 3 | REST/GraphQL + @strapi/client | Nuxt Content Module совместим |
| Mobile | REST API | Любой HTTP-клиент |
Strapi AI
В версии 5 появились встроенные AI-функции:
- Генерация контента прямо в админ-панели — создание текстов для полей
- AI-метаданные для медиа — автоматическая генерация alt-текстов (с версии 5.34)
- Content Modeling с AI — помощь в проектировании структуры контента
Когда Strapi — правильный выбор
- Вам нужен полный контроль над данными и инфраструктурой
- В команде есть разработчик, который может поддерживать self-hosted решение
- Бюджет ограничен — Community Edition бесплатна
- Нужна кастомная бизнес-логика на бэкенде (controllers, services, hooks)
- Данные должны оставаться на вашем сервере (регуляторные требования, GDPR)
Когда лучше посмотреть на альтернативы
- Если не хотите заниматься серверами — посмотрите на Sanity (облачная CMS с щедрым бесплатным планом)
- Если у вас уже есть база данных и нужен API поверх неё — Directus
- Если нужен enterprise с мультиязычностью и governance из коробки — Contentful
Ссылки
- Сайт: strapi.io
- Документация: docs.strapi.io
- GitHub: github.com/strapi/strapi
- Маркетплейс плагинов: market.strapi.io
- Strapi Cloud: cloud.strapi.io
По теме
- Статья: Как мы переделывали главную pimenov.ai: от оценки Comet до нового визуального языка
- Блог: Почему личный сайт — это не визитка, а основа всей публичной системы
- База знаний: EmDash — open-source CMS от Cloudflare на базе Astro
Если вы выбираете CMS для нового проекта или думаете, как перестроить контентную архитектуру на чём-то более управляемом — давайте обсудим.