Pular para o conteúdo

Implementando Rebase no Scaleway

Scaleway é um provedor de nuvem europeu de destaque baseado na França, com datacenters em Paris, Amsterdã e Varsóvia. É uma excelente escolha para organizações que priorizam a soberania de dados da UE.

Recomendamos utilizar o Managed Database da Scaleway para um suporte Postgres confiável e Serverless Containers para escalar dinamicamente a aplicação Rebase Node.js.

Os Managed Databases da Scaleway oferecem backups automáticos e alta disponibilidade.

  1. No Console Scaleway, vá para PostgreSQL.
  2. Clique em Criar uma Instância de Banco de Dados.
  3. Escolha uma Região (ex: Paris - PAR1).
  4. Selecione um Tipo de Nó (um padrão Play2-Pico ou Pro2-XXS funciona bem).
  5. Adicione um nome de banco de dados (rebase_db) e defina uma senha de usuário incrivelmente segura.
  6. Após a implantação, anote a string de conexão (URI) do painel. Ela terá a seguinte aparência: postgres://user:password@ip:port/rebase_db

Os Scaleway Serverless Containers executam imagens Docker padrão. Primeiro, construa o backend Rebase localmente e envie-o para o Scaleway Container Registry.

  1. Vá para Container Registry no Console Scaleway e crie um Namespace (ex: rebase-apps).
  2. Faça login no registro a partir do seu terminal local usando as instruções fornecidas.
  3. Construa sua aplicação Rebase a partir da raiz do projeto — o Dockerfile do backend precisa de todo o workspace como contexto de build (ele copia pnpm-workspace.yaml, backend/ e config/), por isso o contexto é . e não ./backend:
docker build -t rg.fr-par.scw.cloud/rebase-apps/rebase-backend:latest -f backend/Dockerfile .
  1. Envie a imagem:
docker push rg.fr-par.scw.cloud/rebase-apps/rebase-backend:latest

Agora implemente a imagem de forma totalmente serverless sem gerenciar infraestrutura.

  1. Navegue até Serverless Containers.
  2. Clique em Criar um Contêiner.
  3. Escolha a imagem que você acabou de enviar do Container Registry.
  4. Defina a Porta para 3001.
  5. Em Variáveis de Ambiente, adicione o seguinte de forma segura:
Chave Valor
DATABASE_URL O URI da sua etapa de Postgres Gerenciado
JWT_SECRET Uma string aleatória segura de 32+ caracteres para assinar tokens de autenticação
NODE_ENV production
  1. Clique em Implementar Contêiner.

A Scaleway provisionará imediatamente o contêiner e fornecerá um URL de endpoint público (ex: https://rebase-backend-xxxx.functions.fnc.fr-par.scw.cloud).

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="<o URI do seu Postgres Gerenciado>" pnpm run db:push

Rode 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. O Managed Database da Scaleway expõe um endpoint público, então use a mesma string de conexão do passo do Postgres Gerenciado para executar o comando a partir da sua máquina.

Para migrações versionadas, use pnpm run db:generate seguido de pnpm run db:migrate em vez de db:push.

Nota: Para conformidade de dados rigorosa, verifique se os detalhes da sua Organização Scaleway refletem sua entidade corporativa europeia.