Despliegue de una aplicación C# en VPS: guía paso a paso de principio a fin

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: por qué VPS es el lugar ideal para tu aplicación C#

\n

El 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\n

Preparación del servidor e instalación del software necesario

\n

1. Conexión al VPS y configuración básica

\n

Despué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:

\n
ssh root@tu_IP_del_servidor
\n

Actualiza la base de paquetes e instala curl (lo necesitarás para descargar .NET):

\n
apt update && apt upgrade -y\napt install curl -y
\n\n

2. Instalación de .NET SDK/Runtime

\n

Microsoft 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:

\n
wget 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
\n

Verifica la instalación:

\n
dotnet --version
\n\n

3. Instalación de Nginx y Git

\n

Nginx actuará como proxy inverso, redirigiendo las solicitudes del puerto 80 a tu aplicación. Git será necesario para clonar el repositorio:

\n
apt install -y nginx git\nsystemctl enable nginx\nsystemctl start nginx
\n\n

Preparación y publicación de la aplicación C#

\n

1. Creación o clonación del proyecto

\n

Como ejemplo, crearemos una aplicación ASP.NET Core Web API simple directamente en el servidor (en un proyecto real, clonarías el repositorio):

\n
mkdir /var/www/myapp\ncd /var/www/myapp\ndotnet new webapi --name MyApp\ncd MyApp
\n\n

2. Publicación de la aplicación (autocontenida)

\n

Para que la aplicación funcione sin tener el SDK instalado en el servidor, la publicaremos en modo autocontenido:

\n
dotnet publish -c Release -r linux-x64 --self-contained true -o /var/www/myapp/publish
\n

La bandera --self-contained true incluye todas las dependencias de .NET en la carpeta publish. La alternativa es --self-contained false (requiere Runtime instalado).

\n\n

3. Prueba de inicio

\n

Verifica que la aplicación se inicie (por defecto en el puerto 5000):

\n
cd /var/www/myapp/publish\n./MyApp --urls "http://0.0.0.0:5000"
\n

Abre en el navegador http://tu_IP:5000 — deberías ver la respuesta de la API. Detén el proceso (Ctrl+C).

\n\n

Configuración de Nginx como proxy inverso

\n

1. Configuración del sitio

\n

Crearemos un archivo de configuración para Nginx:

\n
nano /etc/nginx/sites-available/myapp
\n

Inserta el siguiente código (reemplaza your_domain_or_ip por tu dominio o IP):

\n
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\n

2. Activación de la configuración

\n
ln -s /etc/nginx/sites-available/myapp /etc/nginx                

Blogs

Book Recommendations