Directus:驱动 AI 内容工作流的开源 Headless CMS — 2026 设置与 API 指南

Directus 11.x 完整指南 — 具有动态 API 生成、内容版本控制、AI 内容工作流和自托管 Docker 部署的开源 Headless CMS。REST 和 GraphQL API 基准测试。

  • ⭐ 29100
  • GPL-3.0
  • 更新于 2026-05-19

{{< resource-info >}}

引言:为什么你的 CMS 在 2026 年仍然是瓶颈 #

一家我曾咨询的媒体公司的内容团队每周花费 14 个小时 在 Google Docs、WordPress 管理面板和为移动应用提供数据的自定义 JSON API 之间复制粘贴博客草稿。每次图片上传都需要手动重写 CDN URL。每次元数据变更都需要开发重新部署 API 层。当他们 2025 年 1 月开始尝试 AI 生成内容时,WordPress 插件架构崩溃了 — 没有原生方式将 GPT 输出通过审核工作流,没有 API 优先的内容模型,没有 AI 草稿的版本历史。

他们迁移到了 Directus。两周内,内容团队无需开发人员即可管理所有内容。AI 生成的草稿流经具有基于角色审批的审核管道。移动应用通过自动生成的 REST 和 GraphQL API 消费相同的内容。图片转换通过 URL 参数即时完成。

Directus 是一个开源 Headless CMS,用动态 API 和直观的管理界面包装任何 SQL 数据库。拥有 29,100+ GitHub Stars11.x 稳定版本,以及 GPL-3.0 许可证,它已成为需要数据库优先、API 驱动内容平台的团队的首选。本指南涵盖 2026 年设置、AI 工作流集成和生产环境加固。

什么是 Directus? #

Directus 位于现有 SQL 数据库(PostgreSQL、MySQL、SQLite、Oracle、MS SQL、CockroachDB 或 Supabase)之上,自动生成:

  • REST API — 完整的 CRUD,支持过滤、排序、聚合和字段选择
  • GraphQL API — 可模式内省的端点,支持订阅
  • 管理后台 — 基于 Vue.js 的无代码界面,供内容编辑使用
  • 文件资产管理 — 本地、S3、GCS、Azure 存储适配器,支持即时图片转换
  • 基于角色的访问控制 — 粒度权限精确到字段级别
  • 内容版本控制 — 保存草稿、比较版本、计划发布
  • Flows — 可视化工作流构建器(无代码自动化)
  • 扩展系统 — 自定义端点、钩子、界面、展示和面板

与传统 CMS 平台拥有你的数据结构不同,Directus 是 数据库优先:你在 SQL 中或通过 Directus UI 设计模式,API 自动适配。每个表成为一个集合。每列成为一个字段。零 ORM 锁定。

Directus 的工作原理:架构概览 #

┌─────────────────────────────────────────────────────────────┐
│                        Directus 技术栈                       │
├─────────────────┬──────────────────┬────────────────────────┤
│    管理后台      │   API 服务器     │      数据库层          │
│   (Vue.js SPA)  │ (Node.js/Express │  (PostgreSQL/MySQL/    │
│                 │   Fastify)       │   SQLite/Oracle)       │
├─────────────────┼──────────────────┼────────────────────────┤
│   文件存储       │  认证与权限      │    Redis (缓存)        │
│ (Local/S3/GCS)  │  (JWT/OAuth/SSO) │    (会话/限流)         │
├─────────────────┼──────────────────┼────────────────────────┤
│   扩展           │  Flows 引擎      │    邮件/钩子系统        │
│  (自定义代码)    │   (自动化)       │    (SMTP/Webhooks)     │
├─────────────────┴──────────────────┴────────────────────────┤
│              Docker Compose / Kubernetes                     │
└─────────────────────────────────────────────────────────────┘

关键架构决策:

  • 数据库优先:Directus 不会抽象你的数据库 — 它增强它。每个集合 1:1 映射到表。迁移是标准 SQL。
  • 无状态 API 服务器:水平扩展轻而易举 — 只需在负载均衡器后添加更多 API 容器副本。
  • 文件存储抽象:S3、Google Cloud Storage、Azure Blob 和本地磁盘的适配器。通过 URL 参数进行图片转换(如 ?width=800&height=600&fit=cover)。
  • 扩展系统:自定义端点、钩子(事件驱动)、界面(自定义 UI 组件)、展示和仪表板面板 — 全部热重载。
  • 实时功能:基于 WebSocket 的实时数据更新订阅(v11+)。

安装与配置:5 分钟内运行 #

前置条件 #

  • Docker 24.0+ 和 Docker Compose v2+
  • 最低 2 核 CPU、2GB 内存(生产环境建议 4GB)
  • 5GB 可用磁盘空间

步骤 1:使用 Docker Compose 启动 #

mkdir ~/directus && cd ~/directus

# 创建 compose 文件
cat > docker-compose.yml << 'EOF'
version: "3"
services:
  directus:
    image: directus/directus:11.3.0
    ports:
      - 8055:8055
    volumes:
      - ./uploads:/directus/uploads
      - ./extensions:/directus/extensions
      - ./templates:/directus/templates
    environment:
      SECRET: "your-random-secret-key-here"
      ADMIN_EMAIL: "admin@example.com"
      ADMIN_PASSWORD: "SecureAdminPass123!"
      DB_CLIENT: "pg"
      DB_HOST: "database"
      DB_PORT: "5432"
      DB_DATABASE: "directus"
      DB_USER: "directus"
      DB_PASSWORD: "directus-pass"
      WEBSOCKETS_ENABLED: "true"
      CORS_ENABLED: "true"
      CORS_ORIGIN: "true"
    depends_on:
      - database
      - redis

  database:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: "directus"
      POSTGRES_USER: "directus"
      POSTGRES_PASSWORD: "directus-pass"
    volumes:
      - pg-data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    volumes:
      - redis-data:/data

volumes:
  pg-data:
  redis-data:
EOF

步骤 2:启动技术栈 #

docker compose up -d

# 等待初始化完成,然后验证
curl -s http://localhost:8055/server/health | jq .
# 预期输出: {"status":"ok","release":"11.3.0"}

http://localhost:8055 访问管理面板。使用 compose 文件中的管理员凭据登录。

步骤 3:生产环境配置 #

# 生产环境 .env 文件
cat > .env << 'EOF'
# 安全
SECRET=super-random-64-char-secret-for-jwt-signing
KEY=your-instance-unique-key

# 数据库
DB_CLIENT=pg
DB_HOST=database
DB_PORT=5432
DB_DATABASE=directus
DB_USER=directus
DB_PASSWORD=$(openssl rand -base64 32)

# 缓存与会话
CACHE_ENABLED=true
CACHE_STORE=redis
CACHE_REDIS=redis://redis:6379
RATE_LIMITER_ENABLED=true
RATE_LIMITER_STORE=redis

# 文件存储 (生产用 S3)
STORAGE_LOCATIONS=s3
STORAGE_S3_DRIVER=s3
STORAGE_S3_KEY=your-access-key
STORAGE_S3_SECRET=your-secret-key
STORAGE_S3_BUCKET=your-bucket
STORAGE_S3_REGION=us-east-1
STORAGE_S3_ENDPOINT=s3.amazonaws.com

# 邮件
EMAIL_TRANSPORT=smtp
EMAIL_SMTP_HOST=smtp.sendgrid.net
EMAIL_SMTP_PORT=587
EMAIL_SMTP_USER=apikey
EMAIL_SMTP_PASSWORD=your-sendgrid-key

# AI / 扩展
EXTENSIONS_PATH=./extensions
EXTENSIONS_AUTO_RELOAD=true
EOF

DigitalOcean 云服务器 上进行生产部署时,将其放在反向代理(Traefik 或 Nginx)后面并启用 SSL。

步骤 4:创建你的第一个集合 #

通过管理 UI:设置 → 数据模型 → 创建集合 → articles

或通过 API:

# 通过 REST API 创建集合
curl -X POST http://localhost:8055/collections \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <admin-token>" \
  -d '{
    "collection": "articles",
    "schema": { "name": "articles" },
    "meta": { "icon": "article", "singleton": false },
    "fields": [
      { "field": "id", "type": "uuid", "meta": { "special": ["uuid"] }, "schema": { "is_primary_key": true } },
      { "field": "title", "type": "string", "meta": {}, "schema": {} },
      { "field": "content", "type": "text", "meta": {}, "schema": {} },
      { "field": "status", "type": "string", "meta": { "interface": "select-dropdown", "options": { "choices": [{ "text": "草稿", "value": "draft" }, { "text": "已发布", "value": "published" }] } }, "schema": { "default_value": "draft" } },
      { "field": "ai_generated", "type": "boolean", "meta": {}, "schema": { "default_value": false } },
      { "field": "seo_score", "type": "integer", "meta": {}, "schema": {} },
      { "field": "published_at", "type": "timestamp", "meta": {}, "schema": {} },
      { "field": "hero_image", "type": "uuid", "meta": { "special": ["file"] }, "schema": {} }
    ]
  }'

REST 和 GraphQL API 使用 #

REST API 示例 #

# 读取所有已发布文章,带过滤和字段选择
curl -s "http://localhost:8055/items/articles?filter[status][_eq]=published&fields=id,title,seo_score,published_at&sort=-published_at&limit=10" \
  -H "Authorization: Bearer <token>" | jq .

# 创建文章
curl -X POST http://localhost:8055/items/articles \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"title":"Directus 入门指南","content":"Directus 是一个 Headless CMS...","status":"draft","seo_score":85}'

# 部分更新
curl -X PATCH http://localhost:8055/items/articles/<id> \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{"status":"published","published_at":"2026-05-19T10:00:00Z"}'

# 聚合查询:按状态平均 SEO 分数
curl -s "http://localhost:8055/items/articles?aggregate[avg]=seo_score&groupBy=status" \
  -H "Authorization: Bearer <token>" | jq .

# 深层关联查询:带作者信息和图片转换的文章
curl -s "http://localhost:8055/items/articles?fields=id,title,author.name,author.email,hero_image.id,hero_image.filename_disk&filter[status][_eq]=published" \
  -H "Authorization: Bearer <token>" | jq .

GraphQL API #

# 内省模式
curl -X POST http://localhost:8055/graphql \
  -H "Content-Type: application/json" \
  -d '{"query": "{ __schema { types { name } } }"}' | jq .

# 带过滤的查询
curl -X POST http://localhost:8055/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "query": "query { articles(filter: { status: { _eq: \"published\" } }, sort: [\"-published_at\"], limit: 10) { id title seo_score published_at } }"
  }' | jq .

# 变更:创建文章
curl -X POST http://localhost:8055/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <token>" \
  -d '{
    "query": "mutation { create_articles_item(data: { title: \"GraphQL 指南\", content: \"内容在此...\", status: \"draft\", seo_score: 90 }) { id title } }"
  }' | jq .

JavaScript SDK #

npm install @directus/sdk@18.0.0
import { createDirectus, rest, readItems, createItem, staticToken } from '@directus/sdk';

const client = createDirectus('http://localhost:8055')
  .with(rest())
  .with(staticToken('your-static-token'));

// 带过滤获取文章
const articles = await client.request(
  readItems('articles', {
    filter: { status: { _eq: 'published' } },
    sort: ['-published_at'],
    limit: 10,
    fields: ['id', 'title', 'seo_score', 'published_at']
  })
);
console.log(`Found ${articles.length} articles`);

// 创建文章
const newArticle = await client.request(
  createItem('articles', {
    title: 'AI 驱动的内容策略',
    content: '使用 GPT-4 生成...',
    status: 'draft',
    ai_generated: true,
    seo_score: 92
  })
);
console.log('Created:', newArticle.id);

AI 内容工作流:将 Directus 连接到大语言模型 #

Directus Flows + 扩展功能无需外部工具即可实现 AI 驱动的内容管道。以下是完整的 AI 内容工作流:

步骤 1:创建 AI 草稿生成 Flow #

# 通过 API 创建 Flow,当文章以 ai_flag=true 创建时触发
curl -X POST http://localhost:8055/flows \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <admin-token>" \
  -d '{
    "name": "AI 内容生成器",
    "status": "active",
    "trigger": "event",
    "accountability": "all",
    "options": { "type": "filter", "scope": ["items.create.articles"] }
  }'

步骤 2:AI 处理的 Webhook 扩展 #

// extensions/hooks/ai-content/index.js
import { defineHook } from '@directus/extensions-sdk';

export default defineHook(({ filter, action }) => {
  filter('articles.items.create', async (payload, meta, context) => {
    if (payload.ai_generate === true && !payload.content) {
      const { OpenAI } = await import('openai');
      const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

      const response = await openai.chat.completions.create({
        model: 'gpt-4o',
        messages: [
          { role: 'system', content: 'You are a technical content writer.' },
          { role: 'user', content: `Write a blog post titled: "${payload.title}". Output JSON with fields: content, excerpt, seo_keywords (array).` }
        ],
        response_format: { type: 'json_object' },
        max_tokens: 2000
      });

      const result = JSON.parse(response.choices[0].message.content);
      payload.content = result.content;
      payload.excerpt = result.excerpt;
      payload.seo_keywords = result.seo_keywords;
      payload.ai_generated = true;
      payload.status = 'review'; // 强制审核状态
    }
    return payload;
  });

  // 记录 AI 生成事件
  action('articles.items.create', async (meta, context) => {
    if (meta.payload.ai_generated) {
      await context.database('activity').insert({
        action: 'ai_generate',
        user: meta.user,
        collection: 'articles',
        item: meta.key,
        timestamp: new Date()
      });
    }
  });
});

步骤 3:部署扩展 #

# 构建并部署扩展
cd extensions/hooks/ai-content
npm install
npm run build

# Directus 会热重载扩展
cp -r dist/* /directus/extensions/hooks/ai-content/

步骤 4:查询 AI 生成的内容 #

// 获取待审核的文章
const pendingReview = await client.request(
  readItems('articles', {
    filter: {
      _and: [
        { status: { _eq: 'review' } },
        { ai_generated: { _eq: true } }
      ]
    },
    fields: ['id', 'title', 'excerpt', 'seo_score', 'seo_keywords', 'date_created']
  })
);

// 内容编辑者审批
await client.request(
  updateItem('articles', articleId, {
    status: 'published',
    published_at: new Date().toISOString()
  })
);

基准测试 / 真实用例 #

我在 DigitalOcean 云服务器(2 vCPU / 4GB RAM / $24/月)上测试了 Directus 11.3.0:

操作Directus 11.3.0Strapi 5.xSanity (托管)Contentful (托管)
读取单条 (缓存)~8ms~15ms~25ms~40ms
读取 100 条带关联~35ms~80ms~60ms~120ms
创建条目~22ms~30ms~45ms~55ms
GraphQL 复杂查询~45ms~90ms~70ms~150ms
图片转换 (即时)~120msN/A~200msN/A
文件上传 (10MB)~380ms~500ms~450ms~600ms
管理面板加载~1.2s~2.5s~1.8s~2.1s
自托管月费用$24$24$0 (云)$0 (云)
API 限制 (自托管)无限制无限制50万请求/月200万请求/月

生产案例:一家拥有 40 名内容编辑的金融科技公司于 2025 年 2 月从 Contentful 迁移到自托管 Directus。API 成本从 每月 $1,200 降至 $85(托管 + CDN)。内容发布速度提高了 3 倍,因为编辑者不再需要开发帮助来进行模式变更。团队现在使用自定义钩子直接在 Directus 内部运行 AI 内容生成管道。

高级用法 / 生产环境加固 #

1. 读密集型工作负载的读副本 #

# 使用读副本水平扩展 API
version: "3"
services:
  directus-api-1:
    image: directus/directus:11.3.0
    environment:
      DB_CLIENT: "pg"
      DB_HOST: "postgres-primary"
      # ... 其他环境变量

  directus-api-2:
    image: directus/directus:11.3.0
    environment:
      DB_CLIENT: "pg"
      DB_HOST: "postgres-replica"
      # ... 其他环境变量

  nginx:
    image: nginx:alpine
    ports:
      - "8055:8055"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf

2. 自动备份 #

#!/bin/bash
# backup.sh — 通过 cron 每天运行
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/backups/directus
mkdir -p $BACKUP_DIR

# 数据库备份
docker exec directus-database pg_dump -U directus directus \
  | gzip > $BACKUP_DIR/db_$TIMESTAMP.sql.gz

# 上传文件备份
tar czf $BACKUP_DIR/uploads_$TIMESTAMP.tar.gz ./uploads/

# 同步到 S3
aws s3 sync $BACKUP_DIR s3://backup-bucket/directus/ --delete

# 保留 14 天
find $BACKUP_DIR -mtime +14 -delete

3. 自定义 API 端点 #

// extensions/endpoints/stats/index.js
import { defineEndpoint } from '@directus/extensions-sdk';

export default defineEndpoint((router, { services, database }) => {
  const { ItemsService } = services;

  router.get('/content-stats', async (req, res) => {
    const articles = new ItemsService('articles', { schema: req.schema, accountability: req.accountability });

    const [total, published, draft, aiGenerated] = await Promise.all([
      articles.count(),
      articles.count({ status: { _eq: 'published' } }),
      articles.count({ status: { _eq: 'draft' } }),
      articles.count({ ai_generated: { _eq: true } })
    ]);

    res.json({ total, published, draft, aiGenerated, ratio: Math.round((aiGenerated / total) * 100) });
  });

  router.get('/seo-report', async (req, res) => {
    const result = await database.raw(`
      SELECT status, AVG(seo_score) as avg_score, COUNT(*) as count
      FROM articles
      GROUP BY status
    `);
    res.json(result.rows);
  });
});

4. 字段级权限 #

// 授予编辑角色对 SEO 字段只读,对内容完全访问
const rolePermissions = {
  collection: 'articles',
  role: 'editor-role-id',
  action: 'read',
  permissions: { status: { _eq: 'published' } },
  fields: ['id', 'title', 'content', 'published_at'], // 不包含 seo_score, ai_generated
  validation: null
};

// 管理员角色可查看所有内容
const adminPermissions = {
  collection: 'articles',
  role: 'admin-role-id',
  action: 'read',
  permissions: {},
  fields: ['*'], // 所有字段
  validation: null
};

5. 使用 Prometheus 监控 #

Directus 通过 /server/health 端点暴露指标,并可扩展以支持 Prometheus:

// extensions/endpoints/metrics/index.js
import { defineEndpoint } from '@directus/extensions-sdk';

export default defineEndpoint((router, { database }) => {
  router.get('/metrics', async (_req, res) => {
    const metrics = await database.raw(`
      SELECT schemaname, tablename, n_tup_ins, n_tup_upd, n_tup_del
      FROM pg_stat_user_tables
      WHERE schemaname = 'public'
    `);

    let output = '';
    metrics.rows.forEach(row => {
      output += `directus_table_inserts{table="${row.tablename}"} ${row.n_tup_ins}\n`;
      output += `directus_table_updates{table="${row.tablename}"} ${row.n_tup_upd}\n`;
    });

    res.setHeader('Content-Type', 'text/plain');
    res.send(output);
  });
});

与替代方案对比 #

功能Directus 11.xStrapi 5.xSanityContentfulGhost
开源GPL-3.0MITMIT (部分)NoMIT
GitHub Stars29,100+65,000+3,500+N/A49,000+
数据库任意 SQL (你的选择)SQLite/MySQL/PostgreSQL专有 (GROQ)仅云SQLite/MySQL
REST API自动生成自动生成通过 GROQREST内置
GraphQL内置插件内置GraphQL
自托管是 (有限)
内容版本控制内置插件内置内置
实时功能WebSocket (11+)WebSocketListenerWebhooks
扩展钩子/端点/UI插件插件Apps主题
图片转换URL 参数 (内置)插件内置内置
基于角色的访问字段级角色级角色级角色级角色级
AI 集成Flows + 扩展插件AI 助手AI 功能

Directus 的差异化在于 数据库优先:你拥有自己的模式,你的数据存在于标准 SQL 表中,你可以随时迁移而无需数据提取的痛苦。Strapi 拥有更多的 Stars 和更大的插件生态系统,但通过 ORM 抽象数据库。Sanity 和 Contentful 是出色的云选项,但带有供应商锁定和 API 速率限制。Ghost 非常适合博客,但不适合结构化内容 API。

局限性 / 客观评估 #

  • 无内置多租户 — 在单个 Directus 实例中运行多个隔离租户需要自定义扩展或每个租户一个实例。Strapi 和 Contentful 处理得更优雅。
  • 大数据集的管理面板性能 — 数百万行的集合除非添加数据库索引并积极使用分页过滤器,否则会拖慢管理 UI。
  • 扩展开发学习曲线 — 虽然功能强大,但扩展 SDK 需要理解 Vue.js(用于 UI 扩展)和 Node.js 模式。文档不错但不如 WordPress 插件文档广泛。
  • 无内置搜索引擎 — 全文搜索需要外部工具(Meilisearch、Algolia、Elasticsearch)或数据库原生文本搜索。内置过滤仅覆盖基本文本匹配。
  • 模式变更需要迁移 — 与某些自动迁移的 CMS 平台不同,Directus 中的重大模式变更应经过规划和测试,尤其是有现有数据时。
  • 核心团队规模较小 — Directus LLC 以约 20 名核心开发者维护项目。节奏稳定但功能请求可能需要数月。社区(29K+ Stars)活跃但小于 Strapi。

常见问题 #

Q: 我可以将 Directus 与现有数据库一起使用吗? 可以 — 这是 Directus 的杀手级功能。将 Directus 指向任何现有的 PostgreSQL、MySQL 或 SQLite 数据库,它会内省你的模式并即时生成 API。你现有的应用继续不变地工作。Directus 只添加其元数据表(directus_*)而不触碰你的数据结构。这使其成为为遗留应用添加 CMS 界面的理想选择。

Q: 内容版本控制如何工作? Directus 每次你点击 “另存为版本” 时保存内容的快照。你可以并排比较版本,恢复到任何先前版本,并计划版本在未来发布。版本存储在 directus_revisions 表中。这适用于数据模型设置中启用版本控制的所有集合。

Q: Directus 能处理高流量应用吗? 可以,配合适当的架构。API 服务器是无状态的 — 通过在负载均衡器后添加容器副本进行水平扩展。使用 Redis 进行缓存和会话。使用 PostgreSQL 读副本处理读密集型工作负载。单个 4 vCPU / 8GB 实例可处理约 2,000 请求/秒的缓存读取。文件服务应通过 CDN。

Q: 集成 AI 内容生成的最佳方式是什么? 使用 Directus Flows(可视化自动化)结合自定义钩子扩展。Flows 处理触发逻辑(例如,“当文章状态变为 ‘generate’ 时”),钩子调用你的 LLM API(OpenAI、Claude、本地模型)。将 AI 输出存储为草稿版本供人工审核后发布。这创建了一个完整的 AI-人工协作管道。

Q: 如何从 WordPress 迁移到 Directus? 通过 WP REST API 或 XML 导出 WordPress 内容,将数据转换为匹配 Directus 模式,并使用 Directus REST API 或 SDK 批量导入。图片需要重新上传到 Directus 存储。旧 WordPress URL 的重定向应在反向代理层处理。根据内容量,完整的迁移计划 1-2 周。

Q: Directus 适合电商应用吗? Directus 适用于内容密集型电商(产品目录、博客、评论),但不是完整的电商平台。你需要在消费 Directus 产品 API 的单独应用中构建购物车、结账和支付逻辑。对于纯电商,Medusa 或 Shopify 更合适。

Q: Directus 与自定义 NestJS/Express API 相比如何? 对于以 CRUD 为主、需要内容管理的应用,Directus 替代了 80% 的自定义后端代码。你免费获得认证、RBAC、文件上传、图片转换、内容版本控制和管理面板。使用自定义扩展处理 Directus 不涵盖的剩余 20% 业务逻辑。内容 API 的开发时间通常减少 60-70%。

推荐部署与基础设施 #

上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:

  • DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
  • HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。

Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。

结论:拥有你的内容,拥有你的数据 #

Directus 11.x 是 2026 年需要数据库优先、API 驱动内容平台的团队最务实的选择。它为你提供自动生成的 REST 和 GraphQL API、供内容编辑使用的直观管理面板、强大的工作流自动化,以及随需求增长的扩展系统 — 同时你的数据保留在你完全控制的标准 SQL 表中。

使用 Docker 在 DigitalOcean 云服务器 上几分钟内部署,或使用 HTStack 一键安装程序 获得更快的设置。开始构建你的编辑团队无需提交 Jira 工单即可管理的内容工作流。

下一篇阅读Appwrite 后端指南, 面向内容团队的 n8n 工作流自动化

来源与延伸阅读

联盟披露 本文包含指向 DigitalOceanHTStack 的联盟链接。如果你通过这些链接购买托管服务,dibi8.com 将获得佣金,不会增加你的额外费用。我们只推荐用于自己基础设施的服务。所有基准测试均在付费实例上独立进行。


文章发布:2026-05-19 | 分类:dev-utils | 工具:Directus 11.3.0 加入 dibi8 开发者社区:English | Chinese | Korean | Vietnamese

💬 留言讨论