Directus Installation and Setup
Directus is installed as a Node.js application or via Docker. Connects to PostgreSQL, MySQL/MariaDB, SQLite, MS SQL Server, or Oracle.
Requirements
- Node.js 18.x or 20.x
- PostgreSQL 10+ / MySQL 8+ / SQLite 3
Installation via npx
npx create-directus-project@latest my-directus
# Questions:
# 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 (recommended for production)
# 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
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
# For Cloudflare R2:
# STORAGE_S3_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
# STORAGE_S3_REGION=auto
EMAIL_TRANSPORT=smtp
EMAIL_SMTP_HOST=smtp.mailgun.org
EMAIL_SMTP_PORT=587
[email protected]
EMAIL_SMTP_PASSWORD=smtp-password
[email protected]
Static Token for Server Requests
In Admin → Users → Admin → create Static Token. Add to .env of frontend:
DIRECTUS_URL=http://localhost:8055
DIRECTUS_STATIC_TOKEN=your-static-token
Timeline
Installing Directus with Docker, PostgreSQL, S3, and basic configuration — 2–4 hours.







