Instalación y Configuración de un Servidor de Streaming Multimedia con IceCast


Hace mucho tiempo que ya es normal encontrar en la red servicios de transmisión de radio que llegan a todo el planeta, pues en este post voy a explicar cómo realizar la instalación de un Servidor IceCast que es un servicio libre en contraparte al conocido servicio de ShoutCast.

Antes que nada quiero aclarar que esta instalación la realizaré sobre un Debian/Linux, pero la configuración es análoga para cualquier distribución Basada en GNU/Linux.

#aptitude install icecast2 ices2

Icecast2: Servidor de Streaming.
Ices2: Cliente para emitir Stream.

Inicialmente configuraremos el Servicio de Icecast localmente, para ello IP Server = 127.0.0.1 o localhost, el puerto por el que atiende icecast será 8000.

Para las ediciones de los ficheros de texto yo prefiero usar “nano”, ustedes pueden hacer uso del que gusten.  Así mismo, es recomendable que cambien las contraseñas que la instalación trae por defecto, como en <source-password>, <relay-password> y <admin-password>; éste último se refiere a la contraseña de acceso via web: http://127.0.0.1:8000/admin/

Iniciamos con la configuración:

Configuración de Icecast2:

#nano /etc/icecast2/icecast.xml
 <icecast>
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <burst-on-connect>1</burst-on-connect>
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <source-password>source</source-password>
        <relay-password>source</relay-password>
        <admin-user>admin</admin-user>
        <admin-password>admin</admin-password>
    </authentication>

    <hostname>localhost</hostname>

    <listen-socket>
        <port>8000</port>
    </listen-socket>

    <fileserve>1</fileserve>

    <paths>
        <basedir>/usr/share/icecast2</basedir>
        <logdir>/var/log/icecast2</logdir>
        <webroot>/usr/share/icecast2/web</webroot>
        <adminroot>/usr/share/icecast2/admin</adminroot>
        <alias source="/" dest="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
      	<loglevel>3</loglevel>
      	<logsize>10000</logsize>
    </logging>

    <security>
        <chroot>0</chroot>
        <!--
        <changeowner>
            <user>nobody</user>
            <group>nogroup</group>
        </changeowner>
        -->
    </security>
</icecast>
#nano /etc/default/icecast2
CONFIGFILE="/etc/icecast2/icecast.xml"
USERID=icecast2
GROUPID=icecast
ENABLE=true
#/etc/init.d/icecast2 start

Si hasta este punto todo se ha hecho bien, la siguiente dirección debería cargar correctamente en el navegador: http://127.0.0.1:8000

Configuración de Ices2:

Modo Live: Para Emitir streaming en linea, por ejemplo con la salida desde micro:
Los ficheros de configuración de ices2 lo pueden crear en su directorio personal, según el ejemplo mi directorio personal es /home/beastieux/

$mkdir /home/beastieux/iceconf
$cd /home/beastieux/iceconf
$nano iceconf/ices2-live.xml
<?xml version='1.0'?>
<ices>
<background>0</background>
<logpath>/var/log/icecast2</logpath>
<logfile>ices.log</logfile>
<loglevel>4</loglevel>
<consolelog>1</consolelog>

<stream>

<metadata>
<name>Radio Beastieux</name>
<genre>rock-metal-bossa-chilli</genre>
<description>Radio con la mejor musica de mi computadora</description>
<url>https://saforas.wordpress.com</url>
</metadata>

<input>
<module>alsa</module>
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="device">hw:0,0</param>
<param name="metadata">1</param>
<!--Localización de un fichero metadata.-->
<param name="metadatafilename">./metadata</param>
</input>

<!--Datos del Servidor Icecast2-->
<instance>
<hostname>127.0.0.1</hostname>
<port>8000</port>
<username>source</username>
<password>source</password>
<mount>/radio-beastieux.ogg</mount>
<yp>1</yp>

<encode>
<!--Datos de la velocidad de transmisión, calidad-->
<minimum-bitrate>48000</minimum-bitrate>
<maximum-bitrate>64000</maximum-bitrate>
<nominal-bitrate>64000</nominal-bitrate>
<samplerate>44100</samplerate>
<!--Calidad de codificación del bitrate. Va de 0 a
10. Interesa tener un valor bajo para conexiones
modestas-->
<quality>1</quality>
<!--Número de canales de la entrada -->
<channels>2</channels>
</encode>

<downmix>1</downmix>
<resample>
<in-rate>44100</in-rate>
<out-rate>44100</out-rate>
</resample>

</instance>
</stream>
</ices>

Para emitir el stream sólo lanzar este comando:

$ices2 ices2-live.xml

Luego pueden hablar por el micro o ayudarse con reproductores y sintetizadores para la transmisión, que todo lo que salga por el audio desde su ordenador se estará transmitiendo en vivo.

Modo Playlist: Para Emitir Streaming desde una lista con las direcciones del audio:

$nano /home/beastieux/iceconf/ices2-playlist.xml
<?xml version='1.0'?>
<ices>
<background>0</background>
<logpath>/var/log/icecast2</logpath>
<logfile>ices.log</logfile>
<loglevel>4</loglevel>
<consolelog>1</consolelog>

<stream>
<metadata>
<name>Radio Beastieux</name>
<genre>rock-metal-bossa-chilli</genre>
<description>Radio con la mejor musica de mi computadora</description>
<url>https://saforas.wordpress.com</url>
</metadata>
<!-- El <input> es lo único diferente al fichero ices2-live.xml -->
             <input>
                       <module>playlist</module>
                       <!--Indicar el sitio donde tenemos la lista de reproducción-->
                       <param name="file">/home/beastieux/iceconf/playlist.m3u</param>
                       <param name="type">basic</param>
                       <!--reproduce en modo random-->
                       <param name="random">1</param>
                       <!--A valor 0 reproduce la lista
                              continuamente."-->
                       <param name="once">0</param>
                       <param name="rate">44100</param>
                       <param name="channels">2</param>
                       <param name="device">/dev/dsp</param>

               </input>

<instance>
<hostname>127.0.0.1</hostname>
<port>8000</port>
<username>source</username>
<password>source</password>
<mount>/radio-beastieux.ogg</mount>
<yp>1</yp>

<encode>
<!--Datos de la velocidad de transmisión-->
<minimum-bitrate>48000</minimum-bitrate>
<maximum-bitrate>64000</maximum-bitrate>
<nominal-bitrate>64000</nominal-bitrate>
<samplerate>44100</samplerate>
<!--Calidad de codificación-->
<quality>1</quality>
<!--Número de canales de la entrada -->
<channels>2</channels>
</encode>

<downmix>1</downmix>
<resample>
<in-rate>44100</in-rate>
<out-rate>44100</out-rate>
</resample>

</instance>
</stream>
</ices>

Crear la lista de reproducción:
La lista de reproducción solo es una lista con las direcciones de los archivos de audio, en este caso deben de ser OGG, el fichero debe constar de una dirección por linea. Si tienen un directorio con músicas podrían generar el fichero.m3u automáticamente con algo como:

$find /media/sda2/musicas/ -name "*ogg" > ~/iceconf/playlist.m3u

Para ejecutar el modo automático de emisión desde un playlist con los audios (ogg) añadidos:

$ices2 ices2-playlist.xml

Si quieren escuchar la transmisión vía web pueden ingresar al punto de montaje configurado, para este ejemplo el punto de montaje fue radio-beastieux.ogg, por lo cual accederemos a: http://127.0.0.1:8000/radio-beastieux.ogg

Por último, tanto la ejecución en modo live como en modo playlist con ices2 no debe de niguna manera devolvernos al promt del terminal, si eso ocurre es porque los ficheros están mal configurados o el servidor no está iniciado correctamente. Si todo ha salido bien entonces tendrían su servidor de Icecast básicamente configurado y listo para empezar a emitir normalmente, podrian empezar a transmitir para el mundo entero.

Anuncios

Google Groups se queda sin soporte


Grupos de Google no continuará manteniendo las funciones Páginas y Archivos. A partir del 13 de enero, no será posible subir ningún contenido nuevo, aunque aún se podrá visualizar y descargar el contenido existente. Consulta este anuncio para obtener más información y para conocer otras opciones de almacenamiento del contenido.

Como describe el anuncio previo, la gente de Google dejará de dar soporte a lo que hasta  ahora fue Google Groups, al parecer, para dar paso a la expansión de Google Docs. Con ello, ya son varios servicios en la red que han sido cancelados este año, la mayoria de ellos con fines comerciales como Scribd , Last.fm … y otros por que no tuvieron la acogida esperada y murieron inclusive antes de nacer, como google wave, ahora tocó a Google Groups del cual no dudo que tuviera gran acogida por diversas comunidades y usuarios independientes como es el caso de este Blog, que enlazaba muchísimos ficheros para ser accesado desde alli, y ante la posibilidad una cancelación  inoportuna de la totalidad del servicio,  se tendrá que realizar una reforma de los post con vínculos hacia él.

Ante las medidas que ciertas organizaciones  están tomando, el cual conlleva a la no estabilidad de los servicios en la nube y sobre todo a la desconfianza de parte de los usuarios, es necesario plantearse si existe la posibilidad de contar con las garantías necesarias antes estos hechos, principalmente al de cerrar o empezar a cobrar por servicios que nos han ofrecido gratuitamente, pues sinceramente no me gustaría que WordPress de repente comience a cobrarme por mi blog, el cual poseo por ya varios años de forma gratuita, o que los servicios de correos hagan lo mismo, u otros de los tantos servicios brindados en la nube, sin duda esto es algo que lamentar y que no se esperaba que sucediera.

Reemplazar Apache por Cherokee


En los topics anteriores, referentes a: Montar un Servidor Web en PC-BSD 7 he optado  por instalar Apache.

En esta ocasión, explicaré como sustituir Apache por Cherokee, un servidor web libre (licenciado con GPL), moderno, muy rápido, flexible,eficiente, ligero, estable, fácil de configurar,multiplataforma, etc, etc, etc. (visite: Cherokee-project).

Con lo mencionado anteriormente, no trato de desmerecer las bondades que nos brinda el buen y viejo Apache!!, pero creo también, que es el momento de darle un lugar a proyectos nuevos como lo es Cherokee, creado por Alvaro Lopez Ortega y actualmente mantenido por una comunidad de desarrolladores de software libre.

Instalación y configuración de Cherokee en PC-BSD 7

Basado en Normas de FreeBSD

1) Observa si se está ejecutando el servicio apache, si es así: detenerlo.

Si lo has inicializado en el fichero /etc/rc.conf como señalamos en el post Instalación de Apache en PC-BSD 7 es probable que esté en ejecución, o si ya lo tenias configurado en tu sistema FreeBSD u otro derivado de él puedes confirmarlo:

# netstat -a|grep ‘.http’
tcp46      0      0 *.http                 *.*                    LISTEN

La línea anterior significa que el servicio web está en ejecución, por lo tanto habrá que detenerlo:

# /usr/local/etc/rc.d/apache22 stop

ó

#apachectl stop

Seguidamente, volver a verificar si el servicio verdaderamente está detenido:

# netstat -a|grep ‘.http’

Si no hay una respuesta como la mostrada anteriormente, entonces el servicio quedó detenido satisfactoriamente.

2) Descargaremos e Instalaremos Cherokee via ports: (Esto tomará su tiempo)

# cd /usr/ports/www/cherokee/ && make install clean
===>  Cleaning for GeoIP-1.4.4_1
===>  Cleaning for cherokee-0.9.2

Cuando termine, limpiará el directorio de compilación, en este caso, los dos señalados lineas arriba.

3) ¿Dónde está ubicado Cherokee?

Pueden ver que se creó un directorio en: /usr/local/www/cherokee/

Y los ficheros de configuración están en: /usr/local/etc/cherokee/

4) Probaremos si el servicio quedó habilitado. Puedes hacerlo con netstat o desde un navegador web:

Aprovechamos probarlo desde un navegador web, y de paso limpiamos las cookies:

En Firefox:

Control + shift + Supr –> Seleccionar ‘Cookies’ —> Clear Private Data Now

En Opera:

Tools—> Delete Private Data—>Detailed Options —> Seleccionar ‘Delete all Cookies’ –>Delete

El objetivo de limpiar las cookies es para prevenir que al momento de lanzar el localhost, continúe mostrando el It works! (página de prueba de apache…) guardado en la caché del navegador, a pesar de haber detenido el servicio de Apache.

Luego de ello, cargar:

http://127.0.0.1/

No se preocupe si no carga el localhost, aún hay cosillas que hacer…

5) Es momento de Iniciar cherokee-admin

Desde un terminal, (Queda sobre-entendido: en modo superusuario) , lanzar la instrucción:

# cherokee-admin &
Cherokee Web Server 0.9.2 (Oct 18 2008): Listening on port 9090, TLS disabled,
IPv6 disabled, using poll, 10778 fds system limit, max. 5382 connections,
single thread

(Enter)

El servicio cherokee-admin queda en segundo plano.

6) Regresar al navegador web y cargar:

http://127.0.0.1:9090/

Ésta es la página que debería mostrarles si todo lo hicieron correctamente (Server is not running).

7) Como se darán cuenta, el servicio está detenido, por lo tanto procedan a iniciarlo: ‘Launch’

Ésta es la página que debería mostrar luego de iniciar el servicio (Server is running).

8.) En una nueva pestaña, volver a lanzar:

http://127.0.0.1/

Es probable que aún no inicie la página principal de cherokee, que se supone que es la que debería mostrarnos, aunque #netstat -a|grep ‘.http’ nos indique de que ya se inició el servicio.

Por lo tanto regresamos a la página de configuración: http://127.0.0.1:9090/ y pasamos a configurar algunos valores del cherokee-admin:

>> Ingresamos a la opción ‘General’:

>>Por el momento solo editaremos el rubro ‘Listen’: ingresemos 127.0.0.1

>>Guardemos el cambio (save), y volvamos a lanzar http://127.0.0.1/

9) En este punto se espera que la configuración haya terminado satisfactoriamente, y nos muestre la página de prueba de Cheroke:

10) Ahora verificamos que la integración con php esté habilitada:

Para ello creamos un directorio nuevo y un fichero index.php con un pequeño código php:

#cd /usr/local/www/cherokee
#mkdir phptest && cd phptest
#edit index.php

<?php

echo ‘Cherokee y php Funcionando!!!’;

?>
Control + c
command:exit
.
Si has seguido la guia Instalación y configuración de Joomla en PC-BSD 7, en lugar de crear un fichero php, podrías copiar el directorio de joomla ya configurado del DocumentRoot de Apache al  DocumentRoot de Cherokee:

#cp -rf /usr/local/www/apache22/data/joomla15  /usr/local/www/cherokee/

11) Cargamos la página de prueba creada:

http://127.0.0.1/phptest/

Si en pantalla nos muestra; Cherokee y php Funcionando!!! , todo habrá terminado bien, caso contrario, habrá que realizar una modificación más en el cherokee-admin:

http://127.0.0.1:9090/

(Si en lugar de crear el fichero php copiaste el directorio de joomla, lanzar: http://127.0.0.1/joomla15/ )

12) Si la página php aún no carga, ir a: Info Source de cherokee-admin.

Hacer clic en el nick por defecto: ‘php’ para expandir todas las opciones;

Inicialmente, cuando realicé la instalación de cherokee, el Connection ‘/tmp/cherokee-php.sock‘ no era ubicado por el servidor, por lo tanto las páginas php no se lograban cargar. Si a ud. le pasa lo mismo, edite la opción Interpreter, que inicialmente podría ser:

%phpcgi% -b /tmp/cherokee-php.sock

y sustituyalo por:

/usr/local/bin/php-cgi -b /tmp/cherokee-php.sock

Por último, guarda el cambio (save).

Si el proceso se hizo como lo explicado hasta aquí, la configuración debería ser correcta y el servidor debería estar perfectamente integrado con php. En caso contrario, es posible de que al no poder cargar alguna página php, le muestre una advertencia como esta:

503 Service Unavailable
Cherokee web server 0.9.2 (UNIX), Port 80

13) No olvide que dejamos ejecutándose en background a cherokee-admin.

a) Ver el proceso:

#jobs

[1]  + Running                       cherokee-admin

b) Matar al proceso:

#kill %1

ó

# killall cherokee-admin

Si actualizamos (F5) o volvemos a iniciar cherokee-admin ( http://127.0.0.1:9090/ ), ya no tendremos acceso al servicio de configuración (Para un posterior acceso, ejecutar cherokee-admin &).

14) Editar el fichero: /etc/rc.conf

Para hacer que cherokee se cargue al iniciar el sistema. añadir:

cherokee_enable=”YES”

Y dejar comentado la referencia a Apache para desabilitar su ejecución al inicio:

#apache22_enable=”YES”

Todo lo mostrado anteriormente es la formá básica de configurar cherokee, no tuvimos que meter dedo a los ficheros de configuración gracias a cherokee-admin. Si desea realizar una configuración avanzada con las medidas de seguridad necesaria puede visitar cherokee-project-doc.sa, o también poseen la documentación en el directorio: /usr/local/share/doc/cherokee.

Ir a: Montar un Servidor Web en PC-BSD 7

Instalación de Apache en PC-BSD 7


 

Como primer paso realizaremos la instalación y una configuración mínima (por no decir nada) de Apache.

Basado en normas de FreeBSD.

1) Pueden percatarse de que el puerto 80 no escucha nada:

#netstat -a|grep ‘*.http’

Si no hay ninguna respuesta quiere decir que no hemos realizado con anterioridad alguna instalación de ningún servidor web.

2) Procedemos a instalar apache via ports:

#cd /usr/ports/www/apache22/ && make install clean

La descarga y compilación tomará su tiempo…

3) Agregaremos una linea al fichero rc.conf para que inicie apache al arrancar el sistema.

#edit /etc/rc.conf

Añadir al inicio: apache22_enable=”YES”

Control + c

command: exit

4) Iniciar apache:

#apachectl start

5) Volvemos a revisar si http está ejecutándose:

#netstat -a|grep ‘*.http’
tcp4 0 0 *.http *.* LISTEN

La linea anterior se mostraría si el servicio está en ejecución.

6) Para terminar:

*Ingrese en un navegador web:

127.0.0.1

ó

localhost

Si le muestra el mensaje It works! , todo marcha bien.

*La ruta del fichero de configuración de apache es:

/usr/local/etc/apache22/httpd.conf

*El DocumentRoot por defecto estará ubicado en: /usr/local/www/apache22/data/

Ir a: Montar un Servidor Web en PC-BSD 7

Montar un Servidor Web en PC-BSD 7


En los siguientes post’s, explicaré como levantar un servidor web en PC-BSD 7 Fibonacci Edition, basándome en parte de la metodología de FreeBSD. Para ello he enlazado algunos links de referencia que creo son entendibles, como también, he explicado detalladamente donde creí que era necesario hacerlo. Esto servirá para finalmente lograr montar nuestra web sobre PC-BSD.

 

I. Instalación y Post Instalación de PC-BSD 7

II. Instalación y configuración de Apache

III. Instalación y configuración de PHP

IV. Instalación y configuración de MySQL

V. Instalación y configuración de Joomla

VI. Reemplazar Apache por Cherokee (último)