Уявіть: ви розгорнули Directus через npx, швидко отримали адмінку, а через місяць при зростанні трафіку сайт ліг через відсутність кешу — і медіафайли загубилися при збої диска. Саме такі ситуації підштовхують до продакшен-деплою з Docker, PostgreSQL та S3. У цій статті — перевірений шаблон налаштування, який ми застосовуємо в багатьох проєктах, від корпоративних порталів до high-load API. Directus — headless CMS, яка надає REST та GraphQL API на льоту, без генерації. За тестами, швидкість відповіді API у 2–3 рази вища, ніж у Strapi, завдяки відсутності ORM-прошарків. Для продакшену ми завжди використовуємо Docker — це гарантує ізоляцію, відтворюваність і простоту масштабування.
Чому варто обрати Directus для продакшену?
Directus — не чергова CMS. Це headless-платформа, яка надає REST та GraphQL API на льоту, без генерації. Ви інтегруєте її в будь-яку існуючу базу — не потрібно мігрувати дані. Згідно з відгуками, швидкість розробки зростає вдвічі порівняно з традиційними CMS. Нещодавно ми розгортали Directus для великого інтернет-магазину з каталогом 50 000 товарів. Після міграції з WordPress на Directus час завантаження сторінки каталогу скоротився з 3 секунд до 400 мс завдяки використанню Redis-кешу та SSR на Nuxt 3. Це реальний приклад: швидкість API зросла втричі, а вартість інфраструктури знизилася через відмову від моноліту. Отримайте консультацію інженера з вибору headless CMS для вашого проєкту.
Як розгорнути Directus у продакшені з Docker?
Процес включає п'ять обов'язкових етапів:
- Аудит завдань — визначаємо навантаження, обсяг контенту, вимоги до API.
- Вибір стеку — Docker + PostgreSQL + S3 (або Cloudflare R2 для дешевого зберігання).
- Розгортання — пишемо
docker-compose.yml, налаштовуємо Redis для кешування, підключаємо CDN. - Конфігурація середовища — змінні SECRET, CORS, email, storage.
- Передача під ключ — документація, доступи, навчання команди.
Швидкий старт: через npx
npx create-directus-project@latest my-directus # Питання: # Database: PostgreSQL # Host: localhost # Port: 5432 # Database name: directus # Username: directus # Password: ... # Admin email: [email protected] # Admin password: ... cd my-directus npx directus start Цей спосіб підходить для розробки, але не для продакшену — немає ізоляції, складно масштабувати.
Docker-деплой (рекомендується)
Приклад готового docker-compose.yml:
version: '3' services: directus: image: directus/directus:10.latest restart: unless-stopped ports: - "8055:8055" volumes: - ./uploads:/directus/uploads - ./extensions:/directus/extensions environment: SECRET: ${SECRET} DB_CLIENT: pg DB_HOST: postgres DB_PORT: 5432 DB_DATABASE: ${DB_NAME} DB_USER: ${DB_USER} DB_PASSWORD: ${DB_PASSWORD} ADMIN_EMAIL: ${ADMIN_EMAIL} ADMIN_PASSWORD: ${ADMIN_PASSWORD} PUBLIC_URL: https://cms.example.com CORS_ENABLED: true CORS_ORIGIN: https://example.com CACHE_ENABLED: true CACHE_STORE: redis REDIS_HOST: redis REDIS_PORT: 6379 STORAGE_LOCATIONS: local STORAGE_LOCAL_DRIVER: local STORAGE_LOCAL_ROOT: /directus/uploads depends_on: postgres: condition: service_healthy postgres: image: postgres:15-alpine restart: unless-stopped environment: POSTGRES_DB: ${DB_NAME} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"] interval: 10s redis: image: redis:alpine restart: unless-stopped volumes: postgres_data: Як налаштувати сховище та кеш?
Сховище S3
Для продакшену обов'язково використовувати зовнішнє сховище. Приклад змінних:
STORAGE_LOCATIONS=s3 STORAGE_S3_DRIVER=s3 STORAGE_S3_KEY=ACCESS_KEY STORAGE_S3_SECRET=SECRET_KEY STORAGE_S3_BUCKET=my-bucket STORAGE_S3_REGION=eu-west-1 STORAGE_S3_ENDPOINT=https://s3.amazonaws.com # Для Cloudflare R2: # STORAGE_S3_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com # STORAGE_S3_REGION=auto Порівняння сховищ:
| Сховище | Ціна (за 1 ТБ/міс) | Продуктивність | Георозподіл |
|---|---|---|---|
| S3 | ~$23 | Висока | Так |
| Cloudflare R2 | ~$0 (без трафіку) | Висока | Так |
| Локальний диск | безкоштовно | Низька | Ні |
Замовте індивідуальне налаштування сховища — ми підберемо оптимальний варіант для вашого проєкту.
Кешування з Redis
Redis обов'язковий для продакшену: кеш знижує навантаження на БД на 60–80%. Налаштування вже включено в docker-compose.yml. Додатково можна задати CACHE_TTL (за замовчуванням 5 хвилин). Для підвищення продуктивності використовуйте Redis Cluster при високих навантаженнях. Для кластера потрібно налаштувати кілька вузлів — це дає горизонтальне масштабування та відмовостійкість.
| Параметр | Значення | Опис |
|---|---|---|
| CACHE_TTL | 300 | Час життя кешу в секундах |
| CACHE_STORE | redis | Тип сховища |
| REDIS_HOST | redis | Хост Redis |
Які проблеми вирішує Directus?
Directus вирішує проблему зв'язування бекенду з фронтендом, надаючи гнучке API. Він особливо корисний, коли потрібно швидко вивести продукт з кастомною структурою даних. Наприклад, для маркетплейсу з різними типами товарів не потрібно писати окремі контролери — Directus генерує ендпоінти автоматично.
Типові помилки при встановленні Directus
- Використання npm без Docker — проблеми з масштабуванням і оновленнями.
- Пропуск налаштування CORS — помилки CORS на фронтенді.
- Зберігання медіа в локальній файловій системі — втрата даних при збої.
- Відсутність кешу — повільна відповідь API при 100+ запитах на секунду.
- Неправильна генерація SECRET — вразливість до CSRF-атак.
- Відсутність моніторингу — проблеми з продуктивністю залишаються непоміченими.
Що входить у роботу з налаштування Directus?
У рамках послуги ви отримуєте:
- Повністю налаштований продакшен-стек: Docker, PostgreSQL, Redis, S3.
- Конфігурацію з урахуванням вашого навантаження (балансування, CDN).
- Документацію з розгортання та обслуговування.
- Доступи до адмін-панелі, API-токени.
- Навчання команди (2 години онлайн).
- Підтримку 2 тижні після запуску.
Цей набір покриває 90% типових проєктів. Для нетипових — індивідуальний аудит.
Строки та вартість
Базова установка з Docker, PostgreSQL, S3 та базовою конфігурацією займає від 2 до 4 годин. Складні проєкти (кастомні розширення, SSO, міграція даних) — від 1 до 5 днів. Вартість розраховується індивідуально після аудиту. Отримайте консультацію інженера — оцінимо проєкт за 1 день. Зв'яжіться з нами для обговорення деталей.







