--- title: "Cómo instalar Virtualmin en Ubuntu 24.04 para hosting" description: "Instala Virtualmin GPL en Ubuntu 24.04 con el script oficial, completa el asistente inicial y crea un servidor virtual con web, correo, base de datos y SSL." category: "Paneles de Control y Gestión" language: es source: https://cubepath.com/es/docs/paneles-de-control-y-gestión/instalacion-de-virtualmin-para-gestion-de-alojamiento updated: 2026-09-25 --- # Cómo instalar Virtualmin en Ubuntu 24.04 para hosting Virtualmin es un panel de control de alojamiento de código abierto construido sobre Webmin. Gestiona "servidores virtuales": cada uno agrupa un dominio con su sitio web, buzones de correo, zona DNS, bases de datos y usuario del sistema. En este tutorial instalarás la edición gratuita Virtualmin GPL en un servidor Ubuntu 24.04 limpio con el script oficial, completarás el asistente inicial y crearás un servidor virtual con HTTPS de Let's Encrypt, tanto desde la interfaz web como desde la línea de comandos. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor recién instalado con Ubuntu 24.04 LTS (también valen Ubuntu 22.04, Debian 12, Rocky Linux 9 o AlmaLinux 9), por ejemplo un VPS de CubePath. El instalador debe ejecutarse sobre un sistema limpio, sin Apache, Nginx, MySQL ni Postfix instalados. - Acceso como `root` o con un usuario con privilegios `sudo`. - Al menos 2 GB de RAM (con antivirus y antispam activados, 4 GB) y 20 GB de disco. - Un nombre de host completo para el servidor, por ejemplo `server.your_domain`, con un registro DNS `A` que apunte a la IP pública del servidor (`your_server_ip`). - Un dominio (`your_domain`) apuntando también a `your_server_ip` para el primer sitio. ## Paso 1: Preparar el servidor Actualiza el sistema: ```bash sudo apt update sudo apt upgrade -y ``` Asigna el nombre de host definitivo. El instalador de Virtualmin lo usa para configurar el correo y el certificado del panel: ```bash sudo hostnamectl set-hostname server.your_domain hostname -f ``` ```output server.your_domain ``` Si has activado UFW, desactívalo: el instalador configura su propio cortafuegos con firewalld y abre los puertos de los servicios que instala. ```bash sudo ufw disable ``` ## Paso 2: Descargar y ejecutar el instalador Virtualmin se instala con un script oficial que añade sus repositorios, instala Webmin, Virtualmin y todos los servicios, y los configura. Descárgalo y revísalo: ```bash curl -fsSL https://download.virtualmin.com/virtualmin-install.sh -o virtualmin-install.sh less virtualmin-install.sh ``` El script admite dos conjuntos de paquetes: LAMP (Apache, opción por defecto) y LEMP (Nginx). Consulta todas las opciones con: ```bash sudo sh virtualmin-install.sh --help ``` Ejecuta la instalación. Este ejemplo usa la pila LAMP por defecto, la más probada en Virtualmin; añade `--bundle LEMP` si prefieres Nginx: ```bash sudo sh virtualmin-install.sh ``` El script pide confirmación y tarda entre 10 y 20 minutos. Al terminar muestra la URL del panel: ```output [SUCCESS] Installation Complete! [SUCCESS] If there were no errors above, Virtualmin should be ready [SUCCESS] to configure at https://server.your_domain:10000 (or https://your_server_ip:10000). ``` Comprueba que Webmin, que sirve la interfaz de Virtualmin, está activo y escucha en el puerto 10000: ```bash sudo systemctl status webmin --no-pager sudo ss -tlnp | grep 10000 ``` Comprueba también que el cortafuegos permite el puerto del panel: ```bash sudo firewall-cmd --list-all ``` La salida debe incluir el puerto `10000/tcp` junto a los servicios web, de correo y DNS. ## Paso 3: Completar el asistente posinstalación Abre `https://server.your_domain:10000` en el navegador y acepta el aviso del certificado autofirmado. Inicia sesión con `root` y su contraseña, o con tu usuario `sudo`: Webmin permite el acceso a cualquier usuario que pueda usar `sudo` sin restricciones. La primera vez se abre el **Post-Installation Wizard**. Las opciones recomendadas son: - **Memory use**: si el servidor tiene poca RAM, no precargues las bibliotecas de Virtualmin. - **Virus scanning** y **Spam filtering**: actívalos solo si tienes 4 GB de RAM o más y vas a alojar correo. - **Database servers**: activa MariaDB y desactiva PostgreSQL si no lo vas a usar. - **MariaDB password**: define la contraseña del usuario root de MariaDB. - **DNS configuration**: indica el servidor DNS primario si vas a delegar zonas a este servidor; si tu DNS está en otro proveedor, puedes omitirlo. - **Password storage**: guarda las contraseñas con hash. Al terminar el asistente, Virtualmin ejecuta una comprobación de la configuración. Puedes relanzarla en cualquier momento desde SSH: ```bash sudo virtualmin check-config ``` La salida debe terminar indicando que la configuración es correcta: ```output .. your system is ready for use by Virtualmin ``` ## Paso 4: Emitir un certificado para el panel Para que el panel deje de usar un certificado autofirmado, en la interfaz ve a **Webmin > Webmin Configuration > SSL Encryption**, abre la pestaña **Let's Encrypt**, comprueba que el nombre de host es `server.your_domain` y pulsa **Request Certificate**. Debe existir un registro `A` para ese nombre y el puerto 80 debe estar accesible. Recarga la página: el navegador ya no debería mostrar el aviso. ## Paso 5: Crear un servidor virtual Un servidor virtual crea a la vez el usuario del sistema, el directorio del sitio, el host virtual de Apache, la zona DNS, el dominio de correo y una base de datos. Desde la interfaz, ve a **Virtualmin > Create Virtual Server**, escribe `your_domain` en **Domain name**, define la contraseña del administrador del dominio y pulsa **Create Server**. Desde la línea de comandos, el equivalente es: ```bash sudo virtualmin create-domain --domain your_domain --pass 'your_strong_password' --default-features ``` `--default-features` activa las funciones marcadas por defecto en la plantilla del servidor (web, SSL, DNS, correo y base de datos). Lista los dominios para verificarlo: ```bash sudo virtualmin list-domains ``` ```output Domain Username Description ------------------------------ -------------------- -------------------- your_domain your_domain ``` El nombre del usuario del sistema se deriva del dominio. Los archivos del sitio están en `/home//public_html`, y el usuario puede subirlos por SFTP. ## Paso 6: Activar HTTPS con Let's Encrypt Cuando los registros `A` de `your_domain` y `www.your_domain` apunten a `your_server_ip`, solicita el certificado: ```bash sudo virtualmin generate-letsencrypt-cert --domain your_domain ``` Virtualmin instala el certificado en Apache, Postfix y Dovecot para ese dominio y lo renueva automáticamente. Comprueba el sitio: ```bash curl -I https://your_domain ``` ```output HTTP/1.1 200 OK Server: Apache ``` En la interfaz, la misma operación está en **Server Configuration > SSL Certificate > Let's Encrypt** del servidor virtual. ## Paso 7: Crear un buzón y una base de datos Crea un buzón `info@your_domain`: ```bash sudo virtualmin create-user --domain your_domain --user info --pass 'your_strong_password' ``` ```bash sudo virtualmin list-users --domain your_domain ``` Si tu DNS está en otro proveedor, publica allí los registros MX, SPF y DKIM que muestra Virtualmin en **Server Configuration > DNS Records** (o en **Email Settings > DomainKeys Identified Mail** para DKIM). > Importante: muchos proveedores limitan el puerto 25 saliente para evitar spam. Si el correo no sale, confirma con tu proveedor que el puerto 25 está permitido en tu servidor. Para una aplicación, crea una base de datos MariaDB asociada al dominio: ```bash sudo virtualmin create-database --domain your_domain --name app_db --type mysql sudo virtualmin list-databases --domain your_domain ``` La aplicación se conectará a `localhost` con el usuario y la contraseña del administrador del servidor virtual. ## Paso 8: Programar copias de seguridad Haz una copia de todos los servidores virtuales para comprobar que el proceso funciona: ```bash sudo mkdir -p /backup/virtualmin sudo virtualmin backup-domain --dest /backup/virtualmin --all-domains --all-features --newformat ls -lh /backup/virtualmin ``` Con `--newformat` se genera un archivo por dominio. Para las copias periódicas, ve a **Backup and Restore > Scheduled Backups** en la interfaz, elige los dominios, un destino remoto (SSH, FTP o almacenamiento compatible con S3) y una programación diaria. Guardar las copias solo en el propio servidor no te protege ante su pérdida. ## Solución de problemas - **No puedes acceder al puerto 10000.** Comprueba con `sudo systemctl status webmin` que el servicio está activo y con `sudo firewall-cmd --list-all` que el puerto está permitido. Revisa también el cortafuegos externo, si lo hay. - **`check-config` informa de que el nombre de host no se resuelve.** El registro `A` de `server.your_domain` debe existir y `hostname -f` debe devolver ese nombre. - **La solicitud de Let's Encrypt falla.** Verifica con `dig +short your_domain` que el dominio apunta al servidor y que el puerto 80 está abierto. Si `www.your_domain` no tiene registro DNS, la validación de ese nombre fallará. ## Conclusión Ya tienes Virtualmin GPL en Ubuntu 24.04 con el panel protegido por un certificado válido, un servidor virtual con HTTPS, un buzón, una base de datos y copias de seguridad probadas. Como siguientes pasos, ajusta la plantilla de servidor en **System Settings > Server Templates** para definir los valores por defecto de los nuevos dominios, configura las copias programadas a un destino remoto y revisa los límites de cuota de cada servidor virtual.