Managed Directus hosting

Workflow and dataOn-prem or sovereign site

A data platform and headless CMS over your own SQL database. Editors get an admin app, and every table gets an API. Pilae runs it on your own servers, or in Zurich, Switzerland, and eleven other Pilae Cloud regions.

Talk to us about Directus

Licence
BSL 1.1
Runs on
Your own hardware, or any of twelve Pilae regions — six of them in Switzerland and the EU
Upgrades
Pinned, tested against your configuration, applied in your window
Upstream
directus.io

Running Directus in production: what it takes

  1. Pin and deploy

    A Directus version we have run, on PostgreSQL, with Redis and an S3-compatible bucket from the first day rather than local disk.

  2. Keep the schema in a file

    We export a schema snapshot to your repository after every model change. A second environment, or a rebuild, applies that file instead of repeating clicks in the admin app.

  3. Connect sign-on

    Editors sign in through Keycloak or Entra ID, and their groups map to Directus policies, so a leaver loses publishing rights with everything else.

  4. Back up and restore on a schedule

    The database, the asset bucket and the signing secrets go offsite nightly. Once a month we restore them into a scratch environment and load a page through the restored API.

  5. Upgrade in your window

    Directus upgrades run database migrations. We apply each release to a copy of your schema first, then to production in the window you agreed, with a backup taken just before.

What Directus is, and who runs it

A headless CMS over your own SQL database

Directus is a data platform. Point it at a SQL database and it gives you two things: an admin app where editors create and publish content, and a REST and GraphQL API that serves that content to websites, mobile apps and internal tools. Each collection in the admin app is a table you can query directly. Nothing is stored in a format only Directus can read.

That is the difference from Contentful. A hosted CMS keeps your content inside its platform and lends it back through an API with plan limits on records, locales and users. With Directus the content sits in PostgreSQL, next to the rest of your data, and a reporting tool such as Metabase can read it without an export.

Directus operated in Pilae Cloud or on your servers

We run Directus on your premises or in Pilae Cloud, on dedicated machines in any of 12 regions, six of them in Switzerland and the EU. The admin app answers only on your private network. The public API goes through one hardened gate, with the tokens and rate limits you set. The Pilae Agent plans each upgrade, waits for your approval and applies it in your window after a verified backup.

Directus licence: BSL 1.1, stated plainly

Whether Directus costs you a licence depends on the threshold set out below. If you need a data layer with a fully open licence, we will say so and propose one.

Pricing for a managed Directus deployment is on request. Tell us what you publish and we will return a fixed-price onboarding plan.

Directus is published under the Business Source License 1.1, not an open-source licence. It is free to use in production for organisations below the revenue threshold Directus sets, which counts annual revenue and funding together. Larger organisations need a commercial licence from Directus. We check which side of the line you sit on before deployment and state the answer in your proposal.

Directus system requirements

Before anything is deployed, this is what has to exist. We size it with you in the first session, and we say so when your own hardware is already enough.

CPU and memory
2 vCPU · 4 GBFor one instance serving editors and an API. Public traffic at scale adds instances behind a shared cache, which is the same image again.
Database
PostgreSQL 15+Directus supports several SQL engines. We run it on PostgreSQL, because your content then sits in a database your other tools can already query.
Cache
RedisCaches API responses and keeps rate limits and sessions consistent once there is more than one instance.
File storage
S3-compatible bucketUploaded assets live in object storage rather than on the machine, so a rebuilt instance still finds every image.
Secrets
KEY and SECRETThey sign access tokens. Stored apart from the database and backed up separately.
DNS and TLS
1 hostnameFor the admin app and the API. Certificate issuance and renewal are automated end to end.

Migrating from Contentful to Directus

Contentful content exports as JSON, and the entries come across cleanly once the content model exists on the other side. That model is the real work: each content type becomes a table in your database, each field a column, each reference a relation. We rebuild the model first, import the entries and assets with a script you keep, and compare counts per type before anything is switched. The front ends change less than people expect. They swap one API client for another, and the query shapes stay close. Webhooks, scheduled publishing and role rules are rebuilt as Directus flows and policies, and we list each one so nothing depends on a feature that quietly disappeared.

  1. Map the content model

    Every content type, field, locale and reference in the old space, written down as the tables and relations they become.

  2. Import entries and assets

    A migration script, kept in your repository, moves entries into tables and files into your storage. Counts are compared per content type.

  3. Repoint the front ends

    Sites and apps switch to the Directus REST or GraphQL API one at a time, with the old space still serving behind them.

  4. Rebuild webhooks and roles

    Publishing webhooks become Directus flows, and editor permissions become policies tied to groups from your identity provider.

  5. Cut over and cancel

    When the last front end reads from Directus and editors have published a full cycle there, the old subscription ends.

What a Directus deployment is made of

articlesYour content/items/articles, GraphQL
authorsYour content/items/authors, GraphQL
articles_translationsYour content, per localenested under articles
directus_filesAsset metadata/files, binaries in S3
directus_policiesAccess rulesadmin app only
directus_flowsAutomations and webhooksadmin app only
Every collection in the admin app is a table in your PostgreSQL database. The system tables beside them hold the configuration, so the schema snapshot and a database dump together rebuild the whole deployment.

What Pilae is responsible for

A pinned version

A version we have run, not whatever latest resolves to that day.

A runbook

What it depends on, how it fails, what to do about it. In your repository.

A restore drill

Backups restored on a schedule. A backup nobody has restored is a file.

A patch window

Security updates in a window you agreed, with a rollback ready.

Someone watching

Every endpoint probed on the minute. An alert reaches a person, not a dashboard nobody opens.

Where it runs
zur1, fra1, fal1, gra1, ams1, hel1, lon1, ash1, hil1, sin1, tok1, syd1, on-premZurich, Frankfurt, Falkenstein, Gravelines, Amsterdam, Helsinki, London, Ashburn, Hillsboro, Singapore, Tokyo, Sydney, Your own hardware
Who holds the credentials
You do. Ours are separate, named, logged and revocable with one command. We ask before anything changes outside an agreed window.
If you leave
The machine, the data, the compose files and the runbook are already yours. Nothing stops when our access does.

What drives the price of running Directus

Pricing is on request: a fixed price for onboarding, then a monthly price for Directus, quoted in writing within five business days. The plans set what every deployment includes; these are the inputs the quote is built from.

Instance size
The CPU, memory and, where a model runs, the GPUs the app needs for your users and your data.
High availability
One machine with tested restores, or a replicated setup that keeps serving when a node fails.
Storage and backups
How much data it holds, how long backups are kept, and point-in-time recovery for its database.
Plan and support
Essential, Business or Enterprise: support hours, response times in the contract and how often we review the service with you.
Region
Your own hardware, where the infrastructure is already yours, or a Pilae Cloud region, where it is passed through at cost plus a fixed margin.
Sign-on and integrations
Single sign-on, directory sync, mail relays and the other systems the app has to reach.

Directus: common questions

Is Directus open source?

Not in the strict sense. Directus uses the Business Source License 1.1. It is free in production for organisations below a revenue threshold set by Directus, and larger organisations need a commercial licence from them. We confirm which applies to you before deployment and state it in your proposal.

Can Directus sit on top of a database we already have?

Yes, and that is its main difference from most headless CMSs. Directus reads an existing SQL schema and gives it an admin app and an API without moving the data. We review the schema first, because Directus adds its own system tables beside yours.

Does it replace Airtable as well as Contentful?

For teams that outgrew a spreadsheet, often yes. Directus gives editors a table view, forms and permissions over real relational data. For a department that wants a spreadsheet feel above all, NocoDB is usually the closer fit, and we will say which suits you.

Where are uploaded images and files stored?

In an S3-compatible bucket in the same region as your deployment, or on your own storage on premises. The database holds only their metadata, and both are covered by the same backup schedule.

How do front ends read the content?

Through the REST and GraphQL APIs Directus generates for every table, with tokens scoped to what each site may read. Public content can be cached, and the cache is cleared when an editor publishes.

Also in workflow and data

Back to apps

Bring us your Directus. We will tell you what it takes.

Thirty minutes on the deployment you already have, or the one you are about to start.