Info16.fr

Le blog de B@rtounet

Archives 2012

#Gnu/Linux, Planet Libre

Débits réseaux: Dropbox vs Hubic vs Google Drive

etherpad Débits réseaux: Dropbox vs Hubic vs Google Drive

Les fournisseurs d'espace de stockage grand public  dans le cloud sont de plus en plus nombreux.
Ils nous promettent monts et merveilles, mais j'ai voulut tester les véritables débits qu'ils nous offraient.

logo dropbox  vs     hubic logo    vs      gdrive logo


Fonctionnalités


logo dropbox hubic logo gdrive logo
Stockage Gratuit
2Go
25Go
5Go
Taille Maxi / fichier
300Mo
10Go
10Go
interface Web
Oui
Oui
Oui
Application Mobile
Android/IOS
Android/IOS
Android/IOS
Apliccation Desktop
Windows/Mac/Linux
Windows/Mac/Linux Windows/Mac



J'ai voulu comparer les débit que m'offraient ces 3 services de cloud sur ma connexion.
Ce test n'engage que moi et ces résultats doivent être interprété de façon intelligente.

Il est bien évident que les résultats seront différents selon la connexion de l'utilisateur et le réseau qui sépare ce client du fournisseur de cloud...

Cela donne une idée générale.


Plateforme Materielle :

Un poste client simple


  • Dell Optiplex 755
  • CPU: Core 2 E6750 @2.66Ghz
  • RAM: 4 Go DDR2

Plateforme logicielle:
  • Windows XP sp3 full update
  • Firefox ESR 10.0.5
Connexion internet:

  • Fibre 30Mbits/s symétrique

debit fibre DT

La connexion relativement performante me permet de faire des tests dans de bonne condition.

Protocole de test:

Mon protocole est assez simple.

  • Upload vers le cloud avec le client Windows
  • Upload vers le coud avec l'interface Web
  • Download avec le client Windows
  • Download avec le client Web
Pour chaque test j'utilise le même fichier de 100Mo (test100.bin: données aléatoires)
Pour faire une moyenne de débit, j'utilise Dumeter en mode chrono qui permet de faire des stats assez précises.

Pour être transparent, j'ai fait un screenshot du résultat à environ 60% du transfert.

Dropbox logo dropbox

Tout le monde connait Dropbox, c'est un des plus anciens et des plus connus de fournisseur de stockage dans le cloud.

  • Upload vers le cloud avec le client Windows
Dropbox upload xp
                                                                                            Taux upload moyen 3.57Mb/s


  • Upload vers le coud avec l'interface Web
Dropbox upload web
                                                                                             Taux upload moyen 2.68Mb/s


  • Download avec le client Windows
Dropbox download xp
                                                                                                 Taux download moyen 9.02Mb/s

  • Download avec le client Web
Dropbox download web
                                                                                                      Taux download moyen 5.46Mb/s



Hubic  by OVH  hubic logo 
Hubic est un petit nouveau, mais OVH frappe un grand coup car il propose en gratuit pas moins de 25Go
Le seul hic, c'est que le client est beaucoup moins bien intégré que sur DropBox ou Gdrive.

  • Upload vers le cloud avec le client Windows
hubic upload xp
                                                                                                Taux upload moyen 6.48Mb/s


  • Upload vers le coud avec l'interface Web
Hubic Upload Web
                                                                                           Taux upload moyen 7.99Mb/s


  • Download avec le client Windows
Hubic download xp
                                                                                        Taux download moyen 12.75Mb/s


  • Download avec le client Web
Hubic Download Web
                                                                                Taux download moyen 22.19Mb/s


GoogleDrive by Google  gdrive logoTaux upload moyen 5.65Mb/s 

GoogleDrive est proposé par Google, mis en place il y à peu de temps, il propose un client très bien intégré et complète efficacement la suite Gdocs.


  • Upload vers le cloud avec le client Windows
Gdrive upload xp
                                                                                Taux upload moyen 5.65Mb/s


  • Upload vers le coud avec l'interface Web
Gdrive upload web
                                                                                Taux upload moyen 20.10Mb/s



  • Download avec le client Windows
Gdrive download xp
                                                                                Taux download moyen 16.38Mb/s


  • Download avec le client Web
Gdrive download web
                                                                                Taux download moyen 23.09Mb/s



Résumé des mesures:


logo dropbox hubic logo gdrive logo
Upload via Client
3.57Mb/s
6.48Mb/s
5.65Mb/s
Upload via Web
2.68Mb/s
7.99Mb/s
20.10Mb/s
Download via Client
9.02Mb/s
12.75Mb/s
16.38Mb/s
Download via Web
5.46Mb/s
22.19Mb/s
23.09Mb/s
























13 juillet 2012 10 commentaires

#Gnu/Linux, Planet Libre

Installation d'une solution de collaboration: Etherpad Lite

etherpad
Installation d'une solution de collaboration Etherpad Lite

J'ai eut besoin récemment pour les associations pour lesquelles je suis un peu sysadmin, de mettre en place une solution de collaboration texte.
Bien sur il existe les Google Docs et autres mais je voulais un outil simple et hebergé par mes serveurs.
J'ai un peu cherché et je suis tombé sur Etherpad !





EtherPad est un éditeur de texte collaboratif en temps réel. Il permet par défaut à un maximum de seize personnes de partager un texte en cours d'élaboration. Les contributions de chacun apparaissent immédiatement sur l'écran de tous les participants et sont signalées par des couleurs différentes. Une fenêtre de messagerie instantanée est également disponible.

Le système ne requiert aucune installation, ni aucune inscription, il suffit d'avoir une connexion internet et un navigateur web. EtherPad est écrit en JavaScript.

Etherpad était un éditeur (de texte) en ligne permettant de travailler à plusieurs sur un document. Le code fut ouvert par Google quand ils en firent l'acquisition pour l'intégrer à Google Wave (il me semble, ou alors c'était dans Google Docs), dans la foulée une fondation fut créée pour continuer à le faire vivre, et des pads fleurirent un peu partout, malgré la gourmandise du logiciel (les mauvaises langues, dont je ne suis pas, attribueront cette lourdeur au fait que le logiciel ait été écrit en Scala, et donc dépende de Java). Mais il était hors de portée des serveurs dédiés virtuels (VPS) pas chers, et autres mini serveurs.

C'est là qu'entre en scène Etherpad Lite, nettement moins gourmand, il se base sur Node.js, a moins de dépendances ésotériques que son ancêtre, et d'après les développeurs, là où un Etherpad occupait 257 Mo de RAM juste après son démarrage, Etherpad
Lite n'en occupe que 16 Mo. Il est disponible sous licence Apache 2.0. (source :http://linuxfr.org/news/etherpad-lite)


Etherpad vs Etherpad Lite

  Etherpad Etherpad Lite
Size of the folder (without git history) 30 MB 1.5 MB
Languages used server side Javascript (Rhino), Java, Scala Javascript (node.js)
Lines of server side Javascript code ~101k ~9k
RAM Usage immediately after start 257 MB (grows to ~1GB) 16 MB (grows to ~30MB)



Plateforme Materielle :

Comme d'habitude, j'ai monté mon prototype sur ma plateforme de virtualisation:

Dedibox Pro HP
Plateforme logicielle hyperviseur:
  • Dom0 Opensuse 12.1 X86_64 Xen 4.1
Plateforme Virtuelle:

  • DomU Xen Ubuntu 10.04 X86_64 Paravirtualisé
  • 2 vcpus 
  • 512 Mo de Ram
  • HDD 16GB


Installation:

Pour commencer j'ai mis à jour totalement mon DomU ubuntu 10.04; mon template avait quelques maj de retard :)

  • Mise à niveau du DomU
root@ubuntults:/# apt-get update; apt-get upgrade
root@ubuntults:/# apt-get install linux-headers-server linux-image-server linux-server
root@ubuntults:/# reboot

  • Installation des prérequis
root@antony-linux:/home/antony# apt-get install gzip git-core curl python libssl-dev pkg-config build-essential

  • Installation de node.js
On télécharge la dernière version de node.js et on la compile
    root@antony-linux:/home/antony# wget http://nodejs.org/dist/v0.6.15/node-v0.6.15.tar.gz
    root@antony-linux:/home/antony# tar xvfz node-v0.6.15.tar.gz
    root@antony-linux:/home/antony/# cd node-v0.6.15
    root@antony-linux:/home/antony/#./configure; make; make install

  • Installation de Etherpad lite 
On utilse git pour récupérer la dernière version.
root@antony-linux:/home/antony# git clone 'git://github.com/Pita/etherpad-lite.git'
Initialized empty Git repository in /home/antony/etherpad-lite/.git/
remote: Counting objects: 8065, done.
remote: Compressing objects: 100% (2632/2632), done.
remote: Total 8065 (delta 5738), reused 7590 (delta 5318)
Receiving objects: 100% (8065/8065), 2.76 MiB | 626 KiB/s, done.
Resolving deltas: 100% (5738/5738), done.


Je déplace le tout ce /opt

root@antony-linux:/home/antony# mv etherpad-lite /opt/etherpad

On installe les dépendances
root@ubuntults:/opt/etherpad# /opt/etherpad/bin/installDeps.sh

A partir d'ici on peut déjà lancer Etherpad.

root@ubuntults:/opt/etherpad# /opt/etherpad/bin/run.sh 
You shouldn't start Etherpad-Lite as root!
Please type 'Etherpad Lite rocks my socks' if you still want to start it as root
Etherpad Lite rocks my socks
Ensure that all dependencies are up to date...
Ensure jQuery is downloaded and up to date...
Ensure prefixfree is downloaded and up to date...
Clear minfified cache...
ensure custom css/js files are created...
start...
[2012-04-20 17:01:09.999] [INFO] console - Your Etherpad Lite git version is 309e3b0
[2012-04-20 17:01:10.002] [INFO] console - Report bugs at https://github.com/Pita/etherpad-lite/issues
[2012-04-20 17:01:10.124] [INFO] console - Server is listening at 0.0.0.0:9001
[2012-04-20 17:01:10.125] [INFO] console -    info  - 'socket.io started'


Accès à l'interface Web:



Si tout est bien installé démarré, on peut acceder à l'interface Web de etherpard sur le port 9001



http://votre_ip:9001


Bon on à installer Etherpad Lite et on l'a lancé.
C'est bien joli, mais déjà on le lance en root ce qui n'est pas jojo et on est obligé de lancer le script à la main...
C'est pas très optimisé...


Optimisations :
Afin de pouvoir bénéficier des fonctions d'import il faut installer abiword
root@ubuntults:~# apt-get install abiword

Il faut modifier le settings.json dans le dossier etherpad pour que ce soit pris en compte
root@ubuntults:~# vi /opt/etherpad/settings.json

///////
   Abiword is needed to enable the import/export of pads*/
 "abiword" : "/usr/bin/abiword",
//////

Afin que se soit utilisable, nous allons créer un script qui permettera de lancer Etherpad en daemon et surtout pas en root....

On crée un user Etherpad et on donne les droits adéquats.
root@ubuntults:~# useradd etherpad

root@ubuntults:~# chown -R etherpad /opt/etherpad


On crée maintenant un script d'init afin de pouvoir lancer Etherpad en tant que daemon
Ce script nous permet de lancer etherpad en tant que etherpad et aussi de pouvoir la lancer au demmarage.

#!/bin/sh

### BEGIN INIT INFO
# Provides: etherpad-lite
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts etherpad lite
# Description: starts etherpad lite using start-stop-daemon
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/var/log/etherpad.log"
EPLITE_DIR="/opt/etherpad"
EPLITE_BIN="bin/run.sh"
USER="etherpad"
GROUP="etherpad"
DESC="Etherpad"
NAME="etherpad"

set -e

. /lib/lsb/init-functions

start() {
echo "Starting $DESC... "

start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true
echo "done"
}

#We need this function to ensure the whole process tree will be killed
killtree() {
local _pid=$1
local _sig=${2-TERM}
for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
killtree ${_child} ${_sig}
done
kill -${_sig} ${_pid}
}

stop() {
echo "Stopping $DESC... "
while test -d /proc/$(cat /var/run/$NAME.pid); do
killtree $(cat /var/run/$NAME.pid) 15
sleep 0.5
done
rm /var/run/$NAME.pid
echo "done"
}

status() {
status_of_proc -p /var/run/$NAME.pid "" "etherpad" && exit 0 || exit $?
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $NAME {start|stop|restart|status}" >&2
exit 1
;;
esac

exit 0

On le rend executable.
root@ubuntults:/var/log# chmod +x /etc/init.d/etherpad

On active le script au démmarage:

root@ubuntults:/var/log# update-rc.d etherpad defaults
 Adding system startup for /etc/init.d/etherpad ...
   /etc/rc0.d/K20etherpad -> ../init.d/etherpad
  /etc/rc1.d/K20etherpad -> ../init.d/etherpad
   /etc/rc6.d/K20etherpad -> ../init.d/etherpad
   /etc/rc2.d/S20etherpad -> ../init.d/etherpad
  /etc/rc3.d/S20etherpad -> ../init.d/etherpad
   /etc/rc4.d/S20etherpad -> ../init.d/etherpad
   /etc/rc5.d/S20etherpad -> ../init.d/etherpad

root@ubuntults:/var/log# /etc/init.d/etherpad start

Notre etherpad est bien lancé

root@ubuntults:/var/log# ps aux | grep etherpad
etherpad 15021  0.0  0.0   4096   628 ?        S    21:39   0:00 /bin/sh /opt/etherpad/bin/run.sh /var/log/etherpad.log
etherpad 15049  1.5  1.2 717752 25192 ?        Sl   21:39   0:09 node server.js /var/log/etherpad.log

L'interface:






  • La fonction Chat




  • Les options


  • La fonction d'import




  • La fonction partage avec QRcode !

  • La fonction replay







Etherpad est un outil simple installer, léger,  et agréable à utiliser.
Bien sur il n'a pas toutes les fonctionnalités de Google Docs ou autres, mais il suffit bien pour la majorité des usages
Surtout le plus important c'est qu'il est installé sur vos serveurs.


Optimisations :

Je repends cet article pour améliorer un peu le système.

De base, les pads dans etherpad-lite sont stockés dans un fichier appelé dirtydb
Il porte bien son nom puisque tout est écrit à la suite en dur, sans aucune optimisations...
Ca va bien pour tester, mais si le nombre de pads devient conséquents ca va vite devenir problématique...

C'est pourquoi j'ai préféré utiliser mysql pour stocker les données...


root@ubuntults#mysql -u root -p
create database `etherpad`;
grant all privileges on `etherpad`.* to 'etherpad'@'localhost' identified by 'etherpad';
Relancer etherpad-lite afin qu'il peuple la base de donnée.

root@ubuntults#ALTER DATABASE `etherpad` CHARACTER SET utf8 COLLATE utf8_bin;
USE `etherpad`;
ALTER TABLE `store` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
Modifier votre settings.json pour utiliser mysql

 // An Example of MySQL Configuration
"dbType" : "mysql",
"dbSettings" : {
"user" : "etherpad",
"host" : "localhost",
"password": "etherpad",
"database": "etherpad"
},

Relancer Etherpad et voilà il utilise mysql.



Interface Web :

L'interface web de base de Etherpad-lite est très basique.
Je recherche activement une interface complète qui perméttrait d'utiliser toutes les fonctions de etherpad-lite

En effet Etherpad-lite dispose dune api bien fournie et on peut aller très loin...

En attendant un developpeur motivé, j'ai du faire 2 ou 3 ligne de php pour avoir quelquechose d'utilisable...
Je ne suis pas du tout developpeur... alors j'ai un peu galéré..

L'interface de base permet juste de creer un pad, ce qui est l'essentiel, mais si on veut modifier un pad déjà crée il fallait connaitre son nom...
ce qui n'est pas très pratique...
Je voulais au moins pouvoir visualiser le nom des pad déjà crées.

Je suis arrivé en bricolant un peu de html, jquery, php à avoir ça...



Je ne mettrai pas le code sur le billet.
Si vous etes interessé par cette petite page web contactez moi.

21 avril 2012 13 commentaires

#Gnu/Linux, Planet Libre

Boot d'un kernel bzImage sur les anciennes versions de Xen < 3.4

nasmaison Boot d'un DomU, sur un Kernel bzimage sur Xen inférieur à 3.4

Juste un petit arcticle, qui me sert d'aide mémoire.

Je suis tombé sur un problème:
J'ai voulut booter un DomU à base de Ubuntu 10.04LTS sur un système de virtualisation Xen 3.1
En l'ocurence il s'agissait d'une Distri SLES10SP4 + Xen 3.1

Je pensais que cela ne poserai aucun problème, j'utilise mon template DomU Ubuntu10.04LTS depuis un petit moment déjà sur des Xen plus récent.

En voulant booter ce fameux domU j'ai eut droit à l'erreur suivante:

Error: (2, 'Invalid kernel', 'xc_dom_find_loader

J'ai cherché un bon moment, c'est comme si le Kernel n'était pas reconnu.
Et en fait je suis tombé sur cette page: https://www.globalways.net/blog/archives/76-Extracting-bzImage-from-vmlinuz.html

Il explique que Les anciennes versions de Xen ne supporte pas les nouveaux formats d'image du noyau. Wikipedia affirme que "Aucun outil spécifique existe pour décompresser le fichier bzImage».

En effet sous Ubuntu depuis la 9.10, le kernel n'est plus un simple fichier gzipé mais un bzImage.

root@ubuntults:/boot# file vmlinuz-2.6.32-37-server
vmlinuz-2.6.32-37-server: Linux kernel x86 boot executable bzImage, version 2.6.32-37-server (buildd@allspi, RO-rootFS, root_dev 0x6801, swap_dev 0x3, Normal VGA


On voit bien que le Kernel est un bzImage.

On sait que ce fameux bzimage commence par une entête spécifique. et que après il y a l'entête de gzip qui est:

ID1 0x1f
ID2 0x8b
CM 0x08 (Compression Method deflate=)
FLG 0x00 (no extra fields)


Le but: supprimer tout ce qui se trouve avant cette entête afin d'avoir un kernel basique.

Pour cela, 2 méthodes:


Celle décrite dans la page web, grace à binoffset::

L'auteur à développer une commande qui permet de trouver ce fameux offset et d'en donner son emplacement en octet

    La commande est présente ici:
    http://svn.opentom.org/opentom/trunk/linux-2.6/scripts/binoffset.c

    Après l'avoir compilé.

    gcc -o binoffset binoffset.c
    On peut utiliser la commande dd:

    root@ubuntults:/boot# dd if=vmlinuz-2.6.32-37-server bs=1 skip=$(/root/binoffset vmlinuz-2.6.32-37-server 0x1f 0x8b 0x08 0x0) of=vmlinuz-2.6.32-37-server-UNPACK.gz

    filesize: 4110432

    number of pattern matches = 1

    14441

    4095991+0 records in

    4095991+0 records out

    4095991 bytes (4.1 MB) copied, 15.2127 s, 269 kB/s


    On lit le kernel en bs de 1octet on skeep 14441 octets ( qui correspondent au debut du fichier jusqu'a ce fameux offset ) autrement dit on aura supprimer tout l'entete du bzimage et on aura un kernel gzip classique.


    root@ubuntults:/boot# file vmlinuz-2.6.32-37-server-UNPACK.gz

    vmlinuz-2.6.32-37-server-UNPACK.gz: gzip compressed data, from Unix,
    last modified: Fri Dec  2 22:02:53 2011, max compression

    root@ubuntults:/boot# gunzip vmlinuz-2.6.32-37-server-UNPACK.gz



    gzip: vmlinuz-2.6.32-37-server-UNPACK.gz: decompression OK, trailing
    garbage ignored

    root@ubuntults:/boot# file vmlinuz-2.6.32-37-server-UNPACK

    vmlinuz-2.6.32-37-server-UNPACK: ELF 64-bit LSB executable, x86-64,
    version 1 (SYSV), statically linked, stripped

    Une fois dézippé on voit bien qu'on a kernel classique.
    D'ailleurs ce kernel est reconnu aussi bien gzipé ou pas.



    Méthode en bash (moins sure):
    Ce qui m'embête dans la première méthode, c'est qu'il faut avoir sous la main le fameux binoffset.c et le compiler...
    J'aurais aimé faire cela avec des commandes système basiques sans rien avoir à installer...

    Après maintes commande j'ai fait ce que je voulais avec la commande suivante...

    root@ubuntults:/boot# a=$(cat vmlinuz-2.6.32-37-server | xxd -g1 | grep "1f 8b 08 00" | awk -F":" '{print $1}' | sed 's/^[0\t]*//'); b=$(cat vmlinuz-2.6.32-37-server | xxd -g1 | grep "1f 8b 08 00" | awk -F":" '{print $2}' | awk -F"1f 8b 08 00" '{print $1}'| awk '{x=x+NF}END{print x}'); c=$(( $a + $b )); echo Hexa=$c ; echo Decimal=$((0x$c))

    Hexa=3869

    Decimal=14441

A coup de grep et d'awk et de sed, j'arrive à trouver le nombre d'octet à effacer sur le fichier.

le même dd:

dd if=vmlinuz-2.6.32-37-server bs=1 skip=14441 of=vmlinuz-2.6.32-37-server-UNPACK2.gz

Je n'ai as testé en profondeur, cette commande ne fonctionne pas forcément partout à mon avis.

30 janvier 2012 Aucun commentaire

#Non classé

Installation d'une solution de visio conférence Open Source: BigBlueButton

nasmaison Installation d'une solution de visio conférence Open Source: BigBlueButton:

J'ai eut besoin récemment pour les associations pour lesquelles je suis un peu sysadmin, de mettre en place une solution de visio conférence.
Plutôt que de me ruer direct sur les solutions propriétaires, j'ai un peu cherché et je suis tombé sur BigBlueButton !




Cette solution ma séduite, elle allie simplicité, performance, et elle est surtout OpenSource.

BigBlueButton est construit à base des logiciels libres suivants :

  • Asterisk
  • FreeSwitch
  • Flex SDK
  • Ghostscript
  • MySQL
  • Red5
  • Open Office
  • Grails
  • nginx
  • swf Tools
  • Tomcat
  • Asterisk Java
  • Xuggler
  • ActiveMQ
  • Image Magick


Plateforme Materielle :

Comme d'habitude, j'ai monté mon prototype sur ma plateforme de virtualisation:

Dedibox Pro HP
Plateforme logicielle hyperviseur:
  • Dom0 Opensuse 12.1 X86_64 Xen 4.1
Plateforme Virtuelle:

  • DomU Xen Ubuntu 10.04 X86_64 Paravirtualisé
  • 2 vcpus 
  • 2048 Mo de Ram
  • HDD 16GB


Installation:

Pour commencer j'ai mis à jour totalement mon DomU ubuntu 10.04; mon template avait quelques maj de retard :)

  • Mise à niveau du DomU

root@ubuntults:/# apt-get update; apt-get upgrade

root@ubuntults:/# apt-get install linux-headers-server linux-image-server linux-server

root@ubuntults:/# reboot


  • Installation de Ruby ( a bien installer avant bbb!)
root@ubuntults:/# apt-get install zlib1g-dev libssl-dev libreadline5-dev libyaml-dev build-essential bison checkinstall libffi5 gcc checkinstall libreadline5 libyaml-0-2

Creer un script install-ruby.sh

#!/bin/bash
cd
/tmp
wget http
://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz
tar xvzf ruby
-1.9.2-p290.tar.gz
cd ruby
-1.9.2-p290
./configure --prefix=/usr\
            --program-suffix=1.9.2\
            --with-ruby-version=1.9.2\
            --disable-install-doc
make
sudo checkinstall -D -y\
                  --fstrans=no\
                  --nodoc\
                  --pkgname='ruby1.9.2'\
                  --pkgversion='1.9.2-p290'\
                  --provides='ruby'\
                  --requires='libc6,libffi5,libgdbm3,libncurses5,libreadline5,openssl,libyaml-0-2,zlib1g'\
                  --maintainer=brendan.ribera@gmail.com
sudo update-alternatives --install /
usr/bin/ruby ruby /usr/bin/ruby1.9.2 500\
                       
--slave   /usr/bin/ri   ri   /usr/bin/ri1.9.2\
                       
--slave   /usr/bin/irb  irb  /usr/bin/irb1.9.2\
                       
--slave   /usr/bin/gem  gem  /usr/bin/gem1.9.2\
                       
--slave   /usr/bin/erb  erb  /usr/bin/erb1.9.2\
                       
--slave   /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.2
Executez le

chmod +x install-ruby.sh
./install-ruby.sh

Vérifiez la version de ruby

$ ruby -v
ruby
1.9.2p290 (2011-07-09 revision 32553)

$ gem -v
1.3.7

$ sudo gem install hello
Successfully installed hello-0.0.1
1 gem installed
Installing ri documentation for hello-0.0.1...
Installing RDoc documentation for hello-0.0.1...

  • Installation de BigBlueButton
On ajoute le dépot de BBB dans les sources.list d'Ubuntu
    # Add the BigBlueButton key
    wget http
    ://ubuntu.bigbluebutton.org/bigbluebutton.asc -O- | sudo apt-key add -

    # Add the BigBlueButton repository URL and ensure the multiverse is enabled
    echo
    "deb http://ubuntu.bigbluebutton.org/lucid_dev_08/ bigbluebutton-lucid main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
    echo
    "deb http://us.archive.ubuntu.com/ubuntu/ lucid multiverse" | sudo tee -a /etc/apt/sources.list

On met à jour nos dépots et on install BBB
L'installtion va aussi installer FreeSwitch qui gère l'audio de BBB


root@ubuntults:~# apt-get update ; apt-get install bigbluebutton

Vous devriez avoir ceci:

The following NEW packages will be installed:

  authbind bbb-apps bbb-apps-deskshare bbb-apps-sip bbb-apps-video
bbb-client bbb-common bbb-config bbb-freeswitch bbb-freeswitch-config
bbb-openoffice-headless bbb-playback-slides

  bbb-record-core bbb-web bigbluebutton ca-certificates-java
cabextract comerr-dev default-jre default-jre-headless defoma
dictionaries-common esound-clients esound-common fontconfig

  fontconfig-config ghostscript gsfonts hicolor-icon-theme
hunspell-en-us icedtea-6-jre-cacao imagemagick java-common jsvc
krb5-multidev libaa1 libaccess-bridge-java

  libaccess-bridge-java-jni libao2 libasound2 libatk1.0-0
libatk1.0-data libaudio2 libaudiofile0 libavahi-client3
libavahi-common-data libavahi-common3 libavcodec52 libavformat52

  libavutil49 libcaca0 libcairo2 libcdparanoia0 libcolamd2.7.1
libcommons-collections-java libcommons-daemon-java libcommons-dbcp-java
libcommons-pool-java libcups2 libcupsimage2 libcurl3

  libcurl4-openssl-dev libdatrie1 libdirectfb-1.2-0
libdjvulibre-text libdjvulibre21 libdvdnav4 libdvdread4 libecj-java
libenca0 libesd0 libexpat1-dev libflac8 libfontconfig1

  libfontconfig1-dev libfontenc1 libfreetype6-dev libgd2-noxpm
libgif4 libgl1-mesa-dri libgl1-mesa-glx libgraphite3 libgraphviz4
libgs8 libgsm1 libgssrpc4 libgstreamer-plugins-base0.10-0

  libgstreamer0.10-0 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common
libhsqldb-java libhunspell-1.2-0 libhyphen0 libice6 libicu42
libidn11-dev libilmbase6 libjack0 libjasper1 libjpeg62

  libjpeg62-dev libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4
libkrb5-dev liblcms1 libldap2-dev liblircclient0 libltdl7 liblzo2-2
libmagickcore2 libmagickcore2-extra libmagickwand2

  libmp3lame0 libmpcdec3 libneon27-gnutls libnspr4-0d libnss3-1d
libogg0 liboil0.3 libopenal1 libopenexr6 libpango1.0-0
libpango1.0-common libpaper-utils libpaper1 libpixman-1-0

  libpostproc51 libpulse0 libraptor1 librasqal2 librdf0
libsamplerate0 libschroedinger-1.0-0 libsdl1.2debian
libsdl1.2debian-alsa libservlet2.5-java libsm6 libsmbclient libsndfile1

  libsox-fmt-alsa libsox-fmt-base libsox1a libspeex1 libsvga1
libswscale0 libsysfs2 libtalloc2 libthai-data libthai0 libtheora0
libtiff4 libtomcat6-java libts-0.0-0 libvorbis0a

  libvorbisenc2 libvorbisfile3 libwavpack1 libwbclient0
libwmf0.2-7 libwpd8c2a libwpg-0.1-1 libwps-0.1-1 libx264-85 libx86-1
libxaw7 libxcb-render-util0 libxcb-render0 libxcomposite1

  libxcursor1 libxdamage1 libxfixes3 libxfont1 libxft2 libxi6
libxinerama1 libxml2-dev libxmu6 libxpm4 libxrandr2 libxrender1
libxslt1-dev libxslt1.1 libxt6 libxtst6 libxv1 libxvidcore4

  libxvmc1 libxxf86dga1 libxxf86vm1 lp-solve mencoder mplayer
nginx odbcinst odbcinst1debian1 openjdk-6-jre openjdk-6-jre-headless
openjdk-6-jre-lib openoffice.org openoffice.org-base

  openoffice.org-base-core openoffice.org-calc
openoffice.org-common openoffice.org-core openoffice.org-draw
openoffice.org-emailmerge openoffice.org-filter-binfilter

  openoffice.org-filter-mobiledev openoffice.org-impress
openoffice.org-java-common openoffice.org-math
openoffice.org-officebean openoffice.org-report-builder-bin

  openoffice.org-style-galaxy openoffice.org-writer pkg-config
psfontmgr python-software-properties python-uno red5 redis-server-2.2.4
shared-mime-info sox swftools-0.9.1 tomcat6

  tomcat6-common tsconf ttf-dejavu ttf-dejavu-core
ttf-dejavu-extra ttf-liberation ttf-mscorefonts-installer
ttf-opensymbol ttf-sil-gentium ttf-sil-gentium-basic tzdata-java

  unattended-upgrades unixodbc uno-libs3 unzip ure vorbis-tools
x-ttcidfont-conf x11-common xfonts-encodings xfonts-mathml xfonts-utils
zip

0 upgraded, 250 newly installed, 0 to remove and 0 not upgraded.

1 not fully installed or removed.

Need to get 346MB of archives.

After this operation, 882MB of additional disk space will be used.

Do you want to continue [Y/n]?

Faites 'y' est c'est partie pour l'install

Enfin vous pouvez installer la page de DEMO de BBB vous permettant d'avoir une page d'acceuil.

sudo apt-get install bbb-demo

Pour finir faites un restart de BBB

 sudo bbb-conf --clean
 sudo bbb
-conf --check


Accès à l'interface Web:



Si tout est bien installé démarré, on peut acceder à l'interface Web de BBB:




http://votre_ip:80

Attention j'ai galéré un moment, si vous tombez systématiquement sur la magnifique pas de NginX: "welcome to nginx!!" , c'est que votre fichier hosts est mauvais.
Il faut que dans votre fichier host, le système sache résoudre, le fqdn avec lequel on l'attaque.

Par exemple j'y accèdes sir http://info16.fr, donc dans mon fichier hosts j'ai:

root@ubuntults:~# cat /etc/hosts
127.0.0.1    localhost
192.168.1.3    info16.fr ubuntults



Une fois bien configuré vous devriez arriver sur la page de demo de votre serveur bbb



Entrez votre pseudo et profitez de bbb



Des sites vous expliquerons bien mieux que moi, l'utilisation de BBB.

Les possibilités sont entre autres:

  • Chat
  • Conférence Audio
  • Conférence Vidéo
  • Partage de Slide et interaction
  • Partage de Bureau



Optimisations :

A la première utilisation, ce qui m'a choqué, c'est que la vidéo est vraiment très moche...
En local c'est joli, mais de l'autre coté du tuyeau beaucoup moins...

Voiçi un aperçu:


Consommation de bande passante sur un client en cam to cam avec une seule personne.



On peut voir que sur un poste client: lors d'une conversation cam to cam on envoit et reçoit environ 250Kb/s
On s'apercoit aussi que plus on bouge devant la caméra plus le débit augmente.

C'est assez bien, il faudrait rester dans ces consommations là mais avec une qualité vidéo meilleure!!

Pour cela j'ai essayé de gratter un peu dans les configurations. le fichier
qui nous interesse est : /var/www/bigbluebutton/client/conf/config.xml

Et plus particulièrement le module: VideoconfModule

Voiçi les valeur par défaut:

 <module name="VideoconfModule"
url="VideoconfModule.swf?v=3861"

                       
uri="rtmp://info16.fr/video"

                       
dependsOn="ViewersModule"

                       
videoQuality="70"

                       
presenterShareOnly="false"

                       
resolutions="320x240,640x480,1280x720"

                       
autoStart="false"

                       
showButton="true"

                       
showCloseButton="true"

                       
publishWindowVisible="true"

                       
viewerWindowMaxed="false"

                       
viewerWindowLocation="top"

                       
camKeyFrameInterval="5"

                       
camModeFps="15"

                       
camQualityBandwidth="0"

                       
camQualityPicture="50"

                       
enableH264="false"

                       
h264Level="2.1"

                       
h264Profile="main"                     


              
/>



Pour ma part je l'ai un peu modifié:


<module name="VideoconfModule" url="VideoconfModule.swf?v=3861" 

                       
uri="rtmp://info16.fr/video"

                       
dependsOn="ViewersModule"

                       
videoQuality="100"

                       
presenterShareOnly="false"

                       
resolutions="320x240,640x480"

                       
autoStart="false"

                       
showButton="true"

                       
showCloseButton="true"

                       
publishWindowVisible="true"

                       
viewerWindowMaxed="false"

                       
viewerWindowLocation="top"

                       
camKeyFrameInterval="30"

                       
camModeFps="10"

                       
camQualityBandwidth="0"

                       
camQualityPicture="90"

                       
enableH264="false"

                       
h264Level="2.1"

                       
h264Profile="main"                     


              
/>

J'ai modifié 4 paramètres:

videoQuality="100" ##En gros j'ai mis la qualité d'image a fond
resolutions="320x240,640x480"  ##J'ai supprimé la résolution 1280x720 que personne n'utilisera
camKeyFrameInterval="30"  ##c'est interessant, il va permettre de consommer moins de bande passante en mouvementgrace à la prédiction de séquence d'image
camModeFps="10" ## 10FPS c'est bien suffisant et sa consommera moins
camQualityPicture="90" ## C'est la qu se joue vraiment la qualité de l'image

Résultats après reboot de BBB



C'est quand même autre chose :)

Maintenant les débits:



La consommation est moindre, environ 200Kb/s dans les mêmes conditions que tout à l'heure.
Par contre l'image est sans commune mesure.
Et surtout le paramètre camKeyFrameInterval fonctionne très bien, les mouvements ont très peu d'incidence sur la consommation de bp.

Bon il reste pas mal de boulot. notemment la mise en place de Moodle pour permettre de planifier des conférences.



30 janvier 2012 7 commentaires