viernes, 29 de junio de 2012

Herramientas de virtualización: Proxmox

Actualmente está muy de moda el tema de la virtualización, ya que es una buena forma de explotar con más eficiencia un ordenador o en la mayoría de los casos, servidores. En un uso normal, el servidor no está usando todos los recursos de los que dispone, por lo que es una “perdida” y se puede aprovechar corriendo otro servidor virtual para ofrecer otros servicios.

Proxmox tiene otra visión. El sistema base no se usa más que para crear instancias que sí usaremos, por lo que no consumirá apenas recursos y nos lo dejará todos para los virtuales en los que montaremos el servicio. Los usos que les demos a estos será cosa nuestra, nosotros el uso que le estamos dando es para ofrecer instancias a clientes y que hagan lo que quieran con ellas, principalmente hosting y mailing. Básicamente Proxmox es una distro con un panel de control que nos permitirá gestionar las máquinas virtuales, pero se puede gestionar también desde consola.

Proxmox ofrece dos tipos de vitualización, KVM que ofrece una virtualización completa pero requiere de un hardware más potente y procesador que soporte virtualización. En este modo los recursos son dedicados para cada instancia. Otra opción es la openVZ, que hace una pseudo virtualización, no nos ofrece recursos dedicados, son compartidos, lo que se puede poner es un máximo de recursos que puede usar, pero es posible que otra instancia las esté usando.

En este post comentaré cómo gestionar las instancias creadas con openVZ desde consola, ya que el panel en sí es trivial en general. Si me da más adelante pondré algunos detalles del panel como la creación de clusters. Lo primero es entender que las máquinas virtuales creadas con openVZ son instancias enjauladas,

es decir, son parte del sistema de ficheros del nodo y mediante un chroot se aislan, no tienen un disco duro virtual (un archivo con sistema de ficheros) como por ejemplo en Xen.

Si nos logueamos por ssh, podremos usar una serie de comandos para gestionarlo:

vzlist: nos mostrará las instancias que se están ejecutando, con una serie de información.
vzctl enter ID: nos lanza una terminal de la instancia ID, por si perdemos el acceso por ssh a la instancia.
vzctl stop ID: para la instancia ID, como hacer un halt.
vzctl start ID: arranca la instancia ID cuando está parada.
vzctl restart ID: reinciia la instancia ID, como hacer un reboot.
vzctl destroy ID: borra permanentemente la instancia ID, perdiendo todos los datos.

Con esto podremos tenemos unas indicaciones básicas de cómo gestionar las instancias desde consola. Para crearlas, lo más comodo es desde el panel de Proxmox, pero podemos crearla desde consola con unos cuantos comandos:

vzctl create ID --ostemplate osname (Indicamos la ID y el template que usaremos)
vzctl set ID --ipadd a.b.c.d --save  (Le indicamos la IP que usará)
vzctl set ID --nameserver a.b.c.d --save (Le indicamos el servidor DNS que usará)
vzctl start ID (Iniciamos)

Os recomiendo hacerlo desde el panel, es simplemente rellenar un formulario.

Para finalizar, con vzdump ID podremos crear una copia de seguridad de la instancia:

vzdump --quiet --snapshot --compress --storage back --mailto [email protected] 102

Con esto, hará la copia y nos enviará un correo una vez esté hecha. Para restaurar la copia, tenemos que usar vzrestore ruta ID. Esto nos servirá para programar un cron y que se haga una copia regularmente.


Con esto más el propio panel del proxmox, ya tenemos lo necesario para usar el Proxmox. Si quereis más información podeis visitar su wiki.



¡Un saludo!

lunes, 25 de junio de 2012

Streaming de audio: Ampache

Llevo tiempo buscando una forma de poder escuchar la música de mi ordenador en cualquier parte, y he encontrado la solución en Ampache.

Ampache es un site web desde el que podemos descargarnos una lista de reproducción y abrirla (winamp en windows, por ejemplo) o usar el reproductor flash que trae incorporado. Lo único que se necesita tener instalado previamente es apache (o lighthttpd funciona también), php y mysql.

En debian, si hacemos un “apt-get build-dep ampache” nos descargará todos los paquetes necesarios. No instalaremos el paquete ampache de los repositorios ya que el reproductor flash que trae no funciona (algo de que debian no lleva los xspf que usa el reproductor, no lei mucho).

Lo siguiente es descargarnos desde la web de ampache la última versión disponible (3.5.4 en el momento) y descomprimimos el contenido en una carpeta a la que pueda accederse por apache (/var/www/ por ejemplo, comprobarlo en el httpd.conf o apache2.conf según distro) y accedemos via navegador. En mi caso, he puesto los archivos en una carpeta llamada ampache por lo que accedemos desde http://IP.o.ur.l/ampache, se lanzará un instalador y seguimos los pasos que ponen. A tener en cuenta en el paso 2, una vez puestos los datos del mysql y validar, pedirá descargarse un archivo, ampache.cfg.php, lo subimos a la carpeta config de la web (por ftp o por donde queramos) y le damos a comprobar de nuevo.

Una vez finalizado, podremos acceder usando el usuario que creamos en el paso 3 y empezar a escanear la música que tenemos en el servidor. Por ahora es lo único que he probado, por lo que no puedo detallar más, pero es investigar la web.

Con estos sencillos pasos, ya podremos escuchar nuestra música donde queramos… y haya internet claro (patapum chas! Risas enlatadas).

¡Un saludo!

lunes, 18 de junio de 2012

Mediatomb en Debian

Otros post anteriores trataban de cómo hacer para que una televisión Samsung utilizase los subtítulos, pero para los que no necesiten usarlos, no hay que armar tanto jaleo.

Para instalarlo, bastará con tirar de repositorios apt-get install mediatomb lo que hará que se instalen las dependencias y dos paquetes de mediatomb: mediatomb-common y mediatomb-daemon. También podemos instalar el mysql server para que genere la bbdd de los archivos en mysql en vez de sqlite.

Si decidimos usar el mysql, tendremos que crear previamente un usuario y una base de datos. Por comodidad de evitar instalar más cosas, lo haremos desde consola, pero se puede hacer usando el phpmyadmin o cualquier otro programa. Abrimos una sesión como root del mysql:
$mysql –u root –p
> CREATE DATABASE mediatomb;
> GRANT ALL ON mediatomb.* TO mediatomb@localhost IDENTIFIED BY ‘clavequequeramos’;
Apuntamos los datos y empezamos a configurar el archivo de configuración del mediatomb. Por defecto, mediatomb se ejecuta con el usuario root en el inicio, pero podemos ejecutarlo desde cualquier usuario. Esto es importante ya que dependiendo de quien lo ejecute el archivo de configuración estará en un sitio diferente. Yo lo ejecuto mediante root, por lo que el archivo de configuración es /etc/mediatomb/config.xml. Para el resto de usuarios, estará en su home.
Lo primero a modificar del config.xml es:
<ui enabled="yes" show-tooltips="yes">
     <accounts enabled="yes" session-timeout="30">
       <account user="usuario" password="password"/>
     </accounts>
</ui>
Con esto habilitaremos una interfaz web para gestionar los archivos y lo protegeremos con usuario y contraseña. La contraseña queda en texto plano en el archivo de configuración, a tenerlo en cuenta.
Lo siguiente si hemos decidido usar el mysql, es poner los datos en la sección de mysql:
<storage caching="yes">
  <sqlite3 enabled="no">
    <database-file>mediatomb.db</database-file>
  </sqlite3>
  <mysql enabled="yes">
    <host>localhost</host>
    <username>mediatomb</username>
    <database>mediatomb</database>
    <password>password</password>
  </mysql>
</storage>
Si quisiésemos usar el sqlite, ponemos el enabled correspondiente a yes.
Si vamos a usar una televisión Samsung conviene poner estas líneas:
   <custom-http-headers>
<!--     <add header="X-User-Agent: redsonic"/>-->
     <add header="transferMode.dlna.org: Streaming"/>
     <add header="contentFeatures.dlna.org:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"/>
   </custom-http-headers>
Con estas cambios, ya deberíamos poder usar el mediatomb sin problemas, faltaría nada más reiniciar el servicio (service mediatomb restart como root). Por defecto, mediatomb se ejecuta en el puerto 49152 (o superior). Podemos cambiarlo en el config.xml dentro de la sección <server> añadiendo <port>1234</port>, hay que asegurarse que el puerto está libre. Accederemos a la interfaz web desde http://IP:PUERTO.

Dejo un config.xml funcional en http://pastebin.com/sPgA255r para quien lo necesite, funciona a la perfección excepto por lo de los subtítulos.
Espero que esto ayude ya que poner en marcha el mediatomb puede ser un poco coñazo.
¡Un saludo!

PD: Acabé usando MiniDLNA por lo de los subtítulos, que funciona a la perfección con la Samsung. Además, el config.xml que pongo, lo he probado tanto en Debian como en Ubuntu y Mint, por lo que no debería dar problemas. Supongo que en las demás distros también funcionará.

sábado, 16 de junio de 2012

Firewall: iptables y ufw

El mejor “firewall” que nos ofrece Linux son las iptables. Con ellas podemos abrir y cerrar puertos a voluntad, tanto a rangos de ips como a ips suelta, en uno o varios puertos. Como siempre, en linux las cosas más completas no son las más comodas de usar, pero existen formas alternativas de gestionarlas.
Como muestra un boton, vamos a bloquear el acceso al puerto 22 para ver la diferencia de usar uno u otro:
iptables:
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j DROP

ufw:
ufw deny 22/tcp
Como veis, la diferencia es enorme. Con ufw podemos usar un lenguaje natural y se encarga el programa de traducirlo a reglas de iptables. En ambos casos, tenemos el control total del firewall. Somos nosotros quienes tenemos que bloquear o aceptar las conexiones. Lo ideal es bloquear todo el tráfico e ir abriendo los puertos necesarios, así nos aseguramos que no haya ningún programa mandando datos sin nuestro consentimiento.
Para habilitar y deshabilitar el ufw, tenemos dos comandos:
ufw enable
ufw disable
En algunas distros como Ubuntu ya viene preinstalado, pero deshabilitado por defecto, en otras como Debian tendremos que instalarlo.
Como he comentado, vamos a cerrar todos los puertos y luego ir abriendolos uno a uno. Usaremos el comando ufw default deny para ello (ufw default allow para aceptar todo el tráfico). También podemos activar el log para ver qué está pasando con ufw loggin on.
Hay varias formas de abrir y cerrar puertos, podemos hacerlo por ip o por servicios. Para bloquear por servicios, estos tendrían que estar añadidos en el archivo /etc/services. Por ejemplo, para habilitar el ssh nos bastaría con ufw allow ssh (el puerto 22 se abre para acceder desde cualquier IP). Para abrir por puerto se usa ufw allow 22 (abre para acceder desde cuaquier ip al puerto 22 usando tanto tcp como udp). Si queremos que sólo acepte algun tipo de tráfico, tcp por ejemplo, podemos hacerlo así ufw allow 80/tcp que nos abriría el puerto 80 (web) con tráfico tcp.
Podemos hacer que nos acepte las conexiones desde una IP determinada, para ello usaremos ufw allow from 192.168.1.10 o por ejemplo un rango entero de IPs con ufw allow from 192.168.1.0/24 que daría acceso a toda nuestra red privada.
Podemos bloquear o aceptar también usando IP y puerto: ufw allow from 192.168.1.10 to any port 22.
Para bloquear específicamente puertos o ips, en vez de allow usaremos deny.
Repaso rápido:
ufw allow <port>/<optional: protocol>
ufw deny <port>/<optional: protocol>
ufw allow from <ip address>
ufw deny from <ip address>
u
fw allow from <ip address> to <protocol> port <port number>
Si aun así os resulta complicado, podeis usar el gufw, una interfaz gráfica sencilla para añadir las reglas.
¡Un saludo!

viernes, 8 de junio de 2012

Directadmin: Pasar de customapache a custombuild

Versiones antiguas de Directadmin usan el script customapache para actualizar los programas. Actualmente se acaba de lanzar oficialmente el custombuild 1.2, por lo que me parece buen momento para que todos aquellos que tengan el customapache aún, se pasen por lo menos al custombuild 1.1.

Para cambiar el customapache y usar el custombuild seguir estos pasos:

cd /usr/local/directadmin
wget http://files.directadmin.com/services/custombuild/1.1/custombuild.tar.gz
tar xvzf custombuild.tar.gz
cd custombuild
./build update
En este punto editamos el options.txt y seleccionamos el apache, php y mysql que queramos.
./build all d
Sólo falta regenerar el httpd.conf que seguramente pete el apache al levantarse:

./build rewrite_confs

Con esto ya estamos usando el custombuild.

Podeis ver cómo se usa el custombuild desde este post: http://www.directadmin.com/forum/showthread.php?t=29824 que lo explican al detalle.

¡Saludos!

martes, 5 de junio de 2012

Compartición de archivos: Samba

Una de las ventajas de usar Linux es su compatibilidad con todo. El protocolo de Windows smb que se usa para compartir archivos en red tiene su versión en linux y se llama samba. No sólo nos permite eso, si no incluso montar un Directorio Activo y gran parte de las cosas que ofrece nativamente un Windows Server en este sentido.
Para instalarlo, tiramos de repositorios y no nos complicamos. Vamos a ver cómo configurar el samba para compartir archivos en un grupo de trabajo de Windows, puede que en otro post ponga como meterlo en un dominio de AD.
Para configurar este servicio, tendremos que editar el archivo smb.conf (en Debian en /etc/samba y en CentOS si no recuerdo mal en /etc).
Hay varias partes en este archivo de configuración. La primera es la sección [global] en la que configuraremos las opciones del servidor, el resto ya son comparticiones en sí. La primera compartición que nos aparece es la de [homes] que comparte a cada usuario su home y luego [printers] y [print$] para comparticion de impresoras. En estas tres secciones no habría que tocar nada. Para añadir más comparticiones bastaría con añadir [nombre_compartición] y colocar los atributos necesarios.
Y ahora, vamos a hacer trampa Lengua fuera. Hay un panel muy bonito (no tanto, la verdad) y muy útil llamado swat desde el que podemos configurar todo esto de manera gráfica. Es instalarlo desde los repositorios y conectarse a través del navegador a “http://IP:901”.
Otro panel útil con el que podremos editar las comparticiones es el webmin (más info en algún futuro post), pero que para instalarlo tenemos que añadir los repos que indican en su web e instalarlo. Una vez instalado entramos por “https://IP:10000”.
Un detalle importante a tener en cuenta, es que para que un usuario se pueda conectar por samba, hay que darlo de alta con el comando smbpasswd y no tiene porqué existir en el sistema linux. Existe la posibilidad de mapear usuarios samba a usuarios linux, lo podeis hacer desde los paneles de una forma fácil.
Si quereis info más extensa podeis ir a esta web: http://dns.bdat.net/documentos/samba/usando_samba/using-samba.html pero a muchos les resultarán útiles los paneles mencionados.
¡Saludos!

sábado, 2 de junio de 2012

Instalar Mediatomb con el Samsung Hack en Debian 6

Bueno, tras pegarme varios días y documentarme, ya tengo instalado el mediatomb con el parche para las Samsung. Necesitaremos descargar el parche, en el post anterior está, e instalar el ffmpeg y el ffmpegthumbnailer (con apt).
Yo lo hago en todo momento con el usuario root, manías que tengo, pero con sudo debería de funcionar. Lo primero es crear una carpeta para descargar todo el código, en mi caso he usado /opt/mediatomb, pero puede ser cualquiera a la que se tenga acceso.
# mkdir /opt/mediatomb
# cd mediatomb
Lo siguiente será descargar el código fuente de los repositorios y resolver las dependencias del paquete:
# apt-get build-dep mediatomb
# apt-get source mediatomb
Si vemos el contenido de la carpeta, sería una cosa así:
mediatomb-0.12.0~svn2018  mediatomb_0.12.0~svn2018-6.1.debian.tar.gz  mediatomb_0.12.0~svn2018-6.1.dsc  mediatomb_0.12.0~svn2018.orig.tar.gz
Yo he borrado la carpeta mediatomb-0.12.0~svn2018 porque si parcheaba directamente sobre ella me daba problemas. Si decidís trabajar sobre esa carpeta, podéis saltar este comando y avisarme si os funcionó Guiño. Una vez borrada la carpeta, la reconstruiremos con el contenido del dsc:
# dpkg-source –x mediatomb_0.12.0~svn2018-6.1.dsc
Entramos al directorio mediatomb-0.12.0~svn2018 y parcheamos:
# patch –p0 –i /ruta/hacia/samsung_video_subtitles.patch
Reconstruimos los paquetes:
# dpkg-buildpackage –rfakeroot –b
Nos creará tres .deb en el directorio anterior, mediatomb_0.12.0~svn2018-6.1_all.deb  mediatomb-common_0.12.0~svn2018-6.1_amd64.deb  mediatomb-daemon_0.12.0~svn2018-6.1_all.deb, sólo nos queda instalarlos:
# dkpg –i mediatomb*.deb
Si todo ha ido bien, ya tendremos funcionando el mediatomb y la televisión reconocerá automáticamente los subtítulos. No se si el resto de dispositivos también lo harán o tocará hacer transcodificación (editando el config.xml y añadiendo scripts, más info aquí, lo probé en su momento y funciona relativamente bien, aunque depende mucho del equipo que tengas porque hace la conversión al momento).
¡Saludos!

NOTA: Esto con el mediatomb 0.12.0 que está en los repositorios de Debian 6 no funciona, compila y hace todo bien, pero no muestra los subs. Cuando lo hice en el Mint, usé la version 0.12.1-4 que está en los repositorios testing y sí funcionó. Al no poder instalar esa vesión del mediatomb por problemas de dependencias, habría que actualziarlo todo a testing y paso. Al final me he decantado por usar el minidlna y ha funcionado a la primera.