Catégories
Open-source Planet-libre Reseau Video Web

Vidéo embarquée depuis un véhicule grâce à GStreamer


Ce billet invité a été rédigé par Damien Archenault et Clément Brunel. Merci à eux de nous faire partager leur expérience passionnante de l’utilisation de GStreamer !  (Nicolargo)

Au cours de la dernière année scolaire, deux jeunes étudiants de l’Ecole Supérieure des Sciences et des Technologies de L’Ingénieur de Nancy (ESSTIN), ont élaboré une vidéo embarquée fonctionnant avec GStreamer. Ils ont réalisé ce projet pour leur nouveau véhicule participant au Shell Eco-marathon.

Q’est ce que le Shell Eco-marathon ?

Il s’agit d’une compétition qui depuis 27 ans réunit diverses écoles d’ingénieurs, universités et établissements de l’enseignement supérieur européen pour une course à l’économie d’énergie. Depuis 12 ans, l’ESSTIN, par le biais de l’Eco Motion Team by ESSTIN (qui est le nom de l’équipe de l’école), y engage des véhicules fonctionnant avec différentes énergies.

Le principe de la compétition du Shell Eco-marathon est de parcourir un certain nombre de kilomètres en un temps limité, le tout en consommant le moins d’énergie possible.

L’équipe (composée de 20 élèves de 3ème année, 7 de 4ème année et 2 de 5ème année, encadrés par 7 tuteurs) a participé cette année à la 28ème édition de la course qui s’est déroulée du 26 au 28 mai 2011, sur le circuit de l’EuroSpeedway à Lausitz en Allemagne.

Elle y a fait concourir son tout nouveau prototype Vir’Volt intégrant toutes ses innovations technologiques, dont la vidéo embarquée que vous pouvez voir sur le sommet du véhicule:

Ce projet de vidéo embarquée est en effet tout nouveau, il a été réalisé cette année par Damien Archenault et Clément Brunel qui sont membres de l’équipe, pour répondre à la demande des médias et des sponsors d’avoir des images embarquées en temps réel. Ce qui a pu être réalisé en rediffusant les images sur internet.

Matériel utilisé

Nous avons travaillé cette année avec la société Eukrea qui nous a fournis une carte de développement GNU/Linux embarqué fonctionnant avec un processeur IMX27 et fonctionnant avec une version de linux allégée et OpenEmbedded qui permet de configurer la distribution.

GStreamer et RTSP

Nous avons d’abord essayé d’utiliser un serveur RTSP qui correspondait parfaitement à l’utilisation que nous voulions faire, à savoir diffuser un flux en streaming et profiter des options de lecture standards (lire, pause, stop, déplacement temporel).

Nous allons donc expliquer son installation.On ne peut pas utiliser le gestionnaire de paquet comme sur un système GNU/Linux standard. Il est nécessaire de cross-compiler les fichiers pour qu’ils soient valides pour l’architecture de la carte.

Pour y parvenir, nous utilisons OpenEmbedded qui facilite grandement les choses en proposant lui aussi une liste des paquets disponibles une fois l’environnement de développement correctement installé.

Pour se faire, utilisez la commande:

bitbake gst-rtsp

Un fichier .ipk sera créé et devra être transféré (par tftp et minicom) puis installé via les commandes:

tftp -gr « nom du fichier à télécharger sur la carte » « ip de l’ordinateur cible »

opkg install nomdupaquet.ipk

Une fois installé, vous pouvez utiliser votre serveur en configurant le fichier comme sur ce précédent article du blog et en l’adaptant aux modules spécifiques de l’embarqué. (Utilisez un gst-inspect sur la carte pour les découvrir !).

Vous verrez que mfw_v4lsrc, mfw_vpuencoder font leur apparition et servent à récupérer le flux de la caméra et à l’encoder de façon « plus économe » en ressource pour le « petit » processeur de la carte.

Je ne détaillerai pas plus pour le serveur RTSP, car nous n’avons malheureusement jamais réussi à le faire fonctionner, une erreur survenant lorsqu’un client venait se connecter au serveur.

Passage en GStreamer UDP

Nous nous sommes donc rabattu sur le protocole UDP (avec une couche RTP) pour transférer notre flux vidéo, qui a au moins pour avantage d’optimiser la bande passante, car moins d’informations de sécurité et de contrôle sont envoyées. De plus, en cas de perte de paquet, ou d’arrivée dans un mauvais ordre, les perturbations pour le visiteur sont souvent minimes grâce à la persistance rétinienne.

Pour faire fonctionner le protocole UDP qui est un protocole de la couche réseau (voir modèle OSI) et non de la couche session comme RTSP, nous avons besoin des paquets gst-plugin-rtp, gst-plugin-udp, libgstnetbuffer et gst-plugin-videoscale à installer via opkg install comme précédemment.

Au niveau de l’implantation de ce protocole, il y a donc deux pipelines Gstreamer, une sur la carte (véhicule) et une autre sur le PC client qui va recevoir et afficher le flux vidéo.

Celui de la carte :

La première ligne, pointe vers le client où nous voulons envoyer les images. Dans cet exemple, sur un serveur Dyndns dont nous verrons l’utilité un peu plus loin.

La deuxième commande, la plus complexe, est celle de l’initialisation du flux :

gst-launch-0.10 mfw_v4lsrc capture-width=320 capture-height=240 ! mfw_vpuencoder width=320 height=240 codec-type=std_mpeg4 framerate=13 bitrate=250 gopsize=8 ! rtpmp4vpay send-config=true ! udpsink host=$HOST port=5000

Voici le détail:

  • gst-launch-0.10 : c’est la commande de base, à laquelle on va ajouter des paramètres. (ajouter –v) pour voir le détail de la commande qui s’exécute et avoir la « config » pour le client
  • mfw_v4lsrc : elle permet de sélectionner la caméra comme source du flux
  • — capture-width=320 : Largeur de la fenêtre capturée
  • — capture-height=240 : Hauteur de la fenêtre capturée
  • mfw_vpuencoder : C’est ce plugin qui va nous permettre d’encoder le flux
  • — width=320 : largeur de la fenêtre encodée
  • — height=240 : hauteur de la fenêtre encodée
  • — codec-type=std_mpeg4 : le codec utilisé est le codec mpeg4, ce n’est pas le meilleur codec de compression qui est h264, mais nous avions des erreurs avec ce dernier quand le client venait à se connecter.
  • — framerate=13 : Nombre d’image par seconde transmise
  • — bitrate=250 : quantité de donnée transmises. Il doit être en adéquation avec le type de réseau utilisé : réseau local filaire, réseau wifi, réseau mobile (EDGE, 3G et 3G+ ayant un débit très différent les uns des autres).
  • — gopsize=8 ! (group of picture) représente le nombre d’image envoyé simultanément sur le réseau, ce nom est proche de la moitié du framerate, et favorise la compression.
  • rtpmp4vpay : regroupe les données dans des paquets RTP
  • — send-config=true : envoie la configuration du canal au client. Utile pour récupérer la clé pour synchroniser le client (voir page suivante)
  • udpsink host=$HOST : adresse à laquelle on veut envoyer les données
  • — port=5000 : le port de la liaison entre les deux hôtes.

Celui du client :

Cette commande à l’air compliqué, mais elle est en fait plus simple que la commande de la carte.

gst-launch-0.10 -v –gst-debug=2 udpsrc port=5000 caps= »application/x-rtp, media=(string)video,clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)4, config=(string)000001b004000001b59113000001000000012000c888800f514043c14103, payload=(int)96,ssrc=(uint)1960725087, clock-base=(uint)849638580, seqnum-base=(uint)55554″ ! gstrtpjitterbuffer latency=3000 ! rtpmp4vdepay ! ffdec_mpeg4 ! autovideosink

Détail:

  • gst-launch-0.10 -v –gst-debug=2 : on lance la commande en debug, pour avoir toutes les infos en cas de dysfonctionnement.
  • udpsrc port=5000 port sur lequel on reçoit les données, il doit correspondre à celui de la commande de la carte.
  • — caps= »application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)4, config=(string)000001b004000001b59113000001000000012000c888800f514043c14103, payload=(int)96, ssrc=(uint)1960725087, clock-base=(uint)849638580, seqnum-base=(uint)55554″ : il s’agit ici de la clé qui caractérise complètement le flux entrant. On la trouve en appliquant le –v sur la commande de la carte, puis en faisant un copier coller de la dernière ligne notée « caps »
  • gstrtpjitterbuffer latency=3000 : il s’agit d’un buffer de 3secondes, non obligatoire, mais améliorant fortement la qualité et les aléas de connexion.
  • rtpmp4vdepay : extraire les données des paquets RTP
  • ffdec_mpeg4 : décode les données qui sont en mpeg4
  • autovideosink : affiche le flux sur l’écran.

Une fois ces deux pipelines initialisés correctement (le serveur puis le client) on peut ensuite récupérer l’ordinateur sur un ordinateur quelconque et cela grâce à l’utilisation d’un serveur DNS comme Dyndns.

L’ordinateur chargé de récupérer les images doit juste être synchronisé avec le serveur DNS à l’aide d’un client comme inadyn ou ddclient, dont le fichier de configuration est le suivant :

## ddclient configuration file temps entre chaque rafraichissement de l’ip

daemon=60

# check every 60 seconds

syslog=yes

# log update msgs to syslog

mail-failure=########### #

pid=/var/run/ddclient.pid

# record PID in file.

## Detect IP with our CheckIP server

use=web, web=checkip.dyndns.com/, web-skip=’IP Address’

## DynDNS username and password here

login=#####

password=#######

## Default options

protocol=dyndns2

server=members.dyndns.org

## Dynamic DNS hosts

NOMDEVOTREDNS.dyndns.org

Diffusion du flux sur Internet

Enfin, pour rediffuser en direct sur internet, nous avons utilisé deux outils formidables que sont webcamstudio qui permet de transformer un flux distant en un flux webcam et le site livestream.com qui permet justement de diffuser au monde entier les images d’une webcam, ou dans notre cas de notre vidéo embarquée.

Voici le résultat tel que les Internautes pouvaient le voir:

Conclusion

Le développement d’un tel projet prend beaucoup de temps car est malheureusement assez peu documenté, mais vous partez déjà avec une bonne piste grâce à cet article.

Merci pour votre lecture, et merci à Nicolargo (NDLR: mais c’est avec plaisir !) qui nous permet de publier via son blog.

Catégories
Open-source Planet-libre Reseau Web

NAT et PAT: c’est quoi donc ?

Sur ce blog, j’aborde régulièrement des sujets technologiques en relation avec les réseaux informatiques. Une des question récurrente concerne la translation d’adresses (et de ports) dans les réseaux IPv4. Nous allons donc essayer dans ce billet d’expliquer le fonctionnement des mécanismes NAT (« Network Address Translation » / Translation d’adresses) et PAT (« Port Address Translation » / Translation de port).

Pourquoi ?

Toutes les machines connectées (PCs, serveurs, imprimantes réseau, smarthphones, télévisions multimédias…) disposent d’une adresse (« adresse IP ») permettant de l’identifier sur le réseau. Il existe deux sortes d’adresses: les privées et les publiques.

Une adresse privée est seulement valable sur un réseau privé et ne peut donc pas être utilisé pour  communiquer sur un réseau public comme Internet. En effet, Internet n’accepte de véhiculer que des adresses publiques. Le principal intérêt de l’utilisation d’adresses IP privées est de disposer d’un grand nombre d’adresses pour bâtir ses réseaux privées (entreprises, domicile…) et ainsi de palier au cruel manque d’adresses IP publiques du réseau IP version 4.

Les plages d’adresses IP v4 privées sont les suivantes (source Wikipédia):

La version 6 permettra de résoudre en partie ce problème en proposant pas moins de « 667 millions de milliards d’adresses IP disponibles par mm2 de la surface de la Terre » (source Wikipédia).

Le déploiement d’IP v6 n’étant pas encore finalisé (ou même commencé…). Il est indispensable d’utiliser les technologies de NAT et de PAT pour permettre aux machines disposant d’adresses privées de pourvoir communiquer sur Internet.

Comment ?

NAT

On active le mécanisme de NAT sur les routeurs faisant le lien entre les réseaux privées et publics. Le principe général est de remplacer l’adresse IP source privée de la machine par l’adresse IP publique du routeur.

L’exemple le plus répandu est celui d’un PC client domestique (brave bête) voulant surfer sur Internet (vers un serveur Web par exemple) à travers une Box (routeur Freebox, Livebox, (+*)box…) disposant d’une fonction de NAT dynamique.

Le PC client va émettre un paquet sur sont réseau avec comme adresse source son adresse privée. La Box (qui active par défaut le mécanisme NAT dynamique), va remplacer dans le paquet l’adresse privée du PC par son adresse publique. Elle va en parallèle de cela garde en mémoire l’association (Adresse IP privée du PC > Adresse IP publique du serveur / Port client-serveur). Le serveur va donc recevoir par Internet ce paquet modifié auquel il va répondre avec un paquet de retour ayant pour adresse de destination l’adresse IP publique de la Box. Celle-ci va recevoir le paquet et finalement remplacer l’adresse IP publique de la Box par l’adresse privée du PC.

Il est donc possible avec une seule adresse IP publique de faire communiquer simultanément sur Internet plusieurs machines d’adresses IP privées.

Exemple de configuration du NAT sur une FreeBox:

Le NAT est activé par défaut sur les Freebox. Pour vérifier que votre Freebox est bien en « mode routé » (et donc avec le NAT activé), il faut se rendre dans l’interface d’administration (Configurer mon routeur FreeBox). Puis vérifier que l’option est bien activée.

Exemple de configuration du NAT sur un routeur GNU/Linux:

Voici un exemple de configuration d’un PC routeur sous GNU/Linux placé derrière votre Box et permettant de remplacer la fonction NAT de cette dernière (qu’il faudra configurer en « mode bridgé »).

On part sur l’hypothèse ou votre PC dispose:

  • d’une interface eth0 dans le plan d’adressage IP privée (vers le LAN)
  • d’une interface eth1 dans le plan d’adressage IP public de votre FAI (vers la Box)
  • d’une configuration IP correcte (serveur DNS, passerelle par défaut…)

Il faut donc saisir les lignes suivantes dans un script shell lancé au démarrage de votre machine:

iptables –table nat –flush

iptables –table nat –delete-chain

iptables –table nat –append POSTROUTING –out-interface eth1 -j MASQUERADE

iptables –append FORWARD –in-interface eth0 -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forward

service iptables restart

PAT

La lecture du chapitre précédant à mis en évidence le fait que l’on ne peut pas utiliser une adresse privée pour se déplacer sur Internet. Ainsi, si vous souhaitez héberger un serveur dans un réseau disposant d’une plage d’adresse IP privée, il va falloir ruser. En effet, dans ce cas précis, le NAT n’est d’aucune utilité car il  ne fonctionne que pour les sessions à l’initiative des machines se trouvant sur le réseau privée. Dans notre cas, nous avons besoin d’un mécanisme permettant de rendre visible une machine depuis Internet. C’est le PAT qui va nous offrir cette fonctionnalités.

Prenons l’exemple d’une personne voulant héberger son serveur Web (en écoute sur le port TCP/80) chez lui, derrière sa Box.

Le client va envoyer une requête HTTP vers l’adresse IP publique de la Box (via la résolution DNS). La Box, préalablement configurée avec une redirection du port 80 vers le serveur (PAT), va remplacer l’adresse destination du paquet (l’adresse publique de la Box) par celle du serveur (l’adresse privée du serveur). Le serveur va ensuite répondre en utilisant son adresse IP privée comme adresse source. La Box va ensuite remplacer celle-ci par son adresse IP publique.

Le PC client aura donc l’impression que le serveur Web est hébergé par votre Box.

Exemple de configuration du PAT sur une FreeBox:

Il faut se rendre dans l’interface d’administration de la FreeBox (Configurer mon routeur FreeBox) puis saisir une nouvelle ligne dans le formulaire « Redirection des ports ». Pour reprendre l’exemple ci-dessus et en partant sur l’hypothèse ou votre serveur à l’adresse IP privée 192.168.0.1, il faudra saisir la ligne suivante:

Exemple de configuration du PAT sur un routeur GNU/Linux:

Voici un exemple de configuration d’un PC routeur sous GNU/Linux placé derrière votre Box et permettant de remplacer la fonction PAT de cette dernière (qu’il faudra configurer en « mode bridgé »).

On part sur l’hypothèse ou votre PC dispose:

  • d’une interface eth0 dans le plan d’adressage IP privée (vers le LAN)
  • d’une interface eth1 dans le plan d’adressage IP public de votre FAI (vers la Box)
  • d’une configuration IP correcte (serveur DNS, passerelle par défaut…)

Il faut donc saisir les lignes suivantes dans un script shell lancé au démarrage de votre machine:

iptables –table nat –flush

iptables –table nat –delete-chain

iptables -t nat -A PREROUTING -p tcp –dport 80 -p DNAT –to-destination 192.168.0.1

echo 1 > /proc/sys/net/ipv4/ip_forward

service iptables restart

Nous voici arrivés à la fin de ce billet, n’hésitez pas à poser des questions complémentaires dans les commentaires ci-dessous.

Catégories
Open-source Planet-libre Reseau Systeme

Une souris et un clavier pour plusieurs ordinateurs

Le meuble de mon bureau manque un peu de place… Par surcroît de matériel bureautique. En effet, j’utilise deux PC, le premier pour les aspects bureautique/développement et un second pour la supervision de mon réseau.

Chacun dispose d’un clavier, d’une souris et d’un écran dédié. Comme je dois garder un oeil sur le l’écran de supervision, il n’est pas possible de mutualiser les deux écrans. Par contre une solution technique existe pour utiliser une seule souris et un seul clavier pour mes deux PC: Synergy.

La configuration de Synergy peut vite devenir compliqué… Heureusement il existe un petit logiciel bien pratique pour configurer simplement la bête: QuickSynergy.

Description de ma configuration

  • PC 1 (sous Debian 6.0 Squeeze) avec un clavier et une souris
  • PC 2 (sous Ubuntu 10.04 LTS) sans souris ni clavier (enfin une fois la configuration de Synergy faite :))
  • L’écran du PC 2 étant à gauche nde l’écran du PC 1

Configuration du serveur Synergy

Le serveur doit être installé sur la machine ou la souris et le clavier seront connectés. Pour installer le serveur, il suffit de saisir la commande suivante dans un terminal (en root):

apt-get install quicksynergy

Puis on lance QuickSynergy à partir du menu Applications > Accessoires. Dans l’onglet Share, on entre dans le champs « Left » le nom du PC n°2: PC_2 (attention, QuickSynergy n’aime pas les espaces):

Puis on lance le serveur en cliquant sur Execute.

Configuration d’un client Synergy

Le client (qui est en fait le même programme que le serveur) doit être installé sur toutes les machines ou l’on souhaite enlever la souris et le clavier. Pour installer le client, il suffit de saisir la commande suivante dans un terminal (en root):

apt-get install quicksynergy

Puis on lance QuickSynergy à partir du menu Applications > Accessoires. Dans l’onglet Use, on entre l‘adresse IP du serveur dans le premier champs puis le nom de l’écran comme configuré sur le serveur: PC_2 (attention, QuickSynergy n’aime pas les espaces):

Puis on lance le serveur en cliquant sur Execute.

A partir de ce moment là, la magie commence: vous contrôler vos deux PC avec le même couple souris/clavier et vous passez d’un écran à l’autre en déplaçant la souris sur les bord de l’écran !

A noter que QuickSynergy existe également sous Mac OS X mais pas encore sous Windows…

Catégories
Open-source Planet-libre Systeme Web

Installer et maintenir à jour Chromium sur Mac OS X

Cela faisait longtemps que je n’avais pas écrit un billet sur Mac OS X, il faut avouer que le MBP de la maison est souvent dans les mains de ma compagne. J’ai donc profité de ce week-end en solo pour jouer un petit peu avec la bête.

Après 5 minutes d’utilisations de Safari, j’ai décidé d’installer Chromium, mon navigateur dans le monde GNU/Linux. C’est alors que je me suis rendu compte que Google ne faisait pas une grosse pub pour ce navigateur libre sous Mac OS X, il préfère mettre en avant Google Chrome, on peut comprendre pourquoi…

J’ai donc décidé de regarder du coté des scripts d’installation et après quelques tests infructueux, j’ai décidé d’en écrire un qui à une double utilité: installer et maintenir à jour la dernière version de Chromium.

Le script est disponible sur le GitHub suivant: https://github.com/nicolargo/chromium-on-mac

Pour tester le script sur votre Mac, il suffit d’ouvrir un terminal et de saisir les commandes suivantes:

curl -L https://raw.github.com/nicolargo/chromium-on-mac/master/chromium-on-mac.sh > ./chromium-on-mac.sh
chmod a+x ./chromium-on-mac.sh
./chromium-on-mac.sh

Vous devriez ensuite avoir la dernière version de Chroium disponible dans vos applications: CTRL + ESPACE / Chromium.

Catégories
Blog Open-source Planet-libre Web

Configurer Piwik pour les sites à fort trafic

Nous avons vu dans un précédant billet comment installer et configurer Piwik comme une alternative libre à Google Analytics. Un des commentaire m’a conduit vers une page du Wiki officiel de Piwik ou il est expliqué que pour un site qui génère plus de quelques centaines de visites pas jour (drôle de définition d’un site à fort trafic :)), une configuration complémentaire est nécessaire.

De base, Piwik traite dynamiquement les données quand vous accédez à l’interface Web. L’idée est de forcer automatiquement cette génération toute les heures pour disposer d’un affichage plus rapide des rapports.

Mise en place du traitement automatique des données

Nous allons utiliser la crontab système pour lancer toutes les heures le traitement des informations stockés dans la base de donnée MySQL. Si vous avez suivi mon tutoriel sur l’installation de Piwik, le script permettant traiter les informations devrait se trouver dans le répertoire suivant: /var/www/piwik/misc/cron/archive.sh.

On commence par vérifier les droits de ce fichier et l’utilisateur a qui il appartient:

ls -alF  /var/www/piwik/misc/cron/archive.sh

-rwxr-xr-x 1 www-data www-data 3832 Mar 29 03:24 /var/www/piwik/misc/cron/archive.sh*

Il est bien en lecture et exécution (rx) pour l’utilisateur www-data.

On peut donc configurer la crontab de l’utilisateur www-data en ajoutant les deux lignes suivantes (je rappelle que pour éditer la crontab  il faut saisir la commande « sudo crontab -u www-data -e »):

MAILTO= »USER@DOMAINE.COM »

5 * * * * /var/www/piwik/misc/cron/archive.sh > /dev/null

Il faut bien sûr remplacer USER@DOMAINE.COM par une adresse mail valide qui sera utilisé en cas de problème pour vous prévenir.

Configurer l’interface Web

Une fois le crontab mis en place, il faut dire à l’interface Web de ne plus traiter automatiquement les données quand vous accédez à un rapport. Pour cela, il faut se rendre dans le menu Paramètres > Onglets Paramètres Généraux:

On demande à Piwik de ne pas traiter les données à partir de l’interface Web (1) puis on configure le délais de 3600 secondes (1 heure) entre deux générations de rapport (2).

Et voili, vous devriez avoir un Piwik qui boost même avec un trafic important !

Catégories
Open-source Planet-libre Reseau Systeme Web

SparkleShare, enfin une vraie alternative libre à Dropbox ?

C’est en lisant un billet sur le blog de mister Korben que j’ai découvert SparkleShare, une solution libre se positionnant comme un concurrent direct de Dropbox.  Depuis quelques temps, on ne peut as dire que Dropbox soit en odeur de sainteté dans la sphère des libristes. Le changement plutôt maladroit de leur TOS et leur engagement timide dans les logiciels open-source n’y sont pas étranger.

Nous allons donc nous intéresser dans ce billet sur la solution SparkleShare qui se base sur des logiciels libres (GPL v3) et qui permet de gérer soit même son serveur ou seront stockées les données.

Les limites actuelles de SparkleShare

SparkleShare est actuellement en développement. La version 1.0 devrait sortir dans les prochains mois. A la date de rédaction de ce billet, les limites sont les suivantes:

  • Clients disponibles sous GNU/Linux et Mac OS X (les clients Windows, Android er IOS sont prévus)
  • Pas d’interface Web pour accéder à vos fichiers depuis un simple navigateur (il faut passer par un client SparkleShare)
  • Pas de synchronisation LAN to LAN. Si vous avez deux PC sur le même réseau local, la synchronisation passera automatiquement par le serveur (donc par Internet)
  • Pas de chiffrement (en natif) des données sur le serveur
  • Client développé en Mono (burk…), vivement les forks…

Les avantages de SparkleShare // Dropbox and Co

On passe ensuite aux avantages:

  • Les clients SparkleShare sont sous licence GPL version 3
  • Les serveurs SparkleShare peuvent se baser sur des logiciels libres (GIT et serveur SSH)
  • Possibilité d’installer son propre serveur sur une machine dédiée ou d’utiliser un serveur GIT public (GitHub, Gitorious…)
  • Chiffrement du lien client vers serveur (utilisation d’un tunnel SSH)

Installation du serveur SparkleShare

Comme nous venons de le voir, dans le monde SparkleShare, un serveur est en fait une machine accessible depuis Internet (ou tout autre réseau) à partir d’une connexion SSH et proposant un serveur GIT.

Attention: si vous ne disposez pas d’un serveur dédié, il est également possible d’utiliser un hébergement gratuit chez GitHub. Dans ce cas,  il faut garder à l’esprit que vos fichiers seront publics (il est donc nécessaire de les chiffrer):

Nous allons donc installer ces briques sur un serveur dédié sous Debian 6.0 Squeeze.

On commence par installer les serveurs SSH et GIT (en root):

apt-get install git-core openssh-server

Puis on génère le dépôt GIT pour SparkleShare (avec votre utilisateur standard):

cd ~

git init –bare sparkleshare.git

Cette dernière commande va créer un sous répertoire nommé sparkleshare.git dans le répertoire $HOME de votre utilisateur (/home/USER/sparkleshare.git). Il est bien sûr possible de remplacer sparkleshare.git par un chemin absolu.Il est alors important que le répertoire soit en lecture/écriture pour l’utilisateur SSH que vous allez utiliser pour vous connecter.

Et voilà, c’est fini 🙂 Dingue non. Si vous utilisé un Firewall sur votre machine, il faut juste vérifier que le port TCP/22 (SSH) est bien ouvert.

Installation du client SparkleShare

Il n’existe pas à l’heure actuelle de dépot officiel pour Debian / Ubuntu (alors qu’il en existe un sous Fedora et Mac OS X). Il va donc falloir installer le client à la mimine. Rien de bien compliqué, il suffit de saisir les commandes suivantes dans un terminal de votre PC sur lequel vous voulez installer le client. J’ai validé cette procédure d’installation sur une distribution Debian 6.0 Squeeze.

On commence par installer les pré-requis (en root):

apt-get install openssh-client git-core gtk-sharp2 mono-runtime mono-devel monodevelop libndesk-dbus1.0-cil-dev nant libnotify-cil-dev libgtk2.0-cil-dev libwebkit-cil-dev intltool libtool python-nautilus libndesk-dbus-glib1.0-cil-dev

Remarque: la version actuelle du client GNU/Linux est devéloppé en langage Mono (#wtf), les pré-requis précédant vont donc installer un tas de librairies (environ 120 Mo sur mon PC de test)…

On récupère les sources de la dernière version du client SparkleShare:

mkdir -p ~/src

cd ~/src

git clone https://github.com/hbons/SparkleShare.git

Puis on compile/installe:

cd ~/src/SparkleShare

./autogen.sh

make

su -c « make install »

Configuration du client

Avant de commencer à utiliser votre client SparkleShare, il faut lui dire quel serveur utiliser et surtout comment établir une connexion sécurisée avec lui.

Si vous avez déjà une clés SSH publique (donc un fichier ~/.ssh/id_rsa.pub), il n’est pas nécessaire de faire l’étape suivante:

ssh-keygen

On télécharge ensuite notre clés cliente sur notre serveur (SERVER) en utilisant le compte utilisateur (USER) avec lequel vous avez installé le dépôt GIT:

ssh-copy-id USER@SERVER

Pour tester que l’étape précédente a bien fonctionné, il suffit de se connecter en SSH (ssh USER@SERVER) et de voir si la connexion se fait bien sans demande  de login/password.

On lance ensuite le client SparkleShare:

sparkleshare start

La fenêtre suivante devrait s’afficher:

On entre les informations, puis on passe à la configuration du serveur en entrant le le couple USER@SERVER ainsi que le répértoire absolu du dépôt GIT du serveur (/home/USER/sparkleshare.git/):

Enfin, on finalise la configuration:

Pour vérifier que le client est bien lancé, il suffit de regarder sa barre de tache:

Vérifier que cela marche bien

Il suffit de mettre sur votre PC client, un nouveau fichier dans le répertoire « sparkleshare » puis de vérifier que ce dernier est bien pris en compte sur votre serveur GIT:

cd ~/sparkleshare.git

git log

Author: nicolargo <pasde@spam.com>

Date: Wed Jul 6 14:12:17 2011 +0200

+ ‘webcam-192×192.jpeg’

Alors près à laisser tomber Dropbox ?

Catégories
Open-source Planet-libre Reseau Web

Installation de Zimbra Collaboration Server 7

Zimbra est une suite collaborative regroupant des fonctions de messagerie (IMAP et POP), de gestion de vos contacts, de calendrier, de partage de documentations (voir la liste complète des fonctions ici). L’éditeur de cette suite à la très bonne idée de diffuser une version open-source de cette suite qui s’appelle Zimbra Collaboration Server Open-Source édition.

Benjamin Carion, de la société Absystech vient de me faire parvenir une documentation d’installation qui servira de complément au wiki officiel. Elle détaille une installation de la version 7 de la suite sur une distribution Ubuntu 10.04 LTS.

Cette documentation est disponible sous deux formats: PDF et MediaWiki. Il suffit de cliquer sur le format de votre choix pour lancer le téléchargement.

Si vous voyez des erreurs ou des compléments à apporter à cette procédure, n’hésitez pas à laisser un commentaire un peu plus bas.

Merci beaucoup à Benjamin pour le partage, c’est aussi cela la forme des logiciels libres.

Catégories
Open-source Planet-libre Systeme

Mon desktop 201107

On commence le mois par le traditionnel desktop qui va accompagner un de mes machines. Focus donc sur mon PC Desktop sous Debian 6 (Squeeze) configuré avec mon script de post install Debian 6. J’en profite pour signaler que j’ai repris le code de ce script est qu’il est maintenant beaucoup plus « user friendly » lors de son exécution. Je vous laisse découvrir…

Voici donc ce que cela donne:

Les principales caractéristiques

Pas de dock ?

Comme vous pouvez le voir j’ai finalement laissé tombé le dock AWN que je n’utilisais finalement pas… Je l’ai fonctionnellement remplacé par des icônes dans la barre de menu:

On y retrouve mes applications favorites: Chromium, Hohot, Filezilla, Terminator, Shutter, Spotify…

Et vous ? Cela donne quoi ?

A vous de nous montrer vos écrans !
En utilisant yFrog puis en partagant l’URL) !

Catégories
Open-source Planet-libre Web

Remplacer Google Analytics par Piwik

Pour rebondir sur le billet des administrateurs du Planet Libre, voici une rapide, mais néanmoins efficace, procédure pour remplacer le propriétaire Google Analytic (bouh !) par le libre Piwik (houra !).

Piwik est un service Web permettant d’afficher un tas de statistique sur qui fait quoi sur votre site / combien de temps, combien de fois… Bref un vrai big brother perso !

Cette procédure est honteusement inspirée de la procédure officielle et adaptée à l’analyse de mon blog sous WordPress.

On commence par préparer le terrain…

Il vous faut:

  • un serveur Web (Apache ou autre NGinx)
  • un base de donnée (MySQL)
  • un accès FTP ou mieux: SSH

Nous partons sur l’hypothèse ou Piwik est installé sur la même machine que le site à superviser. Si ce n’est pas le cas, le seul changement à faire sera dans la configuration de la base de donnée en remplaçant localhost par % (qui est un alias pour tout les sites…).

On créé la base de donnée MySQL nommé piwik, accessible depuis la machine locale (localhost) et seulement par celle-ci à partir d’un utilisateur MySQL nommé piwik (très original je sais). Voici le déroulement de ces actions à partir de PHPMyAdmin:

Installation de Piwik

On se connecte sur notre serveur en SSH, puis on va dans l’arborescence on se trouve notre serveur Web (par exemple /var/www):

cd /var/www

puis on saisit les commandes suivantes:

wget http://piwik.org/latest.zip

unzip latest.zip

rm latest.zip How\ to\ install\ Piwik.html

Si votre serveur http://monbeausite.com/ pointe sur /var/www alors il suffit de saisir l’URL http://monbeausite.com/piwik/ pour continuer l’installation via l’interface Web.

Celle-ci va se dérouler en 9 étapes:

On commence par vérifier les pré-requis systèmes de votre serveur:

Perso je suis tombé sur le message d’erreur suivant que j’ai corrigé en saisissant la commande donnée:

chmod a+w /var/www/piwik/config

On passe ensuite à la configuration de la base de donnée. Il faut saisir les paramètres par rapport à la configuration faite dans le premier chapitre. Dans mon cas, j’ai du remplacer le 127.0.0.1 par localhost (pas trop compris pourquoi…).

Ensuite on entre le nom, le mot de passe et le mail de l’administrateur (c’est avec ce compte que l’on pourra se connecter à l’interface Web). Je vous conseille de donner un compte/mot de passe différent que celui affecté à la base de donnée…

On passe ensuite au paramétrage du site que l’on souhaite analyser:

Piwik va automatiquement générer le code Javascript à insérer dans vos pages HTML:

Dans le cas d’un blog sous WordPress, il suffit d’ajouter le code dans le fichier footer.php de votre thème (juste avant la balise /body):

Il ne reste plus qu’a attendre un peu que les visites sur votre site soit prise en compte dans la base de donnée Piwik puis de se rendre sur l’URL http://monbeausite.com/piwik pour voir vos statistiques:

Optimisation de Piwik

Si votre site génère plus de 500 visites par jour, il est conseillé de suivre cette procédure pour optimiser le traitement des données.

Dernière étape et non des moindres: supprimer le code JavaScript de Google Analytics 🙂

Et voilà le travail !

Catégories
Open-source Planet-libre Systeme

Conky Lunatico Rings, un thème Conky bien sympatique

J’utilise Conky pour afficher sur mon desktop diverses informations sur ma machine (CPU, Mémoire, charge réseau…). En surfant sur le site WebUpd8, je suis tombé sur ce billet qui parle d’un nouveau thème qui m’apporte toutes ces informations.

En voici un aperçu:

Pour installer ce thème sur votre système, il faut suivre les étapes suivantes (les étapes 1 et 2 sont seulement nécessaire si conky n’est pas installé sur votre système).

Etape 1: Installation de Conky

sudo apt-get install conky

Etape 2: Création du répertoire de configuration

mkdir ~/.conky

cd ~/.conky

Etape 3: Téléchargement du thème

Si vous avez une interface Wifi sur votre machine:

wget http://webupd8.googlecode.com/files/better_spacing.tar.gz

Sinon:

wget http://webupd8.googlecode.com/files/no_wireless.tar.gz

Etape 4: Installation du thème

Si vous avez une interface Wifi sur votre machine:

tar zxvf better_spacing.tar.gz

Sinon:

tar zxvf no_wireless.tar.gz

Etape 5: Test du thème (remplacer /home/nicolargo par votre répertoire home)

conky -c /home/nicolargo/.conky/conkyrc_lunatico

Etape 6: Automatisation du lancement de Conky avec ce thème au démarrage de la machine

Il faut aller dans le menu Gnome « Réglage système » > « Application au démarrage » puis cliquer sur ajouter puis saisir les données suivantes:

La commande est la suivante (remplacer /home/nicolargo par votre répertoire home):

conky -p 50 -c /home/nicolargo/.conky/conkyrc_lunatico

L’option -p 50 permet de dire à Conky d’attendre 50 secondes avant de se lancer (sous peine de problème d’affichage).