ru

Directus headless CMS на офшорном NVMe VPS

Directus - headless CMS, которая работает поверх существующей SQL-базы: вы создаёте таблицы напрямую в PostgreSQL или MySQL, а Directus генерирует admin-интерфейс, REST API и GraphQL API автоматически. Это противоположный подход относительно Strapi: в Strapi схема создаётся через admin-панель и хранится в коде, в Directus схема живёт в базе и Directus её визуализирует. Для проектов с существующей базой Directus - самый быстрый способ получить CMS без миграции данных.

Need this done for your project?

We implement, you ship. Async, documented, done in days.

Start a Brief

Database-first архитектура Directus

Принципиальное отличие Directus от других headless CMS - source of truth находится в самой базе данных. Если вы добавляете колонку через миграцию SQL или через pgAdmin, Directus её сразу подхватывает и показывает в admin-интерфейсе. Если меняете тип данных в базе, Directus обновляет поле в коллекции. Это удобно для команд, где DBA работает с базой напрямую, а контент-менеджеры через UI Directus.

Поддерживаются PostgreSQL 12+, MySQL 5.7+, MariaDB, SQLite, OracleDB, MS SQL Server, CockroachDB. Рекомендованная база для production - PostgreSQL 15 или 16 на той же машине, что и Directus, либо на отдельном VPS с приватной сетью. На NVMe SSD PostgreSQL обслуживает 10 000+ запросов в секунду для типичных CMS-нагрузок.

Directus сам по себе - stateless Node.js-приложение, его можно горизонтально масштабировать за reverse proxy, при условии что все инстансы смотрят на одну базу и общий Redis для сессий. Для большинства проектов хватает одного инстанса на VPS Medium (4 vCPU, 8 GB RAM).

Real-time подписки через WebSockets

Directus поддерживает real-time подписки через WebSockets из коробки - подключившись к /websocket эндпоинту, клиент получает события create, update, delete для отслеживаемых коллекций. Это превращает Directus в backend для real-time-приложений: чаты, дашборды, кооперативные редакторы документов, push-уведомления о новых заказах.

WebSockets требуют поддержки long-lived соединений на уровне Nginx (proxy_set_header Upgrade $http_upgrade, proxy_http_version 1.1) и достаточного количества файловых дескрипторов в системе (ulimit -n 65536). На офшорном VPS эти параметры настраиваются root-доступом без участия провайдера, в отличие от shared-хостинга, где WebSockets часто заблокированы или сильно ограничены.

Для масштабирования WebSockets за несколькими инстансами Directus используется Redis pub/sub - события публикуются в Redis, все Directus-инстансы получают и передают подключённым клиентам. Эта схема обслуживает десятки тысяч одновременных WebSocket-соединений на одном VPS Large.

Flows и автоматизация без кода

Directus включает Flows - визуальный конструктор автоматизаций по событиям в данных. Триггер срабатывает на создание, обновление, удаление записи или по cron-расписанию, далее выполняется цепочка операций: отправка email, вебхук во внешний сервис, изменение других записей, генерация PDF, вызов AI-API. Это альтернатива Zapier или n8n внутри самой CMS.

Типичные сценарии: при создании заказа отправить уведомление в Telegram, при загрузке нового медиа автоматически прогнать через AI-генератор alt-текста, при изменении статуса задачи обновить связанные записи и отправить webhook в Slack или Mattermost. На офшорном VPS эти автоматизации работают локально, без зависимости от облачных тарифов внешних SaaS-инструментов.

Для сложной логики, которая выходит за рамки Flows, пишутся custom hooks и endpoints на TypeScript - они подключаются как extensions в директорию extensions/ и подхватываются Directus при старте. Это даёт полную свободу расширения функциональности без форка основного кода Directus.

Why Anubiz Host

100% async — no calls, no meetings
Delivered in days, not weeks
Full documentation included
Production-grade from day one
Security-first approach
Post-delivery support included

Ready to get started?

Skip the research. Tell us what you need, and we'll scope it, implement it, and hand it back — fully documented and production-ready.

Anubiz Chat AI

Online