Blog Logo

Como Migrar do Supabase para o InsForge (Sem Perder Nem Um Dado)

Há algumas semanas falei com vocês sobre o InsForge, a alternativa ao Supabase que prometia mudar a forma como trabalham. E repercutiu. Porque desde então a pergunta mais repetida nos comentários, nas DMs, em todo lugar, sempre foi a mesma: “Edu, como faço para migrar o que já tenho no Supabase?”

Entendo perfeitamente. Muitos de vocês têm projetos reais, com usuários reais, dados reais. Não dá para simplesmente jogar tudo fora e começar do zero. Isso não é uma opção.

Pois bem, é exatamente isso que vamos ver hoje. Como fazer essa migração. E prometo: é muito mais simples do que parece.


Contexto rápido

Para quem chega novo, contexto rápido.

Em vídeos anteriores expliquei o que é o InsForge: um backend-as-a-service open source, com banco de dados PostgreSQL, autenticação, storage, realtime e seu próprio MCP para que agentes de IA possam trabalhar com ele diretamente. Sem sair do IDE, sem configurar nada manualmente. Uma loucura em termos de produtividade.

Depois fizemos outro vídeo mostrando como instalá-lo no seu próprio servidor. Vale muito a pena assistir se ainda não viu.

E depois desses dois vídeos, a pergunta mais repetida foi: “Como faço para migrar meu Supabase?” Tanto cloud quanto self-hosted.

Aqui estamos.

Há duas formas de fazer isso. Uma com o repositório oficial que a equipe do InsForge preparou. A outra com uma skill de IA para fazer diretamente do seu IDE favorito. Vamos ver as duas.


Opção 1: O repositório oficial

O que é

Existe um repositório oficial chamado supabase-to-insforge, disponível no GitHub. Não é um experimento. É algo que eles próprios usaram para migrar projetos reais. Na documentação mencionam que migraram 39 usuários, 985 linhas de banco de dados e 1.569 arquivos de storage, com uma taxa de sucesso de 99,8%. Não está mal.

A migração é dividida em três fases: autenticação, banco de dados e storage. E o que é ótimo: foi projetada para ser incremental - dá para parar, retomar, repetir etapas. Nada vai quebrar se algo falhar no meio do caminho.

O que você precisa

Antes de começar, você precisa de três coisas:

  • Node.js 20 ou superior
  • psql (o cliente PostgreSQL)
  • Acesso ao seu projeto no Supabase e à sua instância do InsForge

Passo 1: Clonar e instalar

git clone https://github.com/InsForge/supabase-to-insforge.git
cd supabase-to-insforge
npm install

Passo 2: Configurar as variáveis de ambiente

cp .env.example .env

Abra o .env e preencha com seus dados:

# Conexão direta com o seu banco de dados Supabase
SUPABASE_DB_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres

# Sua instância do InsForge
INSFORGE_API_URL=http://localhost:7130
INSFORGE_API_KEY=<seu token - veja abaixo>

Onde pegar a SUPABASE_DB_URL? Se estiver no cloud, encontre no dashboard do Supabase em Project Settings → Database → Connection string → Direct. Se estiver rodando localmente, fica assim:

postgresql://postgres:postgres@localhost:54322/postgres

E a INSFORGE_API_KEY? Essa não está em um lugar óbvio. Veja como obter:

  1. Faça login no seu dashboard do InsForge
  2. Abra o DevTools com F12 e vá para a aba Console
  3. Execute isso:
localStorage.getItem('insforge_token')
  1. Copie o JWT que retornar e cole no .env

Pronto. Ambiente configurado.


Fase 1: Migrar a autenticação

Essa é a parte mais delicada. Se errar aqui, seus usuários não conseguem entrar. Dois comandos:

npm run export:auth
npm run import:auth

O primeiro conecta ao seu banco de dados Supabase, exporta todos os usuários de auth.users e salva em auth-export.json. Inclui os IDs, emails e hashes de senha.

O segundo pega esse JSON e importa no InsForge, preservando os mesmos IDs de usuário para que as relações do banco não se quebrem.

E aqui tem algo que acho particularmente bem pensado: as senhas são preservadas. Tanto Supabase quanto InsForge usam bcrypt para o hash. Isso significa que seus usuários podem continuar entrando com a mesma senha de sempre, sem precisar redefinir. Se tentasse fazer isso manualmente, seria um pesadelo.


Fase 2: Migrar o banco de dados

Aqui o processo tem três etapas.

Exportar:

npm run export:db

Exporta o schema completo e todos os dados para database/supabase-dump.sql.

Transformar:

npm run transform:db

Essa é a etapa chave - prestem atenção. O SQL do Supabase não funciona diretamente no InsForge por causa de diferenças internas. O script de transformação cuida de várias mudanças automaticamente. Por exemplo:

  • No Supabase as políticas RLS usam auth.uid(). No InsForge é simplesmente uid()
  • O mesmo com auth.role()role() e auth.email()email()
  • A referência auth.users passa a se chamar _accounts no InsForge

Há duas coisas que requerem revisão manual e que o script não consegue fazer sozinho:

  1. auth.jwt(): se você tem políticas que leem dados diretamente do token JWT, isso não existe no InsForge e é preciso reescrever essa lógica usando uma tabela de roles ou similar.
  2. public.users: se você tem uma tabela com esse nome, ela colide com uma tabela interna do InsForge. Precisa renomear.

Importar:

npm run import:db

Fase 3: Migrar o storage

Para os arquivos, quatro etapas:

npm run create:buckets      # Cria os buckets no InsForge replicando os do Supabase
npm run export:storage      # Faz download de todos os arquivos para sua máquina
npm run import:storage      # Faz upload deles para o InsForge
npm run update:storage-urls # Atualiza as URLs no banco de dados

Esse último comando é importante. Atualiza todas as referências no banco que apontavam para o Supabase para que apontem para o InsForge. Nenhuma URL antiga fica esquecida em lugar nenhum.

E é esse o processo completo com o repositório. Se o ambiente estiver configurado corretamente, a migração em si não leva mais do que alguns minutos.


Opção 2: A skill de IA

Sei perfeitamente que tem gente que fechou o vídeo ao ver os passos acima. Não por ser complicado, mas por preguiça. E entendo.

Então tenho algo a mais.

Se você estiver usando Cursor, Claude Code, Windsurf, OpenCode ou qualquer agente de IA com suporte a skills, existe uma skill específica para fazer essa migração guiada diretamente do seu IDE. Sem abrir terminais manualmente, sem ficar procurando qual comando vem agora. Se chama migrate-to-insforge-skill e é open source.

A instalação é um comando:

npx skills add <link-do-repositório>

(O link está na descrição do vídeo.)

Durante a instalação você escolhe quais skills quer e se quer no nível do projeto ou global. Eu coloco global para ter disponível em qualquer projeto.

A partir daí, seu agente tem o conhecimento completo de como fazer a migração. Sabe quais etapas seguir, em que ordem, quais transformações aplicar no SQL, onde pode errar e onde precisa que você revise manualmente.

A skill cobre as cinco partes:

  • Autenticação
  • Banco de dados com todas as transformações SQL
  • Storage
  • Edge functions se você as tiver
  • Substituição do SDK do Supabase pelo do InsForge no seu código

Além disso, foi projetada com pontos de aprovação manual. O agente não vai sair executando coisas à toa. Vai propor o que quer fazer e você decide se continua ou não. Pode ficar tranquilo.


O que não migra automaticamente

Antes de terminar, algumas coisas que não quero que peguem vocês de surpresa.

As assinaturas de realtime: isso depende de como você implementou no código da sua aplicação. Precisa reescrever manualmente.

As edge functions: requerem revisão porque a sintaxe muda. No Supabase você usa Deno.serve, no InsForge é um export default. Não é complicado, mas não é automático.

Os tokens OAuth ativos: esses não podem ser migrados. Qualquer usuário com uma sessão ativa vai precisar fazer login novamente. As senhas migram tranquilamente - a sessão ativa, não.

Dito isso, não deixe isso te assustar. O grosso da migração - usuários, dados e arquivos - é completamente automático.


Vale a pena?

Digo que sim. O InsForge roda mais suave, tem menos fricção no self-hosted e se você paga pelo cloud vai sair mais barato que o equivalente no Supabase. Me deu muito menos dor de cabeça em produção, e é isso que importa no final das contas.

Se o vídeo foi útil e quer mais conteúdo sobre InsForge - como por exemplo uma comparação real em tabela entre Supabase e InsForge, self-hosted contra self-hosted - coloca nos comentários. Se tiver interesse, faço.

Os links do repositório oficial e da skill estão na descrição. Obrigado por ler e até o próximo.


O que você achou?

Deixe sua opinião, pergunta ou sugestão. Os comentários são sincronizados com GitHub Discussions .

Voltar ao blog