ISPConfig es un panel de control de alojamiento de código abierto que puede administrar varios servidores desde una única interfaz: por ejemplo, un servidor con el panel, el correo y el DNS, y otros dedicados solo a servir webs. En este tutorial instalarás ISPConfig con su autoinstalador oficial en dos servidores Ubuntu 24.04: un maestro que aloja el panel y la base de datos de configuración, y un servidor web que se une al mismo clúster y se gestiona desde el panel del maestro.
Requisitos previos
Para seguir esta guía necesitas:
- Dos servidores recién instalados con Ubuntu 24.04 LTS (también valen Ubuntu 22.04 o Debian 12), por ejemplo dos VPS de CubePath. El autoinstalador espera un sistema limpio, sin Apache, Nginx, MySQL ni Postfix.
- Acceso como
rooto con un usuariosudoen ambos. - Al menos 2 GB de RAM en el maestro (4 GB si activas antivirus y antispam) y 1 GB en el servidor web.
- Un nombre de host completo para cada servidor con su registro DNS
A. En esta guía se usan:
| Función | Nombre de host | IP pública | IP privada |
|---|---|---|---|
| Maestro (panel, correo, DNS, base de datos) | server1.your_domain | 203.0.113.10 | 10.0.0.10 |
| Servidor web | web1.your_domain | 203.0.113.20 | 10.0.0.20 |
- Preferiblemente, una red privada entre los dos servidores. El servidor web se conecta a la base de datos MariaDB del maestro, y es mejor que ese tráfico no pase por Internet.
Si vas a usar un único servidor, sigue solo los pasos 1 a 3.
Paso 1: Preparar ambos servidores
Ejecuta este paso en los dos servidores. Actualiza el sistema:
sudo apt update
sudo apt upgrade -y
Asigna el nombre de host. En el maestro:
sudo hostnamectl set-hostname server1.your_domain
En el servidor web:
sudo hostnamectl set-hostname web1.your_domain
ISPConfig requiere que cada servidor resuelva su propio nombre y el de los demás. Edita /etc/hosts en ambos servidores:
sudo nano /etc/hosts
Añade una línea por servidor con su IP privada (o pública, si no tienes red privada). Si existe una línea 127.0.1.1 con el nombre del servidor, elimínala:
10.0.0.10 server1.your_domain server1
10.0.0.20 web1.your_domain web1
Comprueba el resultado en cada servidor:
hostname -f
getent hosts server1.your_domain web1.your_domain
server1.your_domain
10.0.0.10 server1.your_domain server1
10.0.0.20 web1.your_domain web1
Paso 2: Instalar el servidor maestro
El autoinstalador oficial de ISPConfig configura todos los servicios (Apache o Nginx, PHP, Postfix, Dovecot, Rspamd, BIND, MariaDB, Pure-FTPd, Roundcube, Let's Encrypt) y el propio panel. Descárgalo en el maestro y consulta sus opciones:
curl -fsSL https://get.ispconfig.org -o ispconfig-autoinstaller.sh
less ispconfig-autoinstaller.sh
sudo sh ispconfig-autoinstaller.sh --help
La ayuda lista opciones como --use-nginx, --no-mail, --no-dns, --use-php= o --use-ftp-ports=. Instala el maestro con Nginx, correo y DNS, con un rango de puertos para FTP pasivo y actualizaciones automáticas de seguridad:
sudo sh ispconfig-autoinstaller.sh --use-nginx --use-ftp-ports=40110-40210 --unattended-upgrades
El instalador pide confirmación antes de modificar el sistema. La instalación tarda entre 10 y 20 minutos. Al terminar, muestra las contraseñas generadas:
[INFO] Your ISPConfig admin password is: ************
[INFO] Your MySQL root password is: ************
Copia ambas en un gestor de contraseñas; las necesitarás más adelante. El autoinstalador también activa el cortafuegos UFW a través del módulo de cortafuegos de ISPConfig, con los puertos de los servicios instalados.
Paso 3: Acceder al panel y verificar el maestro
Abre https://server1.your_domain:8080 en el navegador e inicia sesión con el usuario admin y la contraseña que mostró el instalador. Si el autoinstalador pudo validar el nombre de host con Let's Encrypt, el panel ya usa un certificado válido; si no, el navegador mostrará un aviso por el certificado autofirmado.
Cambia la contraseña del administrador en Tools > Password and Language y comprueba en System > Server Services que server1.your_domain aparece con los servicios Web, Mail, DNS, File y DB marcados.
Desde SSH, comprueba que los servicios principales están activos:
sudo systemctl is-active nginx postfix dovecot mariadb named
active
active
active
active
active
Paso 4: Permitir que el servidor web acceda a MariaDB del maestro
En una instalación multiservidor, cada servidor esclavo lee su configuración directamente de la base de datos dbispconfig del maestro. Para ello necesitas que MariaDB escuche en la red y un usuario root para cada IP de servidor esclavo.
Primero, en el maestro, edita la configuración de MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Cambia bind-address para que escuche en la IP privada del maestro (o en 0.0.0.0 si no tienes red privada):
bind-address = 10.0.0.10
Reinicia MariaDB y comprueba que escucha en esa IP:
sudo systemctl restart mariadb
sudo ss -tlnp | grep 3306
LISTEN 0 80 10.0.0.10:3306 0.0.0.0:* users:(("mariadbd",pid=4567,fd=21))
Entra en MariaDB como root:
sudo mariadb
Crea los usuarios root para el servidor web, uno por su IP y otro por su nombre de host. Usa una contraseña fuerte distinta de la del root local y sustitúyela en your_strong_password:
CREATE USER 'root'@'10.0.0.20' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.20' WITH GRANT OPTION;
CREATE USER 'root'@'web1.your_domain' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'web1.your_domain' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Por último, abre el puerto 3306 en el maestro. Como el cortafuegos lo gestiona ISPConfig, hazlo desde el panel: en System > Firewall, edita la entrada de server1.your_domain y añade 3306 a la lista de puertos TCP. Si los servidores se comunican por una red privada, asegúrate además de que el cortafuegos del proveedor o del perímetro no expone el puerto 3306 en la IP pública.
Desde el servidor web, comprueba que llega a MariaDB del maestro (instala el cliente si aún no lo tiene con sudo apt install -y mariadb-client):
mariadb -h server1.your_domain -u root -p -e "SHOW DATABASES LIKE 'dbispconfig';"
+------------------------+
| Database (dbispconfig) |
+------------------------+
| dbispconfig |
+------------------------+
Paso 5: Instalar el servidor web y unirlo al clúster
En web1.your_domain, descarga el autoinstalador y ejecútalo en modo interactivo, sin correo ni DNS, ya que este servidor solo alojará webs:
curl -fsSL https://get.ispconfig.org -o ispconfig-autoinstaller.sh
sudo sh ispconfig-autoinstaller.sh --use-nginx --no-mail --no-dns --use-ftp-ports=40110-40210 --unattended-upgrades --interactive
Cuando el instalador de ISPConfig empiece a hacer preguntas, responde lo siguiente:
- Installation mode:
expert. - Full qualified hostname (FQDN) of the server:
web1.your_domain. - Shall this server join an existing ISPConfig multiserver setup:
y. - MySQL master server hostname:
server1.your_domain. - MySQL master server root username y password:
rooty la contraseña que creaste en el paso 4. - MySQL master server database name:
dbispconfig. - En la pregunta sobre qué servicios configurar, acepta solo Web, FTP y los que realmente vaya a usar este servidor.
- Install ISPConfig Web Interface:
n. El panel se queda solo en el maestro.
Deja el resto de preguntas con su valor por defecto.
Paso 6: Verificar el clúster y crear un sitio en el servidor web
Vuelve al panel del maestro. En System > Server Services debe aparecer web1.your_domain con el servicio Web activado. Si no está, recarga la página tras un par de minutos.
Para comprobar que el maestro envía cambios al servidor web, crea un sitio:
- Ve a Sites > Website > Add new website.
- En Server, elige
web1.your_domain. - En Domain, escribe un dominio cuyo registro
Aapunte a la IP pública del servidor web (203.0.113.20). - Marca Let's Encrypt SSL y guarda.
ISPConfig encola el cambio y el servidor web lo aplica en su siguiente ejecución del cron de ISPConfig, que se lanza cada minuto. Mientras hay cambios pendientes, el panel muestra un contador de acciones en cola en la parte superior. En web1.your_domain, comprueba que se ha creado el directorio del sitio:
sudo ls /var/www/
clients html your_site_domain
Y que responde por HTTPS:
curl -I https://your_site_domain
HTTP/2 200
server: nginx
Solución de problemas
- El servidor web no aparece en el panel o los cambios no se aplican. Comprueba desde
web1.your_domainla conexión a MariaDB con el comando del paso 4. El cron de ISPConfig registra sus errores en/var/log/ispconfig/cron.log. - El autoinstalador se detiene al principio. Suele deberse a un sistema no limpio o a un nombre de host que no es un FQDN. Revisa
hostname -fy reinstala el sistema operativo si ya había servicios instalados. - Let's Encrypt no emite el certificado de un sitio. El registro
Adel dominio debe apuntar al servidor web donde está el sitio, no al maestro, y el puerto 80 debe estar abierto en ese servidor.
Conclusión
Ya tienes un clúster de ISPConfig con un maestro que aloja el panel, el correo y el DNS, y un servidor web que se gestiona desde el mismo panel. Puedes añadir más servidores web, de correo o DNS repitiendo los pasos 4 y 5 con sus IP. Como siguientes pasos, crea clientes y plantillas de límites en Client, configura las copias de seguridad de sitios en System > Server Config y actualiza ISPConfig regularmente con sudo ispconfig_update.sh, empezando siempre por el maestro.
