Instalación · 8 min read · Jan 05, 2026

Instalación de una configuración multiserver con servidores web, de correo, DNS y base de datos MySQL dedicados en Debian 5.0 con ISPConfig 3

Instalación de una configuración multiserver con servidores web, de correo, DNS y base de datos MySQL dedicados en Debian 5.0 con ISPConfig 3

Versión 1.0
Autor: Till Brehm

Este tutorial describe la instalación de una configuración multiserver ISPConfig 3 con servidores web, de correo, base de datos y dos servidores DNS dedicados, todos gestionados a través de un único panel de control ISPConfig 3. La configuración descrita a continuación utiliza cinco servidores y se puede ampliar fácilmente a un mayor número de servidores simplemente agregando más servidores. Por ejemplo, si desea tener dos servidores de correo, realice los pasos de configuración del capítulo 2 en ambos servidores. Si desea configurar más servidores web, instale ISPConfig en todos los demás servidores web en modo experto, excepto en el primero.

Para aprender a usar ISPConfig 3, recomiendo encarecidamente descargar el Manual de ISPConfig 3.

En casi 300 páginas, cubre el concepto detrás de ISPConfig (administrador, revendedores, clientes), explica cómo instalar y actualizar ISPConfig 3, incluye una referencia para todos los formularios y campos de formulario en ISPConfig junto con ejemplos de entradas válidas, y proporciona tutoriales para las tareas más comunes en ISPConfig 3. También detalla cómo hacer que su servidor sea más seguro y viene con una sección de solución de problemas al final.

1 Instalando Los Cinco Sistemas Base Debian

En esta configuración habrá un servidor maestro (que ejecuta el servidor web y la interfaz del panel de control ISPConfig) y cuatro servidores esclavos para base de datos, correo y DNS.

Para instalar la configuración en clúster, necesitamos cinco servidores (o servidores virtuales) con una instalación mínima de Debian 5.0. La configuración base se describe en el siguiente tutorial en los pasos 1 - 6:

https://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3

¡Instale solo los pasos 1 - 6 del tutorial del servidor perfecto y no los otros pasos ya que difieren para una configuración en clúster!

En mi ejemplo, utilizo los siguientes nombres de host y direcciones IP para los cinco servidores:

Servidor Web
Nombre de host: web.example.tld
Dirección IP: 192.168.0.105

Servidor de Correo
Nombre de host: mail.example.tld
Dirección IP: 192.168.0.106

Servidor DB
Nombre de host: db.example.tld
Dirección IP: 192.168.0.107

Servidor DNS (primario)
Nombre de host: ns1.example.tld
Dirección IP: 192.168.0.108

Servidor DNS (secundario)
Nombre de host: ns2.example.tld
Dirección IP: 192.168.0.109

Dondequiera que estos nombres de host o direcciones IP aparezcan en los siguientes pasos de instalación, deberá cambiarlos para que coincidan con las IP y nombres de host de sus servidores.

2 Instalando El Servidor Web

Edite el archivo hosts y agregue las direcciones IP y nombres de host para todos los servidores. Los nombres de host y direcciones IP deben ajustarse para que coincidan con su configuración.

vi /etc/hosts
127.0.0.1       localhost
192.168.0.105   web.example.tld
192.168.0.106   mail.example.tld
192.168.0.107   db.example.tld
192.168.0.108   ns1.example.tld
192.168.0.109   ns2.example.tld
 
# Las siguientes líneas son deseables para hosts compatibles con IPv6
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Establezca el nombre de host del servidor: echo web.example.tld > /etc/hostname
/etc/init.d/hostname.sh start

Edite el archivo sources.list…

vi /etc/apt/sources.list 

… y asegúrese de que contenga la siguiente línea para habilitar el repositorio volátil.

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

Ejecute…

 apt-get update

… para actualizar la base de datos de paquetes apt; luego ejecute…

apt-get upgrade

… para instalar las últimas actualizaciones (si las hay).

Es una buena idea sincronizar el reloj del sistema con un servidor NTP ( n etwork t ime p rotocol) a través de Internet. Simplemente ejecute…

apt-get -y install ntp ntpdate

… y su hora del sistema siempre estará sincronizada.

Instale el servidor MySQL. Una instancia de servidor MySQL es necesaria en cada servidor ya que ISPConfig lo utiliza para sincronizar la configuración entre los servidores.

apt-get -y install mysql-client mysql-server

Ingrese la nueva contraseña para MySQL cuando lo solicite el instalador.

Queremos que MySQL escuche en todas las interfaces en el servidor maestro, no solo en localhost, por lo tanto editamos /etc/mysql/my.cnf y comentamos la línea bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf
[...]  
# En lugar de skip-networking, el valor predeterminado ahora es escuchar solo en  
# localhost, lo cual es más compatible y no menos seguro.  
#bind-address           = 127.0.0.1  
[...]  

Luego reinicie MySQL:

/etc/init.d/mysql restart

Ahora instale Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear y mcrypt de la siguiente manera:

apt-get -y install apache2 apache2.2-common apache2-doc   apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5   php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli   php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth   php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo 

Verá la siguiente pregunta:

Servidor web para reconfigurar automáticamente: <– apache2

Luego ejecute el siguiente comando para habilitar los módulos de Apache suexec, rewrite, ssl, actions e include:

a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digest

PureFTPd y quota se pueden instalar con el siguiente comando:

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

Edite /etc/fstab. El mío se ve así (agregué,usrquota,grpquota a la partición con el punto de montaje /):

vi /etc/fstab

| # /etc/fstab: información estática del sistema de archivos. # # proc /proc proc defaults 0 0 /dev/sda1 / ext3 errors=remount-ro,usrquota,grpquota 0 1 /dev/sda5 none swap sw 0 0 /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 |

Para habilitar quota, ejecute estos comandos:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /

quotacheck -avugm
quotaon -avug

Instale vlogger, webalizer y awstats:

apt-get -y install vlogger webalizer awstats 

Instale Jailkit: Jailkit es necesario solo si desea chroot usuarios SSH. Se puede instalar de la siguiente manera (importante: Jailkit debe instalarse antes de ISPConfig - ¡no se puede instalar después!):

apt-get -y install build-essential autoconf automake1.9 libtool flex bison

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
tar xvfz jailkit-2.11.tar.gz
cd jailkit-2.11
./configure
make
make install
cd ..
rm -rf jailkit-2.11*

Instale fail2ban: Esto es opcional pero recomendado, porque el monitor de ISPConfig intenta mostrar el registro:

apt-get install fail2ban

A continuación, instalaremos ISPConfig 3. Para obtener la URL de descarga de la última versión estable de ISPConfig 3, visite el sitio web de ISPConfig: http://www.ispconfig.org/ispconfig-3/download/

Este servidor es el servidor maestro en nuestra configuración que ejecuta la interfaz del panel de control ISPConfig. Para permitir que las otras instancias de MySQL se conecten a la base de datos MySQL en este nodo durante la instalación, debemos agregar registros de usuario root de MySQL en la base de datos maestra para cada nombre de host y dirección IP del servidor esclavo. La forma más fácil de hacer esto es utilizar la herramienta de administración basada en la web phpmyadmin que ya instalamos. Abra la URL http://192.168.0.105/phpmyadmin en un navegador web, inicie sesión como usuario root de MySQL y ejecute estas consultas MySQL:

CREATE USER ‘root’@’192.168.0.106’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.0.106’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’192.168.0.107’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.0.107’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’192.168.0.108’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.0.108’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’192.168.0.109’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’192.168.0.109’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’mail.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’db.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’db.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns1.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’;
GRANT ALL PRIVILEGES ON . TO ‘root’@’ns2.example.tld’ IDENTIFIED BY ‘myrootpassword’ WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

En los comandos sql anteriores, reemplace las direcciones IP ( 192.168.0.106 - 192.168.0.109) con las direcciones IP de sus servidores y reemplace mail.example.tld, db.example.tld, ns1.example.tld y ns2.example.tld con los nombres de host de sus servidores y myrootpassword con la contraseña root deseada.

Haga clic en el botón de recargar permisos o reinicie MySQL. Luego cierre phpmyadmin.

Regrese a la terminal de server1.example.tld y descargue la última versión estable de ISPConfig 3:

cd /tmp
wget
http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Luego inicie el script de instalación:

php -q install.php

Seleccione el idioma (en,de) [en]: <– en
Modo de instalación (estándar, experto) [estándar]: <– experto
Nombre de host completamente calificado (FQDN) del servidor, por ejemplo server2.domain.tld [web.example.tld]: <– web.example.tld
Nombre de host del servidor MySQL [localhost]: <– localhost
Nombre de usuario root de MySQL [root]: <– root
Contraseña root de MySQL []: <– Ingrese su contraseña root de MySQL aquí
Base de datos MySQL a crear [dbispconfig]: <– dbispconfig
Conjunto de caracteres MySQL [utf8]: <– utf8
¿Se unirá este servidor a una configuración multiserver ISPConfig existente (s,n) [n]: <– n
Configurar correo (s,n) [s]: <– n
Configurar Jailkit (s,n) [s]: <– s
Configurar servidor FTP (s,n) [s]: <– s
Configurar servidor DNS (s,n) [s]: <– n
Configurar servidor Apache (s,n) [s]: <– s
Configurar servidor de firewall (s,n) [s]: <–s
Instalar interfaz web de ISPConfig (s,n) [s]: <–s
Puerto ISPConfig [8080]: <– 8080

Limpie los directorios de instalación:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.