Команда инженеров · свой ЦОД в РФ · своё железо · своя панель · CloudStack + Linstor · MCP · база знаний по self-hosted
Headless CMS

Strapi

Strapi - самый популярный self-hosted headless CMS: описываете типы контента в визуальном конструкторе, а он сам поднимает REST и GraphQL API, админку с ролями и медиатеку. Развернули v5.52.2 на RU-VPS с PostgreSQL, поставили за TLS и замерили ресурсы.

Сентябрь 2026 ~10 минут чтения Fatmetal Team
Headless CMS Лицензия: MIT (ядро) Статус: запущен у нас, v5.52.2

Вердикт

Подходит
  • командам, которым нужен свой контент-бэкенд под сайт, мобильное приложение или несколько витрин сразу
  • разработчикам, кому важен API-first: REST и GraphQL из коробки, свой фронтенд на чем угодно
  • тем, кто уходит от облачных CMS с оплатой за записи и seat и хочет данные у себя
Не подходит
  • если нужен готовый сайт «из коробки» с темами - Strapi не имеет фронтенда, только API
  • под простой блог одному человеку - избыточно, проще классическая CMS
  • если нет ни одного разработчика в команде
Мин. тариф: CPU2-RAM4-DISK50 Рекомендуем: CPU2-RAM4-DISK50 Сложность: medium RAM в простое: ~270 MiB + Postgres Главный риск: Content-Type Builder в prod только на чтение Прод-готовность: да (Postgres + TLS + свои секреты)
Что это

Что это и какую задачу решает

Strapi - это headless CMS: система управления контентом без своего фронтенда. Вы описываете структуру данных (статьи, товары, страницы, авторов), а Strapi генерирует под нее админку для редакторов и API для разработчиков. Фронтенд - сайт, мобильное приложение, витрина - вы делаете отдельно на любом стеке и берете контент через API. Это ключевое отличие от классической CMS вроде WordPress, где бэкенд и фронт слиты воедино.

Главный инструмент - визуальный Content-Type Builder: добавляете поля мышкой, и Strapi сразу поднимает под них REST-эндпоинты, GraphQL-схему, ролевой доступ (RBAC) и медиатеку для файлов. Продукт с открытым кодом (73k звезд на GitHub, ядро под MIT), поэтому данные и API живут на вашем сервере - без лимитов на количество записей и без абонплаты за каждого редактора, как у облачных Contentful или Sanity.

Node.js 22TypeScriptKoaPostgreSQLReact (админка)Docker
Сравнение

Чем отличается от облачных аналогов

Сравнение с Contentful - зрелым облачным headless CMS - по тому, что влияет на выбор.

ПараметрStrapi (self-hosted)Contentful (SaaS)
Модель ценыбесплатно, платите только за серверподписка, рост по числу записей и мест
Где данныена вашем сервере, свой Postgresв облаке вендора
Лимиты на записи/APIнет, ограничены только железомпо тарифу
Vendor lock-inнет, полный доступ к коду и БДданные и модель у вендора
APIREST + GraphQL (плагин)REST + GraphQL
Кастомизациясвои плагины, хуки, полный кодв рамках платформы
Под капотом

Тех-стек и архитектура

Strapi v5 написан на Node.js и TypeScript, сервер - на Koa. Админка - SPA на React, отдается тем же процессом на порту 1337. База данных подключается через DATABASE_CLIENT: по умолчанию SQLite, но для продакшена берут PostgreSQL или MySQL. В нашей карте продукт посажен на PostgreSQL 16 - на первом старте Strapi сам создает схему (у нас поднялась 41 таблица).

В карте маркетплейса все разложено на три контейнера: strapi (приложение, слушает только localhost), strapi-db (PostgreSQL 16, данные в отдельном томе) и caddy (реверс-прокси с автоматическим TLS от Let's Encrypt). Наружу открыт только 443 - админка и API доступны по HTTPS, сам Strapi на публичный порт не смотрит.

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

Минимальная конфигурация

Реальные требования против официального минимума.

Официальный минимум RAM2 GB
Реально в простое (Strapi)~270 MiB
Реально с Postgresоколо 0.7-1 GB суммарно
Что ест ресурсразовая сборка админки (node_modules ~725 МБ)
Рекомендуем тарифCPU2-RAM4-DISK50
Тариф FatmetalCPU2-RAM4-DISK50 - 500 ₽/мес
i

Важно: рантайм Strapi легкий, но сборка админки тяжелая - она упирается в диск и память. Поэтому в карте маркетплейса образ уже собран заранее и на сервере клиента только загружается (docker load), ничего не компилируется. Для ручной установки на CPU2-RAM4-DISK50 сборки хватает, на 1 GB - уже впритык.

В маркетплейсе Fatmetal

Не хотите ставить руками?

Strapi есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий Strapi с PostgreSQL на своем домене, валидный TLS и файл с доступами.

Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес

Развернуть в 1 клик →
Развертывание

Развертывание на Fatmetal

Базовый путь для ручной установки - Cloud Server + Ubuntu 24.04 + Docker.

  1. Создать VM

    Тариф CPU2-RAM4-DISK50, Ubuntu 24.04, приложение Docker. Открыть порты 80 и 443.

  2. Создать проект Strapi

    Node.js должен быть версии 22.13 и выше (на Node 20 будет предупреждение EBADENGINE).

    npx create-strapi-app@latest myapp --quickstart
  3. Переключить на PostgreSQL

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

    DATABASE_CLIENT=postgres
    DATABASE_HOST=localhost
    DATABASE_NAME=strapi
    DATABASE_USERNAME=strapi
    DATABASE_PASSWORD=пароль
    
    npm run build
    npm run start

    Проверка: curl localhost:1337/admin должен вернуть 200.

  4. Поставить за TLS

    Реверс-прокси Caddy на 127.0.0.1:1337 с автоматическим Let's Encrypt - админка и API открываются по HTTPS.

  5. Зарегистрировать администратора

    Открыть /admin - первый экран это форма создания первого администратора.

Экран регистрации первого администратора Strapi
Первый экран Strapi v5.52.2 - регистрация первого администратора.
Админ-панель Strapi после входа
Админ-панель после входа - виджеты, профиль, последние записи (v5.52.2, CPU2-RAM4-DISK50).
Content-Type Builder в Strapi
Content-Type Builder - конструктор типов контента (в prod-режиме открыт на чтение).
Замеры

Что измерили после запуска

Цифры со свежей установки, без нагрузки. Только реальные замеры.

Сборка админки (strapi build)~28.6 c
Первый старт (создание схемы в Postgres)~30-90 c
Таблиц создано в БД41
RAM в простое (процессы Strapi)~270 MiB
Отклик /admin локально~16 мс
Отклик /admin по HTTPS (magic-DNS)~0.57 c
Образ приложения на диске2.18 ГБ (архив 483 МБ)
i

Главное: сам Strapi в работе легкий - около 270 MiB. Вся тяжесть в разовой сборке админки и в размере node_modules (~725 МБ), поэтому образ большой. В карте маркетплейса это решено пре-сборкой: клиент получает готовый образ, а не компилирует у себя.

Проверено на версии v5.52.2, сентябрь 2026. На новых версиях результаты могут отличаться.

Подводные камни

Где может сломаться

Реальные грабли, на которые наткнулись при запуске.

Content-Type Builder в продакшене только на чтение

При NODE_ENV=production Strapi запрещает менять структуру данных через админку - конструктор типов открыт лишь на просмотр. Типы контента создают в dev-режиме (npm run develop), а на прод выкатывают вместе с кодом. Это защита от случайных правок схемы на живой базе, а не баг.

Русский интерфейс не включен по умолчанию

Свежая админка идет только с английским. Русская локаль в комплекте - включается в Settings → Administration panel, там же можно задать язык по умолчанию для всех редакторов.

npm warn EBADENGINE Unsupported engine { required: { node: '>=22.13' }, current: { node: 'v20.x' } }

Причина. Strapi v5.52 требует Node.js 22.13 и выше. На Node 20 проект соберется, но с предупреждением, и часть функций может вести себя нестабильно.

Решение. Ставить Node.js 22 LTS. В карте маркетплейса образ уже собран на Node 22, поэтому вопрос не встает.

!

Docker Hub из РФ. При установке с нуля образ postgres:16 с Docker Hub часто отваливается по таймауту. В нашем установщике на этот случай зашит retry-pull - тянет с повторами, пока не получится.

Безопасность

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

У Strapi своя аутентификация: первый экран /admin - регистрация администратора, дальше вход по email и паролю. Секреты приложения (APP_KEYS, JWT_SECRET, ENCRYPTION_KEY) генерируются при установке, а не вшиты в образ. Токены для внешних приложений выдаются в админке в Settings → API Tokens с точной областью доступа.

Обновление проекта до свежей версии:

npx @strapi/upgrade latest

Бэкап базы и загрузок:

docker exec strapi-db pg_dump -U strapi strapi > backup.sql
Рядом

Связь с другими стеками

  • Обратный прокси - Caddy или Traefik для TLS перед админкой и API.
  • База данных - PostgreSQL для продакшена вместо файлового SQLite.
  • Хранилище файлов - S3-совместимое хранилище для медиатеки через провайдер-плагин.
  • Бэкапы - pg_dump по расписанию плюс выгрузка тома с загрузками.
Оценка

Когда это НЕ ваш выбор

Нужен готовый сайт, а не API

Strapi не отдает готовые страницы - только контент через API. Если нужен сайт с темами и визуальным редактором из коробки, смотрите в сторону классической CMS.

Нет разработчика

Чтобы забрать контент из API и собрать фронтенд, нужен разработчик. Для проекта без технической команды headless-подход избыточен.

FAQ

Частые вопросы

Чем headless CMS отличается от WordPress?

Strapi дает только контент-бэкенд и API, а фронтенд вы делаете сами на любом стеке. WordPress совмещает бэкенд и готовый сайт в одном.

Хватит ли 2 GB RAM?

Для работы - да, рантайм Strapi около 270 MiB. Узкое место - сборка админки, поэтому рекомендуем CPU2-RAM4-DISK50.

Есть ли GraphQL?

Да, добавляется плагином @strapi/plugin-graphql. REST-API работает сразу без плагинов.

Почему нельзя создать тип контента в продакшене?

Content-Type Builder в prod-режиме открыт только на чтение. Модель данных меняют в dev-режиме и деплоят вместе с кодом.

Можно ли на PostgreSQL вместо SQLite?

Да, и для продакшена так и нужно. В карте маркетплейса Strapi уже посажен на PostgreSQL 16.

Как делать бэкап?

pg_dump базы плюс выгрузка тома с загрузками (strapi-uploads).

Какие ограничения лицензии?

Ядро (Community Edition) под MIT, свободно в том числе коммерчески. Часть enterprise-функций (SSO, аудит, расширенный RBAC) - под коммерческой лицензией, но для своего контент-бэкенда они не нужны.

Итог

Strapi - зрелый и самый популярный self-hosted headless CMS: визуальный конструктор типов контента, REST и GraphQL API, ролевой доступ и медиатека. Рантайм легкий (~270 MiB), для продакшена сажаете на PostgreSQL и ставите за TLS. Подходит командам с разработчиком, которым нужен свой контент-бэкенд без облачных лимитов и вендор-лока. На CPU2-RAM4-DISK50 разворачивается за пару минут, а в маркетплейсе Fatmetal образ уже собран - компилировать ничего не нужно.

Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe

Не хотите устанавливать вручную?

Запустите Strapi на этой конфигурации автоматически - от 450 ₽/мес.

Запустить Strapi →
Анонсы новых разборов в Telegram-канале Новые гайды и карточки в маркетплейсе первыми @fatmetal_channel →

Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.