🚀 Configuración de Servidor Web Ubuntu en UTM

Guía completa para instalar y configurar un servidor web Apache con HTTPS en una máquina virtual Ubuntu utilizando UTM

1. Descarga de la ISO

La imagen de instalación de Ubuntu se descarga desde: https://cdimage.ubuntu.com/noble/daily-live/current/

2. Creación de la máquina virtual

Se abre UTM y se selecciona la opción Crear nueva Máquina Virtual (VM) y Virtualizar.

En el menú Sistema operativo, se elige Otro y se carga la ISO descargada en el campo Imagen ISO de arranque.

En la configuración de Hardware se asignan:

  • Memoria RAM: 4 GB
  • CPU: 2 núcleos mínimo, 4 recomendado
  • Almacenamiento: 20 GB

Se asigna un nombre identificativo a la máquina.

Haciendo click derecho sobre la máquina y pulsando en editar se selecciona el menú Red y se configura el Modo de red en Puenteada (Avanzado) y se selecciona la interaz de puente adecuada.

La máquina se inicia pulsando Play.

3. Configuración de la instalación de Ubuntu

Durante el inicio de la instalación se configuran los siguientes parámetros:

  1. Idioma y teclado: se selecciona el idioma deseado y la disposición del teclado.
  2. Conexión a Internet: en el menú Internet Connection, se selecciona Use wired connection.
  3. Modo de instalación: en la opción Try or install Ubuntu, se selecciona Install Ubuntu.
  4. Creación de usuario: se define la cuenta de usuario siguiendo los pasos del instalador.
  5. Resto de parámetros: se aceptan los valores por defecto en las opciones restantes.

Una vez completada la instalación, la máquina se reinicia para aplicar los ajustes realizados.

4. Configuración de la IP estática

En el menú de Red de Ubuntu se accede a los ajustes pulsando el botón de la tuerca y en el menú IPv4 se cambia de automático a manual.

En la máquina host se comprueba la IP y máscara de red usando el comando ifconfig. Se escoge una IP diferente dentro del rango y se usa el comando ping <IP seleccionada> para comprobar que no está ocupada. La puerta de salida se comprueba con el comando route -n get default.

5. Instalación y configuración de SSH

En la terminal se actualizan los paquetes instalados en el sistema con los comandos sudo apt update y sudo apt upgrade.

Se instala el servidor SSH con el comando sudo apt install openssh-server. Se comprueba que el servicio está activo con el comando sudo systemctl status ssh y se abre el puerto 22 en el firewall con sudo ufw allow ssh.

A partir de este momento se puede acceder a la máquina virtual desde la terminal de la máquina host con el comando ssh <usuario>@<ip de la MV>.

6. Instalación de Apache y configuración de hosts virtuales

Se instala el servidor apache con el comando sudo apt install apache2. Se comprueba si está activo con sudo systemctl status apache2 y se abre el puerto con sudo ufw allow apache.

Se crea un directorio con el nombre del dominio con el comando sudo mkdir /var/www/<nombre_del_dominio> y se asigna la propiedad del directorio con la variable de entorno $USER: sudo chown -R $USER:$USER /var/www/<nombre_del_dominio>. El propietario debe tener permisos de lectura, escritura y ejecución.

Dentro del directorio /var/www/<nombre_del_dominio> se deben alojar los archivos del sitio web, incluyendo index.html.

Una vez creados estos ficheros, se debe crear un archivo de configuración sudo nano /etc/apache2/sites-available/<nombre_del_dominio>.conf con los siguientes parámetros:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName <nombre_del_dominio>
    ServerAlias www.<nombre_del_dominio>
    DocumentRoot /var/www/<nombre_del_dominio>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Una vez creado y guardado se debe activar el archivo con el comando sudo a2ensite your_domain.conf y deshabilitar el archivo de configuración por defecto sudo a2dissite 000-default.conf.

Finalmente se reinicia Apache para implementar los cambios: sudo systemctl restart apache2.

A partir de aquí se debería poder acceder a la página web desde el navegador introduciendo la IP de la máquina virtual.

7. Configuración de puerto y HTTPS

7.1 Apertura de puertos

Para que la web sea accesible desde Internet, se deben abrir los puertos 80 (HTTP) y 443 (HTTPS) en el firewall de Ubuntu:

sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload

7.2 Redirección de puertos (Port Forwarding)

En el router de la red local se debe configurar port forwarding:

Puerto público 80 → IP privada de la VM, puerto 80

Puerto público 443 → IP privada de la VM, puerto 443

Esto permite que cualquier solicitud desde Internet hacia el dominio llegue a la máquina virtual donde corre Apache.

Nota: cada router tiene un panel distinto, pero la lógica es la misma: redirigir los puertos HTTP/HTTPS al dispositivo que aloja la web.

7.3 Instalación de Certbot para HTTPS

Se instala Certbot y el módulo de Apache:

sudo apt update
sudo apt install certbot python3-certbot-apache -y

7.4 Solicitud del certificado SSL

Se solicita el certificado para el dominio configurado:

sudo certbot --apache -d <nombre_del_dominio> -d www.<nombre_del_dominio>

Certbot configura automáticamente Apache para HTTPS.

El certificado se renueva automáticamente cada 90 días.

Una vez completado, la página web estará accesible desde Internet mediante https://<nombre_del_dominio>.