Category Archives: Linux
Monitorer votre serveur Linux grace à MRTG
Aujourd’hui j’ai dû installer un logiciel de monitoring sur mes serveurs Linux afin de pouvoir superviser l’utilisation de la bande passante.
Pour faire celà, il m’a suffit d’installer MRTG (Multi Router Traffic Grapher) qui est un logiciel permettant de créer des graphiques sur le trafic réseau.
Il envoie des requêtes SNMP pour interroger des équipements réseaux tels que des routeurs, des commutateurs, ou bien encore des serveurs disposant d’une MIB SNMP.
Installation d’Apache, MRTG et SNMP
Pour pouvoir utiliser MRTG, il nous apache et snmp. S’ils sont déjà installés, ne les réinstallez pas:
apt-get install apache2 mrtg snmpdConfiguration du SNMP
Faire une sauvegarde de la configuration snmp de base:
mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bakpuis éditez le fichier de configuration de snmp:
nano /etc/snmp/snmpd.confet écrivez le contenu suivant:
rocommunity public
syslocation "France"
syscontact votre@email.fr
com2sec public localhost public
group public v1 public
group public v2c public
group public usm public
view all included .1
access public "" any noauth exact all none noneEnsuite il faut éditer le fichier /etc/default/snmpd:
nano /etc/default/snmpdEt vérifier que le fichier contient les lignes suivantes:
SNMPDRUN=yes
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf'
TRAPDRUN=yes
SNMPDCOMPAT=yesLa configuration du service snmp est désormais terminée, vous devez redémarrer le service snmp:
/etc/init.d/snmpd restartConfiguration de MRTG
Créez un dossier pour MRTG:
mkdir /var/www/mrtg
chmod o+w /var/www/mrtgCréez un fichier de configuration:
cfgmaker --global 'WorkDir:/var/www/mrtg' --ifref=name --ifdesc=eth --global 'Options[_]: bits' --output /etc/mrtg.cfg public@localhostEnsuite, créez un fichier d’index:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.htmlPuis démarrez MRTG:
env LANG=C /usr/bin/mrtg /etc/mrtg.cfgIl se peut que des erreurs apparaissent au lancement de Mrtg. Rassurez-vous c’est tout à fait normal. Il suffit d’exécuter plusieurs fois la commande ci-dessus et vous n’aurez plus l’erreur.
Il ne nous reste plus qu’à ajouter une tache planifiée:
crontab -eEt ajoutez cette ligne dans le gestionnaire des crons:
*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg.cfgL’installation de MRTG est terminée. Vous n’avez plus qu’à attendre 5 minutes puis vous pourrez consulter vos graphiques de statistiques en utilisant l’adresse suivante http://votre_ip/mrtg/.
Vous obtiendrez alors des graphiques de statistiques de consommation de bande passante de ce genre:
Installer un serveur VPN sur Ubuntu (Serveur Kimsufi)
PETITE NOTE: Je vends des accès à mon serveur VPN pour 5€ par mois, sans aucune restrictions. Postez un commentaire si vous êtes intéressés.
La sécurité sur Internet est quelque chose de primordiale, c’est pourquoi j’ai décidé d’installer un serveur VPN sur mon serveur dédié Kimsufi.
Je pensai faire çà en 5 minutes mais j’ai rencontré plusieurs soucis. Je vais donc tenter de vous expliquer comment faire pour installer un serveur OpenVpn sur une machine Debian ou Ubuntu.
Mais commençons par voir ce qu’est un VPN.
Présentation et utilité d’un serveur VPN
Un VPN, ou Virtual Private Network (pour réseau privé virtuel) vous permet de créer une connexion sécurisée entre votre ordinateur et le serveur VPN. Cette connexion étant cryptée, vous allez pouvoir naviguer sur Internet par exemple en utilisant le serveur VPN comme relai.
Cette sécurité, ce cryptage est valable pour une connexion filaire ou Wifi et empêche toute malveillance ou surveillance.
Un des gros avantages d’utiliser un serveur VPN est que toutes les données qui passent par ce serveur VPN, aussi bien des données entrantes que des données sortantes, sont cryptées. Il vous sera donc possible de naviguer sur Internet de manière totalement anonyme puisque c’est le serveur VPN qui fera le relai entre votre machine et les différents hôtes distants.
Le schéma suivant illustre le fonctionnement d’un serveur VPN:
Pourquoi utiliser un serveur VPN ?
Comme je vous le disai plus haut, l’utilisation d’une connexion sécurisée grâce à l’utilisation d’un serveur VPN va vous assurez un minimum de sécurité:
- données cryptées
- adresse ip camouflée par celle du serveur VPN
- anonymat sur Internet
- navigation plus rapide qu’au travers d’un proxy
- téléchargements sécurisés (pour éviter de se faire piquer avec Hadopi si on télécharge des torrents par exemple :p)
- contourner les restrictions de certains réseaux (universités, certains pays, etc…)
- …
Il existe de nombreuses offres sur Internet vous proposant d’utiliser des serveur VPN payants maix ceux-ci coûtent chers si l’on souhaite un VPN de qualité avec un minimum de peering et de bande passante. Evidemment on trouve également des VPN pour quelques euros par mois, voir gratuit mais vous serez vite déçu.
Pour ceux qui souhaitent utiliser un VPN pour télécharger des torrents, sachez que les offres du net ne sont vraiment pas concluantes.
Dans mon cas je souhaite utiliser un serveur VPN pour pouvoir faire du téléchargement, du torrent, du surf anonyme et de l’analyse de flux. Aucune offre en ligne de location de VPN ne convient à mes besoins car j’ai environ 3To de données entrantes par mois.
J’ai donc décidé de faire moi même un VPN low cost en installant OpenVPN sur un serveur dédié Kimsufi.
Installer OpenVPN sur Ubuntu ou Debian
Il existe plusieurs solutions gratuites pour installer un serveur VPN sur Linux mais la plus répandue et probablement la plus stable est OpenVPN.
Comme son nom l’indique, OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel. OpenVPN est un VPN SSL qui va créer un tunnel IP (UDP ou TCP au choix) authentifié et chiffré avec la bibliothèque OpenSSL.
OpenVPN est relativement intéressant car il est possible de l’utiliser sur des réseaux NAT sans avoir à le configurer. De plus, il fournit divers clients VPN pour Windows, Mac, Linux ou bien Android.
Nous allons donc voir comment l’installer sur un serveur dédié Kimsufi tournant sous Ubuntu ou Debian, l’objectif étant par la suite de sécuriser mes ordinateurs sous Windows.
Pour la suite du tutoriel sur l’installation d’un serveur OpenVPN, vous devez disposez des droits d’administrateur (root).
Installation d’un serveur OpenVPN
L’installation du serveur OpenVPN peut se faire à partir des dépôts officiels:
apt-get install openvpn
mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
chown -R $USER /etc/openvpn/easy-rsa/
Les scripts installés sont désormais disponibles ici:
/etc/openvpn/easy-rsa/Configuration du serveur OpenVPN
Nous allons éditer le fichier /etc/openvpn/easy-rsa/vars:
export KEY_COUNTRY="FR"
export KEY_PROVINCE="44"
export KEY_CITY="Nantes"
export KEY_ORG="zem.fr"
export KEY_EMAIL="an@nyme.fr"Puis on génère les différentes clés et certificats nécessaires pour le cryptage des données:
cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
openvpn --genkey --secret keys/ta.keyUne fois les clés et les certificats générés, on va les rendre disponibles pour le serveur en les copiant dans le répertoire /etc/openvpn/
cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/Ensuite on crée les répertoires /etc/openvpn/jail (pour chrooter le processus d’OpenVPN) et /etc/openvpn/clientconf (qui contiendra les configurations des clients):
mkdir /etc/openvpn/jail
mkdir /etc/openvpn/clientconfIl ne reste plus qu’à créer le fichier de configuration /etc/openvpn/server.conf:
# Serveur TCP/443
mode server
proto tcp
port 443
dev tun
# Cles et certificats
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
tls-auth ta.key 0
cipher AES-256-CBC
# Reseau
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 4.4.4.4"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
# Securite
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# Log
verb 3
mute 20
status openvpn-status.log
; log-append /var/log/openvpn.logDans ce fichier de configuration, on voit clairement que l’on va créer un serveur VPN SSL basé sur le port 443 et sur le protocol TCP. Le port 443 étant généralement utilisé par le protocole HTTPS, cela vous permettra de passer aux travers de la plupart des firewalls et autres sécurités.
On note également que l’ensemble des clients qui se connecteront au serveur VPN utiliseront obtiendront une ip dans le range 10.8.0.0/24.
Désormais, on peut tester si l’installation et la configuration ont fonctionné:
cd /etc/openvpn
sudo openvpn server.confSi le message “Initialization Sequence Completed” apparait c’est que la configuration s’est correctement déroulée.
Il se peut que vous ayez le problème suivant:
Note: Cannot open TUN/TAP dev /dev/net/tun: Permission denied (errno=13)
Note: Attempting fallback to kernel 2.2 TUN/TAP interface
Cannot open TUN/TAP dev /dev/tun0: No such file or directory (errno=2)
Pour le résoudre, il faut rentrer les commandes suivantes:
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
Pour vérifier que le problème est corrigé, entrez la commande suivante:
cat /dev/net/tun
Elle devrait retourner le message “File descriptor in bad state”. Il ne vous reste plus relancer le serveur OpenVPN.
Une fois la configuration effectuée et testée, on édite le fichier /etc/openvpn/server.conf pour décommenter la ligne suivante:
log-append /var/log/openvpn.logVous pouvez alors relancer le serveur OpenVPN:
/etc/init.d/openvpn startConfiguration du routage
Un fois le serveur OpenVPN démarré, il faut configurer le routage afin que les clients puissent se connecter et obtenir une adresse ip. Pour cela, entrez cette commande:
sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'Vous pouvez rendre ce paramétrage permanent (même après un redémarrage de votre serveur) en éditant le fichier /etc/sysctl.conf:
net.ipv4.ip_forward = 1Ensuite on configure la gestion des adresses ip NAT, car votre serveur OpenVPN fonctionnera comme un routeur:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADEPour rendre persistante cette règle de routage NAT, il faut entrer cette commande:
sh -c "iptables-save > /etc/iptables.rules"Puis vous devrez éditer le fichier /etc/network/interfaces en y ajoutant la ligne suivante après la définition de votre interface réseau principale (“iface eth0 inet…”):
pre-up iptables-restore < /etc/iptables.rulesCréation d’un compte client sur le serveur OpenVPN
Maintenant le serveur OpenVPN est correctement configuré et que le routage est fonctionnel, nous allons créer un compte client pour pouvoir nous connecter dessus et l’utiliser. L’exemple suivant va créer un compte pour l’utilisateur “jhd”.
cd /etc/openvpn/easy-rsa
source vars
./build-key jhd3 fichiers ont été générés dans le répertoire /etc/openvpn/easy-rsa/keys:
- jhd.crt: Certificat pour le client
- jhd.csr: Certificat à garder sur le serveur
- jhd.key: Clés pour le client
Nous allons copier ces fichiers dans un sous répertoire du dossier /etc/openvpn/clientconf/ puis on se place dans ce dossier:
mkdir /etc/openvpn/clientconf/jhd/
sudo cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/jhd.crt keys/jhd.key /etc/openvpn/clientconf/jhd/
cd /etc/openvpn/clientconf/jhd/On créé le fichier client.conf en remplaçant A.B.C.D par l’adresse publique de votre serveur dédié:
# Client
client
dev tun
proto tcp-client
remote A.B.C.D 443
resolv-retry infinite
cipher AES-256-CBC
# Cles
ca ca.crt
cert jhd.crt
key jhd.key
tls-auth ta.key 1
# Securite
nobind
persist-key
persist-tun
comp-lzo
verb 3Le client Windows d’OpenVPN a besoin d’un fichier ayant l’extension .ovpn. On va donc copier le fichier de configuration client.conf vers client.ovpn:
cp client.conf client.ovpnIl ne nous reste plus qu’à zipper le répertoire du client afin de pouvoir le récupérer sur notre ordinateur client:
zip jhd.zip *.*Configuration du client OpenVPN pour Windows
Pour pouvoir vous connecter à votre serveur OpenVPN sous votre ordinateur Windows, vous devez télécharger le client OpenVPN disponible ici.
Procédez à son installation puis récupérer le fichier jhd.zip que l’on a généré précédemment sur le serveur dédié.
Dézippez le contenu du fichier dans le répertoire “config” du dossier d’installation de votre client OpenVPN (chez moi c’est “C:\Program Files (x86)\OpenVPN\config”).
Il ne vous reste plus qu’à lancer le client “OpenVPN GUI” puis à vous connecter.
Monitorer les connections sur votre serveur OpenVPN
Si comme moi vous avez plusieurs ordinateurs, il peut être intéressant de savoir qui est connecté et avec quelle adresse ip.
Pour surveiller votre serveur OpenVPN, vous pouvez exécuter la commande suivante:
tail /etc/openvpn/openvpn-status.log
Ce qui vous retournera la liste des clients connectés au serveur OpenVPN:
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
jhd,88.185.245.66:63459,3599574,15267172,Sat Dec 29 15:18:31 2012
jhdserver,85.182.248.56:61435,679353858,15417087657,Sat Dec 29 11:54:59 2012
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.6,jhd,88.185.245.66:63459,Sat Dec 29 16:31:22 2012
10.8.0.10,jhdserver,85.182.248.56:61435,Sat Dec 29 16:31:26 2012
GLOBAL STATS
Max bcast/mcast queue length,0
ENDDans l’exemple ci-dessus, on voit que 2 clients sont connectés:
- jhd avec l’adresse ip 88.185.245.66 qui a pour adresse privée 10.8.0.6
- jhdserver avec l’adresse ip 85.182.248.56 qui a pour adresse privée 10.8.0.10
Voilà j’espère que cela vous aidera
PETITE NOTE: Je vends des accès à mon serveur VPN pour 5€ par mois, sans aucune restrictions. Postez un commentaire si vous êtes intéressés.
Installer LSI MegaRAID Storage Manager sur Ubuntu
J’ai récemment acheté une carte LSI MegaRaid 84016E pour remplacer mon expander Chenbro qui a pris feu (j’avais connecté le molex dans le mauvais sens
).
Cette carte SAS / Raid dispose de 16 ports et je me suis dis qu’il serait sympa d’installer LSI MegaRaid Storage Manager sur Ubuntu afin de gérer mes différents RAID et disques virtuels.
Voici la procédure à suivre pour installer LSI MegaRaid Storage Manager sur votre Ubuntu (j’utilise une version 64Bits):
echo "deb http://hwraid.le-vert.net/debian squeeze main" >> /etc/apt/sources.list
apt-get update
apt-get -y --force-yes install megacli megactl libc6-i386 lib32gcc1 lib32z1 lib32stdc++6 ia32-libs
wget http://djlab.com/stuff/libstdc++5_3.3.6-21ubuntu1_amd64.deb
dpkg -i libstdc++5_3.3.6-21ubuntu1_amd64.deb
wget http://djlab.com/stuff/libstdc++5_3.3.6-21ubuntu1_i386.deb
dpkg-deb -x libstdc++5_3.3.6-21ubuntu1_i386.deb lib32stdc++5
cp ./lib32stdc++5/usr/lib/libstdc++.so.5.0.7 /usr/lib32
ln -s /usr/lib32/libstdc++.so.5.0.7 /usr/lib32/libstdc++.so.5
wget http://djlab.com/stuff/libxerces-c28_2.8.0+deb1-2build1_i386.deb
dpkg-deb -x libxerces-c28_2.8.0+deb1-2build1_i386.deb lib32xerces-c28
mkdir -p /opt/lsi/Apache/
cp ./lib32xerces-c28/usr/lib/libxerces-c.so.28.0 /opt/lsi/Apache/
ln -s /opt/lsi/Apache/libxerces-c.so.28.0 /opt/lsi/Apache/libxerces-c.so.28
ln -s /opt/lsi/Apache/libxerces-c.so.28 /usr/lib/libxerces-c.so.28
ldconfig
apt-get install libstdc++5
wget https://djlab.com/stuff/megaraid-storage-manager_8.10-04_amd64.deb
dpkg -i megaraid-storage-manager_8.10-04_amd64.deb
wget http://djlab.com/stuff/getlibs-all.deb
dpkg -i getlibs-all.deb
getlibs -y -l libxerces-c.so.28 libicuuc.so.42
ldconfig
## Launch GUI (make sure X11 forwarding is enabled on SSH session):
## /usr/local/MegaRAID\ Storage\ Manager/startupui.sh
Utiliser Screen sous votre Linux RaspBerry Pi
Aujourd’hui, nous allons apprendre à utiliser Screen sous notre RaspBerryPi mais ce tutoriel est valable pour tout système linux.
A quoi sert Screen ?
Screen est une application qui permet d’exécuter d’autres applications en tâche de fond, ce qui laisse le terminal disponible pour effectuer d’autres informations.
Comme je prends le contrôle à distance sur mon RaspBerry Pi en utilisant putty et SSH, Screen me permet d’exécuter plusieurs tâches en parallèle sans pour autant devoir ouvrir plusieurs terminaux.
Comment installer Screen ?
Pour installer Screen, il suffit d’exécuter la commande suivante:
apt-get install screenLes principales commandes de Screen
Voici la liste des principales commandes de Screen:
- screen -ls : Affiche les screens ouvert
- screen -dr : Récupérer un screen ouvert
- ctrl+a : Commande principale
- “ : Affiche la liste des screens
- w : Nous informe sur quel screen nous sommes
- d : Détache le screen actuel
- c : Créer un nouveau Screen
- shift+A : Renomme le Screen courant
Utiliser Screen
screenCeci va “ouvrir un terminal” en “screen” (tâche de fond).
Vous pouvez alors exécuter toutes les commandes que vous souhaitez (top, ntop, bw-g, …)
Une fois cette commande tapée, il faut appuyer sur “ctrl+a” puis “d” afin de se détacher de ce screen (de cet écran). Vous aurez alors un message de ce genre:
[detached from 11199.pts-0.jhdserver]En tapant la commande “screen -ls” dans un terminal, vous obtiendrez la liste de tous les screens en cours d’exécution:
root@jhdserver:/home/jhd# screen -ls
There is a screen on:
11199.pts-0.jhdserver (10/12/2012 09:37:30 PM) (Detached)
1 Socket in /var/run/screen/S-root.Pour récupérer un screen, il suffit de lancer la commande “screen -dr pid”.
Pour fermer un screen, il suffira alors de lancer la commande “exit”.
Mediatomb sur Ubuntu avec support du javascript
Après avoir essayé plusieurs serveurs DLNA, j’ai finalement porté mon choix sur Mediatomb car il permet d’organiser ses fichiers grâce à des scripts javascript.
Malheureusement la version de Mediatomb disponible dans les dépôts Ubuntu n’a pas été compilée avec le javascript activé.
Voici donc la manipulation à suivre pour recompiler une version de Mediatomb avec le support du Javascript.
Tout d’abord, il faut supprimer les librairies libmoz185 présentes par défaut dans Ubuntu puis installer des librairies nécessaires à la compilation:
sudo apt-get remove libmozjs185*
sudo apt-get install build-essential libnspr4-0dEnsuite téléchargez les librairies libmozjs2d et libmozjs-dev initialement développées pour Debian Squeeze. Pensez à prendre les versions correspondant à votre architecture et celle pour Debian Squeeze (c’est important).
Une fois téléchargées, vous pouvez les installer:
sudo dpkg -i libmoz*.debRécupérez ensuite les sources de Mediatomb:
sudo apt-get build-dep mediatomb
sudo apt-get source mediatombPuis éditez le fichier “debian/rules” pour activer le javascript:
sudo nano <mediatombfolder>/debian/rulesRecherchez –disable-libjs et remplacez le par –enable-libjs.
Vous pouvez également changer le numéro de version dans <mediatombfolder>/debian/changelog et dans le fichier “mediatomb.dsc” afin d’éviter les écrasements suite à des mises à jour.
Il ne vous reste plus qu’à lancer la configuration de Mediatomb:
cd <mediatombfolder>
sudo ./configureSi tout c’est bien déroulé, vous devriez voir ”libjs : yeslibjs : yes”.
Désormais vous pouvez lancer la compilation grâce à la commande:
sudo fakeroot debian/rules binaryUne fois la compilation terminée (cela peut prendre plusieurs minutes), vous devriez avoir 3 fichiers .deb dans le répertoire parent.
Il ne reste plus qu’à les installer:
sudo apt-get install libjs-prototype
sudo dpkg -i mediatomb*.debVoilà, votre serveur Mediatomb est installé et il supporte le javascript
Overclocker la CPU, RAM et GPU de votre RaspBerry Pi
Voici une petite astuce pour overclocker la cpu, la ram et la puissance GPU de votre RaspBerry Pi sans pour autant en augmenter le voltage.
echo -e "arm_freq=800\nsdram_freq=450\ncore_freq=350" >> /boot/config.txtNotez que pour utiliser la commande suivante, il est préférable d’utiliser un dissipateur thermique sur la puce de votre RaspBerry. On peut en trouver pour 3€ sur ebay
echo -e "arm_freq=850\nsdram_freq=500\ncore_freq=450" >> /boot/config.txtPour que les modifications prennent effet, il suffit de redémarrer votre RaspBerry Pi:
shutdown -r now
Exécuter un script PHP dans un shell sous Linux
Aujourd'hui j'ai voulu exécuté un script php dans un shell sur mon serveur Linux.
Pour cela, c'est simple il suffit de rajouter la ligne suivante en haut de votre fichier php:
#!/path/to/php
Notez que !/path/to/php est le répertoire dans lequel est installé php sur votre machine linux.
Pour trouver ce path, utilisez la commande:
which php
Ce qui retournera quelque chose comme çà:
/usr/bin/php
Votre fichier php ressemblera alors à:
#!/usr/bin/php
Il suffit de rendre votre script exécutable via la commande:
chmod +x hello.php
Puis d'exécuter votre script en tapant:
./hello.php
Automount de vos partitions ZFS sous Linux
Aujourd'hui j'ai voulu mettre en automount mes différents raidz afin qu'ils se montent automatiquement au démarrage de mon serveur Linux.
Pour cela, il suffit d'éditer le fichier /etc/default/zfs
~$ cat /etc/default/zfs
# Automatically run `zfs mount -a` at system startup if set non-empty.
ZFS_MOUNT='yes'
#ZFS_MOUNT=''
# Automatically run `zfs unmount -a` at system shutdown if set non-empty.
ZFS_UNMOUNT='yes'
#ZFS_UMOUNT=''
Créer un alias sous Linux
Aujourd'hui j'ai voulu créer des alias dans mon environnement console (bash) car je me suis aperçu que j'utilise toujours les même commandes shell.
Les commandes que j'utilise étant particulièrement longues à taper, j'ai donc décidé d'en faire des alias, des raccourcis.
Pour cela, il faut éditer le fichier "bashrc" se trouvant sur le root:
nano ~/.bashrc
Ensuite il suffit d'ajouter votre alias à la fin de ce fichier:
alias ur='unrar e *.rar'
Dans ce cas, je n'aurai plus qu'à exécuter la commande "ur" pour dézipper les archives Winrar.











ZeM.fr est un blog que j'ai lancé afin de stocker les informations qui me semblent importantes.