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

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

Desarrollar una aplicación en C# en la plataforma .NET es solo la mitad del trabajo. Para que tu proyecto sea accesible para los usuarios en internet, debe desplegarse adecuadamente en un servidor. VPS (Servidor Privado Virtual) es una solución ideal para pequeñas y medianas empresas y desarrolladores independientes: proporciona control total sobre el entorno a un precio asequible. En este artículo, cubriremos el proceso completo de despliegue de una aplicación C# en un VPS con Linux (Ubuntu 22.04). Aprenderás cómo preparar el servidor, publicar la aplicación, configurar un proxy inverso con Nginx y asegurar el inicio automático mediante systemd.



1. Preparación del VPS e Instalación del Runtime .NET

1.1. Conexión al Servidor

Después de comprar un VPS, recibirás una dirección IP y una contraseña de root. Conéctate vía SSH:

ssh root@your-server-ip

Se recomienda crear inmediatamente un usuario separado por seguridad:

adduser appuserusermod -aG sudo appusersu - appuser


1.2. Instalación del Runtime .NET

Para que una aplicación C# se ejecute en el servidor, se necesita el Runtime de ASP.NET Core. Agrega el repositorio de Microsoft e instala el paquete:

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debsudo apt-get updatesudo apt-get install -y aspnetcore-runtime-8.0

Verifica la instalación:

dotnet --list-runtimes

Deberías ver una línea con la versión ASP.NET Core 8.0.0.



2. Publicación de la Aplicación y Subida al Servidor

2.1. Publicación en la Máquina Local

En tu computadora con Visual Studio o .NET CLI, abre el proyecto y ejecuta el comando de publicación:

dotnet publish -c Release -o ./publish

Este comando crea una carpeta publish que contiene todos los archivos necesarios para ejecutar la aplicación (incluyendo las dependencias del runtime si estás usando FDD — Framework-Dependent Deployment).



2.2. Subida al VPS

Copia la carpeta publish al servidor usando scp o sftp. En la máquina local, ejecuta:

scp -r ./publish appuser@your-server-ip:/home/appuser/myapp

Ahora, en el servidor, verifica que los archivos estén en su lugar:

ls -la /home/appuser/myapp


3. Configuración de systemd para el Inicio Automático

Para asegurar que la aplicación se inicie al arrancar el sistema y se reinicie automáticamente después de fallos, crea una unidad systemd.

3.1. Creación del Archivo de Servicio

Crea el archivo /etc/systemd/system/myapp.service con privilegios de root:

sudo nano /etc/systemd/system/myapp.service

Inserta el siguiente contenido:

[Unit]Description=My ASP.NET Core ApplicationAfter=network.target

[Service]WorkingDirectory=/home/appuser/myappExecStart=/usr/bin/dotnet /home/appuser/myapp/YourAppName.dllRestart=alwaysRestartSec=10KillSignal=SIGINTSyslogIdentifier=myappUser=appuserEnvironment=ASPNETCORE_ENVIRONMENT=ProductionEnvironment=ASPNETCORE_URLS=http://localhost:5000

[Install]WantedBy=multi-user.target

Reemplaza YourAppName.dll con el nombre real de tu archivo .dll (generalmente coincide con el nombre del proyecto).



3.2. Inicio y Habilitación del Servicio

sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myapp

Verifica el estado:

sudo systemctl status myapp

Si todo está configurado correctamente, verás el estado active (running). La aplicación ahora está escuchando en el puerto 5000 en la interfaz local.



4. Configuración de Nginx como Proxy Inverso

Para hacer que la aplicación sea accesible desde el exterior en los puertos estándar (80/443) y agregar un certificado SSL, instala y configura Nginx.

4.1. Instalación de Nginx

sudo apt updatesudo apt install nginx -y


4.2. Configuración del Sitio

Blogs

Book Recommendations