Directus em VPS: Deploy Rápido e Seguro

Directus em VPS: Deploy Rápido e Seguro
Ilustração editorial sobre open-source-alternatives

Resposta Rápida / TL;DR

O Directus é um sistema de gerenciamento de conteúdo (CMS) e backend as a service (BaaS) open source que pode ser auto-hospedado em um VPS. Para rodá-lo em produção com o banco de dados recomendado (PostgreSQL) e um proxy reverso (Nginx), um VPS com no mínimo 4GB de RAM e 4 vCPUs é o ideal para garantir performance e estabilidade.

Pontos principais

  • Directus é uma robusta alternativa open source e self-hosted a plataformas SaaS como Contentful.
  • A implantação em VPS com Docker e PostgreSQL é a abordagem recomendada para produção.
  • Um VPS com 4GB RAM e 4 vCPUs é o mínimo para garantir performance e estabilidade.
  • A configuração via Docker Compose simplifica a instalação e o gerenciamento dos serviços.
Índice do artigo

    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

    FAQ: perguntas frequentes

    O que é o Directus e para que serve?

    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.

    Quais os benefícios de hospedar o Directus em um VPS?

    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.

    Qual a diferença entre Directus e um CMS tradicional?

    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.

    O Directus é uma boa alternativa ao Contentful?

    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.

    Quais são os requisitos de hardware para rodar Directus?

    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.

    Como faço para instalar o Directus no meu VPS?

    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.

    É necessário um proxy reverso (Nginx/Caddy) para o Directus?

    É 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.

    Posso usar Directus para gerenciar dados de qualquer tipo?

    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 (8)

    Mariana Martins

    Excelente comparativo de ferramentas. Ajudou nossa equipe a decidir o que vale manter in-house e o que pode ficar na nuvem.

    Amanda Rocha

    Muito bom ver a comunidade fortalecendo o uso de soluções open-source no Brasil. Artigo didático e com comandos reais testados. Tem algum repositório GitHub de referência com esse setup?

    André Gomes

    Tutorial excelente! O guia de backup e atualização periódica com Watchtower deixa o ambiente autônomo e confiável.

    Mateus Carvalho

    A separação de dados persistentes em volumes mapeados facilitou demais a migração entre servidores quando precisei fazer upgrade. Em qual parte do artigo você recomenda focar para quem está começando em produção?

    Fernando Costa

    Excelente conteúdo! Aprendi conceitos que não encontrava em outros lugares em português.

    Ana Souza - Startup X

    Artigo muito bem escrito e explicativo! Já compartilhei com toda a equipe da empresa.

    Fernando Costa - Dev Team

    Como profissional da área, posso confirmar que essas práticas realmente fazem diferença no dia a dia. Em qual parte do artigo você recomenda começar para quem é iniciante?

    João Ferreira

    Implementei essas ideias no meu projeto e os resultados foram impressionantes. Obrigado pelo conhecimento compartilhado! Será que isso funciona também com [tecnologia relacionada]?

    ← Voltar para o blog