Freeswitch 1.9 (master) en debian 8 (y debian 9) con soporte postgresql

Venga, éste post espero que si sea el definitivo, voy a probar que tal con debian 9 mas tarde y si conviene hago otro post.

ACTUALIZACIÓN
Éste manual también es válido para debian 9! :) mirad al final del artículo las anotaciones

Empezamos con una debian 8 recién instalada.

Vamos a instalar primero de todo todas las dependencias necesarias

root@freeswitch-capa8:~# apt-get install git libpq-dev postgresql postgresql-client build-essential dialog autoconf libtool-bin yasm
root@freeswitch-capa8:~# apt-get install zlib1g-dev libjpeg-dev pkg-config libsqlite3-dev libcurl4-gnutls-dev libpcre3-dev libogg-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libtiff5-dev libopus-dev libsndfile-dev liblua5.2-dev

Instalación freeswitch en debian 8

Iba a mostrar la instalación para debian 9, pero debido a cambios con apt en debian 9, que se ha desactivado el soporte de SHA-1 para la firma de los repositorios y que freeswitch requiere la firma con éste cifrado, no hay otra opción que usar debian 8 de momento.

Partimos de una debian 8 recién instalada.

Configuramos el repositorio

root@freeswitch-capa8:~# wget -O - https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add -
root@freeswitch-capa8:~# echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" /etc/apt/sources.list.d/freeswitch.list
root@freeswitch-capa8:~# apt-get update
root@freeswitch-capa8:~# apt-get install -y --force-yes freeswitch-meta-all

Arrancar una iso desde grub

Tengo un servidor que tiene instalado debian, pero quiero instalar el sistema operativo en uno de los RAID que he creado en la controladora, para tener el sistema operativo ahí en lugar del disco duro IDE.
El servidor no me arranca ni los pinchos usb ni tampoco un cd con una lectora de CDs externa y no puedo instalar el sistema operativo directamente a los discos que están en el RAID, así que sólo me queda arrancar el cd de instalación desde grub.

Para ello vamos a editar el fichero /etc/grub/40_custom

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "debian" {
set isofile="/home/blackhold/firmware-9.2.1-amd64-i386-netinst.iso"
loopback loop (hd0,1)$isofile
echo "Starting $isofile..."
linux (loop)/install.386/vmlinuz
initrd (loop)/install.386/initrd.gz
}

La iso de instalación la tengo almacenada en /home/blackhold. Para mas información de como configurar el grub para otras distribuciones de linux seguid éste link y éste otro.

Y cargamos la configuración a grub

# update-grub

Reiniciamos y nos aparece la opción debian, entramos en ella y ya tendremos nuestra instalación :) para continuar con ella, deberemos tener la lectora de CDs conectada.

En ésta última captura voy a instalar en el RAID el sistema operativo nuevo y voy a dejar el otro indicandole no hacer nada con esta partición, de esta forma siempre voy a tener disponible un sistema …

Instalar software controladora 3ware serie 9000

Cuando queremos configurar el RAID de un servidor normalmente lo hacemos al arrancar el sistema, pero esto no nos permite saber remotamente si el RAID está correcto o no desde el propio sistema operativo, para ello, es posible instalar un software que se comunique con la controladora y permita realizar acciones con la misma desde terminal.

En mi caso tengo un servidor con dos controladoras raid 3ware serie 9000

# lspci |grep 3ware
00:01.0 RAID bus controller: 3ware Inc 9xxx-series SATA-RAID
00:03.0 RAID bus controller: 3ware Inc 9xxx-series SATA-RAID

El paquete que tendremos que instalar se llama tw-cli, y tendremos que añadir repositorios adicionales para poder instalarlo. hwraid contiene otro software de otras controladoras RAID

# vi /etc/apt/sources.list
# software controladora raid
deb http://hwraid.le-vert.net/debian stretch main

# wget -O - https://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | apt-key add -
# apt-get update
# apt-get install tw-cli

En ésta página web encontramos información addicional y de funcionamiento sobre tw-cli

Algunos de los comandos básicos son:

Ver las controladoras disponibles

# tw-cli info

Ctl   Model        (V)Ports  Drives   Units   NotOpt  RRate   VRate  BBU
------------------------------------------------------------------------
c0    9500S-8      8         8        1       0       1       1      -        
c1    9500S-8      8         7        1       0       1       1      -  

Listar los discos disponibles en una controladora

# tw-cli /c1 show

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-5    OK             -       -       64K     11175.8   ON     OFF    

Port   Status           Unit   Size        Blocks        Serial
---------------------------------------------------------------
p0     OK               u0     1.82 TB     3907029168    9WM7VLRJ            
p1     OK               u0     1.82 TB     3907029168    9WM69H87            
p2     OK               u0     1.82 

Clonar un disco con errores

Cuando los sistemas funcionan a diario es normal que con el tiempo los discos empiezan a dar errores, para ello tenemos a un buen aliado que se llama S.M.A.R.T. que nos avisa cuando la salud de un disco duro no es buena y cuando empiezan a salir errores, la recomendación es parar el disco y reemplazarlo.

Esta vez el disco que tengo tiene las configuraciones enteras de un sistema operativo y reinstalar y reconstruir el sistema operativo desde 0 sería mucho trabajo, así que la opción por la que he optado es clonar el disco duro a otro disco duro que no tiene errores (comprobado con badblocks!).

Al hacer el dd se me ha cortado a medio proceso porque se ha encontrado con la parte del disco defectuosa, así que he tenido que añadir un par de opciones para omitir los errores y seguir con el clonado:

# dd if=/dev/sda |pv |dd of=/dev/sdb conv=noerror,sync

El disco duro que estoy tratando de recuperar, realmente tiene varios sectores defectuosos que con dd no hay forma de clonar, así que he tenido que usar otra herramienta gddrescue

# apt-get install gddrescue
# ddrescue -d -r3 /dev/sda /dev/sdb clonacion.log

Con el -d le decimos a ddrescue que haga un acceso directo al disco e ignore el cache del kernel (clonación bit a bit)
Con el -r3 le indicamos que pruebe hasta 3 veces la lectura de los sectores defectuosos

Después de un buen rato finalmente el disco ha sido clonado con éxito y el …

Vim: mostrar barra de %

Hace unos días que instalé debian 9 y vim no tenía el comportamiento que me gustaba, en un post anterior expliqué como sacar por ejemplo el modo mouse que al seleccionar te activaba el mode visual.

Hace días quise activar la barra de % de lectura del fichero y también el nombre del fichero, pero no conseguía que se aplicase la configuración y tenía que usar el set ruler cada vez que abría el fichero. Hoy porfin en el mismo fichero que editábamos en el post referenciado, se me ha ocurrido comentar una línea

# vi /usr/share/vim/vim80/defaults.vim
set history=200         " keep 200 lines of command line history
set ruler               " show the cursor position all the time
set showcmd             " display incomplete commands
"set wildmenu           " display completion matches in a status line

El set wildmenu era el que no me permitía que apareciese el ruler por defecto.

Addicionalmente, la barra inferior, me gusta tenerla de color blanco para que se diferencie del fondo negro con el que suelo trabajar, para ello modifico el fichero de configuración de /etc/vim/vimrc y al final añado lo siguiente

# vi /etc/vim/vimrc
set modeline
set ls=2

Y listos! :)…

LXC: Montar un directorio del host en un contenedor

Ésto hace tiempo lo documenté para openvz, pero con lxc cambia un poco la cosa. Voy a saco y pongo lo que se tiene que hacer hehe

Montas el punto de montaje que quieres, en mi caso estoy montando un dav con davfs2 (apt-get install davfs2) en el host en un punto de montaje:

# mkdir /mnt/dav_capa8
# mount -t davfs -o gid=www-data,uid=www-data https://cloud.capa8.net/remote.php/webdav/ /mnt/dav_capa8/

Previamente he puesto las credenciales en /etc/davfs2/secrets del acceso al webdav

y luego así se lo paso al contenedor:

# pct set 102 -mp0 /mnt/dav_capa8,mp=/mnt/dav_capa8

Reinicio el contenedor y el nuevo mountpoint ya está accesible

Sólo me falta comprobar si el usuario www-data que es quien tiene que escribir en éste punto de montaje tiene permisos suficientes.

Para que se monte el davfs al iniciar el sistema, editaremos el fichero /etc/fstab y la última línea:

# vi /etc/fstab
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
/dev/sdb1 /var/lib/vz2 ext4 defaults 0 0
https://cloud.capa8.net/remote.php/webdav/ /mnt/dav_capa8/ davfs noauto,user 0  0

Convertir pdf a jpg

Normalmente cuando tengo que editar un pdf lo abro con inkscape, pero esta vez me encuentro un pdf que son unos planos y la conversión con inkscape se lo toma con la calmísima, así que total como sólo necesito una imagen, voy a convertir el contenido del pdf a imagen y me ahorro varias horas de espera…

¿Cómo?

# convert -verbose -density 150 -trim plano.pdf -quality 100 -flatten -sharpen 0x1.0 plano.jpg

Ahora a cargarlos en el inkscape como imagen y a redimensionar a mi gusto :)

EOF…

dlna: cliente en debian (sólo audio)

Ya empezamos con las abreviaciones estas tan odiosas que usamos los informáticos, pues DLNA es una cosa que poco a poco van teniendo cada vez mas televisores y proyectores y uno de los primeros dispositivos que lo usó fue el chromecast de google, quien tenga alguno sabrá la maravilla que es éste servicio.

En pocas palabras sirve para mandar contenidos multimedia entre dispositivos, por ejemplo vídeos y audios.

La forma que hasta el momento he usado es el uso de una extensión de chrome para streamear al chromecast, me permite reproducir pestañas del navegador en el televisor, pero también youtube y netflix si detectan que hay un dispositivo dlna me da la opción de mandar el contenido al chromecast. Con el móvil android mas de lo mismo.
En resumen que puedo ver y escuchar lo que tengo en el portátil y en el móvil en el televisor y mi móvil pasa a ser otro mando de mi televisor. Vamos que chromecast es uno de los culpables porque mi tonto televisor tenga mucha guerra y una nueva vida :) -lo de usar el televisor para ver la TDT es agua pasada!-

Hace unos meses me percaté que dlna no era una cosa exclusiva de chromecast, sino que estaba cada vez mas en televisores e incluso proyectores. Así que me olí algún tipo de estandarización y efectivamente, dlna son las siglas de digital living network alliance, algo muy similar a lo que usan ya nuestras impresoras con el upnp. Empecé a buscar …

El tiempo en la consola

Navegando por las redes sociales me he encontrado una entrada curiosa:

Brutal alias per tenir el temps a la consola:
alias weather='curl -s wttr.in | sed -n "1,7p"'

Así que me he puesto a jugar :P la ciudad por defecto que me detecta es Madrid, pero no me gusta esta geolocalización:

$ curl -s wttr.in/Barcelona | sed -n "1,7p"
Weather for City: Barcelona, Spain

    \  /       Partly cloudy
  _ /"".-.     14 – 15 °C     
    \_(   ).   ↖ 11 km/h      
    /(___(__)  10 km          
               0.0 mm 

Además lo quiero en otro idioma que no sea inglés (en catalán no se deja, snif):

$ curl -H "Accept-Language: es" -s wttr.in/Barcelona | sed -n "1,7p"
El tiempo en: Barcelona, Spain

    \  /       Parcialmente nublado
  _ /"".-.     14 – 15 °C     
    \_(   ).   ↖ 11 km/h      
    /(___(__)  10 km          
               0.0 mm 

En ésta cuenta de twitter hay mas información sobre ésta página.

Tontería del día :)…