Skip to main content

Levantar el backend localmente

Requisitos​

  • .NET 9 SDK
  • Docker (para el stack completo con SQL Server + MySQL)

Arranque rápido​

ABA-backend/
cd ABA-backend
dotnet restore abaproblem.csproj
dotnet build abaproblem.csproj -c Release # lo mismo que corre CI
dotnet run # carga .env si existe, nunca pisa una env var real

dotnet run por sí solo no levanta SQL Server ni MySQL — para eso hace falta el stack completo:

Stack completo local
docker compose up --build

Esto levanta SQL Server, el backend y Nginx en un mismo docker-compose.yml pensado solo para desarrollo local (nunca es lo que corre en producción — ver CI/CD y Despliegue).

Variables de entorno​

Copiá el archivo de ejemplo y completá los valores reales antes de arrancar:

cp .env.example .env

.env nunca se commitea — está en .gitignore y además hay un hook de pre-commit que escanea el repo en busca de secretos antes de cada commit.

Scripts SQL: orden estricto​

Los scripts de sql/ dependen unos de otros y deben ejecutarse en orden numérico contra la instancia de SQL Server — correr uno fuera de orden falla porque referencia objetos que el anterior todavía no creó. El primero define el esquema base; los siguientes agregan Stored Procedures, triggers de seguridad, y cada módulo funcional (perfil de usuario, API keys, DNS, sesiones, células socias) en el orden en que se fueron incorporando al proyecto.

Cuenta administrativa de MySQL​

El backend se conecta al motor MySQL externo con una cuenta de privilegios mínimos — nunca SUPER ni permisos globales sobre todas las bases (GRANT ALL PRIVILEGES ON *.*). Los permisos exactos que necesita (crear/eliminar bases, crear usuarios, y re-otorgar permisos sobre las bases que crea) están documentados en el README.md del repo del backend.

Verificación de arranque​

El backend valida al arrancar que la clave de cifrado configurada coincide con el hash ya registrado en la base de control — si no coincide, el proceso lanza una excepción y no arranca en vez de operar silenciosamente con datos que no puede descifrar correctamente. Ver Cifrado y Claves para el detalle completo.