Skip to main content
[ PIER ]

Directus con PostgreSQL

CMS headless Directus — cableado a PostgreSQL out of the box.

Service #cms#headless#api#graphql#postgresql

Directus (el CMS headless open-source y plataforma de datos) emparejado con un backend PostgreSQL dedicado en un stack Pier. Env vars pre-cableadas, volúmenes persistentes, listo para equipos de contenido multi-usuario de producción o cualquier caso donde SQLite ya no sea suficiente.

Desplegar con Pier

  1. 1 Abre el panel de Pier y haz clic en Add service.
  2. 2 Elige Directus with PostgreSQL en la lista de plantillas.
  3. 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
  4. 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.

¿Qué es Directus con PostgreSQL?

Directus es un CMS headless open-source y plataforma de datos que envuelve cualquier base de datos SQL en una UI admin hermosa más APIs REST y GraphQL auto-generadas. Esta plantilla envía Directus con un backend PostgreSQL dedicado — la base de datos production-recomendada — pre-cableado en un stack Pier.

Inicias sesión en Directus y defines colecciones (que se vuelven tablas Postgres), agregas campos (columnas), cableas relaciones, configuras roles y permisos. Todo se refleja en SQL plano, consultable desde cualquier cliente PostgreSQL. Los endpoints REST/GraphQL se actualizan automáticamente mientras tu esquema evoluciona.

Casos de uso — backend headless para sitio web/app, CMS editorial multi-usuario, UI admin encima de DB Postgres de aplicación existente, o backend layer de un SaaS MVP.

Cómo lo despliega Pier

Pier usa la imagen oficial directus/directus más postgres:17-alpine. Puertos por defecto — Directus en 8055 internamente (detrás de Traefik), Postgres en la red Docker interna.

Volúmenes persistentes — uploads Directus en /directus/uploads, extensiones en /directus/extensions, más /var/lib/postgresql/data para Postgres.

Usuario admin de primer launch se crea vía env vars (Pier genera password fuerte). Inicia sesión en la URL pública y empieza a definir colecciones.

Para HTTPS, adjunta un dominio custom en Pier — Traefik maneja TLS.

Cuándo NO usar esta plantilla

Para un blog de un editor o desarrollo, la plantilla standalone Directus (SQLite) es más simple. Para una plataforma de internal tools non-CMS con workflows y plugins, NocoBase (este catálogo) queda mejor. Para un backend full-stack “PostgreSQL + auth + storage + edge functions”, mira Supabase. Directus es la respuesta correcta para “CMS headless / plataforma de datos en SQL con UI admin genial.”

Características clave

Directus production-ready

Directus completo — modelado de datos visual, REST + GraphQL APIs, RBAC, flows (automaciones), webhooks, file upload — respaldado por PostgreSQL para workloads concurrentes multi-usuario.

Config DB pre-cableado

Pier configura DB_CLIENT=pg, DB_HOST/DATABASE/USER/PASSWORD env vars. Directus arranca directo en Postgres en el primer launch.

Modelado de datos SQL-first

Directus envuelve tu esquema SQL existente (o uno que aprovisiona) en una UI hermosa. La DB queda como PostgreSQL normal — consúltala desde cualquier lugar.

REST + GraphQL out of the box

Cada colección expone automáticamente endpoints REST y GraphQL. Auth vía JWT, OAuth2/OIDC o static tokens.

Flows (automaciones)

Workflow builder visual para webhook handling, scheduled jobs, transformaciones de datos. Como n8n dentro de tu CMS.

UI admin hermosa

Dashboards, vistas tabla, formularios edit, librería de archivos, historial de versiones. Entre las UI admin de CMS más bellas disponibles.

Casos de uso

Equipo de contenido multi-usuario

Editores, revisores, traductores en dashboards concurrentemente — Postgres maneja writes concurrentes que SQLite no puede.

Backend headless para web + móvil

Una sola instancia Directus alimentando tu sitio Next.js/Astro/Vue más apps iOS/Android vía REST o GraphQL.

Admin interno en Postgres existente

Apunta Directus a una DB Postgres de app existente — UI admin instantánea para tablas que ya tienes.

Backend para MVPs SaaS

REST/GraphQL/auth/RBAC/file-upload/automaciones — Directus reemplaza 80% de un backend hecho a mano para SaaS early-stage.

CMS i18n

Interfaces de traducción, campos locale-aware, version control de contenido para sitios multi-lenguaje.

Ejemplos de código

Definir colección "posts" (UI) text
Data Model → Create Collection → "posts"
Agregar campos -
  - title (text)
  - body (rich text)
  - status (dropdown - draft/published)
  - cover (file)
  - author (m2o → directus_users)
  - tags (m2m → tags)
Save — endpoints REST/GraphQL auto-generados
REST API — fetch posts bash
curl https://cms.example.com/items/posts?filter[status][_eq]=published&fields=*.* \
  -H "Authorization: Bearer $TOKEN"
GraphQL query graphql
query {
  posts(filter: { status: { _eq: "published" } }) {
    id
    title
    body
    cover { id filename_download }
    author { first_name last_name }
  }
}
Webhook on item update (Flow) text
Flow trigger - "Action — items.update on posts"
→ Operation - "Send Webhook"
  URL - https://my-site.example.com/revalidate
  Method - POST
  Body - { "slug": "{{ $trigger.payload.slug }}" }

Comparativa

vs Directus con SQLite (default standalone) SQLite Directus está bien para un editor o desarrollo. Postgres es requerido para equipos contenido multi-usuario y cualquier carga producción.
vs Strapi Strapi es JavaScript-first, plugin-rich, pero más pesado y SQLite-default. Directus es database-agnostic, envuelve tu esquema existente, y la UI admin es más pulida.
vs Supabase (este catálogo) Supabase es "PostgreSQL + auth + storage + edge functions para backends de app". Directus es "PostgreSQL + UI admin + workflows de contenido para casos CMS". Sweet spots diferentes; ambos construyen en Postgres.
vs Sanity / Contentful SaaS-only, pay-per-use. Directus es autohospedado, gratis, posees los datos y la DB.
vs NocoBase NocoBase es no-code-first con extensibilidad plugin. Directus es admin-UI-on-SQL-first. Elige por uso primario.

Preguntas frecuentes

¿Por qué PostgreSQL sobre SQLite?
Edición concurrente multi-usuario, volúmenes mayores de datos, setups HA todos necesitan Postgres. SQLite está bien solo para single-editor o dev.
¿Puedo migrar de SQLite Directus?
Usa la CLI de Directus para exportar esquema + contenido, despliega esta plantilla, importa vía CLI. Workflows / usuarios / configuraciones exportan limpiamente.
¿Puede envolver un Postgres existente?
Sí — feature principal de Directus. Apúntalo a una DB existente con `DB_CLIENT=pg` y detalles de conexión; Directus introspecta esquemas y los expone como colecciones inmediatamente.
¿Auth / SSO?
Sí — Directus soporta OpenID Connect, OAuth2, SAML, LDAP, más static tokens para service accounts.
¿Uploads de archivos — adónde van?
Volumen de disco local por defecto. Cambia a S3/MinIO/R2/GCS/Azure vía env vars para cloud storage.
¿Performance con muchas colecciones?
Directus está construido para "miles de items por colección, docenas de colecciones" fácilmente. Más allá, los patrones de query importan — indexa tus foreign keys calientes.
¿Estrategia de backup?
pg_dump la DB Directus + respalda el volumen de archivos subidos. Ambos restauran limpiamente a instancia fresca.

Servicios relacionados

Desplegar en tu VPS

Directus (el CMS headless open-source y plataforma de datos) emparejado con un backend PostgreSQL dedicado en un stack Pier. Env vars pre-cableadas, volúmenes persistentes, listo para equipos de contenido multi-usuario de producción o cualquier caso donde SQLite ya no sea suficiente.

Desplegar este servicio →