Strapi — Headless CMS (система управления контентом без встроенного фронтенда) с открытым исходным кодом на Node.js. В отличие от WordPress или 1С-Битрикс, Strapi не рендерит HTML — она предоставляет только REST API и GraphQL API для доступа к контенту. Фронтенд строится отдельно на любом фреймворке.
Как работает
Strapi позволяет через административную панель создавать «Content Types» (типы контента) с нужными полями: текст, изображение, число, отношения (relation). После создания типа Strapi автоматически генерирует REST-эндпоинты и GraphQL-схему. Пример: создаёте тип «Article» с полями title (string), body (richtext), cover (media) — и сразу получаете GET /api/articles.
База данных: SQLite (по умолчанию для разработки), PostgreSQL или MySQL для production. ORM — Bookshelf.js (Strapi v3) или Knex.js-based (Strapi v4). Плагины расширяют функциональность: i18n, SEO, email, File Upload.
История
Strapi основана французской командой в 2015 году. Первые версии — Node.js-генератор API. Strapi v3 (2020) принёс переработанный UI и плагин-систему. Strapi v4 (2022) — новую архитектуру контент-типов, улучшенный GraphQL и поддержку TypeScript. В 2021 году Strapi привлекла $10 млн в Series A. Лицензия MIT для Community Edition.
Связь с хостингом
Strapi развёртывается на VPS как Node.js-процесс под управлением PM2. Nginx выступает reverse proxy. Типовой деплой: npm run build && pm2 start npm --name strapi -- start. В production Strapi требует 512 МБ — 1 ГБ ОЗУ. Для статических фронтендов (Next.js, Gatsby) Strapi часто деплоится отдельно от публичного сайта — на VPS, тогда как фронтенд размещается на CDN или Vercel.
Архитектура Strapi
Strapi — Headless CMS на Node.js (Koa.js). Content API доступен через REST или GraphQL. Admin Panel — React SPA. Content Types Builder — визуальное создание схем данных. Поддерживает PostgreSQL, MySQL, SQLite. Strapi v4 (2021) — переработанная архитектура с плагинами.
Деплой Strapi на VPS
Node.js 18 LTS + PostgreSQL 14+. Запуск через PM2: pm2 start npm --name "strapi" -- run start. Nginx как reverse proxy на порт 1337. NODE_ENV=production — обязательно. Медиафайлы лучше вынести на Cloudflare R2 или AWS S3.
Strapi как Backend for Frontend
Strapi + Next.js или Nuxt.js — популярная связка для JAMstack-сайтов. Webhook при изменении контента → ISR (Incremental Static Regeneration) на фронте. GraphQL-API удобен для мобильных приложений с выборочным получением данных.
Strapi Plugins и кастомизация
Strapi плагин-система: Custom Controllers, Services, Middlewares. Написать кастомный эндпоинт: src/api/product/controllers/product.ts. GraphQL плагин: @strapi/plugin-graphql. I18n плагин: мультиязычные записи. Users-Permissions: JWT, OAuth (Google, GitHub). Custom Fields через плагины Marketplace.
Strapi и GDPR
Strapi не хранит IP-адреса пользователей по умолчанию. GDPR plugin добавляет: согласие на обработку, экспорт данных, удаление. Audit Log plugin: кто и когда изменил запись. Для 152-ФЗ: размещайте Strapi в российских дата-центрах если обрабатываете персданные граждан РФ.