Asterisk en una Raspberry Pi con RasPBX

Uno de los múltiples usos que le podemos dar a la polivalente Raspberry Pi es montar una centralita telefónica IP (iPBX) para uso domestico o para pequeños negocios. Para ello usaremos RasPBX,  una distribución GNU/Linux basada en Raspbian que incluye AsteriskFreePBX y otras utilidades y que hace que en pocos minutos y de forma muy sencilla tengamos nuestra iPBX lista para configurar. Tener una centralita telefónica en el hogar puede parecer una tontería salvo que vivamos en una casa muy grande, pero en realidad la telefonía IP nos ofrece diferentes beneficios como la posibilidad de usar nuestro teléfono móvil para hacer y recibir llamadas por usando nuestra línea fija.

El hardware que necesitaremos será:

  • 1 Raspberry Pi 3 Modelo B con su fuente de alimentación
  • 1 Tarjeta MicroSD de 4 o más Gigabytes (yo he usado una SanDisk Ultra de 16GB)
  • 1 Cable HDMI, un monitor con este tipo de entrada y un teclado USB (opcional pero recomendable)
  • 1 Ordenador con un lector de tarjetas SD (para poder preparar la tarjeta)

Los pasos a seguir son:

  1. Preparar la tarjeta SD
  2. Encender la Raspberry Pi
  3. Ajustes básicos
Preparar la tarjeta SD

Las Raspberry Pi arrancan sin una tarjeta SD debidamente formateada y que contenga el bootloader y un sistema operativo. Desgraciadamente preparar dicha tarjeta es algo más complicado que copiar archivos en ella, pero no os preocupéis, veréis que se tratan de unos sencillos pasos. Lo primero es descargar la imagen de RasPBX desde aquí. Nos descargaremos una archivo .zip del que debemos extraer el archivo .img, este es el archivo que usaremos para preparar la tarjeta SD de nuestra Raspberry. Aquí voy a explicar el procedimiento usando un sistema operativo Windows, para otros sistemas podréis encontrar información en este enlace de elinux.org.

Nos descargaremos la utilidad Win32DiskImager desde Sourceforge. Instalamos y ejecutamos dicha utilidad (en función de vuestro ordenador tal vez debáis hacerlo en modo administrador) y aparecerá la siguiente pantalla:

El uso es muy intuitivo: en el campo Image File seleccionamos el archivo de imagen que hemos descargado y en Device la ubicación de la tarjeta SD. Mucho cuidado con que seleccionamos aquí ya que se destruirá el contenido de dicha unidad, así que verificar dos veces que no os estáis equivocando. Después pulsáis en Write y a esperar, si todo va bien tras unos minutos recibiremos un mensaje confirmando que se ha realizado la operación con éxito, con lo que ya tendremos nuestra tarjeta SD lista para usar.

Encender la Raspberry Pi

Introducimos nuestra SD en la Raspberry Pi apagada y a continuación le enchufamos la alimentación y el cable de red. Recomiendo tener un monitor o televisor conectado por HDMI para seguir el proceso de arranque, aunque si estamos usando un ordenador Windows en principio no es necesario siempre y cuando en nuestra red tengamos algún equipo que haga las funciones de servidor DHCP. Si es así la Raspberry obtendrá una dirección IP dinámicamente. Para saber dicha IP tenemos dos métodos:

  • En nuestro Windows abrimos una ventana de terminal (por ejemplo ejecutando cmd), y hacemos ping al host raspbx. Si todo va bien obtendremos respuesta y veremos que IP se le ha asignado. En mi caso es la 192.168.10.115, tal y como podemos ver a continuación.

  • Si hemos conectado un teclado y un monitor, iniciamos sesión con las credenciales root / raspberry. A continuación ejecutamos el comando ifconfig, obtedremos una pantalla como la siguiente donde veremos la dirección IP.

Una vez conocemos la dirección IP ya podemos conectarnos a nuestra Raspberry tanto por SSH para administrar el sistema operativo GNU/Linux como por web para administrar la consola de FreePBX. Las credenciales por defecto son las siguientes:

  • Para el sistema operativo GNU/Linux Raspbian:
    • usuario: root
    • contraseña: raspberry
  • Para la consola de FreePBX:
    • usuario:
    • contraseña:
Ajustes básicos

El siguiente paso es realizar una serie de ajustes básicos. Para ello deberemos conectarnos a la consola del sistema operativo Raspbian, ya sea por SSH o usando un monitor y teclado conectados directamente. Para la conexión SSH a mi me gusta usar MobaXterm, pero el clásico y sencillo Putty también nos servirá.

  1. Expandir la imagen. Si hemos usado una tarjeta MicroSD mayor de 4 GB (en mi caso he usado una de 16), deberemos expandir la imagen ya que en estos momento solo estará ocupando 4GB, independientemente del tamaño de nuestra tarjeta. Para ello debemos ejecutar el comando raspi-config. Nos aparecerá un menú desde el que podremos realizar diferentes ajustes, siendo la primera opción expandir la imagen.

Seleccionamos esta opción y comenzará un proceso que durará unos pocos minutos. Cuando finalice os pedirá que reiniciéis la máquina. Aceptáis y si todo va bien cuando reinicie ya se habrá expandido la imagen. Y digo si todo va bien porque la primera vez se corrompió la imagen y no me cargaba el sistema operativo (en situaciones así ayuda mucho tener un monitor conectado para ver que está pasando durante el arranque), así que tuve que comenzar desde cero y volver a preparar la tarjeta. Afortunadamente al segundo intento todo funcionó correctamente.

2. Actualizar el sistema operativo. Lo siguiente a hacer es actualizar nuestro sistema. Para ello deberemos tener acceso a Internet (obvio) y ejecutar el comando raspbx-upgrade.

root@raspbx:~# raspbx-upgrade

Esta es una acción que deberemos realizar regularmente para mantener nuestro sistema al día.

3. Regenerar las claves RSA. Por motivos de seguridad, regeneraremos las claves RSA que por defecto son las mismas para todas las instalaciones de RasPBX. Ello lo haremos con el comando regen-hostkeys.

root@raspbx:~# regen-hostkeys

Esto no afectará a ninguna de las contraseñas mencionadas anteriormente.

4. Cambiar la zona horaria. Ajustaremos nuestra zona horaria con el comando

root@raspbx:~#configure-timezone

Un menú de texto nos guiará en la selección primero de región y después de huso horario, en mi caso el de America/Mexico_City.

5. Establecer ajustes locales. Ahora vamos a establecer los ajustes locales, para ello usamos el comando dpkg-reconfigure locales

root@raspbx:~# dpkg-reconfigure locales

Aparecerá un menú de texto donde o bien podemos instalar todos los paquetes locales posibles (no lo recomiendo) o bien desmarcar instalarlos todos y seleccionar solo aquellos que nos interesen. En mi caso he seleccionado los que comienzan por es_ES (Español de España) y ca_CA (catalán). Una vez seleccionados los paquetes que nos interesen, nos pedirá cual es el idioma por defecto de la instalación de entre los paquetes que hemos seleccionado.

6. Establecer una nueva contraseña. Para acabar vamos a cambiar la contraseña del sistema operativo, para ello usaremos el comando passwd

root@raspbx:~# passwd

Nos pedirá la nueva contraseña por duplicado. Siempre es recomendable una contraseña segura que contenga mayúsculas, minúsculas, números y caracteres especiales. Si usáis caracteres cómo la @ o $, os recomiendo que ajustéis el idioma del teclado usando la utilidad raspi-config. Esto solo afecta a los teclados conectados directamente a la Raspberry, si os conectáis por SSH siempre va a usar la configuración de vuestro ordenador, pero hay que tenerlo en cuenta por si algún día no nos podemos conectar en remoto y hemos de hacerlo localmente.

 

Y con esto ya tenemos nuestra centralita IP lista para ser configurada. En un próximo artículo explicaré como configurar FreePBX para realizar y recibir llamadas usando softphones