Una agencia que crea un sitio web o una aplicación a medida para un cliente, tarde o temprano se encuentra con la pregunta de dónde debe residir el contenido: textos, fotos de productos, entradas de blog, datos que se muestran en el frontend. Contentful resuelve este problema, pero cobra por el número de llamadas a la API, por lo que la factura crece con el tráfico del sitio web del cliente, incluso si el contenido en sí no cambia. Directus es un CMS headless de código abierto que hace lo mismo sin un contador de consultas: conectas una base de datos, obtienes un panel de administración listo, generado automáticamente a partir del esquema de esa base de datos, y API REST y GraphQL al instante. A continuación, te explicamos paso a paso cómo instalar Directus en Saplo.
Por qué Directus en lugar de Contentful
Contentful y otros CMS headless de pago tienen dos características que más afectan a las agencias que trabajan para varios clientes a la vez:
- facturación basada en el número de llamadas a la API: cuanto más tráfico genera la web del cliente, mayor es la factura mensual, y con varios proyectos en la misma cuenta, los costes se suman.
- el modelo de contenido debe construirse manualmente desde cero en el panel del proveedor: Directus, en cambio, lee el esquema de la base de datos existente y genera automáticamente un panel de administración a partir de él; las colecciones corresponden a las tablas y los campos a las columnas.
Directus no es una base de datos de contenido separada del resto del sistema, sino una capa sobre tu propia base de datos. Si la agencia ya tiene un modelo de datos diseñado para un proyecto específico, Directus lo expone como una API en lugar de obligar a reescribir la estructura a un formato de terceros.
Requisitos
Para instalar Directus en Saplo, necesitas:
- Un Box con Docker en ejecución (el motor lo activa automáticamente al instalar desde el Catálogo de aplicaciones; se requiere anidamiento en el contenedor, lo cual Saplo tiene por defecto).
- Mínimo 1 GB de RAM libre en el Box y 3 GB de espacio en disco, es decir, el plan Box M o superior.
- Un dominio o subdominio
*.saploapp.plincluido en el precio de cada plan, donde se alojará el panel de Directus. - Tu propio contenedor PostgreSQL. El motor de Saplo tiene una base de datos compartida solo para MySQL/MariaDB, por lo que Directus recibe un contenedor dedicado
postgres:16-alpineen el mismo docker-compose. No necesitas configurar nada manualmente.
Instalación paso a paso
- En el panel de Saplo, ve a Catálogo de aplicaciones y elige Directus (categoría "Datos").
- Indica la Box con un mínimo de 1 GB de RAM libre donde se instalará Directus, y el dominio o subdominio bajo el cual funcionará el panel.
- Confirma la instalación. El motor crea un contenedor dedicado de Postgres y un contenedor de Directus a partir de la imagen oficial
directus/directus, genera los valores aleatoriosKEYySECRETrequeridos por la aplicación, expone el panel únicamente en el loopback de la Box y lo conecta a nginx, que lo sirve bajo el dominio especificado con SSL gratuito. Solo se expone el puerto 443, no el puerto crudo del contenedor. - El contenedor de Directus se inicia solo después de que Postgres informa que está listo (healthcheck
pg_isready), y el motor verifica adicionalmente a través dedocker compose upsi el contenedor realmente funciona, porque el éxito del comando por sí solo no significa que el proceso interno no haya fallado poco después. - Una vez finalizada la instalación, el panel de Directus está disponible en el dominio especificado.
Primera configuración
La imagen de Directus asume automáticamente una cuenta de administrador en el primer inicio con una base de datos vacía, por lo que, al igual que con Listmonk o Paperless-ngx, no tienes que pasar por un asistente de registro separado.
- Accede a la dirección de tu dominio, por ejemplo
cms.saploapp.pl; los datos de inicio de sesión (correo electrónico y contraseña generada aleatoriamente) los encontrarás en el archivoDIRECTUS-SETUP.txten el directorio de la aplicación en el Box. - Cambia la contraseña de administrador inmediatamente después del primer inicio de sesión en Ajustes -> Usuarios; guarda los datos del archivo de configuración solo hasta que realices este cambio.
- En Ajustes de datos, crea tu primera Colección. Directus te sugiere campos para casos típicos, como texto, número, imagen o relación con otra colección, y cada colección es una tabla en la base de datos de Postgres.
- Abre la pestaña Ajustes -> Roles y permisos y configura el rol Público. Si tu frontend necesita leer contenido de la API sin iniciar sesión, desde aquí le otorgas acceso de solo lectura a las colecciones seleccionadas.
- Comprueba los endpoints generados en
https://cms.saploapp.pl/items/<collection_name>(REST) yhttps://cms.saploapp.pl/graphql(GraphQL); ambos funcionan de inmediato, sin configuración adicional.
Directus en Saplo vs. Contentful
| Contentful | Directus en Saplo | |
|---|---|---|
| Modelo de precios | la tarifa aumenta con el número de llamadas a la API y registros | coste fijo del Box, sin límite de consultas |
| Modelo de contenido | lo construyes manualmente desde cero en el panel del proveedor | generado automáticamente a partir del esquema de tu base de datos |
| Base de datos | cerrada, acceso solo a través de la API del proveedor | tu propio Postgres, tienes acceso completo a ella |
| API | REST y GraphQL, límite de consultas dependiente del plan | REST y GraphQL sin contador de llamadas |
| Dónde están los datos | infraestructura de Contentful | Tu Box |
Preguntas frecuentes
¿Es Directus adecuado para un proyecto que ya tiene una base de datos diseñada? Sí, esa es su fortaleza: el panel de administración y la API se generan automáticamente a partir del esquema de la base de datos existente, por lo que no necesitas reescribir el modelo de datos para adaptarlo a un formato impuesto por el proveedor del CMS.
¿Es necesario configurar una base de datos Postgres antes de la instalación? No, el motor de Saplo configura un contenedor Postgres dedicado junto con Directus en el mismo docker-compose e inyecta los datos de conexión automáticamente. Para la instalación, no necesitas ninguna configuración externa.
¿La API de Directus tiene un límite en el número de llamadas? No, a diferencia de Contentful o servicios de pago similares, el número de consultas a REST y GraphQL está limitado exclusivamente por los recursos de Box, no por un contador en la lista de precios.
¿Se puede conectar Directus a un frontend en Next.js o a una aplicación móvil? Sí, para eso sirve Directus: el frontend o la aplicación móvil recupera el contenido a través de la API REST o GraphQL generada, y el equipo editorial del cliente lo edita en un panel separado, sin acceso al código.
¿Por qué las primeras credenciales de inicio de sesión deben buscarse en un archivo en el Box, y no en un correo electrónico?
Directus crea automáticamente la cuenta de administrador al iniciar el contenedor por primera vez. El motor de Saplo guarda la contraseña generada en el archivo DIRECTUS-SETUP.txt en el directorio de la aplicación en lugar de enviarla por correo electrónico, siguiendo el mismo patrón que con otras aplicaciones con cuenta de inicio automática.
Si estás construyendo un proyecto con un frontend separado y necesitas un backend de contenido sin una factura por cada llamada a la API, escríbenos. Te ayudaremos a elegir el Box adecuado para la escala de tu proyecto.
- #Agencias
- #API
- #Directus
- #Headless CMS
- #Guía
