Strapiv5.59.0

CMS для сайта и приложения: публикации, свои типы контента, медиатека и права редакторов - альтернатива Contentful.

Редакторы ведут материалы в одной админке, а разработчики получают их через REST API для сайта, приложения или витрины. Strapi отделяет контент от оформления: один материал можно использовать на разных площадках, не привязывая редакторов к коду фронтенда. В поставке уже есть пример со статьями, авторами и категориями; собственную структуру данных разработчик готовит в проекте Strapi.

После создания сервера установка занимает несколько минут: готовый образ Strapi и PostgreSQL запускаются без компиляции на вашей машине, Caddy выпускает HTTPS-сертификат на выданное имя сервера. Администратор создается до открытия приложения наружу. Можно сразу войти, заполнить статью и опубликовать ее для получения через API.

Что внутри

Strapi Community Edition 5.59.0
админка, REST API, медиатека и роли; пример Article, Author и Category для первых публикаций.
Node.js 22.23.4
запускает Strapi в режиме production; админка собрана заранее, приложение работает от пользователя node с UID 1000.
PostgreSQL 16.15
хранит материалы, учетные записи и настройки; данные сохраняются в томе strapi-db-data из Compose.
Caddy 2.6.2
принимает запросы по HTTPS и автоматически продлевает сертификат Let's Encrypt.
fail2ban 1.0.2
ограничивает подбор пароля по SSH.

Приложение и база работают в двух контейнерах. Caddy и fail2ban установлены в Ubuntu 24.04 LTS.

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

  • Закрытая регистрацияактивный Super Admin создается установкой до запуска публичного веб-сервиса; посторонний не сможет стать первым администратором или зарегистрироваться через пользовательский API.
  • HTTPSCaddy шифрует вход и запросы к API; сертификат выпускается и продлевается автоматически.
  • Изоляция базыPostgreSQL не публикует порт наружу, Strapi слушает только 127.0.0.1:1337; доступ из интернета идет через Caddy.
  • Уникальные секретыключи приложения и пароль базы генерируются на сервере; файл /opt/strapi/strapi.env доступен только root и не включен в образ.
  • Защита SSHfail2ban блокирует IP на час после пяти неудачных попыток входа за десять минут.
  • Контроль образаустановщик сверяет SHA-256 архива до загрузки; телеметрия Strapi отключена.
  • Исправленный Handlebars 4.7.10закрыта CVE-2026-106446: обработка специально подготовленного шаблона могла привести к выполнению чужого JavaScript на сервере.

Как войти

  1. Адрес строится из IP сервера: замените точки на дефисы и добавьте .fatmetal.net/admin. Например, для IP 45.15.159.10 откройте https://45-15-159-10.fatmetal.net/admin.

  2. Администратор уже создан: логин admin@<выданное имя сервера> без протокола и пути, например admin@45-15-159-10.fatmetal.net. Пароль - пароль сервера из личного кабинета. Введите их на странице входа Strapi; регистрировать первого администратора не нужно.

  3. После входа смените пароль учетной записи Strapi. Для подключения сайта создайте токен в Settings -> API Tokens с нужными правами; не передавайте сайту пароль администратора.

  4. Для первой публикации откройте Content Manager -> Article -> Create new entry, заполните title, slug и короткое description, нажмите Save, затем Publish.

Важно

Это бэкенд контента, готового сайта в поставке нет. Разработчику нужно подключить свой фронтенд к REST API. GraphQL-плагин не установлен. Интерфейс админки - на английском.

В production визуальный Content-Type Builder доступен только для чтения. Для своих типов, полей и связей подготовьте проект в среде разработки, затем разверните его код на сервере. Для этого понадобится разработчик с доступом по SSH; публичный сервис оставляйте в режиме production.

Настройте резервное копирование: сохраняйте дамп базы (команда sudo docker exec strapi-db pg_dump -U strapi strapi > strapi.sql), загрузки из /app/public/uploads контейнера strapi и секреты из /opt/strapi/strapi.env. Загрузки находятся в томе strapi-uploads из Compose. Храните копии вне сервера; рецепт не создает их по расписанию.

Лицензия

Community Edition распространяется по MIT и допускает коммерческое использование. Корпоративные функции, включая SSO и журнал аудита, требуют отдельной коммерческой лицензии Strapi; в эту поставку они не входят.

Свой домен

  1. Направьте A-запись своего домена, например cms.example.ru, на публичный IP сервера.
  2. Дождитесь обновления DNS: команда ping cms.example.ru должна показывать IP вашего сервера. Пока адрес не совпадает, переходить к следующему шагу рано.
  3. Подключитесь к серверу по SSH и выполните sudo /opt/strapi/set-domain.sh cms.example.ru, подставив свой домен без протокола и пути. Дождитесь сообщения «Готово»: скрипт обновит адрес приложения и Caddy, сертификат выпустится автоматически.
  4. Откройте https://cms.example.ru/admin. Логин остается прежним: admin@<первоначальное выданное имя сервера>, например admin@45-15-159-10.fatmetal.net, а не адрес на новом домене. Пароль Strapi тоже сохраняется; если вы его еще не меняли, это пароль сервера из личного кабинета. Материалы и загрузки сохраняются.

Требования

Тариф CPU2-RAM4-DISK50 подходит для начала работы с редакторами и подключения первого сайта: рецепт с PostgreSQL 16 прошел на этой конфигурации. Исторический замер процесса Strapi 5.52.2 - около 270 МиБ в простое, без PostgreSQL; это не потребление всего комплекта 5.59.0. При росте числа одновременно работающих редакторов и запросов к API выбирайте CPU4-RAM8-DISK100. Для доступа и выпуска сертификата оставьте открытыми порты 80/443.

Подробный разбор с замерами в Базе знаний →
Strapi450 ₽/месЗапустить →