Torrentflux + SQLite + lighthttpd en Debian 5 (lenny)

Cómo instalar Torrentflux (un cliente BitTorrent), con SQLite para la Base de Datos y lighthttpd cómo servidor web.
Requería de un cliente BitTorrent que tuviera un front-end web, pero los recursos de hardware son limitados: será instalado en un NAS, un NSLU2 con Debian 5 (Lenny). El Sistema Operativo está instalado en un pendrive de 2 GB, y a la vez, está conectado un disco externo disponible en /mnt/disk1

Este How To está basado en los siguientes posts:

http://www.torrentflux.com/forum/index.php/topic,3353.0.html

http://www.linuxquestions.org/questions/linux-server-73/sqlite-problems-attempt-to-write-a-readonly-database-611727/

  • Instalar los paquetes necesarios:

# apt-get install lighttpd php5-cgi sqlite php5-sqlite
  • Crear la estructura de directorios para torrentflux y lighthttpd:

# mkdir -p /mnt/disk1/opt/torrentflux
# chown www-data:root /mnt/disk1/opt/torrentflux
# mkdir -p /mnt/disk1/var/www/torrentflux
# chown www-data:root /mnt/disk1/var/www/torrentflux
# ln -s /mnt/disk1/var/www/torrentflux /var/www/torrentflux

Descargar torrentflux desde http://www.torrentflux.com/download.php
Al momento de escribir este documento, la última versión disponible de torrentflux es la 2.4

  • Copiar Torrentflux al directorio destino y crear la Base de Datos

# tar xzvf torrentflux_2.4.tar.gz
# cp -R torrentflux_2.4/html/* /mnt/disk1/var/www/torrentflux
# chown -R www-data:root /mnt/disk1/var/www/torrentflux/

# wget http://homepage.ntlworld.com/cyborgsystems/CS_Main/NSLU2/torrentflux/sqlite_torrentflux.sql
# sqlite /mnt/disk1/opt/torrentflux/torrentflux.db < sqlite_torrentflux.sql
# chown www-data:root /mnt/disk1/opt/torrentflux/torrentflux.db
  • Configurar lighthttpd

# vim /etc/lighttpd/lighttpd.conf

y ubica la sección server.modules y agrega esta línea al principio de la lista:


"mod_fastcgi",

luego ve al final del archivo y agrega:


fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket" )))
  • Configurar Torrentflux

# vim /mnt/disk1/var/www/torrentflux/config.php

reemplaza estas líneas:


$cfg["db_type"] = "mysql";
$cfg["db_host"] = "localhost";

por estas:


$cfg["db_type"] = "sqlite";
$cfg["db_host"] = "/mnt/disk1/opt/torrentflux/torrentflux.db";

Conéctate a torrentflux, e ingresa un nombre de usuario y contraseña, se crearán automáticamente en el sistema. Estará disponible en http://ip/torrentflux

tzdata, cambio de horario de invierno en Chile. Debian 5 (lenny)

El cambio al horario de invierno en Chile  está programado originalmente para el 13 de marzo a las 24:00, pero debido al terremoto que nos afectó recientemente, el gobierno ha decidido aplazar el cambio para el 3 de abril del 2010. Esto fue informado al proyecto Debian, y fueron incorporado los cambios a tzdata. Según este informe , la nueva versión del paquete debería estar disponible en el reposotirio  http://www.debian.org/volatile/ , sin embargo, hasta el momento de escribir este post, no era así. La solución más sencilla para instalar la última versión de tzdata es:


# wget http://volatile.debian.org/debian-volatile/pool/volatile/main/t/tzdata/tzdata_2010d-0lenny1_all.deb
# dpkg -i tzdata_2010d-0lenny1_all.deb

Si tu zona horaria no estuviera ajustada a America/Santiago, ejecuta


# dpkg-reconfigure tzdata

Reverse proxy for Zimbra, mod_proxy and apache2

El escenario:

- Un servidor web con Debian 5 (Lenny), apache2, con una sólo una IP pública. Atiende múltiples virtual hosts.
- Un servidor de correo con Zimbra Collaboration Suite 6 (ZCS), con una IP privada.
- Ambos servidores forman parte de la misma red.

Antecedentes:

El hostname mail.example.com está asociado a la IP pública del servidor web.
El hostname internal-mai.example.com está asociado a la IP privada del servidor de correo.

El requerimiento:

El webmail de ZCS debe ser accesible desde Internet en http://mail.example.com

La solución:

En el servidor web


# a2enmod proxy proxy_http
# vim /etc/apache2/mods-available/proxy.conf

en el archivo proxy.com reemplaza ‘Deny from all’ por ‘Allow from all’ (sin las comillas)


# vim /etc/apache2/sites-available/mail.example.com

Y agrega este contenido:


<VirtualHost *:80>
ServerName mail.example.com
ProxyPass / http://internal-mail.example.com/
ProxyPassReverse / http://internal-mail.example.com/
ErrorLog /var/log/apache2/mail.example.com-error.log
LogLevel warn
CustomLog /var/log/apache2/mail.example.com-access.log combined
</VirtualHost>

Por último reinicia apache2


/etc/init.d/apache2 restart

Ahora a través de un proxy inverso (reverse proxy) todas las peticiones dirigidas a http://mail.example.com serán redirigidas internamente a http://internal-mail.example.com , el servidor de correo.

[/code]

CenterIM spanish UTF-8 support – Debian Lenny

CenterIM, un fork de CenterICQ, es un cliente de mensajería instantánea multiprotocolo: soporta ICQ, Yahoo!, MSN, AIM, IRC, XMPP, LiveJournal y Gadu-Gadu; además funciona en modo texto.

En los repositorios de Debian Lenny (estable) está disponible la versión 4.22.5-1, sin embargo, con esa versión no es factible conectarse a MSN Messenger, la conexión falla. En el sitio oficial CenterIM anuncian que en la versión 4.22.9 se soluciona el problema. A continuación los pasos para realizar la compilación desde las fuentes, además, habilitaremos el soporte spanish UTF-8 cómo charset, así podremos utilizar los caracteres acentuados, y otros cómo la “ñ” en CenterIM. Todos los comandos a continuación deben ser ejecutados cómo root.

Preparamos nuestro ambiente de compilación:


# apt-get install -y libcurl4-openssl-dev libcurses-perl libgnutls-dev liblzo2-2 liblzo2-dev libncurses5 libncurses5-dev libncursesw5 libncursesw5-dev build-essential

Descargamos la última versión de CenterIM:


# wget http://www.centerim.org/download/releases/centerim-4.22.9.tar.gz

Instalaremos la localización (locale) requerida. Edita el archivo /etc/locale.gen y descomenta la línea es_ES.UTF-8


# vim /etc/locale.gen

Generamos la nueva localización con locale-gen


# locale-gen
Generating locales (this might take a while)...
 es_ES.UTF-8... done
 en_US.UTF-8... done
Generation complete.

Utilizaremos esta localización temporalmente, el cambio perdurará hasta que cierres la consola.


# export LANG=es_ES.UTF-8

Ve al directorio donde descargaste CenterIM, llegó el momento de compilar. Si faltaran dependencias, al momento de hacer el configure te darás cuenta, intenta resolverlas a través de apt-get


# tar xzvf centerim-4.22.9.tar.gz
# cd centerim-4.22.9
# ./configure
# make
# make install

Ya puedes ejecutar CenterIM, por omisión estará disponible en /usr/local/bin/centerim. Luego de registrar tu cuenta MSN, tendrás que hacer unos ajustes en el charset, ó tus contactos sólo verán caracteres extraños cuando tu escribas con acentos o “ñ”. Presiona F4 para ir a “CenterIM config options” y en la opción “Codepages conversion” asigna los siguientes valores:


Switch to language preset : None
Remote charset : iso-8859-1
Local charset : utf-8

Existen varias formas para que el cambio de localización (en el Sistema Operativo) sea permanente para el usuario. Una de ellas es generar un sencillo script con este contenido:


#!/bin/bash

export LANG=es_ES.UTF-8
/usr/local/bin/centerim

Le das permisos de ejecución, y a través de este script ejecutas CenterIM. También podrías exportar la varaible LANG en tu ~/.profile o ~/.bashrc

Samba tuning SnakeOS firmware

Instalé SnakeOS en mi NAS WLX-652, y estaba experimentando un problema con Samba: en un recurso compartido del NAS que monto en mi PC, existen varios archivos AVI. Una vez iniciada la reproducción de estos, y en un período de tiempo aleatorio, los videos se congelaban. Pero justo en ese instante podía seguir accediendo a otros servicios, cómo FTP y SSH. El nivel de carga era normal en el NAS, estaba seguro que no era un problema de recursos y que algo pasa con Samba. Luego de incluir ciertos parámetros sin éxito en el archivo de configuración /etc/smb.conf, tales cómo:

read raw = no
read prediction = true
read size = 65536
level2 oplocks = true

Todo seguía igual. Mi hipótesis era que Samba (versión 2.0.10-security-rollup), no se daba por enterado de que yo seguía viendo el video, que mi conexión aún estaba activa. Luego de revisar el man (5) de smb.conf, encontré el parámetro keepalive

keepalive (G)

The value of the parameter (an integer) represents the number of
seconds between keepalive packets. If this parameter is zero, no
keepalive packets will be sent. Keepalive packets, if sent, allow
the server to tell whether a client is still present and
responding

Si estás con el mismo problema, encontrarás la solución a continuación:

Copia el archivo /etc/smb.conf desde el NAS a algún directorio en tu computador y edítalo. En la sección global agrega:

keepalive = 0

Luego súbelo vía SCP o FTP al directorio /etc del NAS, sobrescribe el original.  Ve a la interfaz web de SnakeOS a “Services> Samba> Restart” para reiniciar el servicio, por último a “System> Config> Save Config” para que los cambios en el archivo de configuración persistan después de un reinicio.

Esta es la sección global de mi /etc/smb.conf


[global]
server string = pulpero
smb passwd file = /etc/smbpasswd
security = SHARE
workgroup = WORKGROUP
encrypt passwords = true
short preserve case = yes
preserve case = yes
guest account = ftp
guest ok = yes
force user = root
force group = root
socket options = SO_KEEPALIVE TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
character set = ISO8859-1
client code page = 850
keepalive = 0

Samba client lanman auth

Quería conectarme a un recurso compartido de Samba utilizando Nautilus (en Gnome ve a “Places > Connect to Server”) y no podía conseguirlo. Los datos cómo el servidor, recurso, nombre de usuario y contraseña estaban correctos, sim embargo, Nautilus volvía y volvía a pedir la contraseña, no había ningún mensaje de error. Después de un poco de debug utilizando smbclient, conseguí más información:

[root@awesom-o /]# smbclient -U sebastian //pulpero/torrents
Enter sebastian's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.0.10-security-rollup]
Server requested LANMAN password (share-level security) but 'client lanman auth' is disabled
tree connect failed: NT_STATUS_ACCESS_DENIED

Ocurre porque el cliente tiene deshabilitada la autenticación utilizando el protocolo lanman, ya que es menos seguro que NTLM. Estando consciente de esto y de los riesgos que involucra, para solucionar el problema sólo tienes que editar el archivo /etc/samba/smb.conf y agregar esta línea en la sección [global]

client lanman auth = yes

Ahora puedes volver a probar con smbclient

[root@awesom-o /]# smbclient -U sebastian //pulpero/torrents
smb: \>

Con Nautilus también todo irá bien.

Cómo instalar Dropbox en Fedora 11

Dropbox, una aplicación que permite mantener sincronizados archivos entre distintos computadores, y que por cierto lo hace muy bien, no ofrece un paquete para Fedora 11. Acá encontrarás las instrucciones para resolver las dependencias y compilarlo desde el source. Ejecuta todos estos comandos cómo root:

wget https://www.dropbox.com/download?dl=packages/nautilus-dropbox-0.6.1.tar.bz2
yum install libnotify-devel nautilus-devel python-docutils gcc
tar jxvf nautilus-dropbox-0.6.1.tar.bz2
cd nautilus-dropbox-0.6.1
./configure
./make
./make install

Si quieres probar Dropbox, puedes hacerlo desde acá.

Technical review NAS USB WLX-652

Algo ocurre en mí cuando cuando el hardware funciona bajo Linux y permite firmware upgrade. Automáticamente comienzo a pensar que características nuevas -incluso sin conocer del todo las actuales- podría incorporar con una futura actualización. Existe un NAS (Network Attached Storage) que cumple con estas características, e incorpora unas muy atractivas: es un cliente Bittorrent, actúa cómo servidor de impresión, FTP, Samba y UPnP; y aun bajo precio: 40.35 USD. Es el NAS wlx-652, también conocido en los grupos de google cómo “DealExtreme NAS” gracias a su distribuidor más popular: DealExtreme. Tomé unas capturas de todos los menús y opciones disponibles del firmware por omisión. Así podrás ver si cumple con tus expectativas. Read the rest of this entry »

Cómo actualizar a Fedora 12 Constatine

Desde hoy 17 de noviembre, está disponible Fedora 12 Constatine.
Si actualmente tienes instalado Fedora 11 y quieres actualizar a Fedora 12, entonces sigue cómo root estos sencillos pasos:

# yum install preupgrade
# preupgrade

Unas capturas del proceso:

Puedes encontrar más información en la “Guía de actualización a Fedora 12” y también en este post de FayerWayer.

How to sendmail masquerading – CentOS / Red Hat 5

Si necesitas enviar correos de tu servidor linux, pero estos no llegan al destinatario final, y el maillog luce similar a este:

server1 sendmail[2513]: n9ALeZ8h002511: to=<user@example.com>, delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=120331, relay=mail.example.com. [200.10.20.3], dsn=4.2.0, stat=Deferred: 450 <root@server1.yourcompany.com>: Sender address rejected: Domain not found

Entonces te interesará seguir leyendo este post.

Este tipo de rechazo se produce por el incumplimiento de alguna de las normas descritas en la RFC 2821 para el protocolo SMTP. Generalmente ocurre cuando el host que envía el correo  tiene un FQDN (Fully Qualified Domain Name) que no puede ser resuelto por DNS en el servidor de destino (no existe un registro para el host en la zona del dominio, o bien, no existe el dominio)

El escenario a analizar será el siguiente:

  • dominio de tu organización: yourcompany.com
  • FQDN del servidor linux: server1.yourcompany.com
  • dominio del destinatario: example.com

 

Asumiremos que el dominio yourcompany.com es válido en Internet, sin embargo, no existe un registro tipo A “server1″ en la zona “yourcompany.com”, o sea, el FQDN server1.yourcompnay.com no puede ser resuelto por DNS. Por último server1.yourcompnay.com no actúa cómo un servidor de correo electrónico, sólo envía.

La solución consiste en enmascarar el host de origen: server1.yourcompnay.com cómo yourcompnay.com

Observación: Este Cómo está basado en sendmail 8.13 y Red Hat 5.3 . Aunque las instrucciones son bastante generales, y deberían aplicar para otras distribuciones de Linux con algunos cambios mínimos.

Ejecuta todos los comandos a continuación cómo root:

# yum install sendmail sendmail-cf mailx

Edita el archivo /etc/mail/sendmail.mc y ubica estas líneas:

EXPOSED_USER(`root')dnl
dnl MASQUERADE_AS(`mydomain.tld')dnl
dnl MASQUERADE_DOMAIN(mydomain.tld)dnl
dnl FEATURE(masquerade_entire_domain)dnl
dnl FEATURE(masquerade_envelope)dnl

Las lineas que comienzan con “dnl” son comentarios. Así que ahora comentaremos y descomentaremos para conseguir nuestro objetivo. Edítalas para que queden así:

dnl EXPOSED_USER(`root')dnl
MASQUERADE_AS(`yourcompany.com')dnl
MASQUERADE_DOMAIN(yourcompany.com)dnl
FEATURE(masquerade_entire_domain)dnl
FEATURE(masquerade_envelope)dnl

Acá asumimos que el dominio a enmascarar es “yourcompany.com”, procura reemplazarlo por el tuyo. Guarda y cierra. Es momento de regenerar el archivo de configuración de sendmail y reiniciar el servicio:

# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
# service sendmail restart

¡A probar! si todo salió bien, el destinatario debería recibir el correo:

mail -s "hello world" user@example.com < /dev/null

El log de sendmail ahora debería lucir así:

server1 sendmail[6336]: n9BJkM0Z006334: to=<user@example.com>, ctladdr=<root@server1.yourcompany.com> (0/0), delay=00:00:04, xdelay=00:00:04, mailer=esmtp, pri=120379, relay=mail.example.com. [200.10.20.3], dsn=2.0.0, stat=Sent (Ok: queued as EA4A35EC00B)

Si después de los cambios, tus correos aún no llegan al destinatario, es probable que tengas que usar un smart host para despacharlos. Quedará pendiente para el próximo post.