Directus
适用于任何 SQL 数据库的无头 CMS 和数据平台。
Directus 是一个现代的开源无头 CMS,将你现有的 SQL 数据库(PostgreSQL、MySQL、SQLite、MSSQL、OracleDB)包装一层精美的管理 UI、即时 REST + GraphQL API、细粒度权限、资产管理、flows(无代码工作流)和 webhooks。你的数据保留在纯 SQL 中 — 无专有模型,无锁定。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 Directus。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。
什么是 Directus?
Directus 从大多数无头 CMS 中采取不同的角度:不是定义自己的数据模型并要求
你迁移到它,Directus 指向任何现有的 SQL 数据库,反映 schema,并立即为你
提供精致的管理 UI 加上 REST 和 GraphQL API。你的数据保留在普通 PostgreSQL
或 MySQL 中 — pg_dump 工作,你现有应用的 ORM 仍然查询它,你停止使用
Directus 的那天,你仍然拥有数据。
除了 CRUD 和 API 生成,Directus 包括带图像转换的资产管理、无代码工作流 自动化(Flows)、细粒度权限(角色 + 集合 + 字段 + 行)、带 insights 的 仪表板和与主要身份提供商的 SSO 集成。它定位在 Strapi(代码优先 CMS)和 Retool(自定义内部工具构建器)之间 — 精致、有主见、电池齐全。
Pier 如何部署它
Pier 提供两个模板:directus(带 SQLite 的单容器,最简单)和
directus-postgresql(带专用 PostgreSQL 后端的多容器 compose,生产就绪)。
两者内部都暴露端口 8055/tcp。
Directus 管理 URL 显示在 Pier 服务页面上,以及自动生成的管理员邮箱和密码。
对于 HTTPS,附加域名 — Traefik 处理证书;Directus 的 PUBLIC_URL 自动设置。
对于资产存储,通过 Pier 的服务设置配置 S3 环境变量,将上传推送到 MinIO、 Backblaze、R2 或 AWS S3。
何时不要使用 Directus
对于代码优先 CMS,你想在 TypeScript 中定义 schema 并在 Git 中版本化一切 — Strapi 或 Payload 可能更合适。对于无管理 UI 的纯 API 生成 — Hasura 或 PostgREST 更精简。对于”用混合数据源为我构建自定义内部仪表板” — Retool 或 Tooljet 更灵活。Directus 在你想要 CMS、API 和管理都围绕你现有 SQL 数据库 连接时大放异彩。
核心功能
数据库优先
让 Directus 指向任何现有的 SQL 数据库;它反映 schema 并立即为你提供 UI + API。无需数据迁移,无 ORM 体操 — 你的表仍是你的。
开箱即用的 REST + GraphQL
每个表成为带过滤、排序、分页、连接、聚合的 REST 和 GraphQL 端点。JWT 和 OAuth2 认证,字段级粒度权限。
精美的管理 UI
每个集合的自定义布局、M2M 和 M2A 关系、条件字段、自定义界面、带 insights 的仪表板。替代 Retool / Tooljet 用于内部工具。
Flows(无代码自动化)
可视化工作流构建器 — 监听事件(insert/update/delete)、调用 API、转换数据、发送通知。Directus 内部的 Zapier 风格自动化。
资产管理
带图像转换(调整大小、裁剪、格式)、文件夹、元数据、签名 URL 的文件上传。支持 S3、Google Cloud Storage、Azure Blob 后端。
通过角色实现多租户
表、列和行级别的角色 + 权限。通过过滤器表达式实现条件权限("用户可以编辑自己的记录")。
应用场景
营销网站的无头 CMS
替代 Strapi、Contentful 或 Sanity。内容编辑在 Directus 管理界面中工作;你的 Next.js / Astro / Nuxt 网站通过 REST/GraphQL 拉取。
内部管理面板
让 Directus 指向你现有的应用数据库。几分钟内获得精美的管理 UI — 无需 React 技能。
B2B 数据交付平台
通过行级权限将精选的数据子集暴露给合作伙伴。API 优先;无需构建自定义门户。
多渠道内容(全渠道)
相同内容面向 Web、移动应用、IoT 设备、语音助手。Directus 是规范源;渠道按需拉取。
游戏后端 / 配置服务器
通过管理 UI 调整游戏平衡,通过 REST 推送到客户端。独立游戏工作室用于无应用更新的实时运营。
代码示例
curl -H "Authorization: Bearer $TOKEN" \
"https://directus.example.com/items/articles?filter[status][_eq]=published&limit=20&sort=-published_at" query {
articles(filter: { status: { _eq: "published" } }, limit: 20) {
id
title
slug
author { name avatar }
tags { name }
}
} import { createDirectus, rest, readItems } from "@directus/sdk";
const client = createDirectus("https://directus.example.com").with(rest());
const articles = await client.request(
readItems("articles", {
filter: { status: { _eq: "published" } },
limit: 20,
sort: ["-published_at"],
})
); {
"trigger": "filter",
"event": "articles.items.create",
"operations": [
{
"key": "webhook",
"type": "request",
"options": {
"method": "POST",
"url": "https://hooks.slack.com/services/...",
"body": "{\"text\": \"New article: {{ $trigger.title }}\"}"
}
}
]
} 对比
| vs Strapi | Strapi 也是领先的无头 CMS,但在代码中定义自己的 schema。Directus 包装你现有的 DB 而无需迁移 — 如果已有数据库选 Directus,对新项目代码优先选 Strapi。 |
| vs Contentful / Sanity | 托管 SaaS 无头 CMS。美观但昂贵。Directus 是 OSS、自托管,等价功能成本极低。 |
| vs Hasura | Hasura 从 Postgres 生成 GraphQL。无管理 UI,无 flows,无资产管理。Hasura 用于纯 API,Directus 用于"API + 管理 + 自动化 + 资产"组合。 |
| vs Retool / Tooljet | Retool 用于构建自定义内部工具。Directus 用于"在我的数据库之上给我一个精致的 CRUD 管理"用例。灵活性较低,但零构建。 |
常见问题
Directus 支持哪些数据库?
Pier 上的默认部署?
如何扩展资产?
许可证?
自定义界面?
SSO / OAuth?
HTTPS?
相关服务
在你的 VPS 上部署
Directus 是一个现代的开源无头 CMS,将你现有的 SQL 数据库(PostgreSQL、MySQL、SQLite、MSSQL、OracleDB)包装一层精美的管理 UI、即时 REST + GraphQL API、细粒度权限、资产管理、flows(无代码工作流)和 webhooks。你的数据保留在纯 SQL 中 — 无专有模型,无锁定。
部署此服务 →