====== Cómo Instalar Zentyal como un contenedor de OpenVZ en Proxmox ======
===== Introducción =====
En este tutorial, utilizaremos Proxmox 2.1 para instalar una PC virtual con Zentyal 2.2-2, pero para minimizar el consumo de recursos crearemos dicha PC no como una máquina virtual, sino como un contenedor de OpenVZ.
Asumiremos que ya se ha instalado Proxmox, pues el proceso de instalación es bastante sencillo. Idealmente, para esto se contaría con un equipo con soporte para virtualización por hardware (solo así se podrá utilizar la tecnología KVM, que optimiza el rendimiento), un procesador con múltiples núcleos, 2 GB o más de memoria RAM y un disco de unos 200 GB o más.
===== Preparativos =====
==== Requisitos ====
Además de ser necesario el acceso a Internet (o a los repositorios necesarios, si se tienen en un disco o una red local), para poder instalar Zentyal en un contenedor, debemos tener a mano la plantilla OpenVZ para Ubuntu Lucid (ubuntu-10.04-standard).
Puede obtenerse desde Internet mediante la interfaz web de Proxmox, seleccionando el almacenamiento local, y en la pestaña de contenido, hacer clic en el enlace que dice "Plantilla".
Alternativamente, podemos descargar la plantilla desde el [[http://wiki.openvz.org/Download/template/precreated|sitio original]], o bien desde un enlace nacional, como [[http://download.jovenclub.cu/repos/isos/proxmox/virtual_appliances/|este]].
Una vez obtenido el archivo (digamos, ''ubuntu-10.04-x86.tar.gz'') lo "subimos" al directorio de plantillas, para lo cual podemos utilizar el enlace que dice "Subir".
==== Módulos ====
En caso de que deseemos configurar Zentyal como cortafuegos (Zentyal Firewall), será necesario realizar varios pasos, para lo cual debemos iniciar sesión de consola en Proxmox, bien sea localmente o por SSH.
Primeramente, nos cercioramos de cargar ciertos módulos del kernel:
modprobe xt_mark
modprobe ipt_mark
modprobe ip_conntrack
Para que los cambios sean permanentes, en lugar de esto podemos agregar el nombre de estos módulos al archivo ''/etc/modules'' (uno por línea).
Además, necesitamos editar el archivo ''/etc/vz/vz.conf'' y modificar la entrada que comienza con "IPTABLE" para especificar los módulos de iptables que se habilitarán por defecto en los contenedores OpenVZ. Debería quedar aproximadamente de esta manera:
IPTABLES="ip_conntrack ip_conntrack_ftp ip_conntrack_irc ip_nat_ftp ip_nat_irc iptable_filter iptable_mangle iptable_nat ipt_conntrack ipt_helper ipt_length ipt_limit ipt_LOG ipt_multiport ipt_multiport ipt_owner ipt_REDIRECT ipt_REJECT ipt_state ipt_state ipt_tcpmss ipt_TCPMSS ipt_tos ipt_TOS ipt_ttl"
Una vez realizadas estas modificaciones, reiniciamos los contenedores mediante este comando:
/etc/init.d/vz restart
Además podríamos reiniciar el equipo físico para cerciorarnos de que se aplicarán todos los cambios:
reboot
==== Creación del contenedor ====
La creación del contenedor es muy fácil, solo hay que hacer clic en el botón superior que dice "Crear CT" y seguir el asistente.
* Como //hostname// ponemos solo el nombre del equipo (es decir, sin la parte del dominio).
* Escogemos de la lista desplegable la plantilla adecuada (''ubuntu-10.04-x86.tar.gz'').
* Establecemos los recursos que deseamos asignar al contenedor (memoria RAM, SWAP, espacio en disco, CPU).
* Establecemos la dirección IP del equipo, o si va a utilizarse como parte de una VPN, puede escogerse el modo //Bridged//.
* Dejamos que se utilicen los DNS de proxmox, y confirmamos que los valores sean correctos antes de proceder a crear el contenedor.
Debería aparecer una pantalla donde se va notificando el estado de la tarea. Cuando esta finaliza, aparece el mensaje "TASK OK". Entonces podemos cerrarla.
En la vista de servidores debe aparecer nuestro contenedor OpenVZ, en un estado detenido. Normalmente deseamos que que se inicie junto con el equipo físico, de modo que lo seleccionamos y vamos a la pestaña llamada "Opciones". Hacemos doble clic sobre la opción que dice "Iniciar al Arranque", marcamos la casilla y aceptamos.
Iniciamos el contenedor (bien haciendo clic derecho sobre el y seleccionando del menú contextual la opción correspondiente, o mediante el enlace que dice "Iniciar" hacia el extremo superior derecho de la pantalla). Cuando el servidor inicie, el icono cambiará de un color gris a verde.
Una vez iniciado, podemos acceder por la consola (el procedimiento es similar al utilizado para inciarlo). Sucede que para el acceso a la PC virtualizada, Proxmox utiliza una versión personalizada de VNC a la cual no se puede acceder con un cliente VNC corriente, porque requiere de TLS. Por esto, el equipo de desarrollo prefiere confiar en un cliente de Java que se basa en IcedTea. El problema es que aun asi, hay ocasiones en las que esta vía tampoco funciona, en cuyo caso (y afortunadamente) podemos acceder por SSH. Por ejemplo:
ssh root@192.168.2.1
==== Archivos de localización ====
Aparentemente, algunas plantillas de OpenVZ vienen sin archivos de localización para reducir el tamaño del archivo, por lo que habrá que generarlos (incluso para el idioma inglés). Por ejemplo:
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
==== Usuario de trabajo ====
Creamos ahora el grupo //admin// (necesario para la administración via web):
groupadd admin
Para la administración web, creamos un usuario y lo asignamos a ciertos grupos privilegiados:
adduser operador
usermod -a -G admin,sudo operador
chmod u+s /usr/bin/sudo
==== Repositorio y paquetes de software ====
Agregamos el repositorio de Zentyal a los orígenes de software:
echo "deb http://ppa.launchpad.net/zentyal/2.2/ubuntu lucid main" >> /etc/apt/sources.list
Si pretendemos utilizar Zarafa, también debemos agregar otra entrada:
echo "deb http://archive.zentyal.com/zentyal 2.2 extra" >> /etc/apt/sources.list
Ahora importamos la clave pública con la que se autentican los paquetes:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 10E239FF
Una vez obtenida la clave, actualizamos la lista de paquetes:
apt-get update
Como paso opcional podemos instalar ''aptitude'', muchos lo encuentran más cómodo para la gestión de los paquetes y sus dependencias:
apt-get install aptitude
==== Módulos ====
Nos cercioramos de que los archivos necesarios para los módulos del kernel estén creados, y reiniciamos el contenedor para mayor seguridad de que todas las modificaciones están activas:
depmod -a
reboot
===== Instalación =====
Ahora procedemos a instalar Zentyal propiamente. Podemos utilizar el metapaquete llamado ''zentyal'', o también especificar los paquetes que deseamos instalar. Incluso, para cerciorarnos de que dispondremos de todos los paquetes que deseamos, podríamos hacer una instalación simulada, por ejemplo:
aptitude -Rsv install zentyal-{antivirus,ebackup,bwmonitor,ca,dhcp,dns,samba,firewall,zarafa,squid,jabber,l7-protocols,mailfilter,mail,monitor,ntp,network,printers,trafficshaping,usercorner,users,webmail,webserver}
No obstante, en este tutorial vamos a instalar solamente dos paquetes básicos, y el resto se instalará desde la interfaz gráfica:
aptitude -Rv install zentyal-{core,software}
Una vez realizado esto, procedemos a instalar cualquier actualización de seguridad:((Hay quienes prefieren utilizar ''safe-upgrade'', pero para una PC virtual nueva no hay nada que temer.))
aptitude full-upgrade
Finalmente, reiniciamos el servidor para cerciorarnos de que todo cargará correctamente:
reboot
Ya con esto, deberíamos poder acceder a la administración web. En este caso, mediante la dirección https://192.168.2.1 (la misma que establecimos antes).
Debemos acceder con el usuario que creamos al efecto, al cual en este tutorial hemos llamado //"operador"//. Una vez en la interfaz web, podemos instalar el resto de los paquetes, y realizar la configuración de Zentyal.
===== Configuración =====
(Pendiente) FIXME
===== Notas =====
Este tutorial puede mejorarse, especialmente aportando detalles en la sección de configuración. Parte de la información que aquí se encuentra fue tomada de un mensaje enviado a la lista [[https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l|gutl-l]] por el colega Carlos R. Laguna.
===== Atribuciones =====
* **Autor:** Hugo Florentino
* **Contribuyentes:** Carlos R. Laguna