Proxy transparente dentro de un contenedor openVZ

Todos sabemos que los contenedores cuando se trata de comunicarse con el núcleo del sistema operativo siempre nos deja algun regalito, así que aquí tenemos otro caso, en este caso queremos montar un proxy transparente dentro de un contenedor OpenVZ (Proxmox).

Nos encontramos que queremos ejecutar una línea de iptables en nuestro contenedor, pero nos sale este error:

iptables v1.4.8: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Lo primero de todo tendremos que configurar el fichero /etc/vz/vz.conf y comentaremos la línea con el parámetro IPTABLES= y pondremos otra así:

IPTABLES="ipt_REJECT ipt_recent ipt_owner ipt_REDIRECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp"

Instalar plataforma goteo en nuestro server

Goteo es una plataforma de crowdfunding diseñada por la gente de platoniq.net, si los mismos que en 2005 desarrollaron la magnífica burnstation :) así que vamos a instalar esta magnífica herramienta en nuestro servidor.

Primero iremos a la página del proyecto en github y nos descargamos los ficheros, podemos descargar directamente todo el código desde github o bien usar el .zip con la ultima revisión.…

Añadir disco tras instalar proxmox pve 2.1

Justo acabo de instalar una máquina con la ISO de Proxmox pve 2.1, pero dicha instalación sólo permite hacerla sobre un solo disco y posiblemente nos interesa ampliar el tamaño que destinamos a las maquinas virtuales y contenedores con el otro disco.

Si nos fijamos, la instalación se ha hecho sobre particiones LVM, así que simplemente tendremos que ampliar la partición LVM data.

# lvscan
  ACTIVE            '/dev/pve/swap' [4.00 GiB] inherit
  ACTIVE            '/dev/pve/root' [37.25 GiB] inherit
  ACTIVE            '/dev/pve/data' [91.26 GiB] inherit

Como borrar los adjuntos de los mails de mailman

Los usuarios pocas veces se percatan de que los servicios que usan tienen unos recursos limitados y algunos tienen la sana costumbre de usar una lista de correo como si se tratase del envío de un mail a otra persona. ¿Pero qué ocurre cuando un usuario manda un correo a una lista de correo con cientos de suscritos en ella? ¿y encima que el administrador de la lista permita la moderación de estos mails? pues primero de todo que este fichero se tiene que mandar a todos y cada uno de los miembros de la lista, haciendo que el servidor tenga que enviar un montón de datos que quizás no serán nunca leídos; la segunda que estos datos se quedan en el servidor en los archivos, unos archivos que probablemente ningún otro usuario descargará.

Así que ante esto, y con el permiso del administrador de la lista, vamos a proceder con el vaciado de adjuntos de una lista de correo.

Antes de empezar tenemos que analizar donde se guardan estos archivos:
– directorio attached de los archivos
– fichero mbox de la lista

así que tenemos los adjuntos 2 veces, cosa que incrementa por 2 el tamaño total de la lista.…

dudle: alternativa opensource a doodle

¿Cuantas veces has estado usando el doodle, esta magnífica herramienta pero te ha jodido a lo grande que fuese cerrada? ¡pues de la mano de Benjamin Kellermann, aquí llega dudle! el programa de encuestas que hace lo mismo que doodle y totalmente personalizable e instalable en tu servidor!

Dudle es un software desarrollado en ruby y su instalación es un poco distinta a la que estamos acostumbrados en un PHP+MySQL, además de que dudle no usa ninguna base de datos relacional, simplemente crea un directorio con un fichero de texto llamado data.yaml con todas las opciones.…

Gif animado lluvias meteocat.com

Pues harta ya de cada vez que llueve tener que ir a la página de meteocat.com a mirar simplemente lo que me interesa, hago que una maquina lo haga para mi y me genere un gif animado para ponerlo en el desklet del escritorio.

Para hacerlo funcionar simplemente necesitamos php5-gd:

# apt-get install php5-gd

el código

# Generador d'imatge animada del radar metereològic meteocat.com
# Desenvolupat per Blackhold
# 2011-11-16

# I get the json file
$file= file_get_contents("http://www.meteo.cat/servmet/radar/images/cappicor_catalunya_10dBZ/images.json");

# And process the data
#var_dump(json_decode($file));
$parsed=json_decode($file);
$array=$parsed->{'items'};

//echo $array[0]->{'src'};

$length=count($array);

for ($i=0;$i{'src'},"./"));

        imagegif($png, "./meteo.".$i.".gif");

        imagedestroy($png);
}

exec("/usr/bin/convert -delay 60 -loop 0 ./meteo.*.gif ./meteo.gif");
exec("rm ./meteo.*.gif");

Y para que se vaya actualizando de vez en cuando lo añadimos al cron que lo vaya verificando cada 6 minutos, periodo con el que se actualiza el json de meteocat.

# vi /etc/crontab
# generador meteocat
*/6 * * * * root php /var/www/meteocat.php

Aquí os dejo con un ejemplo (no abusar! el código es muy simple, lo puedes poner en local o en un servidor tocho -compartid los links!-).

Etiqueta pre

Pues una pequeña mejora gráfica en el blog, aunque no lo parezca leo vuestras críticas y peticiones, y la del pre, una etiqueta que uso bastante cuando pasteo código, la he modificado para que no quede cortada.

La propiedad usada es overflow y el pequeño añadido al código propuesto por xsb ha sido la propiedad overflow-y: hidden, para que no aparezca la barra de scroll vertical.

Aquí el pedacito de código:

section>pre {
	font-size: 1em;
	padding: 1em;
	border: 1px dashed #aa0000;
	color: #000;
	background-color: #FFFFDB;
	line-height: 1.1em;
	overflow: auto;
        overflow-y: hidden;
}

Como el template del blog es en HTML5, le aplico esta propiedad sólo al contenido principal, en este caso section.

Espero que os guste la pequeña modificación ;)

Muchas gracias!…

64k

Hace ya un tiempo alguien me comentó sobre gente que desarrollaba aplicaciones de generación de gráficos que apenas ocupaban unas pocas kb. El secreto está en los algoritmos, toda la renderización la lleva a cabo la tarjeta gráfica.

Aquí tenemos una demostración de lo que se puede llegar a hacer por ejemplo con 64k de programa.

Chaos Theory – Awesome 64k Demo!

WordPress multi-site + JetPack

Todos los que tengáis un wordpress sabréis las ventajas de usar los plugins “de la nuve”, aquellos que te permiten estadísticas, filtros de spam, instalación de extensiones desde el cms, etc. etc. pero también tiene sus desventajas y es que dependes de wordpress.com.
Hace ya unos días el servicio con wordpress.com era un poco malo, pero parece que finalmente han desarrollado otra plataforma para gestionar todos estos plugins, el jetpack.

Lo primero que tendremos que hacer es descargar el jetpack de forma manual (cuando iba a instalarlo automáticamente no me dejaba conectar, ya que me decía que la clave API era incorrecta).

Jetpack te agrupa las distintas herramientas de “la nuve” en un menú nuevo en la barra izquierda, pero una vez instalado falta activarlo y aquí el problema :( Todo el rato me soltaba este mensaje:

Jetpack could not contact WordPress.com: token_http_request_failed. This usually means something is incorrectly configured on your web host. name lookup timed out

Mediawiki: Segmentation fault ulimit4.sh

Estaba montando una mediawiki y al subir las imágenes no tenía instalado el imagemagick, ya que necesitaba la herramienta “convert” para poder generar los thumbnails de las imágenes subidas.
Una vez instalado al subir imágenes me salía este error en los ficheros de log de apache:

/var/www/html/mediawiki/bin/ulimit4.sh: line 4: 16421 Segmentation fault      (core dumped) '/usr/bin/convert' -quality 80 -background white -size 120 '/var/www/html/mediawiki/images/archive/a/a4/20110630074354!Esquema.jpg' -thumbnail '120x81!' -set comment 'File source: http://acme.acme.com/wiki/File:Esquema.jpg' -depth 8 -sharpen '0x0.4' '/var/www/html/mediawiki/images/thumb/archive/a/a4/20110630074354!Esquema.jpg/120px-Esquema.jpg' 2>&1

La solución será añadir un valor en el fichero LocalSettings.php. En Kb.

$wgMaxShellMemory = 512000;

Más información: Manual:$wgMaxShellMemory