Mais cedo ou mais tarde, uma agência que cria um site ou uma aplicação para um cliente depara-se com a questão de onde deve estar o conteúdo: textos, fotos de produtos, posts de blog, dados apresentados no frontend. O Contentful resolve este problema, mas cobra pelo número de chamadas da API, pelo que a fatura aumenta com o tráfego do site do cliente, mesmo que o conteúdo em si não mude. O Directus é um CMS headless de código aberto que faz o mesmo sem um contador de queries: ligas uma base de dados, obténs um painel de administração pronto, gerado automaticamente a partir do esquema dessa base de dados, e uma API REST e GraphQL de imediato. Abaixo, passo a passo, como configurar o Directus no Saplo.
Porquê Directus em vez de Contentful
O Contentful e outros CMS headless pagos têm duas características que mais incomodam as agências que trabalham para vários clientes ao mesmo tempo:
- faturação por número de chamadas de API - quanto mais tráfego o site do cliente gera, maior a fatura mensal, e com vários projetos numa só conta, os custos somam-se,
- o modelo de conteúdo tem de ser construído manualmente a partir do zero no painel do fornecedor - o Directus, em vez disso, lê um esquema de base de dados existente e gera um painel de administração a partir dele, as coleções correspondem a tabelas e os campos correspondem a colunas.
O Directus não é uma base de dados de conteúdo separada do resto do sistema, mas uma camada sobre a tua própria base de dados. Se a agência já tem um modelo de dados desenhado para um projeto específico, o Directus expõe-no como uma API em vez de te forçar a reescrever a estrutura para um formato de terceiros.
Requisitos
Para instalares o Directus no Saplo, precisas de:
- Um Box com o Docker a funcionar (o motor ativa-o automaticamente ao instalar a partir do catálogo, é necessário o nesting num contentor, algo que o Saplo tem por padrão),
- No mínimo 1 GB de RAM livre no Box e 3 GB de espaço em disco, ou seja, o plano Box M ou superior,
- Um domínio ou subdomínio
*.saploapp.plincluído em cada plano, onde será instalado o painel do Directus, - O teu próprio contentor PostgreSQL. O motor Saplo tem uma base de dados partilhada apenas para MySQL/MariaDB, então o Directus recebe um contentor dedicado
postgres:16-alpineno mesmo docker-compose. Não precisas de configurar nada manualmente.
Instalação passo a passo
- No Painel Saplo, acede ao Catálogo de aplicações e seleciona Directus (categoria "Dados").
- Indica uma Box com, no mínimo, 1 GB de RAM livre, onde será instalado o Directus, e o domínio ou subdomínio sob o qual o painel irá operar.
- Confirma a instalação. O motor irá criar um contentor Postgres dedicado e um contentor Directus a partir da imagem oficial
directus/directus, gerar valores aleatóriosKEYeSECRETnecessários para a aplicação, expor o painel apenas no loopback da Box e conectar ao Nginx, que o servirá sob o domínio indicado com SSL gratuito. Apenas a porta 443 é exposta externamente, não a porta bruta do contentor. - O contentor Directus só inicia depois de o Postgres reportar que está pronto (healthcheck
pg_isready), e o motor verifica adicionalmente, apósdocker compose up, se o contentor está realmente a funcionar, pois o sucesso do comando por si só não significa que o processo interno não tenha falhado momentos depois. - Após a conclusão da instalação, o painel Directus estará disponível sob o domínio indicado.
Primeira configuração
A imagem do Directus cria automaticamente uma conta de administrador na primeira inicialização, numa base de dados vazia. Assim, como no Listmonk ou no Paperless-ngx, não passas por um assistente de registo separado.
- Acede ao endereço do domínio, por exemplo
cms.saploapp.pl, os dados de acesso (e-mail e palavra-passe gerada aleatoriamente) podem ser encontrados no ficheiroDIRECTUS-SETUP.txtno diretório da aplicação na Box. - Altera a palavra-passe do administrador imediatamente após o primeiro login em Definições -> Utilizadores. Mantém os dados do ficheiro de configuração apenas até esta alteração.
- Em Definições de dados, cria a primeira Coleção. O Directus propõe imediatamente campos para casos típicos, por exemplo, texto, número, imagem, relação com outra coleção, e cada coleção é uma tabela na base de dados Postgres.
- Abre o separador Definições -> Funções e permissões e configura a função Público. Se o frontend tiver de ler conteúdo da API sem login, é aqui que lhe dás acesso apenas de leitura a coleções selecionadas.
- Verifica os endpoints gerados em
https://cms.saploapp.pl/items/<collection_name>(REST) ehttps://cms.saploapp.pl/graphql(GraphQL). Ambos funcionam imediatamente, sem configuração adicional.
Directus na Saplo vs. Contentful
| Contentful | Directus na Saplo | |
|---|---|---|
| Modelo de Preços | A taxa aumenta com o número de chamadas de API e registos | Custo fixo da Box, sem limite de consultas |
| Modelo de Conteúdo | Criado manualmente no painel do fornecedor a partir do zero | Gerado automaticamente a partir do esquema da tua base de dados |
| Base de Dados | Fechada, acesso apenas através da API do fornecedor | PostgreSQL próprio, com acesso total |
| API | REST e GraphQL, limite de consultas dependente do plano | REST e GraphQL sem contador de chamadas |
| Onde estão os dados | Infraestrutura da Contentful | A tua Box |
Perguntas Frequentes
O Directus é adequado para um projeto que já tem uma base de dados projetada? Sim, esse é o seu ponto forte. O painel de administração e a API são gerados automaticamente a partir do esquema da base de dados existente, para que não precises de reescrever o modelo de dados para o formato imposto pelo fornecedor do CMS.
Preciso de configurar a base de dados Postgres manualmente antes da instalação? Não, o motor Saplo configura um contentor Postgres dedicado juntamente com o Directus no mesmo docker-compose e injeta as informações de conexão automaticamente. Não precisas de nenhuma configuração externa para a instalação.
A API do Directus tem um limite de chamadas? Não, ao contrário do Contentful ou serviços pagos semelhantes, o número de consultas REST e GraphQL é limitado apenas pelos recursos da Box, e não por um contador na tabela de preços.
É possível ligar o Directus a um frontend em Next.js ou a uma aplicação móvel? Sim, é para isso que o Directus serve. O frontend ou a aplicação móvel obtém o conteúdo através da API REST ou GraphQL gerada, e a equipa editorial do cliente edita-o num painel separado, sem acesso ao código.
Por que motivo as primeiras credenciais de login devem ser procuradas num ficheiro na Box, e não num e-mail?
O Directus cria a conta de administrador automaticamente na primeira vez que o contentor é iniciado. O motor Saplo guarda a palavra-passe gerada no ficheiro DIRECTUS-SETUP.txt no diretório da aplicação, em vez de a enviar por e-mail. É o mesmo padrão usado em outras aplicações com contas iniciais automáticas.
Se estás a construir um projeto com um frontend separado e precisas de um backend de conteúdo sem faturas por cada chamada de API, contacta-nos. Ajudaremos a escolher a Box certa para a escala do teu projeto.
- #Agências
- #API
- #Directus
- #Headless CMS
- #Guia
