Self-hosted Contentful alternative: your database as an API with Directus

Every app that shows content — a marketing site, a mobile app, a product catalog, an internal back-office tool — needs somewhere to keep that content and an API to read it back. The hosted headless CMSes solved that, then quietly turned it into a meter: API calls, records, locales, environments, and a price per editor seat. Your content lives in their store, shaped their way, reachable only through their gate. Directus takes the opposite bet — it wraps a SQL database you own and control, and hands you the API, the admin app, and the roles without the per-seat bill.
What Directus is
Directus is a data platform. You point it at a SQL database and it gives you an instant REST and GraphQL API on top of it, plus a full admin app for managing everything inside. It runs against PostgreSQL, MySQL, MariaDB, SQLite, MS SQL Server, OracleDB, and CockroachDB, and it's a mature open-source project — not a proof of concept.
The part that sets it apart: it does not invent its own proprietary content store. Directus introspects your actual database tables and mirrors them. Start from an empty database and build your schema in the UI, or point it at a database you already have and it just works. The mirror runs both ways — add a field in the admin app and it writes a real column; the tables it manages are ordinary tables another service can read from at the same time. Contentful hands you content types behind their API and their paywall, with records, API calls, custom roles, and environments all gated by tier. Directus gives you the same building blocks — collections, fields, relationships, roles, an API — sitting on a database whose rows you can still query with plain SQL any time you want.
The features that actually matter
- Instant REST and GraphQL APIs. Every collection you create is immediately available over both REST and GraphQL, generated automatically from your schema. There is no separate API to write or deploy — the database *is* the API.
- Your existing database, not a proprietary store. Directus reads and mirrors real SQL tables. Your data never becomes hostage to an export format; it is already in a standard database you can back up, query, or migrate without asking anyone.
- The Data Studio admin app. A no-code interface for editing content, building the data model, and browsing relationships. Non-developers get a clean CMS; developers get a schema builder that writes real columns.
- Granular roles and permissions. Role-based access control down to the field, with row-level filters on who can see or edit what. Custom roles and fine-grained permissions are a higher-tier feature in Contentful; here they are just part of the app.
- Flows. A built-in, event-driven automation builder — triggers, webhooks, and operations chained into no-code workflows that fire when data changes, on a schedule, or on demand.
- Assets with on-the-fly image transformations. A file library backed by local disk, S3, GCS, Azure, or Cloudinary, with resizing, cropping, and format changes applied straight from URL parameters.
- Revisions and a full activity log. Every change is versioned with an audit trail, plus content versioning so you can draft and compare before publishing.
- Real-time and SSO. WebSocket and GraphQL subscriptions push live updates, and OpenID Connect, OAuth 2.0, LDAP, and SAML plug into your existing identity provider.
Why self-host it instead of the hosted version
Your data stays in your database. With a hosted CMS, your content sits in someone else's infrastructure, subject to their retention, their access, and their outage window. Self-hosted Directus keeps every row in a database you control, queryable and exportable on your terms — nothing about your content is a black box.
The cost doesn't scale per seat. Hosted platforms charge by editor, by API call, by record count, and by environment, so growth quietly becomes a bigger invoice — and the moment your content matters most is the moment it costs the most to reach. A self-hosted instance costs what the server costs. Add editors, ship more content, and hammer the API as hard as you like — the price does not move because you got popular.
You control the whole thing. Custom extensions, your own branding on the admin app, your choice of storage backend, your own database schema. It is your platform to shape, not a tenant inside someone else's product with the features you actually need parked behind the enterprise tier.
Who it's for
Agencies and developers building sites and apps who need a content backend with a real API and a clean editing UI, without standing up an admin panel from scratch for every project.
Teams that already have a SQL database and want an instant API plus a management interface over it — an internal tool, an ops dashboard, a data-entry app — without hand-writing CRUD endpoints and forms.
Product teams that want to own their content layer, keeping structured content, assets, and access rules in-house rather than renting them by the seat and hoping the export button still works when they leave.
The honest setup notes
Running Directus yourself is real work. It needs a SQL database alongside it, and you are responsible for backing up both that database and the uploaded files in your storage — a snapshot of one without the other is only half a backup. It relies on two configured secrets (`KEY` and `SECRET`) that must be set and kept stable, or existing sessions and tokens break. You will want SMTP configured so invites, password resets, and email steps in Flows actually send. And it is a live application: updates land regularly, and each one is yours to review and apply.
None of that is hard, exactly. It is just steady, and it never really stops — the database, the file store, the mail, the upgrades, the resources they all sit on.
Or let us run it.
Deploy it in one click
Rolling your own means provisioning a host, standing up a database, wiring storage and SMTP, generating secrets, putting a reverse proxy and TLS in front, and owning every upgrade after that. It is a good weekend if everything goes right, and a worse one if it doesn't.
On Caliber Node you deploy Directus in one click instead. We provision the container, attach the database, terminate TLS, and hand you a running Data Studio on your own subdomain — with the operational parts already handled. You still get real logs, SFTP into the files, and full access to your own database. It is managed, not locked down: your instance, your data, our problem to keep running.
First run
- Open your new Data Studio and log in with the admin account created at deploy.
- Create your first collection — an `articles` table, say — or connect to tables you already have.
- Add fields and pick their interfaces: a text input, a WYSIWYG body, a relationship to an author.
- Set a role and its permissions so the right people (and the right tokens) can read and write it.
- Grab a static access token and call the auto-generated `/items/articles` endpoint over REST or GraphQL — your content, live over an API you didn't have to write.
That is a working content API in about five minutes, backed by a database you own outright.
The bigger picture
A content API is infrastructure. It sits under your sites, your apps, and your internal tools, and once it is load-bearing, whoever hosts it holds real leverage over you — on price, on access, on what you're allowed to do with your own content. Owning this layer means the meter stops mattering and the export button stops being a source of anxiety. Directus gives you the whole platform — API, admin, roles, workflows — on a database that is unambiguously yours.
Deploy Directus in a few minutes →
Or browse the full app catalog to see what else you can own instead of rent.
One-click self-hosted apps, managed for you — real logs, SFTP, and your data always exportable. Never a black box.