2. Instalación de la pila

Este apartado sigue las indicaciones del tutorial de HowtoForge para instalar, por capas, los componentes que ISPConfig necesitará para funcionar: servidor web, PHP, base de datos, correo, DNS, FTP y utilidades complementarias.

2.1 Servidor web y PHP. Se instala Apache 2.4 junto con los módulos rewrite, ssl, actions, fcgid y proxy_fcgi, y la rama PHP 7.4 con las extensiones habituales:

apt install -y apache2 apache2-utils libapache2-mod-fcgid \
               php7.4 php7.4-fpm php7.4-cli php7.4-mysql \
               php7.4-curl php7.4-gd php7.4-imap php7.4-intl \
               php7.4-mbstring php7.4-xml php7.4-zip

a2enmod rewrite ssl actions fcgid proxy_fcgi

2.2 Base de datos MariaDB. Se instala el servidor y el cliente, y a continuación se ejecuta el asistente de aseguramiento inicial para establecer la contraseña de root y retirar accesos anónimos:

apt install -y mariadb-server mariadb-client
mysql_secure_installation

2.3 Pila de correo. Postfix como MTA, Dovecot para IMAP/POP3, Amavis + ClamAV + SpamAssassin como filtro, y Postgrey como greylisting:

apt install -y postfix postfix-mysql \
               dovecot-imapd dovecot-pop3d dovecot-mysql \
               amavisd-new spamassassin clamav clamav-daemon \
               postgrey

2.4 DNS, FTP y utilidades. BIND9 como servidor DNS autoritativo, Pure-FTPd con backend MySQL, Memcached como sistema de caché, fail2ban para protección de servicios y Certbot para la emisión de certificados:

apt install -y bind9 dnsutils
apt install -y pure-ftpd-mysql
apt install -y memcached fail2ban ufw certbot

2.5 Webmail y administración de la base de datos. Roundcube para el acceso al correo vía web y phpMyAdmin para la gestión de MariaDB:

apt install -y roundcube roundcube-core roundcube-mysql
apt install -y phpmyadmin

2.6 Comprobación. Tras la instalación es recomendable verificar que los servicios se han iniciado correctamente:

systemctl status apache2 mariadb postfix dovecot named pure-ftpd-mysql

Todos deben aparecer en estado active (running). Si alguno está inactivo, se inicia manualmente con systemctl enable --now <servicio>.