Implementando Rebase no Fly.io
Fly.io permite hospedar contêineres Docker perto dos seus usuários através da sua rede global anycast. Fly é altamente configurável em relação ao roteamento de dados, tornando-o uma excelente escolha para implementar aplicações Rebase com um foco rigoroso em dados europeus.
Fly.io possui centros de dados em Amsterdã (ams), Frankfurt (fra), Madri (mad) e Paris (cdg).
1. Inicializar a Aplicação Fly
Seção intitulada “1. Inicializar a Aplicação Fly”Do seu repositório local do Rebase, após garantir que o Fly CLI (flyctl) esteja instalado, execute:
fly launch- Nome da Aplicação:
my-rebase-app - Organização: Pessoal ou a sua Org. corporativa.
- Região: Quando solicitado por uma região, escolha explicitamente um centro de dados europeu, como Frankfurt (fra) ou Paris (cdg).
- Base de Dados: Quando solicitado para configurar uma base de dados Postgres, diga Sim. O Fly criará automaticamente um cluster Postgres na mesma região e injetará de forma segura a
DATABASE_URLna sua aplicação. - Redis: Diga Não.
Não implemente ainda quando solicitado. Precisamos definir uma variável de ambiente crítica primeiro.
2. Definindo o Segredo JWT
Seção intitulada “2. Definindo o Segredo JWT”Antes que sua aplicação entre em produção, você deve injetar o Segredo JWT para que o Rebase possa assinar com segurança as operações de tokens de autenticação.
Execute o seguinte comando localmente:
fly secrets set JWT_SECRET=your_super_long_randomly_generated_secure_string -a my-rebase-app3. Validar Configuração Interna
Seção intitulada “3. Validar Configuração Interna”O Fly terá gerado um arquivo fly.toml na raiz do seu projeto. Verifique se a porta interna se alinha explicitamente com a configuração padrão do Rebase (3001):
# fly.tomlapp = "my-rebase-app"primary_region = "fra"
[build] dockerfile = "backend/Dockerfile" # relative to the build context (project root): the backend image needs the whole workspace, not just ./backend
[http_service] internal_port = 3001 # Make sure this matches your Hono app port force_https = true auto_stop_machines = true auto_start_machines = true min_machines_running = 14. Implementar
Seção intitulada “4. Implementar”Os seus dados estão localizados, a sua base de dados está provisionada e os seus segredos estão injetados. Inicie a implementação:
fly deployAssim que a análise e o upload forem concluídos, sua aplicação ficará online automaticamente. Execute fly open para visualizar sua aplicação implementada no navegador!
5. Criar o Esquema do Banco de Dados
Seção intitulada “5. Criar o Esquema do Banco de Dados”Ao iniciar, o Rebase cria automaticamente apenas as tabelas de autenticação. As tabelas das suas próprias coleções não são criadas automaticamente. A aplicação sobe normalmente e o login funciona — por isso a armadilha passa despercebida —, mas toda coleção retorna um erro de tabela ausente (“missing table”) até você aplicar o esquema.
Execute pnpm run db:push uma vez contra o banco de dados de produção:
DATABASE_URL="postgres://...@localhost:5432/..." pnpm run db:pushRode isso a partir de um checkout do projeto ou da sua CI, com a DATABASE_URL apontando para produção — não dentro do contêiner, pois a imagem de produção não inclui a CLI. Como o Postgres do Fly não fica exposto publicamente, abra primeiro um túnel local com fly proxy 5432 -a <seu-app-db> e aponte a DATABASE_URL para localhost:5432.
Para migrações versionadas, use pnpm run db:generate seguido de pnpm run db:migrate em vez de db:push.
