Despliegue con Kestrel
Kestrel es el servidor web integrado que incluye .NET. Es ligero, rápido y multiplataforma, por lo que es ideal para entornos de desarrollo, pruebas o despliegues personalizados en entornos controlados.
Actualmente, Flexygo Core puede ejecutarse directamente con Kestrel sin necesidad de configuraciones adicionales, aunque en este momento no contamos con un instalador específico para despliegues finales con Kestrel como sí hacemos con IIS.
▶️ Ejecución básica (modo desarrollo)
Para iniciar las aplicaciones frontend y backend usando Kestrel, tienes dos opciones:
Opción 1: Ejecutables .exe
Si has publicado el proyecto con dotnet publish, encontrarás archivos .exe para cada aplicación:
- Haz doble clic en
Flexygo.WebApp.Frontend.exe - Haz doble clic en
Flexygo.WebApp.Backend.exe
Esto levantará las aplicaciones en sus respectivos puertos (por ejemplo http://localhost:5000 y http://localhost:5001).
Opción 2: Usar dotnet run
cd Ruta\Al\Proyecto\Frontend
dotnet run
cd Ruta\Al\Proyecto\Backend
dotnet run
Esto compilará y levantará ambas aplicaciones directamente.
Las secciones siguientes cubren la configuración recomendada para entornos de producción con Kestrel.
🧠 Recomendación actual
- Para desarrollo local: Kestrel es ideal por su simplicidad.
- Para producción con Windows: el instalador con IIS ofrece la experiencia más guiada y configuración automática.
- Para producción en Linux o entornos personalizados: Kestrel + nginx es la alternativa recomendada (ver secciones siguientes).
Ejecutar como servicio del sistema
Para que Kestrel arranque automáticamente con el sistema operativo y se reinicie tras fallos, configúralo como servicio.
Windows Service
- Publica la aplicación para Windows:
dotnet publish src/Backend/Backend.csproj -c Release -r win-x64 --self-contained false -o C:\inetpub\flexygo\backend
- Instala el servicio:
sc.exe create FlexygoBackend binPath="C:\inetpub\flexygo\backend\Backend.exe" start=auto
sc.exe start FlexygoBackend
- Verifica que el servicio está corriendo:
sc.exe query FlexygoBackend
Para desinstalar:
sc.exe stop FlexygoBackendseguido desc.exe delete FlexygoBackend.
Linux (systemd)
- Publica la aplicación para Linux:
dotnet publish src/Backend/Backend.csproj -c Release -r linux-x64 --self-contained false -o /opt/flexygo/backend
- Crea el archivo de unidad en
/etc/systemd/system/flexygo-backend.service:
[Unit]
Description=Flexygo Core Backend
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/flexygo/backend
ExecStart=/opt/flexygo/backend/Backend
Restart=always
RestartSec=10
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://localhost:5001
[Install]
WantedBy=multi-user.target
- Activa e inicia el servicio:
sudo systemctl daemon-reload
sudo systemctl enable flexygo-backend
sudo systemctl start flexygo-backend
sudo systemctl status flexygo-backend
Reverse proxy con nginx
En producción, coloca nginx delante de Kestrel para gestionar TLS, cabeceras y balanceo de carga.
Instalación de nginx
sudo apt update && sudo apt install nginx -y
Configuración del virtual host
Crea el archivo /etc/nginx/sites-available/flexygo:
server {
listen 80;
server_name tu-dominio.com;
location /api/ {
proxy_pass http://localhost:5001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
location / {
proxy_pass http://localhost:5000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
Activa la configuración y recarga nginx:
sudo ln -s /etc/nginx/sites-available/flexygo /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
TLS con Let's Encrypt (recomendado)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tu-dominio.com
Certbot actualizará automáticamente la configuración de nginx para añadir los bloques listen 443 y el certificado renovable.
Cabeceras de forwarding: Cuando el tráfico llega a Kestrel a través de nginx, añade la siguiente configuración en
appsettings.jsonpara que la aplicación reconozca el protocolo real del cliente:{ "ForwardedHeaders": { "ForwardedHeaders": "XForwardedFor, XForwardedProto" } }