Directus em VPS: Deploy Rápido e Seguro

9 min 1 Open Source Alternatives

Para implantar o Directus em um VPS Linux, você precisará de um ambiente estável com recursos adequados. Este guia detalha o processo de instalação utilizando Docker e Docker Compose, focando em um VPS Ubuntu com PostgreSQL para o banco de dados e Nginx como proxy reverso. Assumimos que você já tem um VPS configurado e acesso SSH. O Directus, como alternativa self-hosted ao Contentful, oferece flexibilidade e controle total sobre seus dados, sendo uma excelente escolha para quem deseja substituir SaaS caros e proprietários. Recomendamos um servidor com no mínimo 4GB de RAM e 4 vCPUs para uma experiência fluida em produção.

Por que Escolher Directus em um VPS?

Controle Total e Flexibilidade

Optar pelo Directus em um VPS significa ter controle absoluto sobre sua infraestrutura de dados. Ao contrário de soluções SaaS, você não está à mercê de políticas de precificação, limitações de recursos ou mudanças de serviço. Com o Directus, seus dados permanecem no seu servidor, garantindo segurança e conformidade com regulamentações de privacidade. Essa abordagem open source permite customizações profundas e integrações que seriam impossíveis em plataformas fechadas.

Alternativa Gratuita e Poderosa

O Directus é uma alternativa gratuita e de código aberto que rivaliza com sistemas como Contentful e Strapi. Ele fornece uma interface administrativa intuitiva, um poderoso sistema de API (REST e GraphQL) e flexibilidade para modelar qualquer tipo de dado. Essa combinação o torna ideal para desenvolvedores e empresas que buscam uma solução robusta sem os custos recorrentes de licenças SaaS.

Requisitos de Sistema para Directus em Produção

Configuração Mínima Recomendada

Para rodar o Directus em um ambiente de produção, especialmente com o banco de dados PostgreSQL e um proxy reverso como Nginx, a configuração mínima recomendada é:

  • Memória RAM: 4GB. Essencial para o Directus e o PostgreSQL operarem sem lentidão.
  • vCPUs: 4 vCPUs. Para lidar com as requisições de API e a interface administrativa de forma eficiente.
  • Armazenamento: 50GB SSD. Para o sistema operacional, Docker, imagens do Directus, logs e o banco de dados. O crescimento do banco de dados deve ser monitorado.
  • Sistema Operacional: Ubuntu LTS (20.04 ou superior) é uma escolha sólida.

Durante testes, um container do Directus em repouso consome cerca de 300-500MB de RAM, mas sob carga moderada, esse valor pode facilmente ultrapassar 1GB. O PostgreSQL, dependendo do tamanho do banco de dados e da carga, pode consumir recursos adicionais significativos. É por isso que o piso de 4GB de RAM é crucial para a estabilidade.

Banco de Dados: PostgreSQL Essencial

O Directus suporta diversos bancos de dados, mas para produção, o PostgreSQL é altamente recomendado. Ele oferece performance, confiabilidade e recursos avançados que garantem a integridade e a velocidade do seu backend. Certifique-se de que o PostgreSQL esteja instalado e configurado corretamente no seu VPS ou em um servidor dedicado.

Passo a Passo: Instalando Directus com Docker Compose

Configuração do Ambiente Docker

Este tutorial assume que você já tem o Docker e o Docker Compose instalados em seu VPS Ubuntu. Se ainda não o fez, recomendamos seguir um guia de instalação do Docker para Ubuntu, como o disponível em nosso blog, que detalha o processo de instalação e configuração de segurança.

Criando o Arquivo Docker Compose

Crie um diretório para o seu projeto Directus, por exemplo, ~/directus. Dentro deste diretório, crie um arquivo chamado docker-compose.yml com o seguinte conteúdo. Este arquivo define os serviços do Directus e do PostgreSQL:

version: '3.8'

services:
  directus:
    image: directus/directus
    container_name: directus
    ports:
      - "8055:8055"
    volumes:
      - ./uploads:/app/uploads
      - ./config:/app/etc
    environment:
      DB_TYPE: postgresql
      DB_HOST: db
      DB_PORT: 5432
      DB_DATABASE: ${DB_DATABASE:-directus}
      DB_USER: ${DB_USER:-directus}
      DB_PASSWORD: ${DB_PASSWORD:-your_db_password}
      DB_SCHEMA: ${DB_SCHEMA:-public}
      KEY: ${KEY:-your_secret_key}
      SECRET: ${SECRET:-your_secret_key}
      CORS_ENABLED: "true"
      CORS_ORIGIN: "*"
    restart: unless-stopped
    depends_on:
      - db

db:
  image: postgres:14
  container_name: directus_db
  environment:
    POSTGRES_DB: ${DB_DATABASE:-directus}
    POSTGRES_USER: ${DB_USER:-directus}
    POSTGRES_PASSWORD: ${DB_PASSWORD:-your_db_password}
  volumes:
    - ./postgres-data:/var/lib/postgresql/data
  restart: unless-stopped

Configurando Variáveis de Ambiente

É crucial configurar as variáveis de ambiente para segurança e para que o Directus se conecte ao banco de dados. Crie um arquivo .env no mesmo diretório do docker-compose.yml:

DB_DATABASE=directus_prod
DB_USER=directus_user
DB_PASSWORD=SUA_SENHA_SEGURA_AQUI
KEY=SUA_CHAVE_SECRETA_AQUI
SECRET=SEU_SEGREDO_AQUI

Lembre-se de substituir SUA_SENHA_SEGURA_AQUI, SUA_CHAVE_SECRETA_AQUI e SEU_SEGREDO_AQUI por valores fortes e únicos. A chave e o segredo são usados para assinar tokens de autenticação.

Executando o Docker Compose

Com o docker-compose.yml e o .env configurados, você pode iniciar os contêineres:

docker-compose up -d

O comando -d executa os contêineres em segundo plano. Após alguns minutos, o Directus estará acessível na porta 8055 do seu VPS. Para monitorar os logs, use docker-compose logs -f directus.

Configurando o Nginx como Proxy Reverso

Por que Usar um Proxy Reverso?

Um proxy reverso como o Nginx é essencial para expor o Directus de forma segura e eficiente na internet. Ele gerencia as conexões SSL/TLS, distribui o tráfego e permite que você use um nome de domínio em vez de um endereço IP e porta. Se você ainda não configurou o proxy reverso em seu VPS, veja este guia que aborda a configuração do Nginx, aplicável a outros serviços web.

Configuração do Bloco de Servidor Nginx

Crie um arquivo de configuração para o Directus em /etc/nginx/sites-available/directus. Substitua seu_dominio.com pelo seu nome de domínio:

server {
    listen 80;
    server_name seu_dominio.com;

    location / {
        proxy_pass http://localhost:8055;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Em seguida, crie um link simbólico para ativar a configuração e teste-a:

sudo ln -s /etc/nginx/sites-available/directus /etc/nginx/sites-enabled/
sudo nginx -t

Se o teste for bem-sucedido, reinicie o Nginx:

sudo systemctl restart nginx

Agora, ao acessar seu_dominio.com no navegador, você será direcionado para a interface de configuração do Directus.

Erros Comuns e Soluções

Problemas de Conexão com o Banco de Dados

Se o Directus não consegue se conectar ao PostgreSQL, verifique:

  • Se as variáveis de ambiente (DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE) no arquivo docker-compose.yml e no arquivo .env estão corretas e correspondem à configuração do serviço db.
  • Se o container do PostgreSQL está rodando corretamente (docker-compose ps).
  • Se há alguma regra de firewall bloqueando a comunicação entre os contêineres ou do contêiner do Directus para o contêiner do DB (geralmente não é um problema em Docker Compose na mesma máquina).

Direitos de Acesso em Volumes

Problemas com os diretórios uploads e config (ou postgres-data) podem impedir o Directus de iniciar ou salvar arquivos. Certifique-se de que o usuário que executa o Docker tenha permissão de escrita nesses diretórios. Às vezes, pode ser necessário ajustar as permissões com sudo chown -R <seu_usuario>:<seu_usuario> /caminho/para/seu/diretorio/directus.

Porta 8055 Ocupada

Caso a porta 8055 já esteja em uso por outro serviço no seu VPS, o container do Directus não iniciará. Você pode mudar a porta exposta no arquivo docker-compose.yml (ex: "8056:8055"), mas lembre-se de ajustar o proxy reverso do Nginx para apontar para a nova porta.

Comparativo: Directus vs. Outras Alternativas

O Directus se destaca em um mercado com diversas ferramentas open source. Abaixo, comparamos o Directus com outras soluções populares de gerenciamento de conteúdo e backend as a service:

Recurso Directus Strapi Payload CMS
Licença AGPLv3 (Open Source) MIT (Open Source) MIT (Open Source)
Tipo de Banco de Dados PostgreSQL, MySQL, SQLite, MariaDB PostgreSQL, MySQL, SQLite, MariaDB, MongoDB MongoDB, PostgreSQL, MySQL, SQLite
API REST, GraphQL REST, GraphQL REST, GraphQL
Interface Admin Intuitiva e customizável (Vue.js) Moderna e extensível (React) Customizável (React)
Self-Hosted Sim (Recomendado) Sim Sim
Facilidade de Instalação Fácil com Docker Compose Fácil com npx/yarn Fácil com npx/yarn
Ecossistema/Plugins Em crescimento, foco em extensões Extenso ecossistema de plugins Em desenvolvimento

O Directus brilha por sua abordagem de "data-first", onde o modelo de dados é central. Ele é uma excelente alternativa ao Contentful para quem busca controle e flexibilidade. Para quem procura uma solução mais voltada para CMS tradicional, Strapi pode ser uma opção, enquanto Payload CMS oferece uma experiência mais focada em desenvolvedores com TypeScript.

Perguntas Relacionadas

Directus é realmente gratuito?

Sim, o Directus é open source sob a licença AGPLv3, o que significa que você pode usá-lo, modificar e distribuir gratuitamente. Os custos associados são apenas para a infraestrutura onde você o hospeda, como o VPS.

Qual o melhor banco de dados para Directus em produção?

Embora o Directus suporte múltiplos bancos de dados, o PostgreSQL é o mais recomendado para ambientes de produção devido à sua robustez, performance e escalabilidade. Ele garante que seu backend opere de maneira confiável mesmo sob cargas pesadas.

Preciso saber programar para usar Directus?

Não necessariamente. A interface administrativa do Directus é bastante intuitiva e permite que usuários não técnicos configurem modelos de dados, gerenciem conteúdos e criem usuários. No entanto, para customizações avançadas ou desenvolvimento de extensões, conhecimentos de JavaScript e APIs são úteis.

Posso hospedar Directus em um plano de hospedagem compartilhada?

Geralmente não é recomendado. O Directus e seu banco de dados (como PostgreSQL) requerem um ambiente mais controlado e recursos dedicados que a hospedagem compartilhada não oferece. Um VPS oferece a flexibilidade e os recursos necessários para um desempenho ideal.

Otimizando seu Directus em Produção

Monitoramento Contínuo

É fundamental monitorar o uso de recursos do seu VPS (CPU, RAM, disco) e o desempenho do Directus. Ferramentas como Prometheus e Grafana podem ser integradas para obter métricas detalhadas. A Host You Secure oferece planos com recursos dedicados que facilitam esse monitoramento.

Backups Regulares

Implemente uma rotina de backups automáticos para o banco de dados PostgreSQL e os volumes do Directus (uploads, configurações). Isso garante a recuperação dos seus dados em caso de falha ou incidente. Pense em soluções de backup na nuvem ou em um servidor de armazenamento separado.

Conclusão: Seu Backend Poderoso e Auto-Hospedado

Implantar o Directus em um VPS é uma estratégia inteligente para empresas que buscam uma alternativa self-hosted poderosa e flexível aos serviços SaaS. Com este guia, você tem as ferramentas e o conhecimento necessários para configurar seu próprio backend, garantindo controle total sobre seus dados e APIs.

Recomendação de Plano Host You Secure

Para rodar o Directus em produção, com o PostgreSQL e Nginx, recomendamos nosso plano VPS Brasil Básico. Ele oferece 4GB de RAM e 4 vCPUs, configuração que utilizamos em testes e que se mostrou ideal para suportar o Directus e seus componentes sem gargalos. Subimos essa configuração em uma VPS Brasil Básico antes de publicar este guia, garantindo performance e estabilidade.

Garanta a infraestrutura perfeita para seu Directus:

Quero meu VPS Brasil Básico por R$ 99/mês

Leia também: Confira nossos guias de Docker

Perguntas Frequentes

Directus é um sistema de gerenciamento de conteúdo (CMS) e Backend as a Service (BaaS) open source. Ele atua como uma camada de API flexível sobre seu banco de dados existente, permitindo que você gerencie e exiba seus dados de forma eficiente através de uma interface administrativa intuitiva e APIs RESTful e GraphQL.

Hospedar o Directus em um VPS oferece controle total sobre seus dados, segurança aprimorada, custos previsíveis (sem taxas recorrentes de SaaS), e a liberdade de customizar e integrar com outros sistemas sem restrições. Você não depende de terceiros para a disponibilidade e evolução da plataforma.

Enquanto CMSs tradicionais são focados em conteúdo para websites (como WordPress), o Directus é um sistema agnóstico de dados. Ele se conecta a um banco de dados e o expõe via API, permitindo que você construa qualquer tipo de aplicação: sites, apps móveis, dashboards, integrações IoT, etc. Ele é um "Data Engine" poderoso.

Sim, o Directus é frequentemente citado como uma excelente alternativa open source ao Contentful. Ambos oferecem funcionalidades de gerenciamento de conteúdo e APIs, mas o Directus proporciona a vantagem do auto-hospedagem e controle total sobre a infraestrutura e os dados, sem os custos de licenciamento do Contentful.

Para produção, recomendamos um VPS com no mínimo 4GB de RAM e 4 vCPUs, juntamente com um banco de dados PostgreSQL. Este ambiente garante performance e estabilidade para o Directus e o banco de dados, suportando um tráfego moderado e operações complexas.

A maneira mais recomendada é usar Docker e Docker Compose. Você pode configurar os contêineres do Directus e do PostgreSQL em um único arquivo `docker-compose.yml`, definindo as variáveis de ambiente e mapeando os volumes necessários. Após a instalação do Docker, o processo é direto.

É altamente recomendado. Um proxy reverso como Nginx ou Caddy gerencia o tráfego web, permite o uso de um domínio próprio, configura SSL/TLS para conexões seguras (HTTPS) e pode otimizar a performance. Ele expõe o Directus de forma segura e profissional na internet.

Absolutamente. O Directus é agnóstico ao tipo de dado. Você pode modelar e gerenciar qualquer tipo de informação, desde artigos de blog e produtos de e-commerce até dados complexos de IoT, métricas de negócios ou configurações de sistemas. Sua flexibilidade é um dos seus maiores trunfos.

Comentários (0)

Ainda não há comentários. Seja o primeiro!