--- title: "Cómo instalar HestiaCP en Ubuntu 24.04 o Debian 12" description: "Instala el panel gratuito HestiaCP en Ubuntu 24.04 o Debian 12, crea tu primer dominio web con HTTPS de Let's Encrypt, un buzón de correo y una base de datos." category: "Paneles de Control y Gestión" language: es source: https://cubepath.com/es/docs/paneles-de-control-y-gestión/instalacion-de-hestiacp-panel-de-alojamiento-gratuito updated: 2026-09-25 --- # Cómo instalar HestiaCP en Ubuntu 24.04 o Debian 12 HestiaCP es un panel de control de alojamiento gratuito y de código abierto, derivado de VestaCP, que gestiona desde una interfaz web los sitios, el correo, el DNS, las bases de datos y los certificados SSL de un servidor. En este tutorial instalarás HestiaCP en un servidor Ubuntu 24.04 limpio (los pasos son idénticos en Debian 12), protegerás el panel con un certificado de Let's Encrypt y crearás un dominio web, un buzón de correo y una base de datos MariaDB tanto desde la interfaz 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, Ubuntu 22.04 LTS o Debian 12 de 64 bits, por ejemplo un VPS de CubePath. HestiaCP debe instalarse sobre un sistema limpio: sin Apache, Nginx, MySQL ni Postfix instalados previamente. - Acceso como `root` o con un usuario con privilegios `sudo`. - Al menos 1 GB de RAM y 10 GB de disco. Si vas a activar el antivirus ClamAV y SpamAssassin, cuenta con 2 GB de RAM o más. - Un nombre de host completo (FQDN) para el servidor, por ejemplo `panel.your_domain`, con un registro DNS `A` apuntando a la IP pública del servidor (`your_server_ip`). Es necesario para emitir el certificado del panel y para que el correo saliente sea aceptado. - Si vas a usar correo, un registro PTR (DNS inverso) de `your_server_ip` que coincida con ese nombre de host. > Nota: HestiaCP gestiona su propio cortafuegos basado en iptables. No actives UFW ni firewalld en el mismo servidor, porque sus reglas entrarían en conflicto con las del panel. ## Paso 1: Preparar el servidor Actualiza el sistema antes de lanzar el instalador para que parta de paquetes al día: ```bash sudo apt update sudo apt upgrade -y ``` Asigna al servidor su nombre de host definitivo. Sustituye `panel.your_domain` por el tuyo: ```bash sudo hostnamectl set-hostname panel.your_domain ``` Comprueba que el nombre se resuelve a la IP pública del servidor: ```bash hostname -f getent hosts panel.your_domain ``` ```output panel.your_domain 203.0.113.10 panel.your_domain ``` Si UFW está activo, desactívalo para que no choque con el cortafuegos de HestiaCP: ```bash sudo ufw status sudo ufw disable ``` ## Paso 2: Descargar el instalador HestiaCP se instala con un script oficial alojado en su repositorio de GitHub. Descárgalo en lugar de ejecutarlo directamente con una tubería, así puedes revisarlo antes: ```bash wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh ``` Consulta la ayuda para ver todas las opciones disponibles. Cada componente (Apache, PHP-FPM, Exim, Dovecot, ClamAV, SpamAssassin, BIND, MariaDB, PostgreSQL, etc.) se activa o desactiva con una opción `--nombre yes|no`: ```bash sudo bash hst-install.sh --help ``` Si lo prefieres, la documentación oficial de HestiaCP incluye un generador de comandos de instalación en el que eliges los componentes y obtienes la línea exacta. ## Paso 3: Ejecutar la instalación La configuración por defecto instala Nginx como proxy delante de Apache, PHP-FPM, Exim y Dovecot para el correo, BIND para DNS, MariaDB, vsftpd, Fail2ban y el cortafuegos de iptables. Es una buena base para un servidor de hosting generalista. Este ejemplo desactiva ClamAV y SpamAssassin, que consumen mucha memoria en servidores pequeños. Sustituye el correo y el nombre de host por los tuyos: ```bash sudo bash hst-install.sh \ --hostname panel.your_domain \ --email admin@your_domain \ --clamav no \ --spamassassin no ``` El instalador muestra un resumen de los componentes, te pide confirmación y, en modo interactivo, pregunta los datos que falten. La instalación tarda entre 10 y 20 minutos. Al terminar verás un mensaje con la URL y las credenciales del administrador: ```output Congratulations! You have successfully installed Hestia Control Panel on your server. Ready to get started? Log in using the following credentials: Admin URL: https://panel.your_domain:8083 Username: admin Password: ************ ``` Guarda la contraseña en un gestor de contraseñas; el instalador también la envía al correo indicado. Reinicia el servidor cuando el instalador lo sugiera: ```bash sudo reboot ``` Tras el reinicio, comprueba que el servicio del panel está activo y escuchando en el puerto 8083: ```bash sudo systemctl status hestia --no-pager sudo ss -tlnp | grep 8083 ``` ```output LISTEN 0 511 0.0.0.0:8083 0.0.0.0:* users:(("nginx",pid=1234,fd=6)) ``` ## Paso 4: Acceder al panel y asegurarlo Abre `https://panel.your_domain:8083` en el navegador. Al principio el panel usa un certificado autofirmado, así que el navegador mostrará un aviso; acéptalo solo esta vez e inicia sesión con el usuario `admin`. Las herramientas de línea de comandos de HestiaCP están en `/usr/local/hestia/bin` y se añaden al `PATH` de las sesiones de `root`. Abre una sesión de root para usarlas: ```bash sudo -i ``` Emite un certificado de Let's Encrypt para el nombre de host del panel, que también se usará en los servicios de correo: ```bash v-add-letsencrypt-host ``` Recarga la página del panel: el aviso del certificado ya no debería aparecer. Después, en la interfaz web, abre el icono de usuario de la esquina superior derecha y, en la configuración de la cuenta `admin`, activa la **autenticación en dos pasos**. El usuario `admin` tiene control total del servidor, así que no lo uses para alojar sitios: crea un usuario normal para cada cliente o proyecto. ## Paso 5: Crear un usuario y un dominio web HestiaCP organiza todo por usuarios del panel: cada dominio, buzón y base de datos pertenece a uno. Crea un usuario para tus sitios (sustituye la contraseña y el correo): ```bash v-add-user webuser 'your_strong_password' webuser@your_domain ``` Añade el dominio `your_domain` a ese usuario. El comando crea el host virtual, la zona DNS y el dominio de correo si esos servicios están instalados: ```bash v-add-web-domain webuser your_domain ``` Antes de pedir el certificado, el registro `A` de `your_domain` (y de `www.your_domain` si lo usas) debe apuntar a `your_server_ip`. Cuando la resolución sea correcta, emite el certificado: ```bash v-add-letsencrypt-domain webuser your_domain ``` Comprueba que el sitio responde por HTTPS: ```bash curl -I https://your_domain ``` ```output HTTP/2 200 server: nginx ``` Los archivos del sitio están en `/home/webuser/web/your_domain/public_html`. Puedes subirlos por SFTP con el usuario `webuser` o desde el gestor de archivos del panel. Desde la interfaz, lo mismo se hace en la pestaña **Web** con **Añadir dominio web**; en la edición del dominio puedes elegir la versión de PHP, activar la redirección a HTTPS y usar el instalador de aplicaciones (WordPress, Nextcloud y otras) incluido en el panel. ## Paso 6: Crear un buzón de correo Si el dominio de correo no se creó automáticamente en el paso anterior, añádelo: ```bash v-add-mail-domain webuser your_domain ``` Crea un buzón `info@your_domain`: ```bash v-add-mail-account webuser your_domain info 'your_strong_password' ``` Lista los buzones del dominio para confirmarlo: ```bash v-list-mail-accounts webuser your_domain ``` Para que el correo llegue a su destino, publica en tu DNS los registros MX, SPF, DKIM y DMARC. Si la zona DNS está alojada en el propio HestiaCP se crean solos; si usas un DNS externo, en la pestaña **Correo** abre el dominio y usa la opción que muestra los registros DNS necesarios para copiarlos a tu proveedor. > Importante: muchos proveedores limitan el puerto 25 saliente para evitar spam. Si el correo no sale, comprueba con tu proveedor si el puerto 25 está permitido en tu servidor. ## Paso 7: Crear una base de datos Crea una base de datos MariaDB para una aplicación. HestiaCP antepone el nombre del usuario del panel al nombre de la base de datos y del usuario de la base de datos: ```bash v-add-database webuser app appuser 'your_strong_password' mysql ``` ```bash v-list-databases webuser ``` ```output DATABASE USER HOST TYPE CHARSET QUOTA SPND DATE -------- ---- ---- ---- ------- ----- ---- ---- webuser_app webuser_appuser localhost mysql utf8mb4 0 no 2026-09-25 ``` La aplicación se conectará a `localhost` con la base de datos `webuser_app` y el usuario `webuser_appuser`. Desde la interfaz también puedes abrir phpMyAdmin en la pestaña **Bases de datos**. ## Paso 8: Revisar el cortafuegos y las copias de seguridad Lista las reglas del cortafuegos que gestiona HestiaCP: ```bash v-list-firewall ``` Si necesitas abrir un puerto nuevo, hazlo desde **Configuración del servidor > Cortafuegos** en el panel o con `v-add-firewall-rule`. Por ejemplo, para permitir un servicio en el puerto TCP 8443: ```bash v-add-firewall-rule ACCEPT 0.0.0.0/0 8443 TCP 'Mi servicio' ``` HestiaCP hace copias de seguridad diarias de cada usuario en `/backup` mediante una tarea cron. Lanza una copia manual para comprobar que funciona: ```bash v-backup-user webuser ls -lh /backup ``` Guardar las copias en el mismo disco no te protege ante la pérdida del servidor. En la edición de cada usuario o en la configuración del servidor puedes añadir un destino remoto (SFTP, FTP o almacenamiento compatible con S3 mediante rclone). ## Solución de problemas - **El instalador se detiene diciendo que ya hay paquetes instalados.** HestiaCP necesita un sistema limpio. Reinstala el sistema operativo en lugar de intentar desinstalar Apache, MySQL o Postfix a mano. - **Let's Encrypt falla al emitir el certificado.** Comprueba con `dig +short your_domain` que el registro `A` apunta a `your_server_ip` y que el puerto 80 es accesible desde Internet. Los registros del panel están en `/var/log/hestia/`. - **No puedes acceder al puerto 8083.** Revisa si hay un cortafuegos externo delante del servidor y que la regla del puerto 8083 aparece en `v-list-firewall`. Si Fail2ban ha bloqueado tu IP tras varios intentos fallidos, desbloquéala con `v-delete-firewall-ban your_ip HESTIA`. ## Conclusión Ya tienes HestiaCP funcionando con el panel protegido por HTTPS, un usuario sin privilegios de administración, un sitio web con certificado de Let's Encrypt, un buzón de correo y una base de datos. Como siguientes pasos, configura un destino remoto para las copias de seguridad, revisa las plantillas de Nginx y PHP-FPM en **Web > Editar dominio** para adaptar cada sitio y activa las actualizaciones automáticas de HestiaCP desde la configuración del servidor.