Catégories
Open-source Planet-libre Reseau Web

Introduction et première utilisation de Tor

« Résistance et obéissance, voilà les deux vertus du citoyen. Par l’obéissance il assure l’ordre; par la résistance il assure la liberté. » [Alain]

Le réseau Internet est devenu, en un temps record à l’échelle de l’humanité, un des vecteur les plus populaires dans l’accès à la connaissance. Nous vivons encore dans un pays qui respecte, mais pour combien de temps, l’accès libre à cette énorme source d’information. Mais « libre » ne veut pas dire « non contrôlé ». Les évènements récents ont réveillé chez certains la volonté de regarder d’un peu plus près ce que vous faites à partir de votre navigateur Web. En tant que fervent partisan de la liberté d’accès aux réseaux informatiques, je vous propose de découvrir Tor, un système permettant de compliquer la tâche des mouchards en rendant anonyme la consultation des sites Internet.

Tor: Comment ça marche ?

Je ne vais pas faire un copier / coller des très bonnes sources que l’on peut trouver sur Internet.

En gros, Tor est « réseau dans le réseau » qui ajoute entre votre PC et le serveur du site que vous consultez un certain nombre de noeuds (appelé « routeur oignons« ). Le logiciel Tor, installé sur votre machine, va découper puis envoyer les requêtes à des noeuds différents.  Chaque routeur oignon anonymise les flux qui le traverse.

Sur le site de l’EFF, j’ai trouvé une très belle infographie sur le sujet (merci à @Tristant pour la découverte).

Dans un premier plan, on voit qu’un trafic entre votre PC et un site.com quelconque peut être intercepté par tout le monde (un hacker qui serait sur votre réseau local/hotspot Wifi, n’importe qui ayant accès aux données de votre FAI, comme par exemple le gouvernement et également n’importe quelle institution ayant, comme la NSA dans ce diagramme, accès à des routeurs du backbone Internet).

Dans le deuxième cas, vous utilisez Tor. Tout le trafic entre votre machine et le dernier noeud du réseau Tor est protégé. Plus de hacker, plus d’Hadopi (enfin si ils existent encore quand vous lirez ce billet). Par contre, la NSA (ou autres) pourra toujours intercepter et analyser le trafic entre le dernier noeud de Tor et le site.com.

Enfin dans le dernier graphisme, on voit le cas idéal ou l’on utilise à la fois Tor et un site.com utilisant un protocole sécurisé (comme HTTPS). Dans ce cas, le dernier lien entre le noeud Tor et le site.com ne véhiculera que des données chiffrées (les esprits chagrins vont me dire que la NSA peut casser sans trop de problème un chiffrement HTTPS, ils n’auront pas tort…).

Après cette rapide introduction, nous allons maintenant voir comment installer Tor sur une distribution Ubuntu 11.10 (sachant que la procédure est identique sur  Debian, Mint…).

Tor existe également sur d’autres OS: Windows, Mac, Android.

Installation de Tor comme client

Le logiciel Tor propose dans un même programme la partie cliente (à installer sur votre PC pour naviguer anonymement) et la partie serveur (si vous voulez transformer une de vos machines en noeud Tor). Par défaut, l’installation sous Ubuntu pré-configure Tor comme client.

On commence donc par installer Tor à partir du PPA officiel de l’équipe de développement en saisissant les commandes suivantes. Bien que Tor soit présent dans le dépôt « Universe », je préfère cette méthode pour disposer de la dernière version.

sudo apt-add-repository ppa:ubun-tor/ppa
sudo apt-get update
sudo apt-get install tor privoxy

Après avoir saisi ces commandes, Tor devrait être lancé en tache de fond sur votre machine. Il fonctionne comme un proxy SOCK5, en attente de vos requêtes sur le port TCP/9050.

Attention, Tor n’intercepte pas les connexions à votre place. Si vous restez dans cet état de configuration, aucune de vos consultations ne passeront par Tor. Il faut donc configurer vos application pour utiliser le proxy SOCK5 Tor.

Utilisation de Tor depuis votre navigateur Chromium

Si vous utilisez Firefox, il existe une très bonne extension nommé Torbutton qui va permettre d’activer/désactiver l’utilisation de Tor en cliquant simplement sur un bouton. Pour installer cette application, il suffit de consulter la page suivante sur le site officiel de Tor.

Si comme moi, vous utilisez Chomium, il faut utiliser une autre extension (en attendant que Tor propose l’équivalent de Torbutton pour Chrome / Chromium). L’extension en question est Proxy Anywhere (cliquez sur ce lien pour l’installer sur votre navigateur).

Une fois l’extension installé, la page de configuration va apparaître dans un nouvel onglet de votre navigateur. Il faudra saisir les informations suivantes:

Il ne reste plus qu’à activer Tor sur votre navigateur en cliquant sur le bouton suivant (en haut à droite, près de la barre d’adresse):

Il est facile de vérifier que l’on passe bien par le réseau Tor en visitant le site suivant: https://check.torproject.org/?lang=fr

En cas de problème, il est possible de consulter le fichier de log /var/log/tor/log.

Une solution idéale ?

Sur le papier, Tor est vraiment la solution idéale pour surfer plus librement. Dans la réalité, il faut quand même noter quelques limitations.

Tor est avant tout conçu pour le surf Web (HTTP/HTTPS), donc pas de P2P ou d’autres protocoles exotiques (bien que cela soit techniquement possible mais interdit et inutilisable vu les performances).

Même en HTTP/HTTPS, l’empilement des couches, qui apporte la sécurité des données, est aussi un facteur de baisse de performance. Un test sur Speedtest le montre facilement.

Sans Tor:

Avec Tor:

Le délais de transit explose et fait donc baisser le débit obtenu. Ce délais est particulièrement pénalisant sur les performances de consultation des sites Web qui sont composés d’un grand nombre de petits fichiers.

A l’utilisation, il reste néanmoins possible de consulter des sites de manière anonyme quand on se trouve sur des « réseaux sensibles ».

Utilisateurs ?

Utilisez-vous le réseau Tor pour accéder à certains sites Web ?

Comment trouvez-vous les performances ?

En faites vous un autre usage ?

A vos commentaires chers lecteurs !

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

Protéger son serveur en utilisant Fail2Ban

Comme toutes les machines exposées au réseau Internet, mon serveur Web est continuellement la cible de tentatives d’attaques basiques de type brute force et DOS. J’avais déjà abordé le sujet sous la forme de billets tel que « Sécuriser son blog WordPress » ou « Détection des attaques DOS/DDOS avec Nagios« . Nous allons aujourd’hui parler d’une solution de protection active se déclenchant automatiquement lors d’une de ces attaques: Fail2Ban.

Comment marche Fail2Ban ?

Développé en langage Python, Fail2Ban est un logiciel libre permettant d’analyser des fichiers de logs et de déclencher des actions si certaines choses suspectes sont détectées. La grande force de Fail2Ban est sa grande modularité que cela soit au niveau des mécanismes de détections basées sur les expressions régulières ou sur les actions à mener qui peuvent aller de l’expédition d’un mail à la mise en place de règles de Firewall.

Fail2Ban se base sur un système de prisons (jails) que l’on peut définir, activer ou désactiver dans un simple fichier de configuration (/etc/fail2ban/jail.conf).

Une prison (jail) est composée, entre autres, des éléments suivants:

  • Nom du fichier de log à analyser.
  • Filtre à appliquer sur ce fichier de log (la liste des filtres disponibles se trouve dans le répertoire /etc/fail2ban/filter.d). Il est bien sûr possible de créer ses propres filtres.
  • Paramètres permettant de définir si une action doit être déclenchée quand le filtre correspond (« match »): Nombre de « matchs » (maxretry), intervalle de temps correspondant (findtime)…
  • Action à mener si nécessaire. La liste des actions se trouve dans le répertoire /etc/fail2ban/action.d. Il est également possible de créer ses propres actions.

Installation de Fail2Ban

On commence par installer Fail2Ban sur son système. Il se trouve dans la grande majorité des distributions GNU/Linux et BSD. par exemple pour l’installer sur une machine Debian 6, il suffit de saisir la commande suivante (en root ou bien précédée d’un sudo):

apt-get install fail2ban

Protection contre les attaques « brute force » SSH

Un exemple étant toujours plus parlant, nous allons configurer notre Fail2Ban pour bloquer automatiquement les adresses IP des machines essayant des attaques de type « brute force » sur notre port SSH (cette attaque est à la portée de n’importe quel « neuneu ». On trouve de très bon tutoriaux sur le sujet sur le net).

Si une machine cliente échoue 3 fois de suite lors de la saisie du couple login/password sur le serveur SSH alors on bloque l’accès au port TCP/SSH pendant 15 minutes. On analyse pour cela le fichier de log /var/log/auth.log en lui appliquant le filtre /etc/fail2ban/filter.d/sshd.conf puis, si nécessaire, l’action /etc/fail2ban/action.d/iptables.conf. La définition de cette prison (jail) est à faire dans le fichier /etc/fail2ban/jail.conf:

# SSH
# 3 retry ? > Ban for 15 minutes

[ssh]
enabled = true
port = ssh
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3
bantime = 900

Un fois le filtre activé en relançant Fail2Ban avec la commande (en root):

service fail2ban restart

On peut rapidement voir son efficacité en regardant le fichier de log (par défaut sous /var/log/fail2ban.log):

Protection contre les attaques DOS (HTTP/GET)

Dans ce deuxième exemple nous allons voir comment lutter efficacement contre les attaques de type DOS ciblant vos serveurs Web. Ces attaques se caractérisent par un nombre inhabituel de requêtes HTTP venant d’un même client (du moins d’une même adresse IP source).

Le plus difficile est de trouver les bons paramètres correspondants à un comportement « inhabituel ». Dans l’exemple suivant, je considère comme « inhabituel » le fait qu’un client effectue plus de 360 requêtes en 2 minutes (soit une moyenne de supérieurement à 3 req/sec) sur mon serveur Web. Dans ce cas, je bloque l’accès au port HTTP pendant une durée de 10 minutes.

La prison (jail) correspondante est la suivante (à ajouter dans votre fichier /etc/fail2ban/jail.conf):

# Protect against DOS attack
# 360 requests in 2 min > Ban for 10 minutes

[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
logpath = /var/log/varnish/varnishncsa.log
maxretry = 360
findtime = 120
action = iptables[name=HTTP, port=http, protocol=tcp]
mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]
bantime = 600

En regardant de plus près cette prison, on remarque qu’elle utilise en entrée le fichier de log au format NCSA généré par le système de cache Varnish que j’utilise en frontal sur mes serveurs Web (/var/log/varnish/varnishncsa.log). Il est bien sûr possible d’utiliser directement le log de votre serveur Apache ou Nginx. Le filtre http-get-dos n’est pas fourni par défaut. Il faut donc éditer le fichier /etc/fail2ban/filter.d/http-get-dos.conf avec le contenu suivant:

# Fail2Ban configuration file

#

# Author: http://www.go2linux.org

#

[Definition]

# Option: failregex

# Note: This regex will match any GET entry in your logs, so basically all valid and not valid entries are a match.

# You should set up in the jail.conf file, the maxretry and findtime carefully in order to avoid false positives.

failregex = ^<HOST>.*\"GET

# Option: ignoreregex

# Notes.: regex to ignore. If this regex matches, the line is ignored.

# Values: TEXT

#

ignoreregex =

Enfin, en cas de « match », on applique deux actions:

  1. blocage du port HTTP avec l’action iptables définie dans /etc/fail2ban/action.d/iptables.conf
  2. envoie d’un mail signalant le blocage avec l’action mail-whois-lines. L’adresse du mail est défini dans la variable destemail à modifier dans le fichier jail.conf.

Un fois le filtre activé:

service fail2ban restart

On peut regarder le fichier de log (/var/log/fail2ban.log)…:

$ tail -f /var/log/fail2ban.log

2012-02-22 11:36:59,134 fail2ban.actions: WARNING [http-get-dos] Ban 107.---.---.---

… et/ou attendre la réception des mails:

Conclusion

Ce billet est une simple introduction à l’utilisation de Fail2Ban qui peut être configuré de manière beaucoup plus personnalisé et en fonction de vous besoins. Si vous avez d’autres exemples d’utilisation, les commentaires ci-dessous sont fait pour cela !

Catégories
Open-source Planet-libre Reseau Web

OwnCloud 3 sur un serveur Debian / Nginx

Par ces temps de dématérialisation des espaces de stockages, les services en ligne comme Dropbox et SpiderOak focalisent à la fois des commentaires admiratifs (facilité d’utilisation, fiabilité) et réticents (protection de la vie privée, pérennité du service à moyen et long terme, prix). Du bon coté de la force, les alternatives libres et auto-hébergées commencent à pointer le bout de leurs nez. Une de ces solutions a eut droit à son petit buzz ces dernières semaines: OwnCloud.

J’apporte donc ma petite pierre à l’édifice en vous proposant une installation et une configuration de OwnClound version 3 sur un serveur Debian Squeeze sous NGinx.

Présentation de OwnCloud

OwnClound (en version 3 au moment de l’écriture de ce billet) se présente sous la forme d’un serveur à héberger sur une machine GNU/Linux.

Une fois installé, ce dernier propose les services suivants:

  • partage d’espaces disques via le protocole WebDav (support GNU/Linux, BSD, Mac OS X, Windows)
  • partage de fichiers en HTTP (fonction « sharing »)
  • édition de fichier en ligne
  • accès à votre musicale
  • accès à vos photos
  • synchronisation de vos contacts en utilisant le protocole CardDav
  • synchronisation de votre agenda en utilisant le protocole CalDav
  • client disponible sous IOS et Android
  • extensibilité de votre cloud avec des applications

Installation de OwnClound

Installation de LESP

La plupart des articles sur OwnCloud se base sur une couche LAMP (Linux Apache MySQL PHP). Je vous propose d’utiliser une base LESP (LESP = Linux + Engine X aka NGinx + SqLite + PHP). Les étapes de ce premier chapitre sont à effectuer seulement si les logiciels concernés ne sont pas déjà installés. On commence par installer le couple NGinx / PHP-FPM en utilisant par exemple mon script d’auto install:

[cc]

mkdir ~/installowncloud

cd ~/installowncloud

wget https://raw.github.com/nicolargo/debianpostinstall/master/nginxautoinstall.sh

chmod a+x nginxautoinstall.sh

sudo ./nginxautoinstall.sh

[/cc]

Note: la chose importante est de compiler NGinx avec le support Webdav (–with-http_dav_module).

Configuration de LESP pour OwnCloud

Par défaut, PHP n’autorise pas l’upload de fichier de plus de 2 Mo. Il faut donc changer cette configuration en éditant le fichier /etc/php5/fpm/php.ini pour augmenter cette limite à 1000 Mo (ou plus, c’est à adapter à vos besoins).

[cc]

post_max_size = 1000M

upload_max_filesize = 1000M

[/cc]

On configure NGinx pour qu’il gère le site cloud.comaine.com pointant vers le répertoire /var/www/owncloud (là encore, la configuration est à adapter à votre infrastructure) en éditant le fichier /etc/nginx/sites-enabled/owncloud (à adapter à votre besoins/configuration):

[cc]

server {

listen 80;

server_name cloud.mondomaine.com;

root /var/www/owncloud;

client_max_body_size 1000M;

index index.php;

dav_methods PUT DELETE MKCOL COPY MOVE;

create_full_put_path on;

dav_access user:rw group:rw all:r;

try_files $uri $uri/ @webdav;

location @webdav {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

}

# PHP scripts -> PHP-FPM server listening on 127.0.0.1:9000

location ~ \.php$ {

try_files $uri =404;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

# Stuffs

location = /favicon.ico {

access_log off;

return 204;

}

# Protect hidden file to read/write access

location ~ /\. {

deny all;

}

}

[/cc]

On relance NGinx:

[cc]

sudo /etc/init.d/nginx reload

[/cc]

Il est possible d’utiliser le protocole sécurisé HTTPS en lieu et place de HTTP pour les communications entre le navigateur Web et votre serveur OwnCloud. La configuration est donnée en exemple sur cette page.

Installation des dépendances

OwnCloud utilise des librairies pour fonctionner correctement. Sous Debian (et Ubuntu), l’installation de dépendances se fait de la manière suivante:

[cc]

sudo apt-get install php5-sqlite php5-json mp3info curl libcurl3 libcurl3-dev php5-curl zip git

[/cc]

Installation de OwnClound depuis son dépôt GIT

OwnClound étant un projet encore « jeune », les évolutions sont fréquentes et je vous conseille l’installation depuis le HEAD des « sources » Git.

[cc]

cd ~/installowncloud

git clone git://gitorious.org/owncloud/owncloud.git

sudo mv owncloud /var/www/

sudo chown -R www-data:www-data /var/www/owncloud

sudo /etc/init.d/php5-fpm restart

[/cc]

Il ne reste plus qu’à finaliser l’installation en pointant un navigateur Web sur l’adresse de votre serveur:

http://cloud.votredomaine.com/

Et oh joie oh espoir:

Mettre à jour OwnCloud

Pour mettre à jour OwnCloud:

[cc]

cd /var/www/owncloud

sudo git pull

sudo chown -R www-data:www-data /var/www/owncloud

[/cc]

Utilisation de OwnCloud

Utilisation de l’interface Web

L’interface Web est légère et bien pensée. Elle présente vos fichiers sous la forme d’une arborescence classique (répertoire/ficher) ou bien avec des filtre pour n’afficher que vos fichiers musicaux (onglet Musique) ou photos (onglet Galerie si vous avez installé l’application). OwnCloud permet bien sûr de jouer vos musiques à distance (fonction streaming). Utilisant le service Spotify, je n’utilise pas trop cette fonction. La visualisation des images est un plus mais ne remplace pas un service dédié (comme on peut le trouver sur Internet).

Bref vous l’aurez compris, je n’ai pas vraiment accroché sur les applications tierces (musiques, photos, contact, agenda…), j’ai mes habitudes avec des services « Web » et il est dur d’en changer. Par contre, la fonction principale de OwnCloud (la mise à disposition d’un espace de stockage dans un nuage) est une alternative possible à Dropbox ou SpiderOak. Il faut toutefois relativiser cette comparaison. En effet, la population des personnes intéressées par OwnCloud et disposant d’une machine allumée et connectée en permanence sur Internet se limite au petit monde des GL (Geeks Libristes).

Nous allons voir maintenant comment accéder à son espace de stockage OwnCloud en utilisant autre chose que l’interface Web.

Accès direct depuis le serveur

Par défaut, vos fichiers sont stockés sur le serveur dans le répertoire /var/www/owncloud/data/user/files. Il est donc tout à fait possible d’accéder directement à cette arborescence depuis le serveur ou un accès distant comme SSH. Il faut par contre veiller à ce que les fichiers / sous-répertoires appartiennent à l’utilisateur www-data:www-data afin que l’on puisse les gérer avec les autres moyens d’accès (interface Web, Webdav…). Attention toutefois, dans sa version actuelle, OwnCloud ne gère pas les liens symboliques.

WebDav depuis Linux

Le plus simple est de faire le montage WebDav depuis votre navigateur de fichier. Sous Gnome le menu « Se connecter à un serveur » (Connect to a server) permet d’afficher la fenêtre suivante:

Il suffira ensuite de créer un bookmark vers le point de montage WebDav ainsi obtenu en le renommant OwnCloud. Un simple click vers ce bookmark vous donnera l’accès à vos données dans votre nuage.

Il est bien sûr possible de faire la manipulation en ligne de commande (après l’installation de davfs2):

[cc]

mount -t davfs http://cloud.mondomaine.com/files/webdav.php /home/user/owncloud

[/cc]

Update (27/02/2012): Afin de simplifier le lien entre vos répertoires locaux et ceux disponibles dans votre Cloud, il est également possible d’utiliser le couple Mirall/CSync qui comblent le gap des fonctions proposées par Dropbox avec un client desktop bien pensé.

WebDav sous Windows

Sous Windows 7, la manipulation est un peu plus complexe, il faut en effet modifier une clé de registre à partir du logiciel « regedit »:

HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > WebClient > Parameters > BasicAuthLevel = 2

On peut ensuite passer par l’outil système de connexion de lecteur réseau:

Conclusion

Bien que réservé aux heureux possesseurs d’un serveur connecté en permanence à Internet, OwnCloud est un projet intéressant. Il centralise en un seul point les services utiles à la vie numérique de tous les jours: fichiers, images, photos, contact, agenda. Il lui manque encore quelques fonctions qui seront sûrement apportées par le système de plugins. Je pense notamment à: possibilité de jouer en streaming les vidéos stockées dans notre « cloud », accès par un protocole plus optimisé que WebDav (par exemple SSH), connexion vers les réseaux sociaux pour facilité le partage…

Le modèle économique de la société qui se cache derrière ce projet est de conserver le coeur du système (le serveur OwnCloud) sous licence libre (actuellement AGPL version 3) et de proposer une offre commerciale pour héberger vos données sur leurs infrastructures (cette offre sera disponible mi mars 2012).

Alors près à « switcher » vos données vers votre propres cloud ? Personnellement, j’attend encore un peu.

Quelques liens consultés lors de la rédaction de ce billet:

 

Catégories
Open-source Planet-libre Systeme Web

NGinx – Protéger son site avec une authentification simple HTTP

Un petit billet « flash express » pour  protéger son site (ou un répertoire de son site) avec une authentification simple (type login/password) sur un serveur NGinx.

Pré-requis

Il faut disposer d’un serveur NGinx bien configuré (par exemple en utilisant ce script d’auto-installation pour Debian ou Ubuntu) puis du logiciel htpasswd que l’on peut installer sous Debian/Ubuntu avec la commande suivante:

[cc]

sudo apt-get install apache2-utils

[/cc]

Création du fichier .htpasswd

Ce fichier va contenir, de manière chiffré, le mot de passe associé à l’utilisateur. La commande à utiliser pour créer ce fichier est la suivante:

[cc]

sudo htpasswd -c /var/www/.htpasswd nicolargo

New password:

Re-type new password:

Adding password for user nicolargo

[/cc]

Ou:

  • -c est une option pour créer le fichier (sans cette option, le couple login/password est ajouté)
  • /var/www/ est l’emplacement du fichier .htpasswd. Le contenu du répertoire /var/www/ (donc la racine de mon site Web) sera donc protégée par le couple login/password
  • nicolargo est le nom de l’utilisateur (login)
  • ilfaut sasir deux fois le mot de passe (password)

Configuration de NGinx

Pour que NGinx puisse gérer les fichiers .htpasswd, il faut ajouter modifier la configuration de son site (à  adapter selon votre configuration):

[cc]

server {

listen 80;

server_name localhost;

root /var/www;

# Static

location / {

index index.html index.htm;

auth_basic « Login »;

auth_basic_user_file /var/www/.htpasswd;

}

# Protect hidden file to read/write access

location ~ /\. {

deny all;

}

}

[/cc]

Après avoir rechargé la configuration:

[cc]

sudo /etc/init.d/nginx restart

[/cc]

Il ne reste plus qu’à…

Tester

En pointant un navigateur sur le site en question, une bannière d’authentification va apparaitre:

 

Note sur la sécurité

Attention de ne PAS utiliser se mécanisme pour protéger des informations sensibles. En effet il n’y a pas de chiffrement des données lors de la transmission en HTTP entre le navigateur et le serveur et le fichier .htpasswd peut être récupéré en cas de corruption de votre serveur…

Catégories
Open-source Planet-libre Web

MyTinyTodo, un outil « TODO list » auto-hébergé et libre

Etant à la recherche d’un outil auto-hébergé, en ligne et libre pour gérer la liste des taches de ma vie quotidienne j’ai lancé un petit sondage sur Twitter. L’étude de vos réponses m’a permis de découvrir le script PHP MyTinyTodo dont je vais détailler l’installation et la configuration dans ce billet.

Introduction

MyTinyTodo (licence GPL) est donc un script PHP (il a donc besoin d’un serveur Web avec le support de ce langage) fonctionnant avec une base de donnée MySQL ou SQLite (j’ai choisi cette deuxième option).

Je pars donc sur le principe que vous disposez d’un serveur Web avec le support de PHP configuré pour pointer par défaut sur le répertoire /var/www (pour arriver à une telle configuration sous Debian vous pouvez utiliser mon script d’auto-installation de NGinx + PHP-FPM).

Certaines commandes nécessites des droits d’administration sur votre machine. J’utilise ‘sudo’ pour les exécuter  mais il est également possible de les saisir dans un terminal root.

Pré-requis

En plus du serveur Web et du support PHP, MyTinyTodo a besoin des librairies pour communiquer avec la base de donnée.

Si vous utilisez MySQL il faut saisir la commande:

[cc]

sudo apt-get install php5-mysql

[/cc]

Si comme moi vous préférez SQLite il faut installer la librairie de la manière suivante:

[cc]

sudo apt-get install php5-sqlite

[/cc]

On doit dans tous les cas relancer le serveur PHP-FPM pour prendre en compte la configuration:

[cc]

sudo /etc/init.d/php-fpm restart

[/cc]

Installation de MyTinyTodo

On commence par récupérer le script MyTinyTodo puis de le mettre au bon endroit sur notre système (c’est à dire dans le répertoire racine du serveur Web: /var/www).

[cc]

cd `mktemp -d`

wget http://mytinytodo.googlecode.com/files/mytinytodo-v1.4.2.zip

unzip mytinytodo-v1.4.2.zip

sudo mv mytinytodo /var/www

wget http://www.mytinytodo.net/lang/zip/fr.zip

unzip fr.zip

sudo mv fr.php /var/www/mytinytodo/lang/

sudo chown -R www-data:www-data /var/www/mytinytodo

[/cc]

Il faut ensuite faire pointer un navigateur Internet vers l’adresse de votre serveur:

http://votreserveur.com/mytinytodo/setup.php

La page suivante devrait s’afficher:

Puis:

Et enfin:

Pour éviter que des gens mal attentionnés modifient votre configuration, il est conseillé d’effacer le fichier setup.php de votre système:

[cc]

sudo rm /var/www/mytinytodo/setup.php

[/cc]

Configuration initiale

Vous pouvez maintenant accéder à votre système de « TODO list » est saisissant l’URL suivante:

http://votreserveur.com/mytinytodo/

Nous allons commencer par appliquer une configuration initiale (langue, fuseau horaire, protection par mot de passe…):

Voici mes paramètres à adapter à vos besoins:

Utilisation

Il ne reste plus qu’à créer des onglets (j’ai pris comme habitude d’avoir un onglet par type d’activité: perso, blog, boulot…) et de saisir vos taches:

Il existe pas mal d’options, une des plus intéressante de mon point de vu est de pouvoir partager un onglet (donc une liste de taches) à travers un flux RSS, pour cela il suffit de deux clics:

Conclusion

MyTinyTodo remplit parfaitement son rôle. Sans fioriture mais avec souplesse et légèreté. J’ai laissé tombé le service en ligne RememberTheMilk (par ailleurs très bien fait) pour mon service MyTinyTodo auto hébergé :).

Update (26/01/2012): Si vous préférez utiliser le couple Apache/Mysql en lieu et place de NGinx/SQLite, je vous conseille la lecture du billet de Jidey sur le blog « Pelle la tarte ».

Catégories
Blog Musique Web

Gérer sa bibliothèque musicale en 2012

Il y a quelques mois, je publiais un article sur l’histoire de la gestion de mes fichiers musicaux. Quelques 6 mois plus tard,  il est intéressant de noter que la tendance est restée la même: un abandon progressif du support physique et des fichiers locaux.

Il y a encore un an, je continuais à entretenir ma bibliothèque iTunes en « rippant » mes CDs préférés. Aujourd’hui, j’utilise exclusivement le service Spotify Premium pour lequel je paye un abonnement mensuel de 9.99€ (et oui chez Spotify aussi $1=1€… #wtf) pour une utilisation illimitée depuis mes ordinateurs et smartphones.

Mes sources (magazines papiers type Inrocks, blogs musicaux: PitchFork|Mowno|Hop-Blog, CDs empruntés à la CDthéque, radio…) me permettent d’alimenter une playlist que j’appelle « Coups d’oreille 2012 » (vous pouvez écouter ma playlist 2011 ici) et dans laquelle j’ajoute en vrac les musiques que je souhaite écouter plus attentivement.  Une fois cette écoute faite, plusieurs choix s’offrent à moi:

  • « C’est quoi cette daube ! (ou j’aime pas ce style dans le langage politiquement correct) » > supprimer purement et simplement la musique (titre ou album entier) de ma playlist
  • « Pas mal ! (c’est bon j’aime dans le langage des abeilles) » > laisser la musique dans la playlist
  • « Génial ! elle déchire cette zic ! (jeuns mode) » > mettre une étoile à la musique en question et optionnellement la copier dans d’autres playlist (par genre ou mon top 2011 à écouter ici). La majorité des ces playlists sont disponibles off-line (c’est à dire téléchargées directement sur la machine afin de les écouter même sans connexion Internet).

Ce que j’aime particulièrement avec ce système de musique dématérialisée, c’est le fait de pouvoir écouter la musique en continu le long de la journée. Par exemple, je commence chez moi avec l’iPhone branché via un dock sur ma chaîne HIFI. Ensuite, je continu dans la voiture avec le même iPhone branché sur l’entrée auxiliaire de mon poste autoradio (en attendant mieux…). Un peu de marche avec mon casque (j’utilise un AKG-450 dont je suis très satisfait) sur les oreilles pour finir à mon travail, avec le même casque, branché sur mon PC GNU/Linux et en utilisant le client lourd Spotify.

Je suis vraiment très satisfait de cette manière d’écouter de la musique. Je noterai cependant les axes d’améliorations suivants:

  • avoir la possibilité d’écouter des musiques en hautes qualités. Actuellement, Spotify utilise le codec libre Vorbis en qualité Q5 (~160Kbps) sur smartphones et Q5 ou Q9 (~ 320 Kbps mais pas sur toutes les musiques) sur PC/Mac (pour forcer la qualité Q9, il faut aller dans les propriétés du client Spotify). Bien que cette qualité soit acceptable, elle reste inférieure à une qualité CD, surtout avec une bonne chaîne / casque audio. Il serait donc sympa, quand la connexion Internet le permet, de disposer de musiques encodées en « Loss Less » (FLAC par exemple)…
  • avoir enfin une version définitive (marre de la pré-version) du client Spotify natif pour GNU/Linux (bien que la version actuelle fonctionne bien, aux erreurs de mises à jours près…).
  • certains albums / auteurs ne sont pas encore disponibles sur Spotify (mais je dois avouer que c’est de plus en plus rare).
  • pouvoir partager des morceaux avec des personnes qui n’ont pas le client Spotify (bref un client Web léger serait le bienvenu).

Et vous, vos habitudes ont elle changés en 2011 ?

PS: je n’ai aucune action chez Spotify Ltd, c’est juste le service en ligne que j’utilise historiquement (après un bref passage chez Deezer).

Catégories
Developpement Open-source Web

Epitech Innovative Project 2012

Ce matin, dans ma boîte au lettre (la vraie pas la virtuelle), j’ai eu le plaisir de découvrir le catalogue des projets innovants développés par les étudiants de la promotion 2012 de l’école de l’innovation et de l’expertise informatique Epitech. Sous une très belle présentation graphique se cache 52 projets utilisant un panel très varié de technologies informatiques. Contrairement à pas mal de projets de fins d’études qui débouchent rarement sur des choses intéressantes, le projet EIP  fait partie intégrante du cursus de l’école et ceci dès la 4ém année.

Pour la version 2012, les projets sont répartis en 5 catégories:

  1. Améliorer le bien être des individus et des collectivités
  2. Mieux diffuser le progrès technologique
  3. Rendre plus efficaces les outils au profit des entreprises
  4. Ouvrir de nouveaux horizons aux passions
  5. Innover, année après année, team après team

Pour chaque projet, une double page  permet de se faire une idée générale du sujet, de mettre en avant les technologie utilisées puis de présenter l’équipe et les éventuels partenaires industriels.

A titre personnel, voici quelques projets dont je trouve les sujets intéressants:

  • Rawmarket: Relier équitablement acheteurs et fournisseurs
  • Syshome: Solution de domotique écologique et durable
  • Comeet: Un espace de Visioconférence basée sous XMPP
  • Defuze.me: Régler sa station de radio sur le succès
  • Skuld: Centre d’imagerie médicale de poche (accès à un serveur PACS depuis un mobile)

La liste complète des projets est disponible sur cette page.

Merci encore à l’équipe pédagogique de l’Epitech pour ce très beau catalogue.

Catégories
Blog Web Webdesign

Un bouton d’abonnement en CSS3 pour votre blog

Dans l’optique, à très long terme, de changer le thème du blog, j’utilise un template de base (HTML5/CSS3) dans lequel je fais mes tests. Aujourd’hui, je voudrais partager avec vous le bouton d’abonnement (RSS, Twitter, FB…) sur lequel je suis en train de travailler.

DÉMONSTRATION

TÉLÉCHARGEMENT (.ZIP)

On commence par une description des différents éléments:

Le CSS

On commence par le fichier CSS. On utilise les directives de type « transition » pour effectuer l’animation de la liste des abonnements disponibles. Cette animation durera 1/2 seconde avec un effet « ease-in-out » (accélération puis ralentissement). Cette animation est composé de deux effets:

  • un effet de couleur (fondu) que l’on configure avec l’opacité de l’objet (opacity)
  • un effet de translation de la div #subscribe-list de 50px du haut vers le bas lors d’un roll-over

[cce_css]

#subscribe-button {

float: right;

opacity: 0.2;

position: relative;

-webkit-transition: all 0.5s ease-in-out;

-moz-transition: all 0.5s ease-in-out;

-o-transition: all 0.5s ease-in-out;

-ms-transition: all 0.5s ease-in-out;

transition: all 0.5s ease-in-out;

}

.subscribe-logo {

position: absolute;

right: 0px;

}

.subscribe-count {

position: absolute;

font-size: 12px;

text-shadow: 0px 2px 3px #bbb;

top: 66px;

right: 4px;

}

.subscribe-list {

position: absolute;

opacity: 0;

font-size: 12px;

top: 5px;

right: 32px;

-webkit-transform: translateY(-50px);

-moz-transform: translateY(-50px);

-o-transform: translateY(-50px);

transform: translateY(-50px);

-webkit-transition: all 0.5s ease-in-out;

-moz-transition: all 0.5s ease-in-out;

-o-transition: all 0.5s ease-in-out;

-ms-transition: all 0.5s ease-in-out;

transition: all 0.5s ease-in-out;

}

.subscribe-list li {

padding: 0px 10px 10px;

text-align: right;

list-style: none;

}

.subscribe-list li a, .subscribe-list li a:visited {

color: orange;

text-decoration: none;

font-weight: bold;

}

.subscribe-list li a:hover {

text-decoration: underline;

}

#subscribe-button:hover {

opacity: 1.0;

}

#subscribe-button:hover .subscribe-list {

opacity: 1.0;

-webkit-transform: translateY(0px);

-moz-transform: translateY(0px);

-o-transform: translateY(0px);

transform: translateY(0px);

}

[/cce_css]

Le HTML

Il ne reste plus qu’à placer l’objet (de type span) dans la page HTML. Il est bien sûr possible d’adapter la liste à vos besoins.

[cce_html tab_size= »4″]

<span id= »subscribe-button »>

<span><a href= »# »><img src= »img/ars-grafik-rss-icon-32.png »/></a></span>

<span>4200</span>

<div>

<ul>

<li><a href= »# »>RSS</a></li>

<li><a href= »# »>Twitter</a></li>

<li><a href= »# »>Facebook</a></li>

<li><a href= »# »>Mailing</a></li>

</ul>

</div>

</span>

[/cce_html]

On voit donc toutes la puissance de CSS3 à qui il ne manque qu’une normalisation finale.

Catégories
Open-source Planet-libre Web

Mon desktop 201110 (avec du Gnome Shell dedans)

En ce jour très binaire (59) et comme chaque mois, je vous montre un des mes desktops (spéciale dédicasse à Scurz qui adore ce genre de billet).

Dans quelques jours la version 11.10 d’Ubuntu va sortir. Contrairement à la version précédant, l’installation de Gnome-Shell en lieu et place d’Unity sera simplifié. C’est donc dans cette configuration que j’ai donc migré ce weekend mon PC portable personnel (le pro reste sous Debian Squeeze).

Installation de Gnome Shell

C’est plus que simple sous Ubuntu 11.10:

[cce lang= »bash »]

sudo add-apt-repository ppa:webupd8team/gnome3

sudo apt-get update

sudo apt-get install gnome-shell gnome-tweak-tool gnome-documents gnome-shell-extensions-common gnome-shell-extensions-system-monitor gnome-shell-extensions-user-theme gnome-shell-extensions-xrandr-indicator gnome-shell-extensions-apps-menu gnome-shell-extensions-alternative-status-menu gnome-shell-extensions-drive-menu

[/cce]

Puis ensuite de redémarrer votre machine et de sélectionner Gnome dans la session de démarrage:

Si vous êtes utilisateur du service Dropbox, il y a actuellement une incompatibilité entre l’interface graphique du daemon Dropbox et Gnome-Shell. Il faut donc suivre une procédure décrite dans le billet suivant.

Configuration de Gnome Shell

Gnome a choisi d’uniformiser le thème par défaut de Gnome Shell sur l’ensemble des distribution. Bien que ce dernier soit clair et plutôt agréable, j’ai préféré installer un nouveau thème par défaut réalisé par le créateur des icônes Faenza. Ce thème se nomme Faience.

Pour l’installer j’ai suivi la procédure suivante:

[cce lang= »bash »]

cd ~

tar zcvf theme-backup.tgz /usr/share/gnome-shell/theme

wget http://www.deviantart.com/download/255097456/gnome_shell___faience_by_tiheum-d47vmgg.zip

unzip gnome_shell___faience_by_tiheum-d47vmgg.zip

sudo cp Faience/gnome-shell/* /usr/share/gnome-shell/theme

rm -rf ~/gnome_shell___faience_by_tiheum-d47vmgg.zip ~/Faience

[/cce]

Note: il est également possible pour certains autres thèmes de les installer dans le répertoire ~/.themes et d’utiliser Gnome Tweak Tools pour switcher de l’un à l’autre (mais cela ne marche pas avec cette version du thème Faience).

Pour prendre en compte le thème il faut redémarrer votre session ou faire la combinaison de touche suivante: ALT + F2 puis r.

Voilà ce que cela donne:

J’ai utilisé un fond d’écran plutôt sombre trouvé dans cette série.

Utilisation de Gnome Shell

Refroidi par Unity, je trouve que l’utilisation de Gnome Shell pour un Gnome 2 addict est plutôt intuitive. Il faut prendre le temps de lire la liste des touches raccourcies que l’on peut trouver sur cette page et la transition se fait alors facilement.

A vous de jouer !

Et vous ? Cela donne quoi ?

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

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

VnStat.js, un node pour VnStat

Mes derniers billets traitaient de VnStat (le logiciel pour surveiller les débits de vos interfaces Ethernet) et de Node.js (le framework permettant de créer facilement des applications réseaux coté serveur). C’est donc dans ma logique toute cartésienne, que j’ai développé un javascript permettant de disposer d’une interface Web pour consulter ces statistiques de débits sans avoir à installer un serveur Web et son plugin PHP (comme c’est le cas avec le VnStat PHP frontend).

Ce script, disponible sous licence GPL v3, s’appelle VnStat.js est disponible dans mon GitHub à l’adresse suivante:


https://github.com/nicolargo/vnstat.js

Installation

Pour fonctionner correctement, VnStat.js nécessite:

  • une installation de VnStat fonctionnelle. Je vous conseille la lecture de ce billet pour effectuer une installation « from-scratch » sur une machine tournant sous Debian / Ubuntu.
  • que le framework Node.js soit installé sur cette même machine. Le script a été validé avec la dernière version stable de Node.js (0.4.12).

On commence par récupérer la dernière version de VnStat.js depuis le dépôt Git:

[cce lag= »bash »]

cd ~

git clone git://github.com/nicolargo/vnstat.js.git

cd vnstat.js

[/cce]

Pour les personnes utilisant NPM (le package manager de Node.js), vous pouvez l’utiliser pour installer VnStat.js. Suivre les instructions de cette page.

Lancement de VnStat.js

Pour lancer le noeud VnStat.js, il suffit de saisir les commandes suivantes:

[cce lag= »bash »]

cd ~/vnstat.js

node ./vnstat.js

[/cce]

Le « node » va se mettre en écoute sur le port TCP 1337 de votre serveur (il faut donc ajouter une règle pour autoriser les requêtes entrantes vers ce port si vous avez un firewall).

A l’ouverture de l’URL http://adressedevotremachine:1337/ dans un navigateur compatible HTML5, la page principale suivante va s’afficher:

Elle affiche le résumé des statistiques de VnStat ainsi que le top 10 des journées. Le menu du haut permet de naviguer vers des statistiques plus ciblés.

Par heures (avec à la fois la vue graphique et textuelle):

Et ainsi de suite pour les jours, semaines (à noter qu’il n’y a pas de graphe spécifique par semaine généré par vnstati) et enfin par mois.

Configuration de VnStat.js

Le design de VnStat.js peut bien entendu être adapté à vos besoins en éditant le fichier css/style.css (CSS3). Si vous avez besoin de changer le port TCP d’écoute du node, il y a une variable pour cela dans le fichier lib/server.js.

C’est mon premier développement avec le framework Node.js, il y a sûrement des améliorations à faire mais la structure reste assez didacticiel pour servir de base pour d’autre développement du même type.

Lancement automatique de VnStat.js au démarrage de votre machine

 Comme vous avez pu le remarquer, le node VnStat.js est lancé à la main dans ce billet. Si vous souhaitez mettre en production ce script et le lancer automatiquement au démarrage de votre machine, je vous conseille la lecture du billet de Vincent sur son blog qui regorge d’information sur ce superbe framework qu’est Node.js.