Skip to main content
[ PIER ]

Directus

适用于任何 SQL 数据库的无头 CMS 和数据平台。

Service #cms#headless#api#graphql#rest

Directus 是一个现代的开源无头 CMS,将你现有的 SQL 数据库(PostgreSQL、MySQL、SQLite、MSSQL、OracleDB)包装一层精美的管理 UI、即时 REST + GraphQL API、细粒度权限、资产管理、flows(无代码工作流)和 webhooks。你的数据保留在纯 SQL 中 — 无专有模型,无锁定。

使用 Pier 部署

  1. 1 打开 Pier 控制台,点击 Add service。
  2. 2 从模板列表中选择 Directus。
  3. 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
  4. 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 推送到客户端。独立游戏工作室用于无应用更新的实时运营。

代码示例

通过 REST 查询一个 item bash
curl -H "Authorization: Bearer $TOKEN" \
  "https://directus.example.com/items/articles?filter[status][_eq]=published&limit=20&sort=-published_at"
GraphQL 查询 graphql
query {
  articles(filter: { status: { _eq: "published" } }, limit: 20) {
    id
    title
    slug
    author { name avatar }
    tags { name }
  }
}
从 JS 的 SDK javascript
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"],
  })
);
新文章发布到 Slack 的 Flow json
{
  "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 支持哪些数据库?
PostgreSQL、MySQL/MariaDB、SQLite、Microsoft SQL Server、Oracle DB、CockroachDB、AWS Aurora。PostgreSQL 测试最彻底。
Pier 上的默认部署?
基本 `directus` 模板使用 SQLite(单容器,最简单)。对于真正的生产,使用 `directus-postgresql` 模板,捆绑 Directus + PostgreSQL。
如何扩展资产?
通过环境变量配置 S3(或任何 S3 兼容存储如 MinIO、Backblaze B2、Cloudflare R2)作为存储后端。Pier 有可重用的 S3 Storages 设置。
许可证?
Directus 在 Business Source License(BSL 1.1)下许可,4 年后变为 GPLv3。对于非 SaaS 转售用途,实际上是开源的。
自定义界面?
是 — Directus 扩展 API 让你在 Vue 3 中构建自定义字段界面、显示、布局和操作。将它们放入 `/extensions` 并重启。
SSO / OAuth?
内置支持 Google、GitHub、GitLab、Microsoft、Discord、Auth0、Okta、OpenID Connect、SAML。通过环境变量或管理 UI 配置。
HTTPS?
在 Pier 中附加域名 — Traefik 处理 TLS 终止和 X-Forwarded 头,因此 Directus 知道其公共 URL。

相关服务

在你的 VPS 上部署

Directus 是一个现代的开源无头 CMS,将你现有的 SQL 数据库(PostgreSQL、MySQL、SQLite、MSSQL、OracleDB)包装一层精美的管理 UI、即时 REST + GraphQL API、细粒度权限、资产管理、flows(无代码工作流)和 webhooks。你的数据保留在纯 SQL 中 — 无专有模型,无锁定。

部署此服务 →