lunes, 26 de septiembre de 2016

Como instalar Elastix 4 en Amazon AWS.



************************** Actualización al 27/09/2017 **************************
Elastix.org ha descontinuado elastix 4 y por eso he modificado el script cambiando el hosting de la imagen iso, esto para que puedan continuar disfrutando de esta excelente versión.
ver:
https://www.elastix.org/blog/latestnews/note-elastix-community/

Debido a que el hosting ahora está siendo provisto por mi persona, la transferencia de datos tiene un costo.
Para mantener en linea el hosting de Elastix 4, se aceptan donaciones de 1$us vía paypal a la cuenta:
ofertas@redeskbolivia.com

He creado unas imágenes en Amazon que pueden buscar con el nombre "Elastix 4 powered by REDESK"
Luego de lanzar la imagen deben conectarse vía SSH
Luego continúan en el punto 4.4 de este post.
Espero que les sea útil
************************** ************************** *********************

Esta es la versión más reciente e incorpora las últimas tecnologías disponibles. Una de las características destacadas es presentar un producto “WebRTC ready”, con el que se facilitará considerablemente la integración de VoIP en plataformas Web, permitiendo embeber llamadas de video y audio en el navegador, incluso pudiendo recibir llamadas desde el sitio web de su compañía!

Otra novedad de la que los usuarios Elastix disfrutarán serán los codecs más recientes de código abierto, como Opus o VP8, con lo cual obtendrá una experiencia de comunicaciones de la más alta calidad.

Esta nueva distribución está basada en CentOS 7, proporcionando un soporte mayor para hardware, y asegurando un largo tiempo de vida y actualizaciones de la plataforma y sus componentes.

La interfaz también ha sido rediseñada completamente, incorporando las últimas tendencias en diseño web: HTML5, jQuery, gráficos vectoriales y diseño, haciendo mucho más fácil su uso en dispositivos móviles y tablets. Muchas nuevas características han sido añadidas, las cuales se detallarán en el ChangeLog del sitio oficial.
(fuente: Sitio oficial de Elastix).

Como instalar Elastix 4 en Amazon AWS.

Paso 1.- ¿Cómo lanzar una instancia con linux centos 7 en AWS?

Para mayor información sobre estos procesos ver los siguientes Post del Blog.

Escoger cualquier región ubicada en EEUU, de otra forma el script puede fallar.

Paso 1.1.- Iniciamos sesión en la consola de AWS y luego / Services / Ec2
Paso 1.2.- Buscamos el botón azul que dice "Launch instance"
Paso 1.3.- Escogemos AWS Market Place, luego escribimos Centos7 para buscar la AMI que contenga el sistema operativo Linux Centos 7. En la imagen de abajo se puede ver claramente.
Paso 1.4.- Escogemos el tipo de instancia. En la imagen de abajo se muestra la instancia con las características de hardware mínimas para poner en funcionamiento Elastix 4.
Después de escoger el tipo de instancia, buscamos el Botón azul que dice "Review and Launch".


Paso 1.5.- ¿Cómo creamos un "Security group" para Elastix 4?
También sirve para cualquier distribución basada en Asterisk.
Aquí podemos ver el resumen de nuestra instancia, tenemos que modificar el "Security Group", esto lo hacemos buscando el Link que dice "Edit Security Groups"

Paso 1.6.- Aquí podremos crear un Grupo de seguridad, que no es otra cosa que las reglas del Firewall de amazon, para evitar problemas en la instalación inicial vamos a abrir completamente el acceso a nuestra instancia virtual.
Cuando tengamos nuestra instancia con elastix 4 funcionando correctamente ya podremos volver y editar nuestro grupo de seguridad con las reglas que vayamos necesitando.
En las imágenes de abajo les muestro ejemplos con ambas opciones.
 Firewall completamente abierto (Fácil diagnostico de problemas)
y el Firewall con las reglas básicas para el funcionamiento estándar de Elastix 4.

      Firewall Abierto
     Firewall con Reglas Básicas
Luego buscamos el botón azul que dice "Review and Launch"
Finalmente buscamos el botón azul que dice Launch.
Aquí nos pedirá que escojamos un "Key pair", si no tenemos uno es muy importante crear uno, descargarlo y guardarlo en un lugar muy seguro.
Vamos a utilizar este archivo cada vez que queramos conectarnos a nuestra instancia Linux.
                                Ver imagen.


Con esto ya tendríamos una instancia con un sistema operativo Linux Centos 7.

Paso 2.- SSH - conectándonos a la instancia virtual.

¿Cómo conectarse a una instancia virtual de EC2?
2.1.- Debemos conectarnos vía SSH a la instancia recientemente creada.
En Windows les recomiendo el software MobaXterm versión gratuita, ya que les permite seleccionar directamente el archivo *.pem que acabamos de descargar.
Ver las siguientes imágenes con indicaciones para crear una sesión SSH .
2.2 Abrimos MobaXterm y presionamos Ctrl - Shift - N
2.3 Ponemos la IP pública de nuestra instancia, el usuario por defecto es "centos", el puerto es 22 y muy importante es seleccionar el archivo *.pem que descargamos.
Presionamos OK.
Luego buscamos en la lista de sesiones y le damos doble click para conectarnos, la sesión va iniciar automáticamente utilizando el archivo *.pem para autenticarnos.
Si hemos seguido todos los pasos mencionados arriba ahora tendremos ante nosotros una consola con una línea de commandos esperando nuestras órdenes.
* El usuario "centos" es parte del grupo con permisos para hacer sudo y ejecutar comandos como Root
* El usuario Root esta des habilitado por defecto y no se puede tener acceso al mismo de forma directa.

Paso 3.- Instalando Elastix 4 en Centos 7 con un script

3.1.- Cambiar la contraseña del usuario "centos" ejecutando el comando de abajo, pueden copiar el comando e insertarlo en la consola con las teclas Ctrl + Insert o en su defecto click derecho "Paste"
sudo passwd centos
Este comando nos ayudará a cambiar la contraseña, actualmente no necesitamos una contraseña porque estamos utilizando un certificado para autenticarnos, sin embargo es posible que durante la instalación la configuración del sistema cambie y podamos quedarnos sin acceso al mismo si es que no tenemos la contraseña de algún usuario con privilegios sudo.

También es recomendable habilitar el usuario root y cambiarle la contraseña.
Para hacer eso debemos utilizar los comandos siguientes.
El primer comando desbloquea el usuario "root" y el segundo comando nos ayuda a cambiarle la contraseña.

sudo passwd root
sudo passwd -u root

Paso 3.- Descargamos el script

¿Como instalar elastix 4 utilizando un script automatizado?

De ahora en adelante estaremos ejecutando comandos que necesitan de privilegios administrativos, es por esto que vamos a utilizar el usuario "root", ejecutar los siguientes comandos para cambiar de usuario y para cambiar de directorio al directorio home del usuario "root"
su root
cd
3.1.- Ahora vamos a necesitar unos cuantos programas que no vienen instalados por defecto, ejecutamos el siguiente comando para instalarlos todos .
yum -y install wget zip unzip nano screen

3.2.- Ahora descargamos el script con el comando
sudo wget https://s3.amazonaws.com/redeskbolivia/Elastix4onCentos7vz-master.zip

Este script no es de mi autoría, sin embargo fue actualizado por mi persona para que continúe funcionando
Si desean ponerse en contacto con el creador solo deben buscarlo en Github con el nombre "thpryrchn"

3.3.- Finalmente solo necesitas descomprimir el archivo para tener acceso a todos los archivos necesarios para ejecutar el Script de instalación.
Ejecuta los siguientes comandos:
unzip Elastix4onCentos7vz-master.zip
cd Elastix4onCentos7vz-master

Paso 4.- Ejecutamos el script.

¿Como podemos ejecutar un proceso en linux en segundo plano, mientras hacemos otros trabajos?.

Debido a que este script corre una instalación compleja va tomar unos 15 minutos, en este tiempo es posible que su conexión SSH se desconecte, esto va detener todo el proceso y perderemos todo nuestro trabajo.
Para evitar esto podemos hacer uso del programa "screen", este programa nos va permitir ejecutar el script en un proceso independiente de nuestra consola SSH, así en caso que nos desconectemos podremos volver a este proceso sin problemas.
4.1.- Ejecutamos Screen, le damos permisos de ejecución y luego ejecutamos el script.

screen
sudo chmod +x elastix-install-p1.sh
./elastix-install-p1.sh
Este script va descargar el archivo iso de instalación, lo va montar y lo va utilizar como repositorio local para realizar la instalación.
También se agregan al sistema los repositorios públicos de Elastix para poder actualizar a la última versión.

4.2.- Uso básico del programa "Screen"
Ctrl+a  d  (Tecla control + a y luego la letra d, nos desconecta y vuelve al Shell de Centos).
screen -r (Nos reconecta con screen y podemos ver que nuestro proceso se sigue ejecutando).

4.3.- Cuando el script finalice debemos presionar la tecla "enter" para reiniciar el sistema.
También podemos reiniciar el sistema utilizando el comando "reboot"
4.4.- Conectarse nuevamente vía SSH con el programa MobaXterm y continuar la instalación con los comandos a continuación.
su root
cd
cd Elastix4onCentos7vz-master
sudo chmod +x elastix-install-p2.sh
./elastix-install-p2.sh
El primer comando, cambia el usuario actual al usuario root, nos va pedir la contraseña que pusimos al usuario root.
El segundo comando cambia al directorio Home del usuario root
El tercer comando cambia el directorio a la carpeta donde descomprimimos el script.
El cuarto comando ejecuta la segunda parte del script de instalación. Es aquí donde podremos ponerle contraseñas a nuestra base de datos MySQL y seguido nos pedirá ponerle contraseña al usuario "admin" que se utiliza para acceder a la interfaz de administración WEB de Elastix.
Por último, un ultimo Enter para reiniciar una vez más el sistema.

4.5.- Deshabilitamos el firewall de Centos.
¿Cómo deshabilitar y detener el firewall en linux Centos 7?

su root
systemctl stop firewalld
systemctl disable firewalld


Paso 5.- Nos conectamos a la interfaz web de Elastix

5.1.- Debemos utilizar la IP pública que nos provee AWS EC2., para obtenerla puede utilizar este comando.
wget http://ipinfo.io/ip -qO -
5.2.- Abrimos nuestro navegador favorito y escribimos la IP que obtuvimos con el anterior comando.
Aquí nos saldrá una advertencia diciendo que el sitio al que intentamos acceder no es seguro, podemos ignorar esta advertencia.
5.3.- Iniciamos sesión en nuestro flamante Elastix 4 con el usuario admin y la contraseña que pusimos en el paso 4.4
5.4.- Podemos cerrar la siguiente ventana, solo nos pide que nos registremos en el sitio oficial de Elastix.

Paso 6.- Asignar una "Elastic IP"

Las IPs públicas que nos provee Amazon de forma automática, pueden cambiar cada vez que apaguemos o reiniciemos la instancia.
Para evitar esto podemos asignar una IP Pública fija.
6.1.- En la consola de Amazon AWS buscar / Servicios / Compute / EC2
Luego Buscamos en el panel izquierdo /Networks & security / Elastic IPs
Aquí buscamos el boton azul que dice "Allocate new address", anotamos la IP pública que nos asigna.
6.2.- Seleccionamos la IP pública y buscamos arriba el botón blanco "Actions" /Associate address.
Luego buscamos el botón azul "Associate"
Con esto hemos cambiado la IP pública actual que era de asignación dinámica por una IP pública Fija.


7.- Tips para una configuración básica.

¿Como hacer que elastix funcione correctamente en Amazon AWS?

7.1.- Es necesario especificar en nuestra configuración SIP cuál es nuestra IP pública.
Para hacer esto es necesario seguir los siguientes pasos.
7.1.1 Ir a "Security >> Advanced Security Settings"
7.1.2 Habilitar el Acceso directo a FreePBX y escribir una contraseña para FreePBX.
FreePBX es la interfaz web avanzada que utiliza Elastix.

Paso 7.1.3.- Ingresar a FreePBX 
PBX Configuration / Unembedded FreePBX
Paso 7.1.4.- Especificar la IP pública en "Settings / Asterisk SIP Settings / External IP
La IP Externa de Elastix es la misma IP que estamos utilizando para entrar a la interfaz de administración WEB.
Paso 7.1.5.- Especificar "Local Networks"
Aquí debemos poner la IP privada que tiene asignada nuestra instancia.
Debido a que nuestra instancia está configurada para recibir IPs privadas de forma dinámica, debemos especificar todo el rango de direcciones IP que son locales en nuestra red de Amazon AWS.
Para obtener este dato debemos ir a la consola AWS /Servicios /Networking /VPC tal como se ve en la imagen de abajo.

Luego buscamos la palabra VPC/CIDR tal como se ven en la imagen de abajo.
Esta es nuestra Red Local en la red de Amazon AWS, esta red también se puede anotar como:
172.31.0.0 con Mask 255.255.0.0
Si se desea poner datos más exactos, hay que ver en qué zona se está ejecutando la instancia y buscar la Subred asociado a esa zona. 
Sin embargo con el dato mencionado arriba va funcionar correctamente.


Paso 7.2.- Para crear una extensión funcional solo es necesario especificar el número de la extensión, el nombre (Display name) y la propiedad "NAT = Yes"
Todos los demás campos pueden dejarse con su config por defecto.

Paso 7.3.- Cambiar los mensajes y el audio a español sin cambiar la interfaz web a Español.
Para escuchar a la asistente automatizada en español podemos ejecutar los siguientes comandos.
su root
cd /var/lib/asterisk/sounds/
mv en en.bkp
cp -R es en
El primer comando cambia el usuario a root
El segundo comando cambia el directorio actual al directorio donde estan los sonidos.El tercer comando mueve o cambia el nombre de directorio "en" por "en.bkp"
El cuarto comando copia de forma recursiva el contenido del directorio "es" al directorio "en"
Al finalizar todo el proceso siempre es bueno reiniciar el sistema operativo.

No hay comentarios:

Publicar un comentario