Servidor Perfecto · 10 min read · Oct 23, 2025

El Servidor Perfecto - Ubuntu 16.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD e ISPConfig 3.1) - Página 3

15. Instalar Roundcube Webmail

Para instalar Roundcube Webmail, ejecuta:

apt-get -y install roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce

El instalador te hará las siguientes preguntas:

¿Configurar la base de datos para roundcube con dbconfig-common? <-- Sí  
Contraseña de la aplicación MySQL para roundcube: <-- Presiona enter  
  

Luego edita el archivo de configuración de RoundCube config.inc.php:

nano /etc/roundcube/config.inc.php

y cambia el host predeterminado a localhost:

$config['default_host'] = 'localhost';

Esto evita que Roundcube muestre el campo de entrada del nombre del servidor en el formulario de inicio de sesión.

Ahora crea un symlink para que podamos usar la configuración de SquirrelMail en ISPConfig para Roundcube:

ln -s /usr/share/roundcube /usr/share/squirrelmail

Después de haber instalado ISPConfig 3, puedes acceder a Roundcube de la siguiente manera:

La aplicación vhost de ISPConfig en el puerto 8081 para nginx viene con una configuración de Roundcube, así que puedes usar http://server1.example.com:8081/webmail para acceder a Roundcube.

Si deseas usar un alias /webmail que puedas usar desde tus sitios web, esto es un poco más complicado que para Apache porque nginx no tiene alias globales (es decir, alias que se pueden definir para todos los vhosts). Por lo tanto, debes definir estos alias para cada vhost desde el cual desees acceder a Roundcube.

Para hacer esto, pega lo siguiente en el campo de Directivas de nginx en la pestaña Opciones del sitio web en ISPConfig:

        location /roundcube {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/roundcube/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/roundcube/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /webmail {
               rewrite ^/* /roundcube last;
        }

Si usas http s en lugar de http para tu vhost, debes agregar la línea fastcgi_param HTTPS on; a tu configuración de SquirrelMail así:

        location /roundcube {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/roundcube/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                       fastcgi_param HTTPS on; # <-- agrega esta línea
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/roundcube/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /webmail {
               rewrite ^/* /roundcube last;
        }

Si usas tanto http como https para tu vhost, necesitas agregar la siguiente sección a la sección http {} en /etc/nginx/nginx.conf (antes de cualquier línea de inclusión) que determina si el visitante usa http o https y establece la variable $fastcgi_https (que usaremos en nuestra configuración de Roundcube) en consecuencia:

nano /etc/nginx/nginx.conf
[...]
http {
[...]
        ## Detectar cuando se usa HTTPS
        map $scheme $fastcgi_https {
          default off;
          https on;

        }
[...]
}
[...]

No olvides recargar nginx después:

service nginx reload

Luego ve al campo de Directivas de nginx nuevamente, y en lugar de fastcgi_param HTTPS on; agregas la línea fastcgi_param HTTPS $fastcgi_https; para que puedas usar Roundcube tanto para solicitudes http como https:

        location /roundcube {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/roundcube/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                       fastcgi_param HTTPS $fastcgi_https; # <-- agrega esta línea
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/roundcube/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /webmail {
               rewrite ^/* /roundcube last;
        }

16. Instalar ISPConfig 3.1

Antes de comenzar la instalación de ISPConfig, asegúrate de que Apache esté detenido (si está instalado - es posible que algunos de tus paquetes instalados hayan instalado Apache como una dependencia sin que lo supieras). Si Apache2 ya está instalado en el sistema, deténlo ahora…

service apache2 stop

… y elimina los enlaces de inicio del sistema de Apache:

update-rc.d -f apache2 remove

Asegúrate de que nginx esté en funcionamiento:

service nginx restart

(Si tienes tanto Apache como nginx instalados, el instalador te preguntará cuál deseas usar: Apache y nginx detectados. Selecciona el servidor a usar para ISPConfig: (apache,nginx) [apache]:

Escribe nginx. Si solo Apache o Nginx están instalados, esto es detectado automáticamente por el instalador, y no se hace ninguna pregunta.)

Para instalar ISPConfig 3.1 desde la rama estable de GIT, haz esto:

cd /tmp   
wget -O ispconfig.tar.gz https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1  
tar xfz ispconfig.tar.gz  
cd ispconfig3*/install/

El siguiente paso es ejecutar

php -q install.php

Esto iniciará el instalador de ISPConfig 3.1. El instalador configurará todos los servicios como Postfix, Dovecot, etc. por ti.

root@server1:/tmp/ispconfig3-stable-3.1-3f1331062193a94fbd64a7e39c00cb8d77eb7484/install# php install.php
  
--------------------------------------------------------------------------------  
_____ ___________ _____ __ _ ____  
|_ _/ ___| ___ \ / __ \ / _(_) /__ \  
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /  
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |  
_| |_\/__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \  
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/  
__/ |  
|___/  
--------------------------------------------------------------------------------
  
>> Configuración inicial
Sistema Operativo: Ubuntu 16.04.1 LTS (Xenial Xerus)
A continuación habrá algunas preguntas para la configuración primaria, así que ten cuidado.  
Los valores predeterminados están entre [corchetes] y se pueden aceptar con .  
Escribe "quit" (sin las comillas) para detener el instalador.
  
Selecciona el idioma (en,de) [en]: <-- ENTER
Modo de instalación (estándar, experto) [estándar]: <-- ENTER
Nombre de host completamente calificado (FQDN) del servidor, por ejemplo server1.dominio.tld [server1.example.com]: <-- ENTER
Nombre de host del servidor MySQL [localhost]: <-- ENTER
Puerto del servidor MySQL [3306]: <-- ENTER
Nombre de usuario root de MySQL [root]: <-- ENTER
Contraseña root de MySQL []: <--ingresa aquí la contraseña root de MySQL
Base de datos MySQL a crear [dbispconfig]: <-- ENTER
Conjunto de caracteres MySQL [utf8]: <-- ENTER
Configurando Postgrey  
Configurando Postfix  
Generando una clave privada RSA de 4096 bits  
.................................................................................................................................................................................................................................................................................................................................................................................................................++  
...++  
escribiendo nueva clave privada en 'smtpd.key'  
-----  
Estás a punto de ser preguntado para ingresar información que será incorporada  
en tu solicitud de certificado.  
Lo que estás a punto de ingresar se llama Nombre Distinguido o DN.  
Hay bastantes campos, pero puedes dejar algunos en blanco  
Para algunos campos habrá un valor predeterminado,  
Si ingresas '.', el campo se dejará en blanco.  
-----  
Nombre del país (código de 2 letras) [AU]: <-- ingresa tu código de país de 2 letras, por ejemplo DE en mi caso  
Nombre del estado o provincia (nombre completo) [Some-State]: <-- Ingresa tu estado de residencia  
Nombre de la localidad (por ejemplo, ciudad) []:  <-- Ingresa tu ciudad, en mi caso Lueneburg  
Nombre de la organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <-- Ingresa el nombre de tu empresa, en mi caso ISPConfig UG  
Nombre de la unidad organizativa (por ejemplo, sección) []: <-- Ingresa el nombre de tu unidad organizativa, yo uso IT aquí  
Nombre común (por ejemplo, FQDN del servidor o TU nombre) []: <-- Ingresa el nombre del servidor, en mi caso server1.example.com  
Dirección de correo electrónico []: <-- Ingresa una dirección de correo electrónico, por ejemplo [email protected]  
Configurando Mailman  
Configurando Dovecot  
Configurando Spamassassin  
Configurando Amavisd  
Configurando Getmail  
Configurando Jailkit  
Configurando Pureftpd  
Configurando BIND  
Configurando nginx  
[INFO] servicio OpenVZ no detectado  
Configurando Firewall de Ubuntu  
Configurando Servidor XMPP Metronome  
escribiendo nueva clave privada en 'localhost.key'  
-----  
Nombre del país (código de 2 letras) [AU]: <-- Ingresa tu código de país de 2 letras, por ejemplo DE en mi caso
Nombre de la localidad (por ejemplo, ciudad) [Nombre de la Ciudad]: <-- Ingresa tu ciudad, en mi caso Lueneburg
Nombre de la organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <-- Ingresa el nombre de tu empresa, en mi caso ISPConfig UG
Nombre de la unidad organizativa (por ejemplo, sección) [Infraestructura]: <-- Ingresa el nombre de tu unidad organizativa, yo uso IT aquí
Nombre común (por ejemplo, FQDN del servidor o TU nombre) [server1.example.com]: <-- Ingresa el nombre del servidor, en mi caso server1.example.com
Dirección de correo electrónico [[email protected]]: <-- Ingresa una dirección de correo electrónico, por ejemplo [email protected]
IMPORTANTE:  
La clave de localhost, Csr y un Cert auto-firmado han sido guardados en /etc/metronome/certs  
Para trabajar con todos los clientes, el servidor debe tener un certificado confiable, así que usa el Csr  
para obtener un certificado confiable de tu CA o reemplaza la clave y el certificado con archivos ya firmados para  
tu dominio. Los clientes como Pidgin no permiten usar certificados auto-firmados no confiables.
Configurando Fail2ban  
Configurando Apps vhost  
Instalando ISPConfig  
Puerto ISPConfig [8080]: <-- ENTER
Contraseña de administrador [admin]: <-- Ingresa tu contraseña de administrador deseada
¿Deseas una conexión segura (SSL) a la interfaz web de ISPConfig (y,n) [y]: <-- ENTER
Generando clave privada RSA, módulo de 4096 bits  
....................................................++  
........................++  
e es 65537 (0x10001)  
Estás a punto de ser preguntado para ingresar información que será incorporada  
en tu solicitud de certificado.  
Lo que estás a punto de ingresar se llama Nombre Distinguido o DN.  
Hay bastantes campos, pero puedes dejar algunos en blanco  
Para algunos campos habrá un valor predeterminado,  
Si ingresas '.', el campo se dejará en blanco.  
-----  
Nombre del país (código de 2 letras) [AU]: <-- ingresa tu código de país de 2 letras, por ejemplo DE en mi caso  
Nombre del estado o provincia (nombre completo) [Some-State]: <-- Ingresa tu estado de residencia  
Nombre de la localidad (por ejemplo, ciudad) []:  <-- Ingresa tu ciudad, en mi caso Lueneburg  
Nombre de la organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <-- Ingresa el nombre de tu empresa, en mi caso ISPConfig UG  
Nombre de la unidad organizativa (por ejemplo, sección) []: <-- Ingresa el nombre de tu unidad organizativa, yo uso IT aquí  
Nombre común (por ejemplo, FQDN del servidor o TU nombre) []: <-- Ingresa el nombre del servidor, en mi caso server1.example.com  
Dirección de correo electrónico []: <-- Ingresa una dirección de correo electrónico, por ejemplo [email protected]
Por favor ingresa los siguientes atributos 'extra'  
a ser enviados con tu solicitud de certificado  
Una contraseña de desafío []: <-- ENTER  
Un nombre de empresa opcional []: <-- ENTER  
escribiendo clave RSA
  
Configurando DBServer  
Instalando crontab de ISPConfig  
Instalando crontab de ISPConfig  
no crontab para root  
no crontab para getmail  
Detectando direcciones IP  
Reiniciando servicios ...  
Instalación completada.

El instalador configura automáticamente todos los servicios subyacentes, por lo que no se necesita configuración manual.

Después puedes acceder a ISPConfig 3 en http(s)://server1.example.com:8080/ o http(s)://192.168.1.100:8080/ (http o https depende de lo que elegiste durante la instalación). Inicia sesión con el nombre de usuario admin y la contraseña admin (debes cambiar la contraseña predeterminada después de tu primer inicio de sesión):

El sistema ahora está listo para ser utilizado.

16.1 Manual de ISPConfig 3.1

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

En más de 300 páginas, cubre el concepto detrás de ISPConfig (administradores, 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 tu servidor sea más seguro y viene con una sección de solución de problemas al final.

17. Notas Adicionales

18.1 OpenVZ

Si el servidor Ubuntu que acabas de configurar en este tutorial es un contenedor OpenVZ (máquina virtual), debes hacer esto en el sistema host (asumo que el ID del contenedor OpenVZ es 101 - reemplázalo con el VPSID correcto en tu sistema):

VPSID=101   
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE   
do   
  vzctl set $VPSID --capability ${CAP}:on --save   
done

18.2 Descarga de imagen de máquina virtual de este tutorial

Este tutorial está disponible como imagen de máquina virtual lista para usar en formato ovf/ova que es compatible con VMWare y Virtualbox. La imagen de la máquina virtual utiliza los siguientes detalles de inicio de sesión:

Inicio de sesión SSH / Shell

Nombre de usuario: administrator
Contraseña: howtoforge

Este usuario tiene derechos sudo.

Inicio de sesión ISPConfig

Nombre de usuario: admin
Contraseña: howtoforge

Inicio de sesión MySQL

Nombre de usuario: admin
Contraseña: howtoforge

o inicia sesión con:

sudo mysql

en la shell.

La IP de la VM es 192.168.1.100, se puede cambiar en el archivo /etc/network/interfaces. Por favor, cambia todas las contraseñas anteriores para asegurar la máquina virtual.

19. Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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