Create Domain Directory
sudo mkdir -p /var/www/diarioweb.mirandamx.dev/html
Installing Nginx
$ sudo apt-get update
$ sudo apt-get install nginx
sudo ufw app listOutput
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
$ sudo ufw allow 'Nginx Full'
$ sudo ufw allow ssh
$ sudo ufw enable
Validando el estatus de nuestro server nginx
systemctl status nginx
Algunos comandos útiles que necesitaremos en algún momento:
$ sudo systemctl stop nginx
$ sudo systemctl start nginx
$ sudo systemctl restart nginx
Creando los directorios y estructuras de nuestros sitios que requiramos
sudo mkdir -p /var/www/diarioweb.mirandamx.dev/html
sudo mkdir -p /var/www/diarioapi.mirandamx.dev/html
Asignando permisos:
sudo chown -R $USER:$USER /var/www/diarioweb.mirandamx.dev/html
sudo chown -R $USER:$USER /var/www/diarioapi.mirandamx.dev/html
sudo chmod -R 755 /var/www
Server Block for Domain
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/diarioweb.mirandamx.dev
sudo nano /etc/nginx/sites-available/diarioweb.mirandamx.dev
Con CTRL + K podemos borrar contenido de manera rápida en nano
server {
listen 80;
listen [::]:80;
root /var/www/diarioweb.mirandamx.dev/html;
index index.html index.htm index.nginx-debian.html;
server_name diarioweb.mirandamx.dev www.diarioweb.mirandamx.dev;
location / {
try_files $uri $uri/ =404;
}
}
En este punto, dependiendo su versión de ubuntu, algunas versiones anteriores de net core podrían no ser compatible, en mi servidor Ubuntu 23.04 pude instalar net core 6.0 de la siguiente manera
sudo apt-get update && \<br>sudo apt-get install -y aspnetcore-runtime-6.0
Sin embargo en mi servidor con Ubuntu 24.04.1 LTS no pude realizarlo, así que decidí instalar la versión 8
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0
Si quisieran forzar la instalación de una versión no soportada, pueden poner lo siguiente:
sudo add-apt-repository ppa:dotnet/backports
sudo apt-get install aspnetcore-runtime-6.0
Para validar que este instalado net core procedemos a hacer lo siguiente:
dotnet --info
Instalando SSL
sudo snap install --classic certbot
Antes de ejecutar el siguiente comando, nuestro dominio ya debe estar apuntando a nuestro servidor.
sudo certbot –nginx -d diarioweb.mirandamx.dev -d diarioweb.mirandamx.dev
Y a nuestro archivo de configuración de nginx
sudo nano /etc/nginx/sites-available/diarioweb.mirandamx.dev
Le añadimos lo siguiente:
ssl_certificate /etc/letsencrypt/live/diarioweb.mirandamx.dev/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/diarioweb.mirandamx.dev/privkey.pem; # managed by Certbot
Y se vería algo así:

Ahora creamos nuestro archivo para levantar nuestra aplicación en el servidor kestrel mediante el siguiente comando:
sudo nano /etc/systemd/system/kestrel-diarioWeb.service
Le añadimos lo siguiente:
Nota importante: Cuando configuremos múltiples sitios, tendremos que ir cambiando el puerto para que cada aplicación/sitio apunte de manera correspondiente.
Ejemplos: <::5001>, <::5002>, <::5003>,
[Unit]
Description=Example .NET Web API App running on Ubuntu
[Service]
WorkingDirectory=/var/www/diarioweb.mirandamx.dev/html
ExecStart=/usr/bin/dotnet /var/www/diarioweb.mirandamx.dev/html/DiarioFrontEndMVC.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Release
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
Environment=ASPNETCORE_URLS=http://127.0.0.1::5001
[Install]
WantedBy=multi-user.target
Ahora en nuestro archivo de configuración cambiamos el location por un proxy_pass
sudo nano /etc/nginx/sites-available/diarioapi.mirandamx.dev
location / {
proxy_pass http://localhost:5001;
}
server {
listen 80;
listen [::]:80;
server_name api1.example.com *.example.com;
root /var/www/api1.example.com;
index index.html index.htm;
location / {
proxy_pass http://localhost:5001;
}
}
Reiniciamos
sudo systemctl enable kestrel-diarioWeb.service
sudo systemctl start kestrel-diarioWeb.service
sudo systemctl restart kestrel-diarioWeb.service
sudo systemctl status kestrel-diarioWeb.service
En este caso yo ya tenía mi compilado de mi otro sitio y solo copie mi compilado.
Y si es exitoso, debería verse algo así:
