Saltar al contenido principal

instalacion


Guía de Instalación Local

Requisitos previos

  • .NET 10 SDK o superior
  • Docker (para SQL Server y MySQL en contenedores)
  • Git
  • Cliente de línea de comandos de SQL Server (sqlcmd, incluido en la imagen de Docker) y de MySQL (opcional, para pruebas)

Clonar el repositorio

git clone https://github.com/Anti-corruption-layer/backend-core.git
cd backend-core

Levantar las bases de datos con Docker

SQL Server (base de control)

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=TuClaveSegura#2026" \
-p 127.0.0.1:1433:1433 --name sqlserver --restart unless-stopped \
-v sqlserver_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2022-latest

MySQL (bases de estudiantes)

docker run -e "MYSQL_ROOT_PASSWORD=TuClaveSegura#2026" \
-p 3306:3306 --name mysql --restart unless-stopped \
-v mysql_data:/var/lib/mysql -d mysql:8.0

En producción, SQL Server solo escucha en 127.0.0.1 (nunca expuesto). MySQL sí se expone públicamente porque los estudiantes necesitan conectarse directo — ver servidor.md para el detalle de seguridad aplicado.

Ejecutar los scripts SQL

Los scripts de creación de tablas, Stored Procedures, Functions y Views están en la carpeta sql/ del repositorio. Ejecútalos en orden contra ControlDB (SQL Server) y mysql_control (MySQL) — ver stored-procedures.md para el detalle de cada uno.

Configurar variables de entorno

El backend no debe tener secretos en appsettings.json. Crea un archivo appsettings.Development.json local (ignorado por Git) con:

{
"ConnectionStrings": {
"SqlServer": "Server=localhost,1433;Database=ControlDB;User Id=sa;Password=TuClave;TrustServerCertificate=True;",
"MySql": "Server=127.0.0.1;Port=3306;Database=mysql_control;Uid=backend_provisioner;Pwd=TuClave;"
},
"Jwt": {
"Key": "una-clave-aleatoria-larga-solo-para-desarrollo-local",
"Issuer": "DBHostApi",
"Audience": "DBHostClient"
},
"GitHub": {
"ClientId": "tu-client-id",
"ClientSecret": "tu-client-secret"
},
"Google": {
"ClientId": "tu-client-id",
"ClientSecret": "tu-client-secret"
}
}

Correr el backend

cd src/BackendCore.Api
dotnet restore
dotnet run

El backend queda escuchando en http://localhost:5139 (puerto configurable en launchSettings.json).

Probar que todo funciona

curl -X POST http://localhost:5139/api/Auth/register \
-H "Content-Type: application/json" \
-d '{"fullName":"Test","organization":"Test","email":"test@test.com","password":"Clave123"}'

Debería devolver un JSON con token, userId y mySqlDatabase (la base MySQL aprovisionada automáticamente).