Quantcast
Channel: El blog de Zarovich » debian
Viewing all articles
Browse latest Browse all 8

Flumotion en Debian bajo demanda con autenticación

$
0
0

Flumotion es un servidor para realizar streaming multimedia. Permite tanto el streaming de ficheros en disco bajo demanda a través de HTTP hasta el streaming en tiempo real de lo que se está grabando a través de una webcam, un screencast, etc. En este tutorial se comenta un poco el proceso de instalación de Flumotion y su configuración para servir ficheros bajo demanda, pasando a través de un proxy reverso montado con apache, el cual tendrá autenticación.

Lo primero será instalar el flumotion.

$ aptitude install flumotion

Flumotion se instalará y cómo se podrá observar, entre sus dependencias se encuentra gstreamer, ya que es lo que utiliza para reproducir contenidos, Xorg y librerías GTK. Estas dependencias son debidas a que Flumotion incluye un panel de administración sencillito construido en GTK. Aunque la mayoría de la configuración se realizará a través de ficheros de configuración, ya que permitirá más opciones que los asistentes de su panel de administración, los cuales son bastante limitados.

Para preparar Flumotion para servir contenido multimedia, primero se crea un directorio donde estará almacenado todos los ficheros que podrá servir.

$ mkdir /var/streaming && chmod 755 /var/streaming

Una vez creado ese directorio es necesario editar el manager que gestionará el acceso al contenido en ese directorio. Para ello se editará el fichero de configuración /etc/flumotion/managers/default/planet.xml

Este fichero es un XML, en donde se podrá definir un entorno de streaming. Se le deberá de indicar la conexión con el worker que será el encargado de procesar lo que se vaya a reproducir. Luego se define la atmósfera (esto define los métodos de acceso). Y finalmente el flujo (esto define que componentes intervendrán en el procesado del fichero, lo que está en el flow se ejecuta a través del worker). Una de las ventajas más interesantes es que el worken no tiene por que estar instalado necesariamente en la misma máquina por la que se accede al servicio de streaming. Cómo el objetivo es tener un servidor de streaming vía http bajo demanda, la configuración del planet.xml quedaría de la siguiente manera.

<planet name="planet">

<manager name="planet">
    <host>127.0.0.1</host>

  <component name="manager-bouncer" type="htpasswdcrypt-bouncer">
    <property name="data">user:PSfNpHTkpTx1M</property>
  </component>
</manager>

<atmosphere>
  <component name="http-server-ondemand"
               type="http-server"
               label="http-server-ondemand"
               worker="localhost"
               project="flumotion"
               version="0.6.1">
      <property name="mount-point">/</property>
      <property name="port">8800</property>
      <property name="path">/var/streaming</property>
      <plugs>
      </plugs>
  </component>
</atmosphere>

</planet>

Con este fichero se indica primero la localización del manager, en este caso 127.0.0.1 ya que se va a ejecutar todo en la misma máquina. Además se incluye el método de autenticación con el manager. Aquí se presupone que se va a utilizar cómo usuario y contraseña “user” y “test” respectivamente. Por último en la atmósfera se define que se va a utilizar un componente de servidor http bajo demanda, que el worker de este componente estará situado en localhost y se indica el punto de montaje, que indicará bajo que url se sirven los ficheros, es decir que si se pone / pues el acceso será http://host:8800/. Además se indica que escucha en el puerto 8800 y la localización de los ficheros será /var/streaming.

Al dejar el usuario y contraseña del worker cómo “user” y “test” cómo se dijo antes, no es necesario modificar el fichero de configuración del worker. De todas formas voy a dejar aquí el fichero de configuración del worker para que le podais echar un vistazo.

<?xml version="1.0"?>
<worker>
  <manager>
  </manager>

  <authentication type="plaintext">
    <username>user</username>
    <password>test</password>
  </authentication>

  <feederports>8650-8669</feederports>
  <debug>*:4</debug>

</worker>

En la configuración del worker se puede especificar el sistema de autenticación (además de otras cosas), el cual puede ser servidor a través de un fichero htpassword al estilo apache, utilizando el componente htpasswd-decrypt en lugar de usar el plaintext.

Ahora cómo interesa proteger el sistema de streaming, vamos a evitar que se pueda acceder a él directamente. Cómo no, antes de hacer esto, podeis comprobar que está funcionando todo correctamente. Simplemente reiniciar el flumotion y probar a acceder a través de la ip de vuestro servidor. Lo que ocurrirá es que os tendría que contestar con que no se han encontrado fichero… algo normal si no hay nada. Si meteis algún fichero a la url será necesario añadirle el nombre del fichero al que se pretende acceder.

$ service flumotion restart

Ahora con IPTables se evita el acceso al puerto 8800 para toda petición externa excepto las procedentes desde donde esté situado el proxy reverso apache. Ahora se va a suponer que se utiliza el localhost (127.0.0.1) cómo proxy reverso.

Para modificar la configuración de iptables, pues se puede utilizar los siguientes comandos.

$ iptables -A INPUT -p tcp -i eth2 -s 127.0.0.1 --dport 8800 -j ACCEPT
$ iptables -A INPUT -p udp -i eth2 -s 127.0.0.1 --dport 8800 -j ACCEPT
$ iptables -A INPUT -p tcp -i eth2 --dport 8800 -j ACCEPT
$ iptables -A INPUT -p udp -i eth2 --dport 8800 -j ACCEPT

Con estos comandos indicais a iptables que rechace las conexiones a través de la interfaz de red eth2 (normalmente suele ser eth0) procedentes de cualquier IP al puerto 8800 tanto con UDP cómo con TCP. Y sin embargo se aceptan las peticiones procedentes de Localhost.

Si no está instalado apache, pues se instala y también se instala el módulo para que pueda actuar cómo proxy reverso.

$ aptitude install apache2 libapache2-mod-proxy-html

Lo siguiente será decirle a Apache que cargue ese módulo. Es posible usar el a2enmod o dejarlo en el httpd.conf para que lo ejecute directamente siempre en /etc/apache2/httpd.conf.

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
LoadModule proxy_ftp_module /usr/lib/apache2/modules/mod_proxy_ftp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

Una vez hecho esto, se modifica el 000-default en sites-enabled (lo educado es hacerlo a través de sites-available y luego usar a2ensite y a2dissite, pero lo voy a hacer directamente).

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin/">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                AddHandler cgi-script .pl
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    ProxyRequests Off

    <Proxy *>
    </Proxy>

    ProxyPass /stream http://127.0.0.1:8800/
    ProxyPreserveHost On
    <Location /stream>
        ProxyPassReverse http://127.0.0.1:8800/
        AuthType Basic
        AuthName "Restricted Streaming"
        AuthUserFile /etc/apache2/htpasswd
        Require user streaming
    </Location>

</VirtualHost>

Con esto quedaría configurado el proxy reverso (os interesa a partir de la línea que pone ProxyRequests Off), sólo que cómo se puede ver la localización que apunta al servidor de streaming requiere autencicación. Para que la autenticación funcione es necesario crear el htpasswd.

$ htpasswd -c /etc/apache2/htpasswd streaming

Esto os pedirá que escribais la contraseña que vais conveniente. Por tanto el usuario streaming con su contraseña que hayais puesto será la que se utilice para acceder a través de un navegador o reproductor que utiliceis al servidor de streaming.

Esto os debería de servir para tenerlo funcionando. De todas formas dejo disponible el enlace a la documentación completa de flumotion. Así a través de la documentación de los componentes y algunos ejemplos de configuración, podeis probar a montar cosas bastante más complejas y que se adapten más a vuestras necesidades.

Enlaces de interés:
Documentación flumotion


Viewing all articles
Browse latest Browse all 8

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Gwapo Quotes : Babaero Quotes


Winx Club para colorear


Girasoles para colorear


Loro para colorear


Vacas para colorear


Dromedario para colorear


Break up Quotes Tagalog Love Quote – Broken Hearted Quotes Tagalog


Tagalog God Quotes to inspire you


RE: Mutton Pies (mely)


El Vibora (1971) by Francisco V. Coching and Federico C. Javinal





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC