Como Migrar uma Aplicação para um VPS Utilizando Docker e Supabase




A utilização de plataformas de desenvolvimento de baixo código pode acelerar a criação de aplicações, mas frequentemente vincula o projeto à infraestrutura do provedor, o que pode resultar em custos elevados. Uma alternativa é migrar a aplicação para um Servidor Privado Virtual (VPS), garantindo maior controle sobre o ambiente e os custos. O processo envolve a transferência tanto do backend quanto do frontend, utilizando ferramentas como Docker para containerização e plataformas de orquestração para simplificar o deploy.

Preparando o Ambiente do Backend no VPS

O primeiro passo na migração é recriar o ambiente de backend no servidor de destino. Para aplicações que utilizam serviços como o Supabase, é possível hospedar uma instância própria (self-hosted). Ferramentas de gerenciamento de deploy em VPS, como o Dokploy ou Coolify, simplificam essa tarefa ao oferecerem templates pré-configurados. A partir de um template, o sistema utiliza imagens Docker para criar os contêineres necessários para rodar todos os serviços do Supabase, como o banco de dados, autenticação e as funções de servidor.

Durante a configuração, pode ser necessário atualizar as versões das imagens Docker especificadas no arquivo de composição para garantir o uso das funcionalidades mais recentes. Além disso, configurações específicas podem ser requeridas, como a habilitação da interface de gerenciamento de funções (Edge Functions) no painel de controle do Supabase, o que exige a adição de variáveis de ambiente no serviço correspondente.

Migração das Funções de Servidor

As funções de servidor, ou Edge Functions, são componentes cruciais para executar lógica que não deve ser exposta no lado do cliente, como o acesso a APIs com chaves secretas. Para migrar uma função, é preciso acessar o contêiner correspondente na nova instância do Supabase. Isso pode ser feito através de um terminal integrado na plataforma de gerenciamento do VPS.

O código da função, geralmente contido em um arquivo como index.ts, deve ser transferido para o diretório apropriado dentro do contêiner. Para funções simples contidas em um único arquivo, a criação do arquivo pode ser feita diretamente pelo terminal. Após a transferência do código, é fundamental configurar as variáveis de ambiente necessárias para a execução da função, como chaves de API, que devem ser adicionadas nas configurações do contêiner para que fiquem disponíveis para o código. A validação do funcionamento pode ser realizada diretamente no painel do Supabase, que oferece uma ferramenta para testar a execução da função.

Configurando a Aplicação Frontend

Com o backend operando no VPS, o próximo passo é configurar a aplicação frontend. O acesso ao código-fonte é um pré-requisito, o que geralmente é viabilizado pela integração da plataforma de desenvolvimento original com um repositório Git, como o GitHub. É uma prática recomendada que este repositório seja mantido como privado, especialmente se a plataforma original incluir arquivos de configuração com dados sensíveis, como .env, no controle de versão.

A principal alteração no código do frontend consiste em atualizar os pontos de conexão com o backend. É preciso substituir a URL e as chaves públicas da instância original do Supabase pelas credenciais da nova instância auto-hospedada no VPS. Essa informação pode estar presente em múltiplos locais no código, exigindo uma verificação cuidadosa para garantir que toda a comunicação seja redirecionada para o novo ambiente.

Automatização do Processo de Build e Deploy

Para automatizar a implantação do frontend, podem ser utilizadas ferramentas de build como o Nixpacks. Essa abordagem permite definir as etapas de construção e execução da aplicação por meio de um arquivo de configuração, como o nixpacks.toml. Neste arquivo, é possível especificar a versão do Node.js, os comandos para instalar dependências (npm install), o comando para compilar o projeto (npm run build) e o comando para iniciar o servidor que servirá os arquivos estáticos.

A integração da plataforma de deploy do VPS com o repositório GitHub permite a criação de um fluxo de integração e entrega contínua (CI/CD). Ao configurar um gatilho (trigger) para a ação de push em uma determinada branch, cada atualização no código-fonte resulta em um novo deploy automático. Isso agiliza o ciclo de desenvolvimento e garante que a versão em produção esteja sempre sincronizada com o repositório.

Finalização e Acesso à Aplicação

Após configurar os serviços de backend e frontend, o último passo é publicá-los. É necessário configurar as variáveis de ambiente no serviço do frontend para que ele possa se comunicar com a instância do Supabase, informando o ID do projeto e a chave pública. Em seguida, um domínio ou subdomínio é associado ao contêiner da aplicação, e um certificado SSL pode ser provisionado para habilitar o acesso via HTTPS.

Com essas etapas concluídas, a aplicação estará totalmente funcional e rodando no ambiente do VPS. O resultado é uma aplicação desacoplada da plataforma de origem, com sua infraestrutura e dados sob o controle do desenvolvedor, rodando em um ambiente privado e customizável.

Comentários