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 на сервере.
Как войти
Адрес строится из IP сервера: замените точки на дефисы и добавьте
.fatmetal.net/admin. Например, для IP45.15.159.10откройтеhttps://45-15-159-10.fatmetal.net/admin.Администратор уже создан: логин
admin@<выданное имя сервера>без протокола и пути, напримерadmin@45-15-159-10.fatmetal.net. Пароль - пароль сервера из личного кабинета. Введите их на странице входа Strapi; регистрировать первого администратора не нужно.После входа смените пароль учетной записи Strapi. Для подключения сайта создайте токен в
Settings -> API Tokensс нужными правами; не передавайте сайту пароль администратора.Для первой публикации откройте
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; в эту поставку они не входят.
Свой домен
- Направьте
A-запись своего домена, напримерcms.example.ru, на публичный IP сервера. - Дождитесь обновления DNS: команда
ping cms.example.ruдолжна показывать IP вашего сервера. Пока адрес не совпадает, переходить к следующему шагу рано. - Подключитесь к серверу по SSH и выполните
sudo /opt/strapi/set-domain.sh cms.example.ru, подставив свой домен без протокола и пути. Дождитесь сообщения «Готово»: скрипт обновит адрес приложения и Caddy, сертификат выпустится автоматически. - Откройте
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.