Por qué desplegar C# no da miedo, sino que es rentable
\n\nImagina: has escrito una aplicación C# increíble — ya sea un bot de Telegram en .NET 8, una API web para una tienda en línea o un microservicio para procesar pagos. El código está depurado, las pruebas pasan, localmente funciona de maravilla. Solo queda el último paso: publicarlo en internet para que lo usen personas reales.
\n\nY aquí empieza lo interesante. ¿Dónde desplegar? ¿En VPS, en contenedores Docker o directamente en la nube? Cada opción tiene sus ventajas, desventajas y trampas. En este artículo analizaremos los tres enfoques con ejemplos reales de código C# para que puedas tomar una decisión informada.
\n\nOpción 1: VPS — el clásico para quienes aman controlarlo todo
\n\nUn servidor privado virtual (VPS) es como alquilar un departamento en una "casa digital". Tienes acceso root, instalas el sistema operativo tú mismo, configuras el firewall, instalas .NET Runtime. Ideal para quienes quieren control total o tienen requisitos específicos.
\n\nCómo desplegar C# en VPS: paso a paso
\n\nSupongamos que tienes una API web ASP.NET Core. Aquí tienes el conjunto mínimo de acciones:
\n\n- \n
- Conéctate por SSH al servidor (Ubuntu 22.04). \n
- Instala .NET Runtime: \n
wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh\nchmod +x dotnet-install.sh\n./dotnet-install.sh --channel 8.0\nexport PATH="$HOME/.dotnet:$PATH"\n\nCompila la aplicación en modo Release y copia los archivos al servidor mediante SCP o Rsync:
\n\ndotnet publish -c Release -o ./publish\nscp -r ./publish/* user@your-server:/var/www/myapp/\n\nEjecuta la aplicación como un servicio systemd para que se reinicie automáticamente después de fallos:
\n\n[Unit]\nDescription=My C# App\n\n[Service]\nWorkingDirectory=/var/www/myapp\nExecStart=/home/user/.dotnet/dotnet /var/www/myapp/MyApp.dll\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n\nVentajas de VPS: control total, precio bajo (desde $5/mes), puedes ejecutar cualquier cosa — ya sea Windows o Linux.
\n\nDesventajas: tú eres responsable de la seguridad, las actualizaciones y las copias de seguridad. Si la aplicación falla a las 3 de la mañana, te toca levantarte a ti.
\n\nOpción 2: Docker — contenerización para perfeccionistas perezosos
\n\nDocker es una forma de empaquetar tu aplicación C# con todas sus dependencias en un contenedor ligero. "En mi máquina funciona" se convierte en "funciona en todas partes".
\n\nDockerfile para .NET 8
\n\nCrea un archivo Dockerfile en la raíz del proyecto:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\nCOPY *.csproj .\nRUN dotnet restore\nCOPY . .\nRUN dotnet publish -c Release -o out\n\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out .\nENV ASPNETCORE_URLS=http://+:80\nEXPOSE 80\nENTRYPOINT ["dotnet", "MyApp.dll"]\n\nCompila y ejecuta:
\n\ndocker build -t my-csharp-app .\ndocker run -d -p 8080:80 --name myapp my-csharp-app\n\nAhora tu aplicación está disponible en http://localhost:8080. Si necesitas varios servicios (base de datos + API + frontend), usa Docker Compose:
version: '3.8'\nservices:\n api:\n build: .\n ports:\n - "5000:80"\n depends_on:\n - db\n db:\n image: postgres:15\n environment:\n POSTGRES_PASSWORD: example\n\nVentajas de Docker: aislamiento, reproducibilidad, escalado sencillo (solo ejecuta 5 contenedores más), uniformidad del entorno.
\n\nDesventajas: hay que entender las redes y volúmenes de Docker, para una aplicación simple puede ser excesivo.
\n\nOpción 3: Cloud — delegamos la infraestructura a los profesionales
\n\nLas plataformas en la nube (Microsoft Azure, AWS, Google Cloud, así como análogos rusos — Yandex Cloud, VK Cloud) se encargan de la gestión de servidores, balanceo de carga,