Ambilight en la Raspberry Pi 2

jueves, 7 de enero de 2016 Sin comentarios

Recientemente he migrado a la Raspberry Pi 2 y he tenido que realizar algunos cambios en cuanto al cableado del ambilight casero que tenía montado utilizando Hyperion.

En la siguiente imagen se puede observar la disposiciones de pines de la antigua Raspberry Pi, donde lo que nos interesaba era el pin GPIO 10 (MOSI), GPIO11 (CLK) y alguno de los GND (ground).

raspberrypirev2pinout

En cambio, se puede apreciar que la posición de dichos pines ha sigo ligeramente alterada en el modelo RaspPi2, donde necesitaremos hacer uso de los pines 9 (GND), 19 (MOSI) y 23 (CLK):

RP2_PinoutAclarar también que necesitaremos activar el SPI en nuestro OSMC como ya describí en una entrada anterior.

Comparte...Share on Google+Tweet about this on Twitter

NAS ZyXel 325-V2

lunes, 14 de diciembre de 2015 Sin comentarios

El NAS ZyXel 325-V2 se diferencia de la primera versión en un cambio estético de la carcasa de plástico y en una mejora del ventilador posterior que parece hacer menor ruido. A parte de eso dispondremos de un sistema de almacenamiento en red con dos bahías para discos duros SATA de 3’5″ y 2’5″ con soporte para RAID 0, 1 y JBOD, tarjeta de red Gigabit, dos USB 2.0 traseros y uno 3.0 frontal frontal con un consumo eléctrico que varía de entre 15W con dos discos duros en marcha a 7W cuando pasa a modo en reposo.

El panel de administración puede parece bastante simple y no tan completo como los NAS de Synologic, pero la diferencia de precio también es bastante notable. Gracias a la comunidad estas diferencias intentan cubrirses con paquetes de software de terceros.

Como vamos a hacer del NAS un servicio de red fijo, lo que nos va a interesar es darle una IP fija a través de la configuración del servidor de DNS. Para eso se necesita averiguar su dirección MAC de forma fácil con el siguiente comando (sabiendo previamente la IP que se le ha sido asignado previamente o el nombre del equipo):

ping 192.168.1.55 -c 1

arp -a

A través de Samba accederemos a “smb://IP-NAS/admin/zy-pkgs/” y crearemos un fichero “web_prefix” que contendrá la siguiente URL:

http://downloads.zyxel.nas-central.org/Users/Mijzelf/zypkg-repo/

Desde el panel web de administración del NAS iremos a la sección “Firmware/Packages” y, después de actualizar el Firmware si existe alguna versión posterior, le daremos al botón de “Acceder listado desde Internet”. Aparecerá un único paquete llamado “MetaRepository” que tendremos que seleccionar e instalar. Tras esto ya podremos instalar FFP (desde el cual podremos instalar repositorios con uwsiteloader), RandomTools, NFS y pyLoad por ejemplo.

Para instalar nuestro software de descargas favorito (MlDonkey), entraremos por SSH al NAS y ejecutaremos lo siguiente:

su

uwsiteloader.sh (seguimos los pasos del asistente)

slacker -U

slacker -i mldonkey

exit

Debido a que queremos tener todo lo relacionado con MlDonkey guardado en disco duro por temas de espacio, lo que haremos es un enlace simbólico de la siguiente forma y lanzaremos el proceso para que genere la estructura de carpetas:

mkdir /mnt/HD_a2/mldonkey

cd /mnt/HD_a2

chmod -R 777 mldonkey/

ln -s /mnt/HD_a2/mldonkey/ .mldonkey

mlnet

Cerraremos el proceso anterior con un simple CTRL+C y empezaremos a configurarlo:

vim .mldonkey/downloads.ini (y editamos las ip’s permitidas añadiendo 192.168.1.0/24)

mkdir /mnt/HD_a2/mldonkey/logs

Generaremos un fichero de configuración en “/mnt/HD_a2/mldonkey/mldonkey-server” con el siguiente contenido:

MLDONKEY_DIR=/mnt/HD_a2/mldonkey
MLDONKEY_USER=admin
MLDONKEY_GROUP=everyone
MLDONKEY_UMASK=0022
LAUNCH_AT_STARTUP=true

Crearemos el script que se encargará de gestionar el servicio “/mnt/HD_a2/mldonkey/mldonkey.sh” con el siguiente contenido:

 

#!/ffp/bin/sh
#
# Original file :
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version: @(#)skeleton 1.9.1 08-Apr-2002 miquels@cistron.nl
#
#
# This file has been rewritten by Sylvain Le Gall <gildor@debian.org>
# and Samuel Mimram <smimram@debian.org> for the mldonkey package.
#
### BEGIN INIT INFO
# Provides: mldonkey-server
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Server for the mldonkey peer-to-peer downloader.
# Description: Server for the mldonkey peer-to-peer downloader.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=mlnet
EXEC=/usr/local/zy-pkgs/ffproot/ffp/bin/$NAME
DESC=”MLDonkey”
CONFIG=/mnt/HD_a2/mldonkey/mldonkey-server
PIDDIR=/var/run/mldonkey
PIDFILE=$PIDDIR/$NAME.pid
LOGFILE=/mnt/HD_a2/mldonkey/logs/mldonkey-server.log
SERVERLOG=/mnt/HD_a2/mldonkey/logs/mlnet.log

test -e $CONFIG || exit 0

set -e

Warn ()

{
echo “$*” >&2
}

Error ()
{
code=$1
shift

echo “.”
Warn “$DESC: $NAME [ERROR] $@”
exit $code
}

StartErrorCheck ()
{
if [ -f “$SERVERLOG” ] && tail -n 2 “$SERVERLOG” | grep -qi ‘aborting’ ; then
Warn “$DESC: $NAME [ERROR] server start error”
tail –verbose $SERVERLOG
exit 1
fi
}

. $CONFIG

# Look for the default locale
if [ -f “/etc/default/locale” ]; then
. /etc/default/locale
export LANG
fi

if [ -n “$MLDONKEY_UMASK” ]; then
umask $MLDONKEY_UMASK
fi
# /var/run might be on tempfs, see #354701.
if [ ! -d /var/run/mldonkey ]; then
mkdir -m 755 /var/run/mldonkey
fi
if [ ! -d /var/log/mldonkey ]; then
mkdir -m 755 /var/log/mldonkey
fi
if [ -n “$MLDONKEY_USER” ] && [ -n “$MLDONKEY_GROUP” ]; then
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /var/run/mldonkey
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /mnt/HD_a2/mldonkey/logs
fi

WRAPPER_OPTIONS=”–iosched idle”

# Set configuration value, from CONFIG
if [ -n “$MLDONKEY_USER” ] && [ -n “$MLDONKEY_GROUP” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –chuid $MLDONKEY_USER:$MLDONKEY_GROUP”
fi

if [ -n “$MLDONKEY_DIR” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –chdir $MLDONKEY_DIR”
fi

if [ -n “$MLDONKEY_GROUP” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –group $MLDONKEY_GROUP”
fi

if [ -n “$MLDONKEY_UMASK” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –umask $MLDONKEY_UMASK”
fi

if [ -n “$MLDONKEY_NICENESS” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –nicelevel $MLDONKEY_NICENESS”
fi

case “$1” in
start|force-start)
echo -n “Starting $DESC: $NAME”

if [ “x$LAUNCH_AT_STARTUP” != “xtrue” ] && [ “x$1” = “xstart” ]; then
Error 0 “configuration file prevent $NAME to be started (use force-start).”
fi

if [ -z “$MLDONKEY_DIR” ] || [ ! -d “$MLDONKEY_DIR” ]; then
if [ -z “$MLDONKEY_DIR” ]; then
MLDONKEY_DIR=”(unset)”
fi
Error 1 “$MLDONKEY_DIR is not a valid directory.”
fi

if [ ! -f “$MLDONKEY_DIR/downloads.ini” ]; then
Error 1 “$MLDONKEY_DIR/downloads.ini is not a valid file.”
fi

#USER=`/usr/bin/stat –format=”%U” “$MLDONKEY_DIR/downloads.ini”`

USER=”admin”

WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –user $USER”

start-stop-daemon –start $WRAPPER_OPTIONS \
–pidfile $PIDFILE –background –exec $EXEC \
— -log_file $SERVERLOG -pid $PIDDIR 2>&1

StartErrorCheck

echo “.”
;;

stop)
echo -n “Stopping $DESC: $NAME”
start-stop-daemon –stop –oknodo –pidfile $PIDFILE –retry 30
echo “.”
;;

force-reload|restart)
$0 stop
$0 start
;;

*)
Error 1 “Usage: $0 {start|stop|restart|force-reload|force-start}”
;;
esac

exit 0

Le daremos permiso de ejecución:

chmod u+x /mnt/HD_a2/mldonkey/mldonkey.sh

Y finalmente crearemos el script que se encargará de levantar el servicio al inicio en “/ffp/start/mldonkey-start.sh” con el siguiente contenido:

#!/ffp/bin/sh
# PROVIDE: mldonkey
# REQUIRE: LOGIN
/mnt/HD_a2/mldonkey/mldonkey.sh start

Le daremos permiso de ejecución:

chmod u+x /ffp/start/mldonkey-start.sh

Si deseamos que el NAS esté accesible por NFS, el camino rápido sería obtenido el identificador del usuario y del grupo correspondiente:

id -u admin

id -g admin

Editaremos el fichero “/etc/exports” con una línea similar a esta siendo 192.168.1.11 la IP que montará la unidad NFS  501 el id de usuario y grupo:

/mnt/HD_a2 192.168.1.11(rw,all_squash,anonuid=501,anongid=500)

Si intentamos colocar algo así como “192.168.1.0/24” no funcionará.

Reiniciaremos el servicio de NFS con el siguiente comando y ya lo tendremos listo en la red:

/usr/local/zy-pkgs/etc/init.d/NFS restart

En el equipo que queramos hacer uso de la unidad NFS (una Raspberry) tendremos que editar el fichero “/etc/fstab” añadiendo la siguiente línea:

192.168.1.10:/mnt/HD_a2    /mnt/nas nfs nouser,atime,auto,rw,dev,exec,suid 0   0

Prepararemos la carpeta donde estará del siguiente modo:

mkdir /mnt/nas

chown pi:users -R /mnt/nas

chmod 777 -R /mnt/nas

mount -a

 

 

 

 

Enlaces de interés:
http://forum.nas-central.org/viewtopic.php?f=249&t=15731&sid=b252ddb5624aca7cd22055ca774de8f7
http://zyxel.nas-central.org/wiki/3rd_party_zypkgs#MetaRepository
http://zyxel.nas-central.org/wiki/FFP_as_zypkg
Comparte...Share on Google+Tweet about this on Twitter

OOM-Killer

sábado, 31 de octubre de 2015 Sin comentarios

En servidores con limitaciones importantes de memoria, muchas veces el sistema se queda sin memoria y el señor OOM Killer decide qué proceso tiene que matar para liberar recursos. Esto puede parecer lógico pero, en ocasiones, cuando sucede continuamente y de forma aleatoria supone un serio problema, sobretodo cuando mata el proceso de MySQL, Apache o PHP.

Es por ello que, cuando intentas indagar en la raíz del problema, te encuentras con que el kernel de Linux siempre reserva memoria para las aplicaciones que lo piden sin verificar si dispone de suficiente. Por tanto, las aplicaciones pueden llegar a pedir más memoria de la que realmente existe libre y por ello OOM Killer intentará hacer hueco.

Para cambiar este comportamiento hace falta modificar el fichero “/etc/sysctl.conf”, donde añadiremos estos dos parámetros:

vm.overcommit_memory = 2
vm.overcommit_ratio = 80

Con el primer parámetro forzaremos al kernel a no dar más de lo que existe y el segundo define el ratio con el que se calculará cuánto podrá dar a cada una de las aplicaciones.

Para más info podéis consultar la web del kernel de Linux.

Comparte...Share on Google+Tweet about this on Twitter
Categories: GNU/Linux Tags: ,

Optimizar tablas en MySQL o MariaDB

viernes, 30 de octubre de 2015 Sin comentarios

Tienes un servidor con una gran cantidad de bases de datos y necesitas lanzar un proceso de optimización de tablas. Puedes ir una a una:

OPTIMIZE TABLE miTabla;

O hacerlo de golpe desde un terminal:

mysqlcheck -u username -p –auto-repair –optimize –all-databases

Comparte...Share on Google+Tweet about this on Twitter

Malware en nuestro servidor web

jueves, 29 de octubre de 2015 Sin comentarios

Existe la posibilidad de que nuestro servidor se vea infectado a través de software web no actualizado o parcheado correctamente. Esto implica que, a través de una vulnerabilidad de nuestro WordPress o Prestashop, por ejemplo, nuestro servidor sea comprometido y perdamos el control sobre qué es lo que ocurre en él.

Dicho software malicioso puede estar oculto en una única línea de código (sin saltos de línea) en uno de nuestro ficheros .php o incluso en un supuesto fichero de imagen del que se hace un “innocuo” include y que es ejecutado por su dueño a través de un simple navegador web.

34yu55e

crypto-php-joomla-wordpress-1024x572

El llamado CryptoPHP que incluye un sofisticado interfaz web de control para su dueño y que encuentra hábilmente escondido puede llegar a ser un verdadero quebradero de cabeza.

¿Cuál es la mejor forma para deshacerse de ello? Pues usando Linux Malware Detect (LMD).

Lo instalamos de la siguiente forma como root:

cd /opt

wget http://www.rfxn.com/downloads/maldetect-current.tar.gz

tar -zxvf maldetect-current.tar.gz

cd maldetect-1.5/

./install.sh

Y ahora toca configurarlo:

vi /usr/local/maldetect/conf.maldet

De ese fichero de configuración quizás queramos cambiar la dirección de email y lo siguiente:

quarantine_hits=”1″

quarantine_clean=”1″

quarantine_suspend_user=”0″

Y ya sólo queda pasarlo con el siguiente comando:

maldet –scan-all /var/www/

Podremos ver el informe (que son almacenados en /usr/local/maldetect/sess/)

maldet –report 151029-0649.24301

Para poner los archivos en cuarentena y limpiarlos usaremos los siguientes comandos:

maldet -q 151029-0649.24301

maldet -n 151029-0649.24301

Y como se queda en “/etc/cron.daily/maldet”, podemos dormir un poco más tranquilos.

Comparte...Share on Google+Tweet about this on Twitter
Categories: GNU/Linux Tags: , , , ,

Problemas de memoria en PHP

miércoles, 28 de octubre de 2015 Sin comentarios

Intentas lanzar un script en PHP y no haces más que obtener un error del siguiente estilo:

Allowed memory size of xxxxx bytes exhausted (tried to allocate xxxxxx bytes)

Has modificado todos los ficheros de la configuración de PHP habidos y por haber:

vi /etc/php5/cgi/php.ini

vi /etc/php5/cli/php.ini

vi /etc/php5/apache2/php.ini

vi /etc/php5/fpm/php.ini

Y siempre tienes puesto que el valor sea “memory_limit = 512MB” y no hay forma de que aquello tire.

Pues tras leer una contestación en la maravillosa web de StackOverflow, resulta que el valor, en vez de ser “512MB”, debería ser “536870912”. La lectura recomendada del por qué está en la web de documentación de PHP.

Comparte...Share on Google+Tweet about this on Twitter
Categories: GNU/Linux Tags: , ,

Renombrando

martes, 27 de octubre de 2015 Sin comentarios

Si te ves en la necesidad de cambiar de nombre de dominio sin previo aviso y ves que la base de datos de tu querida web tiene la dirección web antigua por todas partes, vas a tener algo de trabajo, pero no mucho.

Primero, sería bueno echar un vistazo en PhpMyAdmin para encontrar en cuántos sitios se encuentra nuestra antigua dirección utilizando su búsqueda.

phpmyadmin

Luego, tras comprobar la barbaridad que aquello supondría hacerlo a mano, realizaremos una copia de seguridad de la base de datos con las herramientas que proporciona PhpMyAdmin y, como si de un texto cualquiera se tratase, ejecutaremos el siguiente comando:

sed -i ‘s/www.antiguadireccion.com/www.nuevadireccion.es/g’ ./backupbasedatos.sql

Y sólo tendremos que restaurar la base de datos desde ese fichero que hemos tratado con sed.

Para más info sobre el comando sed, podéis consultar la web de Bruno.

Comparte...Share on Google+Tweet about this on Twitter

FacturaScripts

lunes, 26 de octubre de 2015 Sin comentarios

El encontrar software que se adapte a nuestras necesidades a veces resulta bastante tedioso, sin embargo hay casos que a veces nos sorprende tal búsqueda. Ese es el caso de un programa de facturación y contabilidad gratuito que encontré y que resultó ser además software libre.

Es el caso de FacturaScripts, un software realizado en PHP que nos permite tenerlo instalado en un servidor LAMP ligero tanto en local como en Internet, accesible simplemente desde un navegador web, con lo que podemos consultarlo desde casi cualquier dispositivo.

Una de las cosas que más me gustó fue su desarrollo abierto, donde tienen en cuenta las opiniones y necesidades de los usuarios y que, poco a poco, se van incorporando a la rama principal del proyecto. Pero si esto no te es suficiente, además incluye un sistema de plugins que facilita el desarrollo de nuevas funcionalidades que, gracias a la documentación, resulta relativamente sencillo si ya has tenido oportunidad de hacer cosas en PHP previamente. Y sino, siempre te quedará el catálogo de plugins donde encontrar soporte para WooCommerce y PrestaShop entre otros.

De todos modos, desde mi experiencia con el software de empresa, lo que más me preocupa muchas veces es que su desarrollo se detenga o no haya seriedad o respaldo del creador del proyecto. Por eso me suelo pasear por los foros para comprobar la actividad y tiempos de respuesta que, en este caso, no parece ser un problema, algo que a mi me da algo de seguridad.

Así que, si buscas un programa de contabilidad en el que no tengas que invertir una suma importante (o innecesaria) de dinero y que además quieres poderlo adaptar a tus necesidades sin tener que pasar por el soporte oficial de una empresa, definitivamente merece la pena probarlo.

mac

Comparte...Share on Google+Tweet about this on Twitter

Copiando archivos desde un terminal

domingo, 25 de octubre de 2015 Sin comentarios

Cuando estamos haciendo una copia de una carpeta que contiene una cantidad considerable de ficheros y queremos saber con certeza que no ha faltado ningún fichero por copiar, podemos lanzar el siguiente comando que nos mostrará el número de ficheros en la carpeta y subcarpetas del directorio indicado:

ls -R -1 ./micarpeta/ | wc -l

Para más info y posibilidades echad un vistazo en la web de Linux Comando.

Comparte...Share on Google+Tweet about this on Twitter
Categories: GNU/Linux Tags: ,

Liberando espacio

sábado, 24 de octubre de 2015 Sin comentarios

Cuando un sistema genera una cantidad considerable de log’s y estos no están bien administrados (logrotate), puede que a la larga vayan mermando nuestro espacio en disco. Una buena forma de encontrar cuán grande es nuestro problema es realizando una búsqueda de aquellos ficheros involucrados:

find . -type f -name “*error.log” -exec du -h {} \;

El anterior comando nos mostrará el espacio ocupado por todos aquellos ficheros “error.log” que tan abundantes son en los servidores web. Y para eliminar los ficheros que nos resulten innecesarios (por ejemplo que tengan más de 60 días de antigüedad), usaremos el siguiente comando:

find . -type f -name “*error.log” -mtime +60 -delete

 

Comparte...Share on Google+Tweet about this on Twitter
Categories: GNU/Linux Tags: , ,