Ir al contenido

Despliegue

El proyecto generado incluye un Dockerfile y un docker-compose.yml. Esta es la forma más sencilla de desplegar:

services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: rebase
POSTGRES_PASSWORD: rebase
POSTGRES_DB: rebase
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
app:
build: ./backend
ports:
- "3001:3001"
environment:
DATABASE_URL: postgresql://rebase:rebase@postgres:5432/rebase
JWT_SECRET: ${JWT_SECRET}
NODE_ENV: production
depends_on:
- postgres
volumes:
- uploads:/app/uploads
volumes:
pgdata:
uploads:
docker compose up -d

Antes de desplegar a producción, asegúrate de:

ElementoDetalles
JWT_SECRETUsa una cadena aleatoria criptográficamente fuerte (≥ 32 caracteres). Nunca la reutilices en diferentes entornos.
DATABASE_URLUsa una instancia de Postgres gestionada (Neon, Supabase, RDS) con TLS habilitado
CORSConfigura los orígenes permitidos en tu backend si el frontend y el backend están en dominios diferentes
Volúmenes de almacenamientoMonta volúmenes persistentes para la carga de archivos. O cambia a S3 para producción.
HTTPSTermina TLS en tu proxy inverso (nginx, Cloudflare, balanceador de carga)
RegistroEstablece ALLOW_REGISTRATION=false después de crear tu cuenta de administrador

En producción, el backend puede servir el frontend como una SPA estática:

import { serveSPA } from "@rebasepro/server-core";
// After initializeRebaseBackend()
import path from "path";
// After initializeRebaseBackend()
serveSPA(app, { frontendPath: path.resolve(process.cwd(), "../frontend/dist") });

Primero, construye el frontend:

cd frontend && pnpm build

De esta manera, solo necesitas desplegar un servidor que maneje tanto la SPA como la API.

  1. Sube tu código a un repositorio Git
  2. Conecta el repositorio a tu plataforma en la nube
  3. Configura las variables de entorno (DATABASE_URL, JWT_SECRET, etc.)
  4. El Dockerfile incluido será detectado automáticamente
# Build the container
docker build -t gcr.io/YOUR_PROJECT/rebase-backend ./backend
# Push to Container Registry
docker push gcr.io/YOUR_PROJECT/rebase-backend
# Deploy
gcloud run deploy rebase-backend \
--image gcr.io/YOUR_PROJECT/rebase-backend \
--set-env-vars DATABASE_URL=...,JWT_SECRET=... \
--allow-unauthenticated

Si quieres que Rebase se ejecute en una subruta (por ejemplo, /admin):

Frontend — Actualiza el basename de BrowserRouter:

<BrowserRouter basename="/admin">
<App />
</BrowserRouter>

Backend — Actualiza la ruta base:

await initializeRebaseBackend({
// ...
basePath: "/admin/api"
});