Introducción: por qué VPS es el lugar ideal para tu aplicación C#
\nEl desarrollo en C# dentro del ecosistema .NET proporciona herramientas potentes para crear aplicaciones web, API y microservicios. Sin embargo, escribir el código es solo la mitad del trabajo. Para que tu aplicación esté disponible para los usuarios, es necesario desplegarla en un servidor. Un Servidor Privado Virtual (VPS) ofrece control total sobre el entorno, lo cual es crítico para un entorno de producción. En esta guía, recorreremos el camino desde cero hasta tener una aplicación C# completamente funcional en un VPS con Ubuntu. Aprenderás cómo instalar .NET Runtime, configurar el proxy inverso Nginx, ejecutar la aplicación como un servicio systemd y garantizar su reinicio automático.
\n\nPreparación del servidor e instalación del software necesario
\n1. Conexión al VPS y configuración básica
\nDespués de obtener acceso al VPS (dirección IP, nombre de usuario y contraseña o clave SSH), conéctate a través de la terminal:
\nssh root@tu_IP_del_servidor\nActualiza la base de paquetes e instala curl (lo necesitarás para descargar .NET):
\napt update && apt upgrade -y\napt install curl -y\n\n2. Instalación de .NET SDK/Runtime
\nMicrosoft recomienda instalar .NET a través del repositorio oficial. Lo agregaremos e instalaremos el SDK (para compilar) o Runtime (solo para ejecutar). Para un servidor de producción, normalmente es suficiente con Runtime, pero para facilitar el despliegue instalaremos el SDK:
\nwget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb\ndpkg -i packages-microsoft-prod.deb\napt update\napt install -y dotnet-sdk-8.0\nVerifica la instalación:
\ndotnet --version\n\n3. Instalación de Nginx y Git
\nNginx actuará como proxy inverso, redirigiendo las solicitudes del puerto 80 a tu aplicación. Git será necesario para clonar el repositorio:
\napt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx\n\nPreparación y publicación de la aplicación C#
\n1. Creación o clonación del proyecto
\nComo ejemplo, crearemos una aplicación ASP.NET Core Web API simple directamente en el servidor (en un proyecto real, clonarías el repositorio):
\nmkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp\n\n2. Publicación de la aplicación (autocontenida)
\nPara que la aplicación funcione sin tener el SDK instalado en el servidor, la publicaremos en modo autocontenido:
\ndotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish\nLa bandera --self-contained true incluye todas las dependencias de .NET en la carpeta publish. La alternativa es --self-contained false (requiere Runtime instalado).
3. Prueba de inicio
\nVerifica que la aplicación se inicie (por defecto en el puerto 5000):
\ncd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"\nAbre en el navegador http://tu_IP:5000 — deberías ver la respuesta de la API. Detén el proceso (Ctrl+C).
Configuración de Nginx como proxy inverso
\n1. Configuración del sitio
\nCrearemos un archivo de configuración para Nginx:
\nnano /etc/nginx/sites-available/myapp\nInserta el siguiente código (reemplaza your_domain_or_ip por tu dominio o IP):
server {\n listen 80;\n server_name your_domain_or_ip;\n\n location / {\n proxy_pass http://localhost:5000;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection keep-alive;\n proxy_set_header Host $host;\n proxy_cache_bypass $http_upgrade;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n }\n}\n\n2. Activación de la configuración
\nln -s /etc/nginx/sites-available/myapp /etc/nginx