• Debian 8 como Hub DC++ con uHub (Compilando)

    Para este proceso vamos a usar uHub porque no solo vale para Mac, sino también para Linux y Windows. Y en el caso de que quisiéramos usarlo en esas plataformas, este tutorial nos serviría como punto de entrada. Además, uHub incorpora los archivos CMake que hacen mucho más fácil el proceso de compilación. Trae también un script para limpiar (make clean) cosa que VerliHub, el otro hub para OSX, no trae. Lo único que se hecha en falta en uHub es un script para desinstalar (make uninstall) Dicho lo cual, vamos a ello:

    PARTE 1: PRE-REQUISITOS

    Antes de bajarnos el código fuente, compilarlo e instalarlo, tenemos que asegurarnos de tener los paquetes requeridos instalados en el sistema. Para ello abrimos una cli como root y ejecutamos:

    apt-get -y install cmake make gcc git libsqlite3-dev libssl-dev

    PARTE 2: DESCARGA DEL CÓDIGO FUENTE

    Para descargar el código fuente lo clonamos de GitHub con:

    mkdir /root/git/ && cd /root/git/
    git clone http://github.com/janvidar/uhub.git

    PARTE 3: COMPILACIÓN

    Ahora tenemos que compilarlo desde la carpeta donde se bajó. Para ello ejecutamos desde esa misma cli:

    cd /root/git/uhub/
    cmake .
    make
    make install

    Nota: Si te has olvidado de ejecutar tu cli como root y corres el comando make install sin ser root no funcionará.

    PARTE 4 – CONFIGURACIÓN

    Bien, ya lo tienes instalado. Ahora tienes que modificar el archivo de configuración que uhub crea por defecto. Para ello ejecuta (si es que tienes nano instalado):

    nano /etc/uhub/uhub.conf

    Lo primero que tienes que configurar el nombre del servidor. Para ello baja hasta donde está la línea «hub_name=my hub» y reemplaza «my hub» por el nombre que quieras darle al servidor. En mi caso es «Servidor DC++ de hacks4geeks». Sin las comillas, evidentemente.

    Luego, debajo de la línea anterior, vas a encontrar la descripción del Hub. Ahi puedes poner algunos detalles extras que identifiquen o describan más el hub. En mi caso es «Servidor para compartir archivos sin derechos de autor». Tu pon la descripción que quieras.

    Dale a salir de la edición del archivo con Control+X. Luego presiona la letra S (si tienes la diestro en inglés presiona Y) para aceptar salvar los cambios y confírmalo con  Enter. En este punto ya deberías tener un hub DC++ con una configuración mínima que podría correr sin problemas. Pero en la práctica no es así. Cuando ejecutes uhub con:

    uhub

    Te darás cuenta que te saldrán dos errores:

    ERROR: Unable to open file /etc/uhub/users.conf: No such file or directory
    ERROR: Unable to load plugin: /usr/lib/uhub/mod_welcome.so - Failed to initialize: Unable to read motd file.

    Lo que ocurre es que uhub, en el archivo de configuración que instala por defecto, y que has editado antes, tiene marcado que la base de datos de los usuarios, o mejor dicho, que la lista de los usuarios se busque en /etc/uhub/users.conf pero no crea ese archivo cuando se instala. Eso por un lado, y por otro, el mod de mostrar un mensaje de bienvenida, que dicho sea de paso, también está activado, quiere leer ese mensaje de bienvenida desde un archivo que no existe. Por lo que da fallo. Entonces, antes de ejecutar uhub vamos a solucionar esos dos problema. Por suerte, uhub, dentro de su carpeta docs tiene una copia de esos archivos para que puedas visualizarla como ejemplo o para buscar referencias. Así que vamos a copiar esos archivos desde la carpeta docs hasta sus ubicaciones correctas. Si no cerraste la cli anterior ejecuta:

    cp /root/git/uhub/doc/users.conf /etc/uhub/

    Con lo que ya tendremos solucionado el primer problema. Y para el segundo problema ejecuta:

    echo "Bienvenido a este Hub" > /etc/uhub/motd.txt

    Comando que creará ese archivo y le meterá dentro el texto «Bienvenido a este Hub» (sin las comillas).

    Ahora si, ya puedes ejecutar uhub en la cli y tu servidor estará preparado para recibir conexiones en el puerto que le hayas dejado configurado en su archivo de configuración (por defecto es el 1511).

    EJECUTARLO COMO UN SERVICIO

    Para ejecutar uHub como un servicio, de modo que la cli nos quede disponible para nuevas órdenes, en vez de ejecutar sólo la orden uHub, ejecuta:

    uhub -f

    INICIAR CUANDO INICIA DEBIAN

    Si quieres que uHub se autoejecute cuando inicie Debian agrega la orden al archivo /etc/rc.local antes de exit 0. Por ejemplo:

    ...
    uhub -f
    exit 0

    Aunque eso ya es suficiente para autoejecutarse, a mi me gusta que todo lo que ejecuto en mi servidor tenga un log para poder comprobarlo en caso de problemas. Por eso yo no pongo como único parámetro -f sino también -l /var/log/uhub.log. Es decir, el archivo /etc/rc.local en mi caso quedaría así:

    ...
    uhub -f -l /var/log/uhub.log
    exit 0

    USAR UN CLIENTE PARA CONECTARSE

    Para conectarte al servidor uHub sólo te queda agregar a tu cliente DC++ los datos de conexión indicando el protocolo adc, su dirección IP y su puerto. Por ejemplo:

    adc://192.168.0.20:1511

    UTILIZAR ENCRIPTACIÓN SSL AUTOFIRMADA (OPCIONAL)

    Si quieres asegurar un poco el Hub, puedes utilizar encriptación SSL. Para ello primero crea la clave privada con:

    openssl genrsa -out /etc/uhub/sslpriv.key 8192

    Y luego el certificado propio con:

    openssl req -new -x509 -nodes -sha512 -days 365 -key /etc/uhub/sslpriv.key > /etc/uhub/sslown.crt

    Por último ejecuta las siguientes líneas para agregar la configuración SSL correspondiente al archivo uhub.conf:

    echo 'tls_private_key="/etc/uhub/sslpriv.key"' >> /etc/uhub/uhub.conf
    echo 'tls_certificate="/etc/uhub/sslown.crt"'  >> /etc/uhub/uhub.conf
    echo 'tls_enable=yes'                          >> /etc/uhub/uhub.conf
    echo '#tls_require=yes'                        >> /etc/uhub/uhub.conf

    La última línea la dejé comentada para que sea opcional conectarse de modo normal o usando SSL. Si quieres forzar que todos se conecten con SSL, descomenta la línea y vuelve a ejecutarla.

    NOTA: Para conectarte con SSL debes usar el protocolo adcs. Por ejemplo:

    adcs://192.168.0.20:1511

    Los comentarios están cerrados.