Planète auto-hébergement

2014-09-16

Serveur Tiny Tiny Rss et Firefox OS

En grand lecteur de flux Rss que je suis, il était indispensable que je puisse me connecter sur mon serveur Tiny Tiny Rss. Après quelques cliques sur internet je suis tombé sur l’application qui répond exactement à mes besoins : FeedSpider.

Cette petite application disponible via le market, permet de consulter ses flux rss depuis diverses sources :

  • Tiny Tiny Rss
  • Owncloud News
  • Feedly
  • The Old Reader
  • Inoreader
spider1

Sélection des différents services

La prise en main et la configuration sont très simple, l’interface est très bien pensée et très agréable lors la lecture. Du côté des fonctionnalités, pour moi tout y est, je retrouve la configuration faite dans TTRSS. Une fois le service sélectionné, il suffit de renseigner son login, mot de passe, et l’url du serveur TTRSS.

spider2

Connexion à Tiny Tiny Rss

Sur le premier écran sont visible uniquement les nouveaux articles avec leurs catégories respectives, il est possible de modifier cela dans les paramètres. Très appréciable aussi de pouvoir ajouter un flux à partir du téléphone sur le serveur.

spider3 spider4 spider5

Je n’ai pas encore fait le tour complet du propriétaire, je ne l’utilise seulement depuis un jour, mais pour l’instant j’y trouve mon compte et j’en suis satisfait.

2014-09-15

Maj Proxmox 3.3

Une nouvelle version de Promox en 3.3 vient d’être publiée.

proxmox_the_ultimate

Voici les principaux changements :

mais également :

  • gestion des vlan pour les CTs
  • gestion du htoplug sur les VMs (kvm)
  • nouveaux drivers pour les cartes réseaux (avec gestion « multiqueue »)
  • nouveaux kernels 26.32-136 et 3.10.0-4 (mais toujours pas de support OpenVZ)
  • basé sur Debian Wheezy et 7.6

source : http://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_3.3

 

Pour mettre votre installation à jour, rien de plus simple, utilisez pveupgrade :

pveupgrade 
Starting system upgrade: apt-get dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libpve-storage-perl pve-cluster pve-firewall pve-manager snmpd srvadmin-omcommon
6 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,291 kB of archives.
After this operation, 1,999 kB disk space will be freed.
Do you want to continue [Y/n]?

2014-09-12

Mon nouveau jouet tout feu tout flame !

Moi aussi j’ai succombé à la déferlante Firefox os-Flame que je viens hier soir. Je ne vais pas refaire le détail du packaging qui a déjà été très bien réalisé par mon confrère libriste Dada.

A l’heure actuelle j’ai fait un rapide flashage en 2.0, avec une image pré-compilée, mais dès que possible j’essaierai de compiler un 2.1 histoire d’avoir une version avec les dernières modifications. J’ai aussi rencontré des problèmes avec mon serveur mail chiffré pourtant je n’ai pas de certificat auto-signé, j’utilise celui de Gandi.

Toujours de pas de carddav pour mes contacts hébergés sur ownCloud, mais par contre le calendrier fonctionne très bien tant que je ne souhaite pas le synchroniser en SSL.

Mis à part ses quelques problèmes à approfondir, j’accroche complétement à l’interface, le téléphone en lui-même est très bien. Je ne suis de toute façon pas objectif puisque mon ancien mobile était un vieux Galaxy S qui peinait à faire tourner CyanogenMod 10.

Pour info je n’ai payé que 29 euros de frais de douane et TVA contrairement aux 36 euros annoncés sur le wiki de Mozilla ou les 47 euros payés par d’autre. Je ne manquerai pas de faire d’autres articles en essayant de ne pas reprendre ce qui a déjà été fait, mais toujours en partageant mes expériences bonnes ou mauvaises.

Pour l’instant je suis encore dans l’euphorie de la nouveauté et de la découverte.

2014-09-08

Nouveaux paquets en test pour Proxmox

Je viens de trouver par hasard en faisant les maj d’un cluster Proxmox 3.2 quelques bonnes surprises :)

 

Logo-ProxmoxVE

  •  un nouveau module de gestion du Firewall, paramétrable au niveau du cluster, de l’hôte ou des VMs.
  • une console en HTML5, fini le vieux VNC asthmatique !
  • un nouveau kernel en 3.10, mais toujours pas de support officiel d’OpenVZ (ou alors il faut mettre les mains dans le cambouis sans garantie de succès)
  •  QEMU en 2.1
  • et une mise à jour de Corosync et Fence, rendant la gestion du HA moins hasardeuse !

vous trouverez ces paquets dans le repo de tests, pour cela,
éditez nano /etc/apt/sources.list

et ajoutez y :

# PVE pvetest repository provided by proxmox.com
deb http://download.proxmox.com/debian wheezy pvetest

Pensez à faire un upgrade ;)

pveversion -v
proxmox-ve-2.6.32: 3.2-136 (running kernel: 2.6.32-31-pve)
pve-manager: 3.2-30 (running version: 3.2-30/1d095287)
pve-kernel-2.6.32-32-pve: 2.6.32-136
pve-kernel-2.6.32-30-pve: 2.6.32-130
pve-kernel-2.6.32-29-pve: 2.6.32-126
pve-kernel-2.6.32-31-pve: 2.6.32-132
lvm2: 2.02.98-pve4
clvm: 2.02.98-pve4
corosync-pve: 1.4.7-1
openais-pve: 1.1.4-3
libqb0: 0.11.1-2
redhat-cluster-pve: 3.2.0-2
resource-agents-pve: 3.9.2-4
fence-agents-pve: 4.0.10-1
pve-cluster: 3.0-14
qemu-server: 3.1-34
pve-firmware: 1.1-3
libpve-common-perl: 3.0-19
libpve-access-control: 3.0-15
libpve-storage-perl: 3.0-22
pve-libspice-server1: 0.12.4-3
vncterm: 1.1-8
vzctl: 4.0-1pve6
vzprocps: 2.0.11-2
vzquota: 3.1-2
pve-qemu-kvm: 2.1-5
ksm-control-daemon: 1.1-1
glusterfs-client: 3.5.2-1

Quelques screens :

L’interface Html5 :
Capture d'écran - 08092014 - 16:59:19

Capture d'écran - 08092014 - 17:26:45

La gestion du Firewall :

Capture d'écran - 08092014 - 17:00:33

2014-09-05

Finalement, le raspberry pi en serveur web, c’est pas top

Mon Raspberry PI n’aura pas tenu la charge.

Pourtant, on ne peut pas dire que je lui en ai demandé beaucoup. Juste un lecteur de flux RSS, un serveur CalDAV / CardDAV. Rien d’accessible au grand public, donc pas trop d’accès.

Et pourtant, la carte SD ne doit pas aimer les écritures / lectures que je lui demande. J’ai eu pas mal de fichiers corrompus, un coup dans /usr/share/perl5, un coup dans /etc/apache2.

J’ai donc décidé de ne plus m’en servir pour l’instant. Le Raspberry PI ne me sert juste à mettre un disque dur externe en réseau dans ma maison, mais plus d’accès depuis l’extérieur.

Je suis déçu, je pensais quand même que ça tiendrait un peu mieux que ça. C’est p’tet uniquement la carte qu’il faut changer, mais elle est quasi neuve, en plus ça m’oblige à réinstaller le système. Pas envie de perdre du temps avec ça. Mon expérience hébergement à la maison est donc en pause. Dommage.

J’ai remis un serveur CalDAV / CardDAV chez mon hébergeur, ça fonctionne et je ne gère pas le matos. Il me reste à remettre un lecteur de flux, mais comme je suis en mutualisé, je n’ai pas les cron, pas pratique pour les flux.

J’ai vraiment envie de continuer l’aventure hébergement à la maison, mais pas envie d’investir plus que ça.

(crédit photo benbrown)

2014-09-04

WordPress 4.0

WordPress 4.0 vient de sortir il y a quelques heures.

Voici ses nouveautés :

  •  Une nouvelle galerie des fichiers medias.
    Le look est nouveau mais il y a aussi une nouvelle fonctionnalité sympa : En affichant les détails d’un media, on peut voir la liste des articles qui y font référence.
  • La mise en page de l’éditeur est plus dynamique.
    C’est plus pratique à utiliser quand on écrit de grands articles je trouve.
    J’ai quand même trouvé un bug, les boites flottantes de droite ne scrollent plus quand on arrive en bas de la page donc je ne peux pas accéder à tout leur contenu.
  • L’interface de recherche a été revue.
    Le look est plus moderne, on a le droit à de grosses icones.. whoah. Nan je rigole, je trouve cela futile.
    Par contre, on a accès aux détails du plugin en overlay quand on clique dessus plutot que charger une nouvelle page et ca j’aime bien.
  • Enfin le meilleur pour la fin, l’intégration des médias riches (vidéo, audio, tweet) se fait beaucoup plus facilement. Plus besoin de se prendre la tête avec les balises. On colle l’url dans l’article et WordPress inclut le widget qu’il faut si le site d’origine est dans cette liste
J'aime(5)Ferme-la !(0)

2014-09-03

Encoder des vidéos avec le codec VP9 sur Ubuntu Trusty, en utilisant Libav (et Docker pour le fun)

Comme j’auto-héberge mes vidéos, j’ai besoin de les ré-encoder avant de les mettre en ligne. Ma source est en H.264 1080p, et je veux les réencoder avec des codecs libres, et dans une résolution et un bitrate adaptés à l’auto-hébergement.

Encoder des vidéos en WebM avec les codecs VP8 et Vorbis est assez facile sur Ubuntu, en utilisant libav.

Mais comment faire pour encoder avec les codecs VP9 et Opus, qui promettent un rapport qualité/poids deux fois meilleur ?

vp9-opus

DISCLAIMER : je ne suis pas un spécialiste de l’encodage vidéo. Je me suis contenté des paramètres par défaut de libav. Il est probable qu’on puisse avoir de meilleurs résultats avec un paramétrage + fin de l’encodage (je suis preneur de suggestions). D’autre part, je me suis concentré sur la partie vidéo plutôt que la partie audio (dont je néglige ici la taille et la consommation de CPU)

VP8+Vorbis avec libav

D’abord, quand je dis que c’est facile en VP8+Vorbis, ça n’a pas toujours été vrai : il y avait un bug que j’ai rapporté dans la version de libav de Ubuntu 14.04 (Trusty) qui empêchait la lecture des fichiers dans Firefox : https ://bugs.launchpad.net/ubuntu/+source/firefox/+bug/1323822

Heureusement, c’est corrigé depuis mi-juillet 2014, en passant à la version 9.14, au lieu de 9.13.

Sur Ubuntu 12.04 (Precise), pas de soucis, j’ai encodé pendant 2 ans dans ce format.

VP9+Opus avec libav

Pour le VP9, la version 9.x de libav (fournie avec Trusty) ne le prend hélas pas encore en charge. J’ai fait la demande de passer à la version 10 avant la sortie de Trusty, mais c’était déjà trop tard : https ://bugs.launchpad.net/ubuntu/+source/libav/+bug/1296378

Le VP9 est bien disponible dans la version suivante d’Ubuntu (Utopic – 14.10) car ils sont passés à la version 10.3 de libav.

Mais ce n’est pas si simple : il manque encore un patch pour que avconv accepte d’utiliser ce codec VP9 (et Opus) dans un conteneur WebM. Et ce patch n’est commité que dans la branche 11.x de libav (qui n’est qu’en beta pour l’instant).

J’ai essayé de backporter le patch en 10.4 : ça compile sans problèmes, et je peux générer du WebM avec le codec VP9.

Mais bref, plutôt que de demander un backport du patch sur Utopic, le plus simple serait que Utopic passe sur libav 11.x (dès qu’il sera sorti). C’est envisagé ici : https ://bugs.launchpad.net/ubuntu/+source/libav/+bug/1360026

Et, d’ici là, il “suffit” de compiler libav 11.x (actuellement en beta 1) :

wget https://libav.org/releases/libav-11_beta1.tar.gz
tar xvzf libav-11_beta1.tar.gz
cd libav-11_beta1
sudo apt-get install build-essential libvpx-dev yasm libvorbis-dev libmp3lame-dev pkg-config libopus-dev
./configure --enable-libvpx --enable-libmp3lame --enable-libvorbis --enable-libopus
make -j4

Le point important à retenir pour la compilation est d’installer le package pkg-config : j’ai eu du mal à trouver que c’était ça qui me manquait pour compiler avec le support de l’opus.

Il est probablement possible d’utiliser un PPA pour installer libav 11, mais je ne voulais pas “polluer” ma machine avec : certains logiciels sur ma machine dépendent de libav et pourraient dysfonctionner avec cette version.

Utiliser Docker pour faire les conversions sous Trusty

docker

Allez, j’avoue, j’ai trouvé une excuse bidon pour essayer Docker : compiler libav sur Trusty est + simple que ce que j’explique ci-dessous…

Cela dit, cela pourrait servir plus tard :

  • quand libav sera passé en version 11 dans Utopic (ou version ultérieure), cela évitera de le compiler à la main. Edité le 06/09/2014 : c’est fait
  • et ça peut permettre de profiter des dernières améliorations/corrections des codecs vpx et opus (qui sont a priori dépendants de la version d’Ubuntu)

Mais bref, avec Docker, l’idée ici est de pouvoir utiliser les librairies d’un autre OS sans polluer l’hôte. Au lieu de lancer une machine virtuelle complète, on utilise un conteneur léger (Docker) à la place.

NB : ne pas confondre la notion de conteneur Docker et de conteneur audio/video comme le WebM : ce sont deux choses complètement différentes.

Configuration avec Docker

D’abord installer Docker :

sudo apt-get install docker.io
sudo ln -sf /usr/bin/docker.io /usr/bin/docker

Puis créer le conteneur et se connecter dedans :

sudo docker pull ubuntu:utopic
sudo docker run -i -t ubuntu:utopic /bin/bash

Puis y installer libav (quand il sera en version 11, sinon on peut le compiler avec la procédure ci-dessus) :

sudo apt-get update
sudo apt-get install libav-tools opus-tools

Dans un autre terminal, enregistrer l’état du conteneur, pour pouvoir s’en re-servir par la suite :

sudo docker ps -a
sudo docker commit xxxxxxx utopic-libav11

(en remplaçant xxxxxx par l’id du conteneur que vous venez de lancer, et qui s’est affiché avec la commande “ps” du dessus)

Script de lancement

Se faire un petit script shell “convertir_webm_docker.sh” qui lance la conversion dans le conteneur Docker :

# Nécessite le package realpath
FULLPATH=`realpath "$1"`
# remove all the prefix until "/" character
FILENAME=${FULLPATH##*/}
# remove all the prefix until "." character
FILEEXTENSION=${FILENAME##*.}
# remove a suffix, in our case, the filename, this will return the name of the directory that contains this file
BASEDIRECTORY=${FULLPATH%$FILENAME}
# File name without extension
BASEFILENAME=`echo ${FILENAME%.*}`
sudo docker run -i -t -v "$BASEDIRECTORY":/host utopic-libav11 avconv -y -i "/host/$FILENAME" -vf scale=-1:724 -threads auto -b:v 1000k $2 "/host/$BASEFILENAME-720p-1Mbps.webm"
sudo chown mosssroy:mossroy "$BASEDIRECTORY/$BASEFILENAME-720p-1Mbps.webm"
sleep 2
# Un peu bourrin : ça fonctionne tant qu'on n'utilise pas docker pour autre chose! Il y a probablement une meilleure manière de faire (suggestions bienvenues)
sudo docker stop $(sudo docker ps -a -q --no-trunc)
sudo docker rm $(sudo docker ps -a -q --no-trunc)

Il faut installer le package realpath :

sudo apt-get install realpath

Et lancer la conversion comme suit :

convertir_webm_docker.sh fichier_source parametres_eventuels

Ca démarre en un clin d’œil, et convertit aussi vite qu’en-dehors de Docker (en tous cas, je n’ai pas vu la différence).

Lancement du script par clic-droit dans Nautilus

Pour plus de facilité d’utilisation, j’ai configuré ce script pour qu’il soit accessible en clic-droit depuis Nautilus (le navigateur de fichiers d’Ubuntu) :

Créer un fichier “convertir_en_webm.desktop” dans le répertoire ~/.local/share/applications avec le contenu suivant :

[Desktop Entry]
Categories=
Comment=Convertir en WebM
Comment[fr]=Convertir en WebM
Encoding=UTF-8
Exec=/bin/sh /home/mossroy/convertir_webm_docker.sh %U
GenericName=Convertir en WebM
GenericName[fr]=Convertir en WebM
Icon=
MimeType=video/quicktime;video/mp4;video/mpeg
Name=Convertir en WebM
Name[fr]=Convertir en WebM
Path=/home/mossroy
ServiceTypes=
SwallowExec=
SwallowTitle=
Terminal=true
TerminalOptions=
Type=Application
URL=
Name[fr_FR]=Convertir en WebM

Et ajouter à la fin du fichier ~/.local/share/applications les lignes suivantes pour l’associer aux types MIMEs souhaités :

video/mpeg=convertir_en_webm.desktop;
video/mp4=convertir_en_webm.desktop;
video/quicktime=convertir_en_webm.desktop;

Ensuite, dans Nautilus, un “clic-droit->Ouvrir avec” sur un fichier vidéo d’un de ces types MIME devrait proposer de le convertir. Et le fichier webm devrait apparaitre dans le même répertoire, à la fin de la conversion.

Exemples de vidéos générées

Plutôt que de vous mettre mes vidéos de vacances, je suis parti de la vidéo libre “Tears of Steel”, en 4K H.264 (6.7 Go, bitrate de 73Mbps). J’ai d’abord pris un extrait de 20s avec une scène calme suivie de scènes d’action :

avconv -i tearsofsteel_4k.mov -c:v copy -c:a copy -ss 00:07:40 -t 00:00:20 extrait_tears_of_steel_4k.mov

Je sais, ce n’est pas très juste de partir d’une vidéo déjà compressée pour comparer des résultats de compression. Cela introduit un biais dû à la compression initiale. Pour limiter ce biais, je suis parti d’une vidéo d’excellente qualité (3840×1714 à 73 Mbps), dont je réduis fortement la définition et le bitrate (1622×724 à 1Mbps).

Pourquoi un bitrate de 1Mbps ? C’est l’upload maximum d’une ligne ADSL standard, et ça permet d’avoir des fichiers de taille raisonnable. J’ai trouvé que c’était un bon compromis pour de l’auto-hébergement.

Voici le résultat (les moins bons au début, les meilleurs à la fin). Mettez les vidéos en plein écran pour vous faire une idée.

VP8+Vorbis

./avconv -i extrait_tears_of_steel_4k.mov -c:v libvpx -c:a libvorbis -vf scale=-1:724 -threads auto -b:v 1000k extrait_tears_of_steel_720p_vp8_vorbis_1Mbps.webm

Conversion en 1min 58s, qui génère un fichier de 3.3Mo :

VP8+Vorbis encodé en 2 passes

./avconv -i extrait_tears_of_steel_4k.mov -c:v libvpx -c:a libvorbis -vf scale=-1:724 -threads auto -b:v 1000k -pass 1 -passlogfile logfile_vp8.fpf extrait_tears_of_steel_720p_vp8_vorbis_1Mbps_2passes.webm
./avconv -i extrait_tears_of_steel_4k.mov -c:v libvpx -c:a libvorbis -vf scale=-1:724 -threads auto -b:v 1000k -pass 2 -y -passlogfile logfile_vp8.fpf extrait_tears_of_steel_720p_vp8_vorbis_1Mbps_2passes.webm

Conversion en 1min 58s, qui génère un fichier de 2.7Mo :

VP9+Opus

./avconv -i extrait_tears_of_steel_4k.mov -c:v libvpx-vp9 -c:a libopus -vf scale=-1:724 -threads auto -b:v 1000k extrait_tears_of_steel_720p_vp9_opus_1Mbps.webm

Conversion en 6min 24s, qui génère un fichier de 2.7Mo :

VP9+Opus encodé en 2 passes

./avconv -i extrait_tears_of_steel_4k.mov -c:v libvpx-vp9 -c:a libopus -vf scale=-1:724 -threads auto -b:v 1000k -pass 1 -passlogfile logfile_vp9.fpf extrait_tears_of_steel_720p_vp9_opus_1Mbps_2passes.webm
./avconv -i extrait_tears_of_steel_4k.mov -c:v libvpx-vp9 -c:a libopus -vf scale=-1:724 -threads auto -b:v 1000k -pass 2 -y -passlogfile logfile_vp9.fpf extrait_tears_of_steel_720p_vp9_opus_1Mbps_2passes.webm

Conversion en 6min 52s , qui génère un fichier de 2.8Mo :

La différence de qualité me parait très nette. Le VP9 vaut vraiment le coup par rapport au VP8.

L’encodage en 2 passes améliore encore sensiblement la qualité. Ca donne un résultat vraiment correct pour du 720p sur seulement 1 Mbps.

NB : il me reste un souci avec l’encodage en 2 passes : quand j’utilise des vidéos issues de mon appareil photo, le bitrate que je demande n’est pas respecté : https ://bugzilla.libav.org/show_bug.cgi ?id=731

Performances en encodage/décodage

Premier constat : l’encodage est très consommateur en CPU. 3 fois plus que pour le VP8 dans l’exemple ci-dessus (mais le décodage de la source en 4K biaise ce calcul : avec une source en “seulement” 1080p, c’est plutôt 4 à 5 fois plus long que le VP8).

Ce n’est pas une surprise mais je ne m’attendais pas à une différence si importante. D’autre part, dans la version 11 beta1 de libav, l’encodage n’exploite pas tous les coeurs/processeurs de la machine (pas de multi-thread). Il me semble que c’était le cas dans d’autres versions, donc ça sera peut-être activé dans la version finale.

Deuxième constat : le décodage est également + consommateur, mais dans une moindre mesure. Très grossièrement, à bitrate égal, il faut environ 50 % de CPU en plus pour le décodage VP9 :

  • VP9+Opus sous Firefox = 60 à 70 % du CPU d’un coeur d’un Core i5 3450S
  • VP8+Vorbis sous Firefox = 40 à 50 % du CPU
  • VP9+Opus sous Totem = 26 % du CPU (avec piste Opus non reconnue)
  • VP8+Vorbis sous Totem  = 18 % du CPU

Troisième constat : Firefox consomme 2 fois plus de CPU que Totem pour décoder. Idem pour Chromium (mais dans une moindre mesure). J’ai rapporté le problème chez Mozilla.

Sur mon vieux netbook (Atom N570 double coeur), ces différences se voient : les vidéos en 720p 1Mbps se lisent très bien sous Totem. Sous Firefox (ou Chromium), le VP8 se lit avec quelques saccades, alors que le VP9 se bloque au bout de quelques frames.

Support logiciel en décodage

Le codec VP9 est bien supporté sous Trusty : en décodage par Gstreamer (le backend de Totem), Firefox et Chromium, mais pas encore par VLC (v2.1.4), ni par XBMC/Kodi (v13).

Le codec Opus n’est pas encore très bien supporté, en tous cas dans un conteneur WebM, et dans les versions fournies actuellement avec Trusty :

  • GStreamer ne semble pas le reconnaître du tout dans un conteneur WebM (il le prend pour du “audio/x-unknown”), alors qu’il le reconnaît s’il est seul dans un conteneur Ogg (testé avec le fichier ehren-paper_lights-96.opus). Idem pour VLC (il le prend pour du “undf” dans le WebM). Il est possible que cela vienne d’un bug dans libav lui-même. Cela dit, mkvinfo reconnaît bien la piste Opus, et j’ai le même comportement avec une autre vidéo VP9/Opus.
  • Aucun problème avec Firefox, sur les cas que j’ai testés
  • Un petit piège sur Chromium/Chrome : ils refusent apparemment les largeur/hauteur impairs (ou peut-être qui ne sont pas multiples de 4 ?). Donc il faut parfois changer un peu les dimensions pour tomber sur des valeurs compatibles : c’est pour cette raison que j’ai mis le paramètre “-vf scale=-1 :724″ au lieu de “-vf scale=-1 :720″ (qui me donnait une largeur impair sur cette vidéo : à adapter pour chaque vidéo)

Mes conclusions personnelles :

  • Le codec VP9 a de l’avenir !
  • Vivement l’accélération matérielle (surtout pour les périphériques mobiles) et/ou des processeurs plus puissants et/ou des optimisations dans l’implémentation des navigateurs
  • Si votre matériel est suffisamment puissant (pour l’encodage et pour le décodage), et que vous ne diffusez les vidéos que via un navigateur, vous pouvez y aller : Firefox et Chromium/Chrome sont prêts (mais bien sûr pas IE ni Safari, qui boudent et préfèrent les codecs non libres). Côté mobile, c’est supporté par Firefox OS>=1.3 (décodage logiciel donc il faut du matériel puissant), je n’ai pas regardé pour les autres OS : cela prendra probablement un peu de temps pour que cela fonctionne (compatibilité logicielle et matérielle)
  • Si vous voulez que les vidéos soient facilement lisibles sur Trusty (en-dehors du navigateur), mieux vaut garder le codec audio Vorbis pour l’instant. Cela dit, il est probable que ce problème de compatibilité soit corrigé bientôt
  • Si vous restez en VP8, et avec un bitrate de 1 Mbps, le 720p me parait bien trop pixelisé. Il vaut mieux choisir une définition plus faible que le 720p. J’utilise du 480p, voire 360p.

2014-08-26

Lychee, rapide mais gourmand. Et si je me lançais finalement ?

Je souhaite mettre en place un système de partage d’album-photos avec ma famille, mes amis. Tous les dossiers ne sont pas accessibles à ma famille, tous les dossiers ne sont pas accessibles à mes amis.

J’ai un disque dur externe branché sur mon Raspberry PI, avec une arborescence /media/mondisque/2002/mesphotos, /media/mondisque/2003/mesphotos, ainsi de suite.

Je souhaite donc que mon système de partage se base là-dessus et qu’il ne réimporte pas tout dans son propre répertoire.
Je souhaite aussi que le système de partage ne modifie rien du tout dans mes répertoires de photos (genre pas de miniatures, pas de fichiers de config, etc.). Tout doit se faire dans /var/www/monsystèmedepartage.

Lychee semblait parfait pour ça. Rapide à l’affichage (les miniatures sont générées par un plugin, en ligne de commande via un script python). Gestion des albums privés, etc.

MAIS, bah oui, il fallait un mais, il réimporte tout dans son propre répertoire. Inutile donc. Car je vais avoir mes fichiers stockés à deux endroits en même temps. Ma carte SD du Raspberry ne me dit pas merci. Et la doc de Lychee semble confirmer ça. Fort dommage.

Si je devais créer ce genre de script, je n’aurais que ça :

  • cache : la même arbo que mon disque dur avec les miniatures et un fichier de config par répertoire (qui me permettra de dire si l’album est privé ou pas, quelle clé autorise la consultation, etc.)
  • config.ini : où sera stocké entre autre le chemin de mon disque dur avec mes photos
  • import.py : un script qui va chercher dans config.ini le répertoire de mes photos et génère la bonne arbo dans le répertoire cache
  • index.php : pour faire le rendu
  • style.css : pour faire joli

Et c’est tout. C’EST TOUT.

À mon clavier ?

(crédit photo artolog)

2014-08-25

Fichier /usr/share/perl5/Debconf/Encoding.pm d’origine

Ma raspbian était toute cassée, la faute à un fichier /usr/share/perl5/Debconf/Encoding.pm tout pourri (pourquoi ? va comprendre Charles).

Si ça vous arrive, voici le fichier propre (un grand merci à Arnaud) :

#!/usr/bin/perl
# This file was preprocessed, do not edit!

package Debconf::Encoding;

use strict;
use warnings;

our $charmap;
BEGIN {
    no warnings;
    eval q{ use Text::Iconv };
    use warnings;
    if (! $@) {
        $charmap = `locale charmap`;
        chomp $charmap;
    }
    
    no warnings;
    eval q{ use Text::WrapI18N; use Text::CharWidth };
    use warnings;
    if (! $@ && Text::CharWidth::mblen(" a ") == 1) {
        *wrap = *Text::WrapI18N::wrap;
        *columns = *Text::WrapI18N::columns;
        *width = *Text::CharWidth::mbswidth;
    }
    else {
        require Text::Wrap;
        require Text::Tabs;
        sub _wrap { return Text::Tabs::expand(Text::Wrap::wrap(@_)) }
        *wrap = *_wrap;
        *columns = *Text::Wrap::columns;
        sub _dumbwidth { length shift }
        *width = *_dumbwidth;
    }
}

use base qw(Exporter);
our @EXPORT_OK=qw(wrap $columns width convert $charmap to_Unicode);

my $converter;
my $old_input_charmap;
sub convert {
    my $input_charmap = shift;
    my $string = shift;
    
    return unless defined $charmap;
    
    if (! defined $old_input_charmap ||
    $input_charmap ne $old_input_charmap) {
        $converter = Text::Iconv->new($input_charmap, $charmap);
        $old_input_charmap = $input_charmap;
    }
    return $converter->convert($string);
}

my $unicode_conv;
sub to_Unicode {
    my $string = shift;
    my $result;
    
    return $string if utf8::is_utf8($string);
    if (!defined $unicode_conv) {
        $unicode_conv = Text::Iconv->new($charmap, "UTF-8");
    }
    $result = $unicode_conv->convert($string);
    utf8::decode($result);
    return $result;
}

1

2014-08-24

Tout cassé ma Raspbian

Ce matin, j’ai voulu installer MySQL sur mon Raspberry PI équipe de Raspbian.

sudo apt-get install php5-mysql

Pour une raison que j’ignore, ça a tout cassé ma distribution.

Dès que je voulais lancer une installation / mise à jour d’un paquet, voici les erreurs que j’ai obtenues :

Des erreurs ont été rencontrées pendant l'exécution : /var/cache/apt/archives/mysql-server-5.5_5.5.38-0+wheezy1_armhf.deb E: Sub-process /usr/bin/dpkg returned an error code (1)

Ou

0 mis à jour, 46 nouvellement installés, 0 à enlever et 1 non mis à jour. 19 partiellement installés ou enlevés. E: Impossible de localiser un fichier du paquet mysql-server-5.5. Cela signifie que vous devrez corriger ce paquet vous-même. E: Impossible d'activer les dépendances de construction

Ou

Les paquets suivants seront mis à jour : mysql-server-5.5 1 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour. 18 partiellement installés ou enlevés. Il est nécessaire de prendre 0 o/1 915 ko dans les archives. Après cette opération, 30,9 Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ? Bareword found where operator expected at /usr/share/perl5/Debconf/Encoding.pm line 15, near "$charmap = <code>locale" (Might be a runaway multi-line `` string starting on line 2) (Missing operator before locale?) debconf: Perl may be unconfigured (Unrecognized character \xE8; marked by ←- HERE after</code>locale c←- HERE near column 23 at /usr/share/perl5/Debconf/Encoding.pm line 15. Compilation failed in require at /usr/share/perl5/Debconf/Template.pm line 17. ... ... ... Des erreurs ont été rencontrées pendant l'exécution : /var/cache/apt/archives/mysql-server-5.5_5.5.38-0+wheezy1_armhf.deb E: Sub-process /usr/bin/dpkg returned an error code (1)

J’ai tout tenté :

sudo apt-get dist-upgrade
sudo apt-get install -f
sudo dpkg --configure php5-common

J’ai tenté de purger mysql-server, de réinstaller, j’ai testé ça, etc.

J’ai regardé le fichier /usr/share/perl5/Debconf/Encoding.pm car il contiendrait des erreurs … et voici ce que j’ai (il semble tout pourri, alors que les autres fichiers .pm du répertoire semblent OK) https://gist.github.com/nicosomb/6b1feac217e289f30b2f

Après, c’est un fichier d’encodage, c’est p’tet normal du coup …

Bref, je ne sais pas du tout quoi faire, impossible d’installer / supprimer quoique ce soit sur ma raspbian. Pratique !

J’ai tout fait en direct sur mon compte Diaspora* avec Bob Maerten : https://diaspora-fr.org/posts/563184

2014-08-22

Le logiciel libre n’est pas nécessairement un gage de liberté pour l’utilisateur

Le titre est un poil provocateur.

L’erreur que l’on fait tous plus ou moins, c’est de considérer le libre comme un gage de liberté. Se le dire, c’est prendre le risque de passer à côté d’un détail important. En effet, on peut se poser la question suivante : « Suis-je bien l’utilisateur qui bénéficie des avantages de la solution libre et/ou open source ? »

Clairement, il est impossible de répondre systématique à cette question par l’affirmative. Il faudrait lister quelques cas de figure :


L’admin

Chez moi, assis derrière ma machine qui tourne avec du libre, avec tout les accès nécessaires pour l’administrer, c’est fort probable. Ce qui me conforte dans cette idée est que je dispose des droits nécessaires pour casser entièrement mon système et qu’à priori, nul autre que moi ne dispose de ces droits. J’ai donc aussi le devoir de tenir mon système en état si je veux l’utiliser au mieux. Attention quand même car dans ce cas, il ne fait pas oublier la possible présence et exploitation (comme dans n’importe quel logiciel) de failles non comblées, soit pour cause de mise à jour non effectuée, soit parce qu’il s’agit d’une faille « zero day ».

Le proche de l’admin

Par contre, chez moi, toujours assis derrière ma machine mais SANS les accès pour son administration, c’est déjà moins certain. Ainsi, si dans mon entourage quelqu’un vient à utiliser ma machine pour ses propres besoins, son usage est limité au cadre que j’ai autorisé. Comme je suis le seul à disposer de mon mot de passe root, une partie de l’environnement n’est pas accessible complètement aux autres utilisateurs (fichiers de configuration, logs, certains programmes déjà installés, l’installation de nouveaux programmes…). Je reste, moi administrateur de la machine, alors le seul vrai utilisateur de la solution. Mon entourage me fait confiance et passe par moi pour l’ensemble des actions qu’il n’est pas autorisé à effectuer.

La connaissance de l’admin

Le raisonnement est identique pour mon serveur. Cette machine n’utilise que des logiciels libres (Debian stable, avec uniquement les dépôts « main ») mais pour la même raison que précédemment, je suis le seul qui bénéficie des bienfaits de l’usage des logiciels installés dessus. L’ami à qui j’ai proposé d’héberger son site web ne profite par exemple pas directement des bienfaits des logiciels qu’il utilise sur ma machine car je reste l’administrateur de cette machine. Il me connaît IRL et me fait confiance.

L’utilisateur des services proposés par l’admin

Sortons de chez moi maintenant. Dans le même esprit que l’exemple précédent, lorsqu’on utilise des services en ligne propulsées par des solutions libres, on est pas directement utilisateur de logiciels libres. On est simplement utilisateur d’un service et ce qui fait tourner ce service n’a pas d’importance. Ce que le fournisseur de service fait de nos données (celles qu’il héberge) peut tout autant être légitime, qu’illégitime. Voilà d’ailleurs pourquoi je n’ai jamais tenté l’aventure du RHIEN. Je trouve cette initiative extrêmement intéressante mais pour autant, je pense que ça implique une très grande confiance de la part des hébergés vis à vis de l’hébergeur. Même animé d’intentions louables, l’hébergeur reste un humain avec des parfois faiblesses, dont la curiosité…

Oui… donc :

Tout ça pour dire que les logiciels libres ne sont que des outils et que des outils peuvent être bien utilisés ou non. Le mot « confiance » figure dans chacun des quatre paragraphes précédents et cela n’est pas innocent de ma part. La confiance accordée dans une solution logicielle devrait donc, de mon point de vue, être la combinaison de deux confiances différentes :

  • Celle envers le logiciel en lui même (merci aux licences libres, qui facilitent l’audit du code source).
  • Celle envers celui par qui on utilise le logiciel (nous même, un proche, une connaissance, un parfait inconnu, une entreprise…).

J’essaye de garder ça dans un coin de ma tête à chaque fois que je pose les mains sur un clavier…

Avec HSTS, forcez vos visiteurs à revenir en HTTPS sur votre site web

HSTS permet à un site web en HTTPS de notifier au navigateur web qu’il doit toujours revenir le voir en HTTPS et non en HTTP.

Concrètement, ça prend la forme d’une entête spéciale envoyée par le serveur lors de la consultation d’une page web en HTTPS. Donc il faut que votre visiteur visite au moins une fois votre site web en HTTPS pour que la règle soit prise en compte.

Pour l’activer sur Apache, rajoutez cette ligne à votre virtualhost SSL :

Header add Strict-Transport-Security: "max-age=15768000; includeSubdomains"

J'aime(2)Ferme-la !(0)

2014-08-18

La config de mon Raspberry PI

Mes premiers tests avec arkOS n’ont pas été concluants. J’ai donc décidé d’installer Raspbian, une Debian pour Raspberry.

Petit tour d’horizon de ce que j’y ai installé …

Pour mes flux RSS, FreshRSS

Projet : https://github.com/marienfressinaud/FreshRSS

Rien d’extraordinaire lors de l’installation, ça se fait tout seul, Marien & Alexandre bossent bien sur ce projet.

Le gros avantage par rapport à mes derniers essais de FreshRSS, c’est que j’ai la possibilité de mettre en place un cron pour mettre à jour les flux (j’utilisais FreshRSS sur un hébergement mutualisé avant).

Niveau application Android, j’ai installé EasyRSS modifiée par Alexandre. Pour configurer FreshRSS pour que l’API fonctionne, y’a Alexandre (encore lui) qui explique ça très bien.

Pour mon agenda et mes contacts, Baikal

Projet : https://github.com/jeromeschneider/Baikal

Pareil, rien d’original là non plus, car c’est je pense ce qui se fait de mieux et de plus simple à installer. Y’a des tutos un peu partout sur internet ( ou ).

J’ai installé CardDAV-Sync et CalDav Sync sur mon téléphone Android pour me connecter sur mon serveur Baikal.

Pour partager des photos, rien de bien intéressant pour l’instant

J’ai testé PhotoShow. Galerie légère, basée sur le système de fichiers (donc sans base de données). Système de partage, avec albums-photos privés / publics. Exactement ce que je voulais.

Par contre, la génération des miniatures prend un temps énorme. J’ai du mettre un set_time_limit(0) pour que le script ne s’arrête pas. Mais même comme ça, c’était inutilisable, le Rasperry tirait la langue.

J’en ai parlé ici avec Cyrille notamment : https://diaspora-fr.org/posts/544083

Sur ses conseils (https://diaspora-fr.org/posts/545831), j’ai testé DropCenter, mais ça ne correspond à ce que je veux. Et pas le temps du tout de contribuer au projet pour l’améliorer.

Aujourd’hui, je n’ai rien pour partager mes photos, Dropbox reste 1.000 fois plus efficace.

Je compte voir aussi si j’ai la possibilité de mettre en place un système automatique (ou presque) pour que les photos prises avec mon téléphone soient envoyées via FTP sur le disque dur (pour le serveur FTP, j’ai installé vsftpd, y’a par exemple un tuto ici).

Pour mettre en place un NAS, un disque de 3To

Histoire de faire de la place sur le disque de 500Go de l’ordi familial, on a acheté un disque de 3To pour archiver photos et vidéos.

J’ai branché ce disque sur le Raspberry, j’ai installé samba (sudo apt-get install samba samba-common-bin) et j’ai créé le fichier /etc/samba/smb.conf (j’ai en fait suivi à la lettre le tuto trouvé ici).

J’ai donc accès sur toutes les machines de la maison à toutes nos photos, nos vidéos et notre musique. Pratique.

Prochaine étape, j’ai voulu accéder depuis ma TV aux fichiers présents sur le disque dur : bien pratique pour pouvoir regarder des films ! J’en parle ici : https://diaspora-fr.org/posts/550363

J’ai installé minidlna, qui me permettra de créer une bibliothèque de fichiers lisibles par notre Freebox Crystal. Ça fonctionne … partiellement. On peut afficher nos photos sur la télé. Mais la musique et les vidéos ne sont pas disponibles. Pour la musique, les dossiers paraissent vides (alors que bien entendu, ils ne le sont pas sur le disque). Pour les vidéos, je peux les lister, mais si j’en sélectionne une pour la visionner, ça ne fonctionne pas. Je continue mes tests.

Bilan

Bilan satisfaisant pour l’instant. Le partage des photos n’est pas primordial, par contre pouvoir regarder les vidéos sur la télé sera intéressant d’ici quelques mois, quand on voudra regarder pas mal de dessins animés avec les loustics. Je vais donc voir ce que je peux faire (peut-être finalement brancher le disque dur sur la Freebox directement et voir si je peux y accéder depuis nos ordinateurs sur le réseau). Si vous avez des idées / des questions, allez-y, c’est encore tout frais.

2014-08-14

Campagne de dons libre association de l'April : derniers jours

L'April a lancé une campagne de dons en faveur de la promotion du logiciel libre en milieu associatif.

Le logiciel libre, porteur d’une idéologie de partage, rejoint les valeurs véhiculées par le monde associatif en général (partage, volontariat, bénévolat, passion, etc.) et par l’éducation populaire en particulier. Paradoxalement, nous constatons régulièrement que les associations sont captives de logiciels et services privateurs de liberté.

Dans le cadre du groupe de travail « Libre Association », l'April a entrepris de « jeter des ponts entre les logiciels libres et le monde associatif » en réalisant un guide répertoriant des méthodes et des outils de travail adaptés aux besoins des associations. Ce guide est prévu pour donner à chaque association les clés de ses libertés informatiques. Il est disponible en version Web et en Version papier (PDF).

L'April a réalisé et diffusé gratuitement à 10 000 exemplaires une première version de ce guide, en 2012, grâce à une subvention de la Fondation Crédit Coopératif. Dans la continuité de ces actions, l'April souhaite financer une nouvelle édition du guide et le distribuer gracieusement auprès des associations.

Il ne reste plus que quelques jours !

2014-08-10

Servir plusieurs noms de domaines en HTTPS en auto-hébergement

Actuellement, mon FAI ne me propose que de l’IP v4.
Donc je n’ai qu’une adresse IP publique, et en plus elle n’est pas fixe.

Malgré cela, il y a des solutions pour s’auto-héberger, y compris avec plusieurs noms de domaines, et avec du cryptage SSL.

La résolution DNS

J’ai acheté mes noms de domaines chez Gandi. Comme chez n’importe quel registrar, il est facile de configurer son DNS pour qu’il pointe vers la bonne adresse IP.

Oui mais comment faire si l’IP n’est pas fixe ?

Il y a des solutions type dyndns.org (dont le service est hélas devenu payant), mais on ne peut pas utiliser son propre nom de domaine : ce n’est forcément qu’un sous-domaine.

Heureusement, ils ont la bonne idée chez Gandi de proposer une API, qui permet (entre autres) de modifier les DNS à distance.

Gandi_logo_black

Et il existe un petit script Python qui permet d’automatiser la mise à jour du DNS quand l’adresse IP change : https ://github.com/Chralu/gandyn/ (j’y ai très modestement contribué)

Ca marche plutôt très bien. Je le lance alternativement sur mes 2 noms de domaines via crontab : l’un à 0 minutes, l’autre à 30 minutes de chaque heure :

0 * * * * /root/gandyn/gandyn.py --config /root/gandyn/gandyn_domaine1.conf
30 * * * * /root/gandyn/gandyn.py --config /root/gandyn/gandyn_domaine2.conf

Ce délai est suffisant dans mon cas : mon IP n’est pas fixe mais elle change très peu souvent (autour d’une fois par an). Il faut aussi penser à choisir un TTL (Time To Live) suffisamment court pour vos entrées DNS : j’ai mis 15 minutes mais ces valeurs peuvent se discuter…

Le seul point faible est que la recherche de l’adresse IP s’appuie sur un service externe : http ://ifconfig.me/ip . Et il n’est pas extrêmement fiable : j’ai souvent des timeouts.

Configuration SSL/TLS

Sur les 2 noms de domaine, j’utilise du cryptage SSL (ou plutôt TLS) pour certaines communications en HTTPS.

Il y a quelques années, il n’était pas possible d’héberger sur une même adresse IP plusieurs noms de domaines en HTTPS. Logique puisque la négociation du certificat SSL/TLS se fait avant l’envoi effectif de la requête HTTP (pour qu’elle soit elle-même cryptée). Le serveur HTTP, ne connaissant pas l’URL, ne peut donc pas choisir entre les différents certificats.

Mais ouf, il y a maintenant le SNI : https ://fr.wikipedia.org/wiki/Server_Name_Indication

Ça permet justement d’indiquer au serveur quel est le nom de domaine auquel on veut accéder AVANT la négociation TLS. Et le serveur est donc capable de choisir le bon certificat.

Il faut bien sûr un serveur compatible ET un client compatible : https ://en.wikipedia.org/wiki/Server_Name_Indication#Support . En résumé :

  • Côté serveur, il faut un Apache >=2.2.12 ou Tomcat sur un Java>=1.7
  • Côté client, n’importe quel Firefox >=2.0 ou Chrome>=6 ou IE>=7 (mais uniquement à partir de Vista), et côté mobiles iOS>=4.0 ou Android>=3.0 ou Windows Phone>=7.0 ou Firefox OS>=1.0

Cela parait des critères raisonnables en 2014, mais comment ça se passe si un utilisateur se connecte quand même avec un client non compatible ? Par exemple IE8 sur Windows XP (Oui il en reste encore…) Avec la configuration d’Apache par défaut, le serveur prend le premier des deux certificats, et a donc une chance sur 2 de se tromper. Dans ce cas, le navigateur va râler sur le fait que le certificat ne correspond pas au nom de domaine.

Une solution radicale consiste à activer l’option ci-dessous dans Apache :

SSLStrictSNIVHostCheck On

Cette option se situe (sous Debian ou Ubuntu) dans /etc/apache2/mods-enabled/ssl.conf , et elle est commentée par défaut (c’est-à-dire à Off).

Si cette option est activée, un browser non compatible se verra carrément refuser l’accès. C’est ce que j’ai fait.

Comment générer les certificats SSL ?

Dans mon cas, l’objectif est uniquement de crypter la communication, notamment pour que les mots de passe d’administration ne passent pas en clair.

Première possibilité : un certificat auto-signé

https ://wiki.debian.org/Self-Signed_Certificate

Avantage : simple, rapide et gratuit. On peut choisir librement toutes les caractéristiques du certificat, y compris sa date d’expiration ou le fait qu’il soit wildcard

Inconvénient : Il y aura un avertissement affiché par les navigateurs puisque vous n’êtes pas une autorité de certification qu’ils connaissent.

Deuxième possibilité : un certificat gratuit ou pas cher

Il en existe pas mal qui ne sont pas très chers, voire même gratuits.  Mais attention à ce qu’ils soient sérieux.

Gandi offre un certificat SSL la première année, puis ça coûte 12€ HT par an : https ://www.gandi.net/ssl

Mais un certificat wildcard coûte beaucoup plus cher : 120€ HT par an, chez Gandi.

Avantage : pas d’avertissement du navigateur

Inconvénient : un wildcard coûte vraiment cher

Troisième possibilité : un certificat (gratuit) généré par CACert

cacert4

CACert est une initiative communautaire pour délivrer gratuitement des certificats SSL. Le principe est de faire une “toile de confiance” : au lieu de payer un organisme qui vérifie notre identité, la vérification est faite par vous et moi, à travers un système d’accréditeurs et de points.

Avantage  : gratuit, participation à la toile de confiance, permet les certificats wildcard

Inconvénient : long à mettre en œuvre si on veut un certificat qui dure + de 6 mois, puisqu’il faut rencontrer physiquement plusieurs accréditeurs. Mais le principal inconvénient reste que le certificat racine de CACert n’est accepté par défaut par aucun des principaux navigateurs du marché. Donc il y aura quand même un avertissement du navigateur chez quasiment tout le monde.

Dans mon cas, le cryptage ne sert pour l’instant qu’à l’administration et à des services non publics. D’autre part, je voulais un certificat wildcard : j’ai finalement opté pour CACert, dont la philosophie me plaît.

Certificats wildcard

Au fait, je parle de wildcard depuis plusieurs paragraphes : c’est quoi un certificat wildcard ?

C’est tout simplement un certificat qu’on peut utiliser pour n’importe quel sous-domaine. Exemple : le certificat *.domaine.fr peut être utilisé pour sousdomaine1.domaine.fr et sousdomaine2.domaine.fr. Il n’y a pas besoin de générer un nouveau certificat quand on rajoute un sous-domaine.

Dans mon cas, j’utilise beaucoup de NameVirtualHost dans Apache, qui se basent justement sur le sous-domaine pour diriger vers un service ou un autre. Donc un wildcard est très adapté.

Seul hic sur lequel je suis tombé : un *.domaine.fr ne couvre par défaut pas le nom “domaine.fr” tout court : il ne couvre que les sous-domaines. C’est d’ailleurs précisé dans la doc de Gandi.

Pour créer un certificat qui couvre aussi domaine.fr, la demande de certificat est un poil plus compliquée, car il faut y ajouter un SubjectAltName qui correspond à “domaine.fr” tout court.

J’ai essayé de m’appuyer sur http ://techbrahmana.blogspot.fr/2013/10/creating-wildcard-self-signed.html mais ça n’a pas fonctionné : il semble que CACert ignore le SubjectAltName mis de cette manière.

La solution est venue de chez CACert même, en utilisant un petit script qui génère le fichier CSR nécessaire : http ://wiki.cacert.org/VhostTaskForce#Shell_Script

La page d’accueil des sites web est morte

Longtemps, la page d’accueil d’un site web a été le lieu de départ de tout visiteur. Elle guidait le visiteur vers les pages plus profonde du site web. Par cette fonction même le webmaster pouvait choisir de mettre en avant un contenu plutôt qu’un autre.

Mais le RSS et surtout les réseaux sociaux ont profondément changé la manière dont les internautes visitent les sites web aujourd’hui. Ils ne passent plus par la page d’accueil des sites web. Ils reçoivent un flux continu d’informations choisies pour correspondre à leur désir. Quand le contenu de l’information est incomplet (pour des raisons commerciales), un lien direct permet d’aller directement vers la page web du contenu sans passer par la page d’accueil du site web.

C’est le constat qu’en fait aussi le New York Times dans un rapport interne. Voici l’évolution du nombre de visiteurs de sa page d’accueil sur les dernières années :

new york times homepageLes applications mobiles dédiées qui répliquent souvent le site web subissent le même sort. Les internautes ne prennent plus la peine de lancer régulièrement ces applications pour vérifier si un contenu les intéresse.

J'aime(2)Ferme-la !(0)

2014-08-09

Surveillance des logs avec logwatch sur une semaine complète

Logwatch, l’analyseur de log bien pratique et largement utilisé présente toutefois un défaut majeur. Par défaut, il analyse les logs jour par jour uniquement et envoi un rapport chaque matin, cette fréquence d’envoi peut toutefois vite devenir décourageante à lire.

Voyons donc comment configurer logwatch pour qu’il fasse un rapport chaque fin de semaine sur la semaine écoulée.

Commençons simplement en installant logwatch

sudo apt-get install logwatch

Une tâche cron est créée dans /etc/cron.daily/00logwatch
Nous allons tout d’abord déplacer cette tâche cron en weekly

sudo mv /etc/cron.daily/00logwatch /etc/cron.weekly/

Puis la modifier pour configurer directement l’usage de logwatch
Pour cela, nous allons simplement remplacer la ligne
/usr/sbin/logwatch –output mail
par
/usr/sbin/logwatch –detail med –mailto adresse@domain.tld –range "between -7 days and -1 days" –archives

C’est tout, logwatch nous fera à présent un rapport chaque semaine couvrant les 7 derniers jours.

Le niveau de détail de l’analyse peut être choisi entre high, med ou low.

2014-08-06

Fail2ban vous prévient par SMS avec l’API de Free Mobile

Fail2ban est un outil très pratique pour protéger les serveurs de certaines attaques.

Et en plus, il peut vous prévenir par SMS, si vous avez une carte SIM de Free Mobile

fail2ban

Configuration des filters

Je pensais que la configuration par défaut des filters sous Debian fonctionnait à coup sûr : j’avais tort.

Je vous conseille de tester chaque filter (avec fail2ban-regex, ou en simulant une vraie attaque). J’ai dû plusieurs fois modifier les expressions régulières pour qu’elles correspondent aux logs effectivement générées par mon serveur Apache :

failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$

par :

failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch).*$

  • pour le filtre apache-badbots, j’ai remplacé la regex :

failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$

par :

failregex = ^<HOST>.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$

Mais, une fois bien configuré, c’est très efficace. Dès qu’une ligne dans un fichier de log correspond à une regex d’un filter, fail2ban prend les mesures nécessaires : en général blocage de l’IP via iptables, et envoi d’un email pour prévenir les administrateurs.

FreeMobile

Utilisation de l’API de SMS de Free Mobile

Depuis juin 2014, Free Mobile met à disposition de ses clients une API qui permet d’envoyer gratuitement des SMS sur votre téléphone via un appel d’URL.

Ca n’est pas très compliqué de s’en servir avec fail2ban : il suffit de se créer un nouveau fichier de configuration dans le répertoire action.d, et de le référencer dans jail.conf

Voici le fichier d’action sendSMSFreeMobile.conf que je me suis créé :

# Fail2Ban configuration file to send an SMS through Free Mobile API
#
# Author: Mossroy
#
# $Revision$
#

[Definition]

# Option:  actionstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
#
actionstart =

# Option:  actionstop
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
#
actionstop =

# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
actioncheck =

# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
actionban = wget --ca-certificate=/path/to/RapidSSLCABundle.pem -O /dev/null "https://smsapi.free-mobile.fr/sendmsg?user=12345678&pass=abcdefgh&msg=Fail2ban : <ip> has been banned by <name>"

# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
#
actionunban = wget --ca-certificate=/path/to/RapidSSLCABundle.pem -O /dev/null "https://smsapi.free-mobile.fr/sendmsg?user=12345678&pass=abcdefgh&msg=Fail2ban : <ip> has been unbanned"

[Init]

# Defaut name of the chain
#
name = default

(il faut bien sûr renseigner dedans votre user et votre mot de passe)

Et dans jail.conf je l’ai configuré comme action par défaut, en plus du blocage et de l’envoi d’email :

# ban & send an e-mail with whois report and relevant log lines
# to the destemail, and also send an SMS with FreeMobile.
action_mwls = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
               %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
               sendSMSFreeMobile[name=%(__name__)s]

# Choose default action.  To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g.  action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwls)s

Et ça marche !

Par contre, il y a quelques pièges à évite r :

    • Dans le fichier sendSMSFreeMobile.conf, attention à ne pas mettre le caractère % dans la ligne de commande wget, parce que fail2ban les interprète mal et refuse de démarrer. Je suis tombé sur ce cas au départ, parce que j’avais encodé les espaces en %20.
    • Debian et Ubuntu semblent ne pas connaître le certificat racine de l’URL de l’API. J’ai donc dû bypasser le contrôle du certificat avec l’option –no-check-certificate . Je sais : c’est mal. Mais le risque me paraissant faible, je n’ai pas pris la peine d’installer le certificat racine qui pose problème. Pour le faire, les explications sont là : http ://thenubbyadmin.com/2014/01/29/solving-wget-error-cannot-verify-site-certificate-unable-to-locally-verify-the-issuers-authority/
    • EDIT du 27/08/2014 : suite aux suggestions de Leryan, j’ai amélioré les choses pour éviter de bypasser le contrôle du certificat. J’ai plutôt demandé à wget d’accepter le certificat de RapidSSL (voir les commentaires ci-dessous). Ce certificat peut être téléchargé ici : https ://knowledge.rapidssl.com/library/VERISIGN/INTERNATIONAL_AFFILIATES/RapidSSL/AR1548/RapidSSLCABundle.txt et doit être placé dans le répertoire indiqué dans le fichier sendSMSFreeMobile.conf
    • Le user/password est ici en dur dans le fichier de configuration. Il peut être judicieux d’ajuster les droits d’accès à ce fichier pour que n’importe qui ne puisse pas le lire
    • Je n’ai pas pris la peine de tester le code HTTP retour : si ça ne marche pas tant pis. Donc attention à ne pas vous baser uniquement sur l’envoi de SMS. C’est juste un “nice-to-have” qui ne remplace pas l’envoi d’email. En particulier, l’envoi de SMS peut être bloqué par Free Mobile (code HTTP 402) si les envois sont trop fréquents

2014-07-29

Mysearch 1.4 : cachez votre IP avec le mode relai

MySearch est un programme qui va récupérer les résultats de recherches sur Google, GoogleImage, Wikipedia, Openstreetmap, ou Yacy et les afficher en enlevant tout ce qui utilisé pour vous tracer : cookies personnels, liens personnalisés, javascript traceur, images traceuses, etc…

Par exemple, voici mon instance perso : http://search.jesuislibre.net

Vous allez me dire, ca ressemble à DuckDuckGo, mais sans les bangs. Mais DuckDuckGo n’a pas la pertinence de Google. MySearch, oui.
Et comment être sûr que DuckDuckGo ou Mysearch ne m’espionnent pas aussi? Avec Mysearch, vous avez accès au code source, et surtout vous pouvez l’installer facilement sur votre machine grâce au paquet Debian (nécessite Debian Jessie).
Une fois installé, vous pouvez y accéder par http://localhost:60061

Il restait un problème, si j’installe Mysearch sur ma machine, alors Google aura connaissance de mon IP et pourra toujours lier mes mots clés à mon IP. C’est là qu’intervient le mode relai entre installations Mysearch !

C’est encore en beta/alpha mais l’idée est que votre recherche soit transmise par l’intermédiaire d’une autre installation Mysearch plutôt qu’en direct. Rassurez-vous, cet intermédiaire ne pourra pas connaître les mots clés que vous cherchez ni connaître ou altérer les résultats car le flux est chiffré par SSL de bout en bout.

Pour activer le mode « relai »:
Modifiez le fichier de config /etc/mysearch/mysearch.conf mettez la valeur relay = true
Pour prendre en compte le changement, relancez le service : #service mysearch restart
Le port 60062 est utilisé pour le relai et doit donc être ouvert.

En activant le mode relai :
– Toutes les requêtes que vous lancerez devront passer par un intermédiaire sinon elles échoueront. Pour l’instant, l’intermédiaire est forcé à search.jesuislibre.net. Si les requetes ne marchent plus vérifier que mon serveur est toujours en ligne ;-) Si le service est utilisé, j’organiserai une pool.
– Vous autorisez automatiquement les autres à pouvoir utiliser votre relai pour leurs requêtes. Vous pouvez vérifier si votre relai est utilisé par d’autres en regardant sur la première page. Normalement vous ne devrez pas voir de connexions étant donné que le pooling n’est pas actif pour l’instant.

mysearch

J'aime(6)Ferme-la !(0)

2014-07-27

Mise en place technique de ce blog

Commençons par le sujet technique qui m’a occupé ces derniers temps : la mise en œuvre de ce blog !

Installer un blog, même auto-hébergé, n’est pas compliqué.

Oui, sauf que je me pose quelques contraintes (machines peu puissantes, passage par un reverse-proxy), et que ça entraîne pas mal de complications…

240px-WordPress_logo.svg

Configuration de WordPress à travers un reverse-proxy

Dans mon installation, il y a 2 serveurs : un Apache frontal (serveur1) qui s’occupe entre autres du cryptage SSL (pour la partie administration), et qui est configuré en reverse-proxy pour un second serveur Apache/PHP (serveur2) où est installé le blog (WordPress 3.9.1)

D’abord, je suis tombé sur un premier os : j’avais eu la mauvaise idée de ne pas utiliser le même préfixe d’URL sur les 2 serveurs : http ://serveur1/wordpress et http ://serveur2/wordpress_mossroy

Ca pose des problèmes, ne serait-ce que pour les cookies, qui sont affectés à un Path donné : quand ils sont générés par serveur2, ils le sont pour le Path qu’il connait, c’est-à-dire /wordpress_mossroy. Mais, côté navigateur, il ne les envoie pas puisqu’on est sur /wordpress. Il y a une parade : utiliser la directive ProxyPassReverseCookiePath d’Apache : https ://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypassreversecookiepath

Et ça fonctionne … sauf que, après essais, ça n’empêche pas certains plugins WordPress de s’appuyer quand même sur ce Path.

Au final, j’ai trouvé une solution plus simple : utiliser le même Path sur les 2 serveurs (j’ai finalement mis / tout court). Un NameVirtualHost côté serveur2 me permet de l’installer physiquement où je veux, pas forcément dans /var/www

 

Workaround quand l’URL déclarée dans WordPress ne correspond pas à celle sur laquelle il est accessible

Oui, ça m’est arrivé plusieurs fois pendant mes tests : WordPress demande à ce qu’on lui dise quelle est son URL publique. Et il l’utilise pour construire certains liens. Mais quand cette URL publique ne fonctionne pas, cela arrive à tout bloquer… y compris la page d’admin où on voudrait corriger ça ;-)

Voilà la commande qui m’a sauvée plusieurs fois (requête SQL à lancer sur la base MySQL de WordPress) :

update wp_options set option_value="http://la_bonne_url_publique" where option_name="siteurl";

 

Configurer l’administration en HTTPS

D’abord, pour que WordPress veuille bien fonctionner en HTTPS depuis un reverse-proxy, il faut rajouter dans le wp-config.php :

define('FORCE_SSL_ADMIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on';

Source : http ://codex.wordpress.org/Administration_Over_SSL

Ca modifie bien les liens qui pointent vers les pages d’admin vers leur version https.

Mais il reste un hic, causé à nouveau par l’utilisation du reverse-proxy : si je pointe vers http ://serveur1/wp-admin , il me renvoie vers https ://serveur2/wp-admin au lieu de https ://serveur1/wp-admin

La solution est de rajouter en plus de la réécriture d’URL côté Apache (c’est décrit dans le même lien ci-dessus) :

# Redirection vers la version HTTPS pour l'administration
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\ HTTP/ [NC]
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^/?(wp-admin/|wp-login\.php) https://serveur1%{REQUEST_URI}%{QUERY_STRING} [R=301,QSA,L]

Mise en place d’un cache pour accélérer l’affichage des pages

Le blog tourne actuellement sur un serveur ARM à 1GHz (dual-core). Ce n’est pas très puissant, et les pages mettent quelques secondes à s’afficher, même sans montée en charge.

Un appel unitaire vers une page du site met environ 2.5 secondes à répondre. C’est beaucoup trop long.

Temps de réponse sans cache

Mettre en place un cache a du sens dans ce contexte : le contenu ne change pas très souvent : lors de l’ajout/modification d’un article (mais aussi lors de l’ajout d’un commentaire).

Après quelques recherches, j’ai choisi d’utiliser un plugin WordPress adapté à cela : WP Super Cache.

Une fois activé, l’affichage de la même page passe à 200ms environ :

Temps de réponse avec cache

Pour le paramétrage du plugin,  j’ai fait un rapide test de montée en charge avec l’outil Gatling (en suivant http ://javamind-fr.blogspot.fr/2013/10/premier-scenario-de-tests-avec-gatling.html)

Avec 10 utilisateurs simultanés :

Paramétrage Temps de réponse moyen d’une page en cache (ms)
mode réécriture + fichiers compressés 480
mode réécriture + fichiers non compressés 602
mode PHP + fichiers compressés 544
mode PHP + fichiers non compressés 623
mode Legacy + fichiers compressés 550
mode Legacy + fichiers non compressés 590

Les préconisations de l’auteur du plugin sont donc justes : j’ai activé le mode réécriture, et la compression des fichiers de cache.

Par ailleurs, je suis à nouveau tombé sur un problème lié à l’utilisation d’un reverse-proxy, et ai dû le contourner avec un lien symbolique dans le répertoire du cache : http ://wordpress.org/support/topic/plugin-wp-super-cache-cache-not-refreshed-behind-a-reverse-proxy-workaround.

Et j’ai encore un petit souci de préchargement du cache à cause du fait que ma partie administration est en HTTPS : https ://wordpress.org/support/topic/how-to-preload-cache-in-http-version-when-admin-is-in-https.

Premiers essais du Raspberry avec arkOS (avec une Freebox Crystal)

J’ai donc reçu le Raspberry PI que Thomas m’a revendu.

C’est parti pour les tests.

Au branchement, pas de loupiote. En fait, je n’avais pas branché comme il fallait. Ça commence.

C’est parti avec arkOS

Sur la carte SD, il y a déjà arkOS d’installé.
Connexion SSH, root / root
L’interface web se trouve là http://ip_du_rpi:8000 (admin / admin)

Genesis, l’interface d’arkOS est en version 0.5.1. Une nouvelle version est sortie, il faudra faire la mise à jour.

Je change le login par défaut, j’installe les modules suivants :

  • basic website
  • calendar / contacts
  • database sqlite3
  • execute
  • jekyll
  • nodejs
  • php
  • package manager
  • python
  • ruby
  • secure shell
  • wallabag
  • ownCloud

Pas d’informations du temps d’installation des modules, perturbant.
Apparemment, suite à un échange sur twitter, c’est fait sur la 0.6.
Finalement, ça m’a pris 10 minutes.

Mise à jour de 0.5.1 => 0.6

Voici le script de MAJ :

systemctl stop genesis
if [ -L "/usr/bin/python" ]; then rm /usr/bin/python; fi
pacman -Sy genesis
wget https://raw.githubusercontent.com/cznweb/genesis/master/tools/migrate06.py
python2 migrate06.py
systemctl start genesis

Voici le rendu :

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 arkos is up to date
resolving dependencies...
looking for inter-conflicts...

Packages (4): python2-meld3-1.0.0-1  python2-nginx-0.1.3-1  supervisor-3.0-1
              genesis-0.6.0-1

Total Download Size:    1.55 MiB
Total Installed Size:   8.15 MiB
Net Upgrade Size:       4.99 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages ...
 python2-meld3-1.0.0...    39.6 KiB  62.3K/s 00:01 [######################] 100%
 supervisor-3.0-1-any     420.0 KiB  59.4K/s 00:07 [######################] 100%
 python2-nginx-0.1.3...     5.7 KiB  96.1K/s 00:00 [######################] 100%
 genesis-0.6.0-1-any     1124.7 KiB  59.2K/s 00:19 [######################] 100%
(4/4) checking keys in keyring                     [######################] 100%
(4/4) checking package integrity                   [######################] 100%
(4/4) loading package files                        [######################] 100%
(4/4) checking for file conflicts                  [######################] 100%
(4/4) checking available disk space                [######################] 100%
(1/4) upgrading python2-nginx                      [######################] 100%
(2/4) installing python2-meld3                     [######################] 100%
(3/4) installing supervisor                        [######################] 100%
(4/4) upgrading genesis                            [######################] 100%
warning: /etc/genesis/genesis.conf installed as /etc/genesis/genesis.conf.pacnew

Quand j’ai voulu redémarrer le système, j’ai eu le warning suivant.

[root@arkos nicosomb]# systemctl start genesis
Warning: Unit file of genesis.service changed on disk, 'systemctl daemon-reload' recommended.
[root@arkos nicosomb]# systemctl daemon-reload
[root@arkos nicosomb]# systemctl start genesis

C’est bon, c’est redémarré.

Configuration de la Freebox V5

Attribution d’une IP fixe au raspberry

Il vous faut l’adresse MAC du Rpi :

cat /sys/class/net/eth0/address

Dans Ma Freebox, Configurer routeur, Baux DHCP permanents, vous spécifiez une IP fixe pour l’adresse MAC de votre RPI. Pensez à bien appuyer sur le gros « + » avant d’enregistrer les paramètres.
Rebootez la Freebox.

Sur l’interface arkOS, lire ça https://bbs.arkos.io/t/set-a-static-ip-address/76/2

IP Publique

Dans l’interface de gestion du routeur Freebox, faites une redirection de port, du port 80 à l’IP fixe que vous venez de définir. Dans mon cas, je précise aussi que le port interne est le port 8000, celui de arkOS.

Nom de domaine

Chez votre hébergeur, pour votre NDD, créez une nouvelle entrée A qui pointe vers votre IP publique.

Installation de wallabag

Dans arkOS, wallabag nécessite mariadb, les 2 étaient déjà installés, mais lors de la 0.5. Donc arkOS continuait de me dire qu’il fallait MariaDB. Étrange. J’ai désinstallé / réinstallé wallabag. C’est OK.
Il faut maintenant mettre en route MariaDB, ça se passe dans Tools > Databases > Status. Ça prend quelques dizaines de secondes … et ça ne se met pas en route. Très bien …

Je me rabats sur la création d’une BDD Sqlite, même si un récent ticket sur wallabag me dit que ça va être compliqué.

Et bam !

« Sorry, an error has occurred.
Genesis encountered an error when trying to perform your last requested operation, and it cannot continue it. »

Stacktrace:
Traceback (most recent call last):
 File "/usr/lib/python2.7/site-packages/genesis/core/application.py", line 166, in dispatcher
 self.start_response)
 File "/usr/lib/python2.7/site-packages/genesis/api/urlhandler.py", line 89, in url_handler
 return handler(req, start_response)
 File "/usr/lib/python2.7/site-packages/genesis/plugins/core/root.py", line 282, in handle_generic
 result = handler.event(event, params, vars = vars)
 File "/usr/lib/python2.7/site-packages/genesis/api/helpers.py", line 115, in event
 return handler(event, *params, **kwparams)
 File "/usr/lib/python2.7/site-packages/genesis/plugins/databases/main.py", line 303, in on_submit
 elif self._rootpwds[dbtype] == False:
 KeyError: 'SQLite3'

Finalement, je retourne dans la création d’un site wallabag, je dis que je veux le créer avec sqlite, ça tourne (« running post install configuration ») et success ! En avant Guingamp.

Maintenant, comment j’accède à mon wallabag ?

Apparemment, je dois créer une nouvelle entrée A dans ma zone DNS de mon NDD (j’ai une pensée à toi, qui ne comprend rien à ça. Sois fort).

Ah non, c’est pas ça non plus. Bon, c’est quand même fort ça … Tout est installé, j’ai créé des applications et impossible de voir facilement comment accéder à celle-ci.

Pendant ce temps, y’a l’image de raspbian qui se télécharge, il reste 20 minutes. Autant dire que les heures d’arkOS semblent comptées.

Le temps de mettre en page ce billet, il ne reste que 3 minutes pour l’image Raspbian.

Je ne dis pas que j’abandonne définitivement arkOS, mais j’ai quand même passé du temps à essayer de comprendre, en vain. Je retesterai prochainement.

Sinon, niveau interface, la 0.6 semble pas mal. C’est déjà un bon point.

Direction la plage maintenant !

2014-07-26

Bloc-Notes : Conky au démarrage de gnome-shell 3.12

Objectif :

Lancer conky à l’ouverture de session de gnome 3.12.

 

Mise en place :

Avec le script suivant, à placer dans /usr/share/gnome/autostart/conky.desktop

#conky.desktop
[Desktop Entry]
Type=Application
Name=Conky
Comment=Start conky script
Exec=conky -d
OnlyShowIn=GNOME;
X-GNOME-Autostart-Phase=Application

 

2014-07-18

[Wiki]Installer et configurer son serveur DNS connecté aux serveurs root avec Unbound

Nous n’avions pas encore parlé DNS sur HomeServer-DIY. Voilà qui est réparé avec un tuto sur la mise en place d’un serveur DNS perso:

Sur un réseau IP chaque machine est joignable par une adresse unique qui est son adresse IP. Elle se présente sous la forme de nombres séparés par des points. Par exemple, 158.88.4.144. Mais les utilisateurs trouvent souvent assez peu pratique de travailler avec ces nombres et préfèrent utiliser un nom de domaine comme homeserver-diy.net. Pour traduire un nom de domaine en adresse IP de façon à ce que la machine cliente s’adresse au bon endroit, elle utilisera le protocole DNS. Pour simplifier, lorsque vous demanderez à votre PC de joindre un nom de domaine, il fera une requête à un serveur DNS qui lui répondra en lui disant à quelle adresse IP correspond à ce domaine. Ce tuto va expliquer comment mettre en place votre propre serveur DNS pour en tirer plusieurs bénéfices.

Pour savoir comment, comme d’habitude, il suffit d’aller sur notre wiki: Installer et configurer son serveur DNS connecté aux serveurs root avec Unbound

2014-07-06

Raspberry Pi : ce que j’ai commandé

Voila, j’ai enfin trouvé ce que je voulais. J’ai investis dans de l’occasion, c’est Thomas qui me revend son matériel quasi neuf qu’il n’a jamais utilisé ou presque.

Au programme :

Je le recevrai dans plusieurs jours, je vais donc pouvoir commencer mes premiers tests et me mettre en place un serveur pour peu de frais.

Bien entendu, si j’ai des choses intéressantes à raconter, j’en parlerai ici.

2014-07-03

Investir dans un Raspberry, quelques interrogations

Finalement, les échanges que j’ai eu dernièrement concernant le fait d’être + libre (sur mon blog, sur diaspora*, IRL, etc.) m’ont fait réfléchir.

Il y a quelques mois (années même, ça passe vite), j’ai cherché à me « libérer » le plus possible des solutions propriétaires que j’utilise : mail, calendrier, réseaux sociaux, logiciels. Tout. J’avais presque réussi, mais ça avait un double coût : avoir un serveur dédié pour que je puisse y faire tout ce que je voulais, et ça me prenait du temps.
J’ai finalement abandonné, principalement pour raisons financières. Aujourd’hui, je n’ai plus qu’un hébergement mutualisé chez web4all. Et je ne veux pas de nouveau payer 10 ou 15 € par mois pour un dédié.

Depuis quelques mois maintenant, il est possible d’investir dans des nano ordinateurs, comme le Raspberry PI (le + connu).
Vous avez chez vous un matériel qui ne coûte quasiment rien (30€ à l’achat et une très faible consommation électrique) qui ne prend pas de place, ne fait pas de bruit et vous permet d’accéder à distance à vos fichiers, d’héberger vos applications, de vous faire un media center à la maison, etc.

Et forcément, ça me tente. Ça me tente car je pourrais notamment y stocker mes photos (au lieu d’utiliser Hubic), je pourrais échanger des fichiers (au lieu d’utiliser Dropbox), je pourrais réutiliser FreshRSS comme lecteur de flux (sur un mutualisé, le fait qu’il n’y ait pas de cron m’embête un peu), etc.
Je pourrais aussi héberger mes mails (comme je l’ai déjà fait par le passé avec un dédié), mais la maintenance me rebute un peu.

Et grâce à cette machine, je pourrais finalement me revenir du bon côté de la force ;-) .

Apparemment, un Raspberry PI en 512 Mo semble un peu léger pour faire tourner un serveur web. Il existe d’autres matériels, comme le cubieboard, le cubox-i (beaucoup plus cher) qui pourraient convenir à tout ça.

Mes conditions :

  • matériel qui ne coûte pas cher (inférieur à 50€)
  • pouvoir se connecter en SSH dessus (pas d’écran à la maison, et pas envie d’en acheter)
  • faire tourner un serveur web (bon, ça, c’est faisable avec tous)
  • installer quelques applis (media center pour la maison, gestion de docs / partage web, lecteur RSS, blog ?) sans que ça ne rame trop (je ne m’attends pas à une bête de guerre de toute façon)

Voila voila, je continue mes recherches, on verra bien si je craque.

Quelques liens :

(photo par epsos)

2014-06-20

Vie privée, internet, … tout ça … pfff

Je pense que je viens de comprendre quelque chose récemment. Une chose qui m’avait échappé jusqu’alors.

J’ai pris conscience il y a quelques années déjà que le respect de la vie privée était un enjeu important, notamment sur internet en général et sur le web en particulier. Ce n’est pas par pur intérêt technique que j’ai décidé d’auto-héberger mes services internet avec un maximum de logiciels libres. Je pense que ça fait partie des moyens susceptibles de renforcer le respect de ma vie privée sur internet.

Ceci dit, l’auto-hébergement ne protège pas des atteinte à la vie privée lorsqu’on surf sur internet. De nombreux sites collectent des infos et tracent de plus en plus finement leurs visiteurs. Ainsi, certains comme Facebook tracent leurs utilisateurs y compris lorsqu’ils ne sont plus sur le site.
Il existe quand même des moyens pour se prémunir au moins partiellement des effets de ces pratiques. On peut citer le « Do Not Track » à activer dans son navigateur (de moins en moins respecté quand même), des modules à ajouter au navigateur (j’utilise adblock et RequestPolicy sous Firefox), ou simplement la suppression des cookies à la fin de la session.

Bon, ok, tout ceci est connu, vu, revu et rabâché.
Je parle parfois des atteintes à la vie privée sur internet à mon entourage. Je constate que ces problématiques sont généralement plutôt comprises quand on les exposent et pourtant, ça s’arrête là. Dans les faits, le retour à la réalité se fait sans le moindre changement.
J’en ai sans doute parlé à plusieurs dizaines de personnes et rien ne bouge. C’est même souvent de pire en pire. Les services ou logiciels peu respectueux des libertés semblent plus séduisant que ce que j’ai à en dire.

J’ai plusieurs hypothèse pour expliquer ça :

  • Les gens ne se sentent pas concernées individuellement.
  • Ils sont devenus fatalistes et pensent qu’on a quoi qu’il arrive déjà perdu.
  • Ils pensent naïvement que puisqu’ils n’ont rien cacher, il n’y a pas de problème pour tout montrer à qui le veut. Ça c’est juste un raisonnement fallacieux.
  • Ils ont pris goût au confort de tout ces services qui leur veulent du bien.

Une nouvelle hypothèse m’est venue récemment :

  • Les gens n’ont pas (ou plus) le moindre respect pour leur propre vie privée.

Je pense que cette hypothèse est la conséquence de toutes les autres réunies et j’ai l’impression que finalement, c’est la bonne :( .
Cela me fait dire que quoi que l’on propose comme solution technique pour protéger la vie privée, cela n’aura qu’un impact limité, voir très limité, puisqu’on ne cible pas le bon problème.
Quand plus de gens auront pris conscience que leur vie privée a une valeur inestimable, ils seront plus demandeurs de solutions techniques pour la protéger.
Mon constat peut sembler fataliste mais je ne désespère pas totalement…

2014-06-13

Chris Burnat un héros méconnu

Chris Burnat est décédé ce mercredi 11 juin 2014 à Rozelle  dans sa patrie d’adoption, l’Australie. Cet homme plus habitué à la célébrité des changelogs, n’aurait pas aimé cette publicité, tant il savait se montrer calme et  modeste, avec un sens de l’humour très développé.Chris Burnat

Au yeux de certains, il aurait pu passer pour un vieil homme de 70 ans, mais pour le Projet SME Server, c’était un Roc, un travailleur acharné, un packageur de RPM, un QA debuggeur, un auteur de documentation et plus simplement un camarade.

Pour moi, il était la preuve que l’age est un poids à traîner mais surtout pas un handicap, il était celui qui savait vous engager dans le projet en demandant simplement de faire le meilleur de vous même, il était celui qui savait guider vos débuts, patiemment.

Des gars comme Chris ont façonné le libre que nous avons, en y passant le plus clair de leur temps, avec cette flamme dans les yeux de ceux qui ont compris que leurs actions les dépassent.

La SME Server 9.0 va sortir très bientôt, et cela n’aurait pas été possible sans lui.

Pour finir je vais laisser Chris s’exprimer :

The End of the Internet
Congratulations! This is the last page.
Thank you for visiting the End of the Internet.
There are no more links.
You must now turn off your computer and go do something productive.
Go read a book, for pete’s sake.

Edit : une vidéo d’hommage a été faite par sa famille : Voir Ici

2014-06-12

Webmasters, arrêtez de faire le boulot de la NSA

Les journaux ont beau jeu de dénoncer l’espionnage des populations par quelques multinationales et Etats.
Pourtant derrière ce discours, les mêmes journaux livrent quotidiennement les données personnelles de leur lecteurs directement aux mains de ces mêmes multinationales du tracking et participent ainsi activement au fichage et profilage qu’ils dénoncent. Petit aperçu de la presse française :

Par exemple, sur Mediapart est bourré d’outils de statistiques, ce qui est bien étrange car il n’a aucune nécessité publicitaire :

  • Google (Analytics, Favicons,  Google+)
  • Facebook
  • Twitter
  • Xiti
  • Chartbeat

Sur Reflets.info, dont on ne peut nier la compétence technique :

  • Google (fonts)
  • WordPress.com Stats
  • Twitter

Sur Liberation.fr :

  • Chartbeat
  • SmartAdserver
  • Google (Google Tag Manager)
  • Xiti
  • Panoplie de sites publicitaires

Sur LeMonde.fr :

  • SmartAdserver
  • Chartbeat
  • Xiti
  • Yandex.ru
  • Panoplie de sites publicitaires

Sur leFigaro.fr :

  • Google (Analytics, Favicon)
  • SmartAdserver
  • Xiti
  • Facebook
  • Twitter
  • Panoplie de sites publicitaires

Sur l’Express :

  • Google (Analytics, API)

Sur le Nouvel Obs :

  • Google (Analytics, API)
  • Chartbeat
  • Twitter
  • Facebook
  • Xiti

Sur Numerama:

  • Google (Analytics, API, Google+, Google Tag Manager)
  • Twitter
  • Facebook
  • Xiti

Sur NextInpact (anciennement PCInpact), en étant logué comme abonné payant (et donc sans publicité):

  • Google (Analytics, fonts)
  • Xiti

Sur Korben :

  • Google (Analytics, Google Tag Manager)
  • Disqus
  • Panoplie de sites publicitaires

Je crois que ce serait bien plus efficace que chacun commence par balayer devant sa porte si on veut avancer vers un internet qui respecte la vie privée. Si vous connaissez des gens travaillant pour ces sites web, n’hésitez pas à leur demander des comptes.

C’est trop facile de faire une pétition qui n’a aucune chance d’aboutir (vous ne voyez pas que même un référendum, le pouvoir politique s’en cale) ou d’apposer une futile bannière « Reset the net » (on dirait du « green-washing ») pendant une journée.

Ce serait néanmoins dommage de terminer cet article sans rendre hommage aux bons élèves : Framablog, Sebsauvage, Standblog, Wikipedia

 

J'aime(20)Ferme-la !(2)

2014-06-07

Bloc-Notes : Paramètres de sécurité Oracle Java sous Debian

Objectif :

Afficher la console locale d’une VM proxmox sans être bloqué par les paramètres de sécurité Java avec un pc sous Openbox. Par défaut Java bloque les connexions sur les sites chiffrés auto-signés.

 

Mise en place :

Dans un terminal :

/usr/lib/jvm/jdk-8-oracle-x64/bin/ControlPanel

Ouverture du panneau de contrôle java :

securite_javaIl suffit ensuite de cliquer sur le bouton Modifier la liste des sites.

site_javaPuis rajouter le site internet auto-signé, dans mon cas l’url de proxmox.

 

2014-06-06

Bloc-Notes : Nginx en reverse proxy d’Apache

Objectif :

Soulager apache pendant les heures d’affluences, soulager ma machine virtuelle en consommation mémoire, permettre au contenu statique d’être téléchargé plus rapidement. Héberger plusieurs serveurs web avec une seule connexion internet et donc un seul port 80 ouvert sur le pare-feu.

nginx_schemas

Schémas de présentation

Installation :

service apache2 stop
apt-get install nginx
service nginx stop

Mise en place :

1.Apache :

Modifier le fichier ports.conf et les fichiers de configurations du ou des hôtes virtuels.

nano /etc/apache2/ports.conf

# renseigner les différent ports d'écoute
Listen 80
Listen 81
Listen 82
Listen 85
Listen 86
# port d'écoute pour les requêtes SSL
<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 8083
    Listen 8084
</IfModule>

<IfModule mod_gnutls.c>
    Listen 8083
    Listen 8084
</IfModule>

 Sur les hôtes virtuels voici la modification à apporter (exemple) :

<VirtualHost *:85> <- ligne à modifier
        ServerAdmin courriel@olivierdelort.net
        ServerName blog.olivierdelort.net


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

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

        ErrorLog /var/log/apache2/error.log

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

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

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

Pour que les ip soient correctement journalisées sur le serveur apache, installer :

apt-get install libapache2-mod-rpaf

2.NGINX

Configuration de nginx en mode reverse proxy :

nano /etc/nginx/conf.d/proxy.conf

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size   16k;
proxy_buffers       32   16k;
proxy_busy_buffers_size 64k;

Configuration globale de nginx :

user www-data;
worker_processes 2;
pid /var/run/nginx.pid;

events {
	worker_connections 1024;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	server_tokens off;

	server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";
   	gzip_min_length	0;
	gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 5;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# nginx-naxsi config
	##
	# Uncomment it if you installed nginx-naxsi
	##

	#include /etc/nginx/naxsi_core.rules;

	##
	# nginx-passenger config
	##
	# Uncomment it if you installed nginx-passenger
	##
	
	#passenger_root /usr;
	#passenger_ruby /usr/bin/ruby;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

 

Création d’un hôte virtuel pour les différentes redirections

nano /etc/nginx/sites-enabled/reverse

#exemple de redirection depuis le port 80 vers le port 85 d'apache
server {
        listen   80;
        server_name blog.olivierdelort.net;
        access_log  /var/log/olivier.access.log;
        error_log  /var/log/olivier.nginx_error.log debug;
        location / {
                proxy_pass         http://127.0.0.1:85/;
        }
}

#Ici les images du blog sont chargé directement par nginx qui est plus performant qu'apache sur ce genre de contenu
server {
        listen   80;
        server_name  olivierdelort.net;
        location = /50x.html {
        root /var/www/nginx-default;
        }
        access_log /var/log/pictures.nginx.access.log;
        error_log /var/log/picture.nginx.error.log;
        index index.html;
        location / {
        expires     max;
        root  /var/www/blog/wp-content/uploads/;
        }

 

Pour finir on démarre les services :

service apache2 start
service nginx start

2014-06-05

Création d’un nas maison avec proxmox – Partie 2 Le partage de fichiers

Voici la deuxième partie sur la création d’un nas à partir d’une machine virtuelle sous proxmox. Dans cette partie nous allons aborder le partage de fichiers. Mes fichiers doivent être accessible depuis n’importe quel ordinateur de mon réseau local et n’importe quel système d’exploitation.

Deux serveurs de partage seront installés, NFS pour le partage en natif Linux et Samba pour les postes sous Windows.

Enfin l’installation d’un serveur ownCloud pour synchroniser mes documents, images, photos, musiques.

Avant de commencer la configuration du serveur de partage, j’ai modifié la méthode de montage des deux disques durs. En effet j’ai préféré faire un montage basé sur l’UUID pour m’y retrouver plus facilement. J’utilise un petit utilitaire compris dans le paquet util-linux afin d’identifier les différents disques durs.

root@elune:~# blkid 
/dev/sdb1: LABEL="serietv" UUID="5b8275e1-85cb-4406-ba7f-8c54d48d7978" TYPE="ext4" 
/dev/sdc1: LABEL="films" UUID="27bd44d9-71aa-4b4a-9ed4-ab79e715d3fd" TYPE="ext4"

Il me reste plus qu’a modifier mon fstab pour que les disques soient montés au démarrage.

UUID=5b8275e1-85cb-4406-ba7f-8c54d48d7978 /media/5b8275e1-85cb-4406-ba7f-8c54d48d7978 ext4 defaults,nofail,acl,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 2
UUID=27bd44d9-71aa-4b4a-9ed4-ab79e715d3fd /media/27bd44d9-71aa-4b4a-9ed4-ab79e715d3fd ext4 defaults,nofail,acl,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 2

Samba

Installation de samba sous Debian :

apt-get install samba

Ensuite toute la configuration se fait via le fichier smb.conf situé dans /etc/samba. Le fichier se découpe en deux parties, une pour la configuration générale du serveur, l’autre pour les différents partages.

Voici la configuration que j’utilise :

#======================= Global Settings =======================
[global]
#Spécifie le groupe de travail
workgroup = WORKGROUP
#Description du serveur
server string = %h server
#pas de proxy
dns proxy = no
#Niveau de précision des log plus d'infos ici[->]
log level = 1
#pas de log dévènement
syslog = 0
#ou enregistrer le fichier de logs
log file = /var/log/samba/log.%m
#taille maximale du fichier
max log size = 1000
#mot de passes chiffrés
encrypt passwords = true
smb password file = /etc/smbpasswd
#niveau de sécurité : seul les utilisateurs avec un compte peuvent se connecter
security = user
#Permet de mapper les autorisation Unix vers windows, tous les fichiers créés à partir
#d'un poste windows aura les autorisations linux 777
create mask = 0777
#pareil que create mask mais pour les dossiers
directory mask = 0777
#améliore les transferts de fichiers
use sendfile = yes
aio read size = 16384
aio write size = 16384
#utilisaeurs sans mot de passe interdit
null passwords = no
#seul maître à bords
local master = yes
#pas de serveur de temps ni de support wins
time server = no
wins support = no

Passons maintenant à la configuration des partages :

En exemple la configuration d’un de mes partages.

#======================= Share Definitions =======================
[photos]
path = /media/5b8275e1-85cb-4406-ba7f-8c54d48d7978/photos/
#invités interdit
guest ok = no
#lecture seule non
read only = no
#dossier navigable
browseable = yes
#hérite des différentes acl
inherit acls = yes
inherit permissions = no
ea support = no
store dos attributes = no
printable = no
#lorsqu'un dossier ou un fichiers est crée il hérite des autorisations suivantes
create mask = 0755
force create mode = 0644
directory mask = 0755
force directory mode = 0755
hide dot files = yes

Le partages de fichiers samba est opérationnel. Seul les utilisateurs avec un compte sur le serveur pourrons accéder aux fichiers. Personnellement je n’utilise windows que pour les jeux, mais n’étant pas un extrémiste du libre, je tolère que mon entourage n’utilise pas le même système que moi. C’est alors plus facile pour échanger nos fichiers.

NFS – Network File System

NFS est un système de fichier réseau qui permet le partage entre machines UNIX. C’est le gros morceaux, car tous mes ordinateurs linux doivent pouvoir y accéder en lecture/écriture.

Installation.

apt-get install nfs-kernel-server

Ensuite les partages se configurent dans un seul fichier /etc/exports

/export/videos 192.168.66.0/24(rw,subtree_check,insecure,no_root_squash) 192.168.67.1(rw,subtree_check,insecure,no_root_squash)

  •  /export/videos : Nom du partage afficher lors de interrogation du serveur showmount -e IP_du_serveur_NFS
  • 192.168.66.0/24 – j’autorise n’importe quels ordinateurs du réseau à se connecter au partage
  • rw : accès en lecture/écriture
  • subtree_check : vérification de l’arborescence
  • insecure : permet au client de se connecter sur un port différent de celui par défaut le 1024, utile dans certains cas.
  • no_root_squash : spécifie que le root de la machine sur laquelle le répertoire est monté possède les droits root sur le répertoire

Tous les partages sont configurés de la même façon.

Mon pc de salon qui est en Wi-Fi utilise mon nas, pour ne pas ouvrir mon réseau local, sur mon pare-feu j’ai créer un réseau dédié au Wi-Fi en 192.168.67.XX, avec uniquement des accès ciblés vers mon réseau local. C’est pour cela qu’en plus de plage Ip locale j’ai renseigné celle de mon pc de salon.

ownCloud – l’accès depuis internet

J’ai besoin d’avoir accès à certains documents hors de chez moi avec une mise à jour à chaque modifications. C’est là qu’intervient le célèbre ownCloud. Si vous voulez plus d’infos c’est par ici[angl].

De plus il offre la possibilité de synchroniser ses contacts, son calendrier, la musique en streaming, et pleins d’autre petites applications sympatiques.

Pour l’installer, toujours sous Debian, il suffit de suivre le mini-tuto du site officiel. Il permet d’ajouter les dépôts et de procéder à l’installation.

Les données hébergées doivent être sauvegardées, mais pas aussi fréquemment que les VM. J’ai donc ajouté un disque virtuel ou seront stockés mes fichiers owncloud. Ce disque sera sauvegardé une fois par semaine avec un historique dont je n’ai pas encore définit la durée, peut être 15 jours ou un mois en fonction de son évolution.

add-hdd

Il sera monté dans /home/olivier/owncloud et il servira pour le dossier data de owncloud.

config_owncloudVoici une capture d’écran lors de mon installation. Pour la base de données je préfère utiliser mon serveur MariaDB à la place de sqlite. C’est aussi une des raisons qui m’ont poussé à ne pas utiliser le plugin d’openmediavault qui impose l’utilisation de sqlite.

Ajout des droits pour l’utilisateur d’apache afin qu’il puisse utiliser le dossier data.

chown -R www-data:www-data /home/olivier/owncloud

 Il me reste plus qu’a modifier la configuration de reverse proxy pour accéder au ownCloud depuis internet en ssl.

Conclusion

Mon nas est maintenant fonctionnel et prêt à accueillir mes fichiers. Mes fichiers sont disponibles partout où je suis, j’ai de la place pour le stockage multimédia, ils sont accessible via windows et Linux.

Dans la prochaine partie nous verrons comment sauvegarder et restaurer tout ce petit monde.

2014-06-03

Proxmox : Suprimer le message « no subscription »

Logo-ProxmoxVE

Depuis Promox 3.1, à chaque login (ou sur certaines actions), vous avez une fênetre qui apparait :

subscription

Moi perso ça a finis par me gonfler !
Voici une astuce simple pour le virer :

On commence par faire un backup (au cas où) du fichier incriminé.

cp /usr/share/pve-manager/ext4/pvemanagerlib.js /usr/share/pve-manager/ext4/pvemanagerlib.js.backup

On édite le fichier :

 nano /usr/share/pve-manager/ext4/pvemanagerlib.js

et vous cherchez la ligne :

if (data.status !== 'Active') {

Puis vous la remplacez par :

if (false) {

 

c'est tout :)

Un driver libre pour contrôler les sensors d’une carte mère Asus

 

asus_logo

J'ai récemment changé mon hyperviseur (j'en ferai une présentation plus tard).

Au programme : moins de place, moins de conso, plus de WAF !

J'ai donc acheté une nouvelle machine qui comprends une carte mère Asus :)
Tout content, je réinstalle mon OS, mes programmes … dont "lm-sensors" afin d'avoir une vue sur les températures et autres paramètres de la CM.

sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +105.0°C)
temp2:        +29.8°C  (crit = +105.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +34.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:         +34.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:         +33.0°C  (high = +80.0°C, crit = +100.0°C)

le drame… quasiment aucune info …

nada !

Autre soucis, j'utilise open-vz et j'ai donc un vieux kernel qui date de la préhistoire …
à coup de recherches sur l'Internet, dans dmesg, les modules …

il m'en manque un, celui qui gère les sonde de la carte mère (évidemment …)

Je dispose d'une Asus H81i-Plus en socket 1150 avec un H81, en cherchant sur les modèles de cette famille il me faut le driver pour le composant "w83627ehf".

Problème celui ci est déjà présent indecision (pourquoi tu marches pas ???), mais pas utilisable car j'ai pas ce composant sur ma CM (wtf ??).
En cherchant encore j'ai un "nct6775" qui est poutant gérer par le driver "w83627ehf" …

Etant donné qu'on est dans le monde des bisounours barbus, autant le recompiler soi même, nan ?

Il vaut dans un premier temps le nécessaire du parfait geek : les headers du kernel, les outils de compilations …
Puis récuper sur le site du fabricant les sources (cool c'est du libre !) : https://github.com/groeck/nct6775

 

et enfin :

cd /tmp
wget https://github.com/groeck/nct6775/archive/master.tar.gz
tar xvzf master.tar.gz
cd nct6775-master
make
cp ./nct6775.ko /lib/modules/mon-kernel/kernel/drivers/hwmon/
depmod -a
modprobe nct6775
echo nct6775 >> /etc/modules

On vérifie avec "lsmod" :

lsmod
Module                  Size  Used by
nct6775                51920  0 
[...]
hwmon_vid               3148  1 nct6775
[...]

 

et petit coups de "sensors" :)

sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +105.0°C)
temp2:        +29.8°C  (crit = +105.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +35.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:         +35.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:         +32.0°C  (high = +80.0°C, crit = +100.0°C)

nct6779-isa-0290
Adapter: ISA adapter
Vcore:                  +0.85 V  (min =  +0.00 V, max =  +1.74 V)
in1:                    +1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
AVCC:                   +3.38 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:                  +3.38 V  (min =  +2.98 V, max =  +3.63 V)
in4:                    +1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                    +0.00 V  (min =  +0.00 V, max =  +0.00 V)
in6:                    +0.86 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
3VSB:                   +3.39 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:                   +3.26 V  (min =  +2.70 V, max =  +3.63 V)
in9:                    +1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in10:                   +0.14 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in11:                   +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                   +0.11 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in13:                   +0.11 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                   +0.12 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                  2061 RPM  (min =    0 RPM)
fan2:                  1192 RPM  (min =    0 RPM)
fan5:                     0 RPM  (min =    0 RPM)
SYSTIN:                +121.0°C  (high =  +0.0°C, hyst =  +0.0°C)  sensor = thermistor
CPUTIN:                 +34.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
AUXTIN0:                +34.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor
AUXTIN1:               +114.0°C    sensor = thermistor
AUXTIN2:               +113.0°C    sensor = thermistor
AUXTIN3:                +36.0°C    sensor = thermal diode
PECI Agent 0:           +35.0°C  
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  
PCH_CHIP_TEMP:           +0.0°C  
PCH_CPU_TEMP:            +0.0°C  
intrusion0:            ALARM
intrusion1:            ALARM
beep_enable:           disabled

 

C'est déjà mieux !
Mais pas encore parfait, trop de blabla, et certaines infos sont éronnées !

éditez : nano /etc/sensors.d/sensors3.conf

à l'instance : chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*"

modifiez de la façon suivante :

chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*" "nct6779-*"


    ignore fan5

    ignore temp1 #SYSTIN
    ignore temp3 #AUXTIN1
    ignore temp4 #AUXTIN2
    ignore temp5 #AUXTIN3
    ignore temp8 #PCH_CHIP_CPU_MAX_TEMP
    ignore temp9 #PCH_CHIP_TEMP
    ignore temp10 #PCH_CPU_TEMP
    ignore intrusion0
    ignore intrusion1
    ignore beep_enable


label in1 "+5V"
  compute in1 @ * (40/8), @ / (40/8)
  set in1_min 5 * 0.95
  set in1_max 5 * 1.05

label in3 "+3.3V"
  set in3_min 3.3 * 0.95
  set in3_max 3.3 * 1.05

label in4 "+12V"
  compute  in4  @ * (96/8), @ / (96/8)
  set in4_min 12 * 0.95
  set in4_max 12 * 1.05

label in8 "Vbat"
  set in8_min 3.0 * 0.90
  set in8_max 3.3 * 1.10

ignore in2
ignore in5
ignore in6
ignore in7
ignore in9
ignore in10
ignore in11
ignore in12
ignore in13
ignore in14

label fan1 "Chassis fan"
  set fan1_min 300

label fan2 "CPU fan"
  set fan2_min 300

 

refaites un "sensors"

nct6779-isa-0290
Adapter: ISA adapter
Vcore:         +0.85 V  (min =  +0.00 V, max =  +1.74 V)
+5V:           +5.16 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
+3.3V:         +3.38 V  (min =  +2.98 V, max =  +3.63 V)
+12V:         +12.10 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
Vbat:          +3.28 V  (min =  +2.70 V, max =  +3.63 V)
Chassis fan:  2099 RPM  (min =    0 RPM)
CPU fan:      1198 RPM  (min =    0 RPM)
CPUTIN:        +34.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
AUXTIN3:       +35.0°C    sensor = thermal diode
PECI Agent 0:  +36.0°C

 

c'est déjà mieux, même si dans mon cas, certaines valeurs "max" et "mini" sont toujours à 0 sad
 

2014-06-02

Suivre les commentaires d’un article particulier en RSS avec WordPress

Parmi les arguments avancés pour l’utilisation de DisquS figure celle-ci :

Je crois que l’intérêt de Disqus est pour les utilisateurs, qui peuvent suivre facilement les conversations autour des commentaires qu’ils ont laissés. Combien de fois avez-vous laissé un commentaire sur un blog, vérifié une ou deux fois s’il y avait des réponses intéressantes, puis oublié cette page. Avec Disqus, si quelqu’un répond trois mois plus tard, l’utilisateur peut en obtenir une notification et rebondir.

Et bien vous devriez savoir que pour chaque article publié avec WordPress on peut avoir un flux RSS particulier des commentaires. Ex : http://tuxicoman.jesuislibre.net/2014/05/disqus-pourquoi.html/feed

En bonus, pas besoin de laisser son mail pour s’inscrire ni de prier pour que vos démarches de désinscriptions soient bien prises en compte.

J'aime(5)Ferme-la !(1)

Pour vivre heureux, vivons caché

Pour un article récent sur le déploiement avec Puppet, je voulais partager un peu de code et quoi de mieux qu’un dépôt git ? A priori, pas grand chose… Bref deux possibilités s’offraient à moi pour partager mon dépôt git, à savoir :

  • l’héberger sur mon Gitlab auto-hébergé,
  • l’héberger sur GitHub.

J’ai pas mal hésité avant de me décider à savoir où j’allais l’héberger et j’ai finalement choisi de publier mon dépôt sur GitHub. L’unique raison qui m’a poussé à utiliser Github est que j’avais peur pour la sécurité de mon serveur.

En effet, j’ai eu peur qu’en diffusant l’url de mon Gitlab, je m’expose à d’inutiles risques. En effet, Gitlab est fréquement mis à jour, ce qui est bien et parfois la raison de cette mise à jour et la correction d’une faille de sécurité. Malheureusement, je n’ai pas toujours le temps de faire les mise à jour rapidement et du coup je ne suis pas rassurer de partager un lien vers mon Gitlab sachant qu’il peut être parfois vulnérable.

Voilà, je ne dis pas de cacher tous ses services auto-hébergés mais c’est comme pour la vie réelle, vous ne criez pas sur tous les toits votre adresse et vos dates de vacances. Du coup, même logique, ne divulguez pas plus d’informations que nécessaires, il en va de la sécurité de votre serveur…

Note : Je prend Gitlab comme exemple, mais cela fonctionne avec n’importe quel service hébergé sur votre serveur.

2014-05-30

FeedEx, le meilleur lecteur RSS pour Android

J’utilise essentiellement le RSS pour suivre l’actu et FeedEx est le logiciel que j’apprécie le plus sur Android pour cela.

feedex

C’est un logiciel libre. Il est rapide, clair, efficace. Il n’y a pas de pub, pas de compte à créer, pas de serveur qui tracent ce que vous lisez ou qui vous rendent dépendant de l’appli. On peut importer/exporter tous ses flux en OPML. On peut récupérer automatiquement les images pour lire son flux hors ligne plus tard. On peut garder des articles pour plus tard d’un clic. On peut envoyer ses articles favoris par mail. Il y a des mises à jours souvent et qui vont toujours dans le bon sens. On peut contacter facilement le développeur.

C’est dispo sur Fdroid et le code source est là. Enjoy !

 

J'aime(2)Ferme-la !(0)

2014-05-25

DisquS, pourquoi?

disqus Est ce que quelqu’un pourrait m’expliquer pourquoi tant de blogs utilisent DisquS pour gérer les commentaires à la place du système de commentaires intégré à WordPress ?

Si c’est un problème de spam, j’utilise le plugin Askimet comme anti-spam et il marche à la quasi perfection. (8’000 spams évités par mois. 99.88% de précision, gratuit jusqu’à 80’000 commentaires par mois)

Concernant la traçabilité, Askimet est un service centralisé auquel on envoie des infos personnelles : commentaire, IP, referrer, user agent . Mais DisquS est pire. Chaque commentateur est tracé sur le web entier par des cookies, voir même son compte. Et les infos refilées aux partenaires de DisquS vont jusqu’à a localisation et les pages vues.

J'aime(11)Ferme-la !(6)

Bloc-Notes : Changer le VMID d’une VM Proxmox

Mon blog me sert beaucoup d’aide-mémoire sur des problèmes ou des solutions que j’ai rencontrés dans le passé. J’ai donc décidé de créer une partie dédiée à des petites astuces qui ne nécessitent pas un long article, mais dont je veux garder une trace écrite. Elles seront écrites sous forme de bloc-notes mais sans pour autant perdre en compréhension.

Pour changer de numéro de machine virtuelle sous proxmox. Machine Kvm. Le but est de changer le VMID de la machine N°162 à 160.

Arrêt de la vm

Puis en SSH sur l’hôte :

cd /var/lib/vz/images/
mv 162 160
cd 160
mv vm-162-disk-1.qcow2 vm-160-disk-1.qcow2
ls /var/lib/vz/images/160
vm-160-disk-1.qcow2

Modification du fichier de configuration :

cd /etc/pve/nodes/serveur-proxmox/qemu-server/
mv 162.conf 160.conf

Puis

nano 160.conf
##
balloon: 512
bootdisk: ide0
cores: 2
# ligne remplacée
#ide0: local:162/vm-162-disk-1.qcow2,format=qcow2,size=92G
ide0: local:160/vm-160-disk-1.qcow2,format=qcow2,size=92G
ide2: local:iso/debian-7.0.0-amd64-netinst.iso,media=cdrom
memory: 2048
name: dalaran
net0: rtl8139=FE:E8:6F:6A:58:A7,bridge=vmbr0
ostype: l26
sockets: 1

 Retour dans l’interface proxmox, pour vérifier les changement. Redémarrage de la VM et c’est bon.

2014-05-24

SME Server 9rc1 est disponible

La version 9 de la SME Server arrive à grand pas maintenant que la RC1 a été rendue disponible. Il n’y a plus de bug majeur à corriger pour la sortie de la version 9 stable, ce qui implique que cette version est suffisamment aboutie pour être installée sur vos serveurs de production.

Ce qui est mon cas depuis la béta4

Pour information il n’y a pas d’upgrade possible entre sme8 (Centos5) et sme9 (Centos6) mais la faute en incombe à redhat qui ne l’a pas permis pour ses versions El5 et El6.

La solution qui a été mise en place et de faire un backup par la console en usb ou par le server-manager (réseau ou usb) de votre SME Server, d’installer la version 9, puis de restaurer le backup….et enfin de réinstaller les contribs (disponibles).

Les contribs seront le prochain gros chantier à mettre en place, car elles sont encore en nombre limité mais je suis confiant. Mes contribs sont presque toutes compatibles : Works in progress.

Pour télécharger la sme9

La base d’utilisateur de la SME Server est mondiale, mais une forte proportion de la communauté est Française. Vous avez à votre disposition un forum en Français si vous n’êtes pas à l’aise avec l’Anglais.

La SME Server est un bon moyen d’héberger votre vie numérique à la maison….depuis le temps qu’on vous le dit :)

2014-05-22

J’ai essayé le local streaming de Steam

La nouvelle mise à jour de la plateforme de jeux Steam apporte une nouvelle fonctionnalité, le streaming local.

Le streaming en local permet depuis un ordinateur sous windows de pouvoir jouer à n’importe quel jeux de la bibliothèque, sur n’importe quel ordinateur d’un même réseau local, quel que soit le système d’exploitation du client.

La première chose qui m’est venu en tête à l’annonce de cette fonction “chouette fini wine pour jouer à mes jeux windows”.

Je n’ai pas put m’empêcher de découvrir le jeu en streaming.

Avant toute chose l’ordinateur qui héberge les jeux, que je nommerai le serveur, doit impérativement être sous windows. En en effet aujourd’hui (le 22 Mai 2014) seul les ordinateurs sous windows, à partir de la version vista, peuvent faire office de serveur de streaming. Ce qui pour moi est logique, car du coup tout le catalogue de Steam peut bénéficier du streaming local. Est-ce que Valve l’étendra au système Mac et Linux je n’ai pas réussi à avoir l’info.

Les bases de l’essai

Voici les configurations que j’ai utilisé pour l’essai :

Côté serveur : Ordinateur acheté en Janvier 2012

  • Marque : Petit assembleur près de chez moi
  • Intel core I3
  • Carte mère gigabyte ultra durable 3, Intel 6 series
  • 4 go de Ram DDR3
  • Nvidia Geforce GTS 450 1go de ram
  • Windows 7 Familliale 64bits

serveur-windows

Côté client : Pc portable acheté en Septembre 2013

  • Marque : Dell Vostro 3306
  • Intel core I3
  • 4 go de ram
  • INTEL HD GRAPHICS 4000 intégré
  • Acheté avec Ubuntu 11.10 préinstallé que j’ai très vite remplacé par une Debian Sid

Configuration chez dell ->

Activation du Streaming Local

La mise en place que streaming local est d’un simplicité extrême.

  1. Démarrer Steam sur le serveur, puis dans Steam -> Paramètres -> Streaming local – cocher la case “Activer le Streaming”
  2. Démarrer Steam sur le client, Steam -> Paramètres -> Streaming local – cocher la case “Activer le Streaming”

Voilà c’est fait !

Configuration

Pour ce premier essai j’ai décidé de laisser les réglages par défauts, mais il est possible d’affiner les réglages graphiques en fonction de la qualité de son réseau, de la taille de l’écran du serveur, comme indiquer sur les figures suivantes.

streaming

reseau-steamgraphisme-steam

Let’s play

Pour rendre le test plus révélateur j’ai choisi deux jeux gourmands en ressources et natifs windows : Skyrim et Dishonored, qui ne sont pas trop dépassés.

Je démarre Steam sur mon client :

steam-client

Et là magie, je me retrouve sur mon petit Dell 13 pouce à jouer à Skyrim. Et je dois reconnaître, dans l’ensemble c’est très fluide le son est parfait. Malgré les faiblesses matérielles du dell je prends du plaisir à jouer. Mais tout n’est pas parfait, une fois le jeu lancé sur le serveur celui-ci est dédié au jeu, impossible de faire autre chose. Je me suis donc retrouvé avec deux ordinateurs avec les jeux.

A part ce petit problème, je suis dans l’ensemble très agréablement surpris pas la qualité du streaming, même via une connexion Wi-Fi le système ne flanche pas durant les deux heures que j’ai joué. A voir donc à long terme comment va évoluer cette fonctionnalité.

Conclusion

Cette solution peut être utilisée pour faire fonctionner des jeux natifs windows sous Linux sans se prendre la tête en configurant Wine. Cela incitera peut-être certains à utiliser Steam sous Linux.

Mais je reste quand même très perplexe et prudent avec le streaming local. Oui cela permet de jouer au catalogue complet de Steam sur n’importe quelle plateforme, mais cette solution à mon avis ne poussera pas les grands studios de jeux vidéo à développer pour Linux. Il est vrai que le monde du jeu vidéo ne se résume pas qu’à Steam mais Valve aurai pu aider à faire penché la balance en tant qu’acteur majeur de cette industrie. Je trouve juste dommage que Valve n’est pas plus milité ou réfléchit sur un portage en natif de son catalogue. Peut-être pas pour les anciens jeux qui ne seront sûrement pas re-developpés, mais pour les futurs. Wine a encore de beaux jours devant lui.

En bonus une petite vidéo pour montrer la bête en action. Désolé pour la qualité c’est ma première vidéo en ligne.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="http://www.youtube.com/embed/MCACcWgvT98?rel=0" width="560"></iframe>

OpenSSL et la vérification du domaine dans les certificats

Je suis en train de rajouter de l’onion routing à mon moteur de recherche MySearch. Je me suis donc penché sur comment Twisted (13.2) gérait les connexions SSL.

Tout d’abord, il faut savoir qu’une connexion web HTTPS dans Twisted ne fait aucune vérification de certificat par défaut. C’est écrit dans la doc et dans l’API.

Enfin « par défaut », il faut comprendre « sans mettre les mains dans le cambouis ». Car quand on regarde plus en profondeur dans le code de Twisted, on voit que les connexions SSL reposent sur PyOpenSSL , qui est comme vous vous en doutez un binding pour la fameuse librairie OpenSSL.

Dans Twisted, voici ce qu’on trouve de plus exhaustif pour vérifier la sécurité de sa connexion SSL. Là, le premier truc qui choque, c’est que le hostname de destination n’apparaît pas dans le code de vérification des certificats.

On se dit qu’on loupe quelque chose, on va voir du coté de la doc de PyOpenSSL . Pareil, pas de fonction qui vérifie la correspondance du hostname demandé avec le certificat présenté. Et pas un mot sur le sujet.

Allons donc voir ce qu’en dit OpenSSL. Et là c’est beau, je vous le donne en mille :

One very common mistake made by users of OpenSSL is to assume that OpenSSL will validate the hostname in the server’s certificate. Currently, it does not, although a future version (1.1.0?) will include this functionality.

C’est écrit noir sur blanc et .

Sérieusement, vous pensez qu’il est sain de forcer des programmeurs lambda à coder une fonction si critique qui va vérifier le hostname de destination avec toutes les règles de subject alt name encodées en ASN.1 sans faire le moindre faux positif ni faux négatif ?

Je serai amusé de voir le code de cette partie de quelques applications reposant sur OpenSSL. On risque de trouver des manières élégantes de faire du MITM avec un simple certificat adapté…

Par pur hasard, une nouvelle version de Twisted (14.0) est sortie ces jours-ci. Les notes de mise à jour indiquent de grandes améliorations autour des communications SSL (enfin dirais-je !).

Je vais donc, curieux, voir comment ils se sont sorti de ce piège. Le code de vérification du hostname est en fait externalisé à un module Python externe : service_identity , module créé en mars 2014 (semble t il par des codeurs de Twisted). Ca c’est du code sûr, vérifié et testé… qui prend quand même environ 430 lignes de Python (avec beaucoup de lignes blanches je vous l’accorde).

Voici d’autres exemples du joli cadeau sue nous lègue OpenSSL :

 

J'aime(0)Ferme-la !(0)

2014-05-21

Duckduckgo se met à jour

Le moteur de recherche dont la devise est de ne pas espionner ses utilisateurs s’offre aujourd’hui une mise à jour intégrale. Cette nouvelle version se concentre sur des  recherches plus intelligentes, plus affinées.

Nouveau design, nouvelles fonctionnalités.

Au niveau du design rien de bien nouveau on prend celui de Google et on colle notre logo. Par contre, au niveau des fonctionnalités il est  possible à partir de la recherche en cours d’afficher les images, les vidéos en relation avec le sujet recherché.

On notera aussi l’ajout la recherche locale, auto-suggérer, et bien d’autres.

J’avais essayé Duckduckgo il y a deux ans, mais il ne m’avait pas convaincu à l’époque. Je dois dire que cette nouvelle mise à jour m’incite fortement à revoir mon jugement et à lui donner une seconde chance. J’ai donc décidé de l’adopter pendant un mois.

Source : OSnews

2014-05-19

Transformer son $HOME en dépôt git pour gérer ses fichiers de configurations.

L’utilisation de plusieurs ordinateurs sous Linux, peut devenir un vrai cauchemar lorsque l’on veut maintenir la même configuration à jour. Dans mon quotidien il m’arrive d’utiliser trois ordinateurs différents. Et j’aime bien retrouver mes marques quel que soit la machine utilisée. Au départ je “trimballais” partout une clef usb avec tous mes fichiers de configurations, mais cette solution a atteint sa limite très rapidement.

Elle était surtout très contraignante car, je devais en permanence avoir ma clef usb sur moi et en cas de modification de configuration penser à faire une copie (ce qui arrivait une fois sur mille) sur la dite clef pour pouvoir mettre à jour mes autres ordinateurs. Du coup je me retrouvais avec des configurations très hétéroclites.

J’ai donc décidé de créer un dépôt git pour les différentes configurations que je souhaite déployer sur mes ordinateurs. Certains diront pourquoi ne pas tout grouper dans un même dépôt, je préfère les séparer en cas problème sur un cela ne me bloquera pas le reste.

C’est alors que j’ai entendu parler de vcsh et mr (Merci à Brice camarade libriste qui m’a expliqué les bases). Ses deux petits programmes couplés avec git m’ont permit de centraliser tous mes fichiers de configurations sur mon serveur gitlab et ainsi de pouvoir installer mon environnement sur tous les ordinateurs que j’utilise.

VCSH – Version Control System for $HOME – multiple Git repositories in $HOME

Comme son nom l’indique il permet de faire de la gestion de version pour le $HOME. Grâce à lui plusieurs dépôts git peuvent cohabiter dans le même répertoire. Il centralise toutes les têtes de dépôts au même endroit, par défaut il les place dans ~/.config/vcsh/repos.d mais il est tout à fait possible de le changer, de même si l’on désire maintenir plusieurs dépôts git ailleurs que dans le $HOME. Pour plus d’informations je vous invite sur la page github du projet

Passons à son installation, sous Debian,

sudo apt-get install vcsh

 mr pour myrepo

mr intervient principalement sur l’utilisation et la configuration des dépôts. Dans un premier temps il permet avec une seule ligne de commande, de livrer et pousser les modifications, mettre à jour simultanément tous les dépôts renseignés dans sa configuration. Dans un second temps il permet aussi de gérer la configuration de ses mêmes dépôts. Dans mon cas il me permet de pousser mes modifications à la fois sur mon serveur gitlab mais aussi sur mon compte github pour en garder une sauvegarde. Il me permet de rajouter une url à mon origin dès le clonage des dépôts, ce qui m’évite une configuration post-installation de tous mes dépots. Pour plus d’informations voici la page du projet.

L’installation sur Debian est toujours aussi simple

sudo apt-get install mr

Préparatifs avant la transformation

Tout d’abords j’ai défini quels fichiers de configurations que je souhaite garder à jour et déployer sur mes différents ordinateurs:

  1. La configuration d’openbox
  2. La configuration d’emacs
  3. La configuration de terminator
  4. La configuration de zsh

Initialisation avec vcsh

J’ai au préalable créé sur gitlab et github un dépôt par configurations. Ensuite j’ai suivi la documentation de vcsh pour créer un par un par les dépôts. Exemple avec openbox :

#initialisation du dépôt
vcsh init openbox
#création du gitignore pour éviter d'avoir des erreures sur les dossiers non #suivi
vcsh write-gitignore openbox
#ajout des fichiers
vcsh openbox add ~/.config/openbox/rc.xml ~/.config/openbox/menu.xml ~/.config/openbox/autostart ~/.gitignore/openbox
vcsh commit -am 'intial commit'
vcsh openbox remot set-url --add origin git@github.com:colmaris/dotfiles-openbox.git

J’ai reproduit cette manipulation pour chacun des dépôts à initialiser. Petite astuce si le dépôt git existe déjà, comme ce fut le cas pour moi avec ma configuration d’emacs, dont je ne voulais pas perdre l’historique. Il m’a suffi de créer le chemin vers les fichiers de configurations dans le dépôts git avant la migration vers vcsh.

Pour emacs il faut de l’on retrouve le chemin exact vers le fichier init.el.

cd ~/.emacs
mkdir .emacs/
git mv init.el .emacs
git add .emacs
git commit -am 'moving file init.el'
git push

Ensuite j’ai supprimé totalement le dossier .emacs de mon $HOME, pour le cloner avec vcsh.

vcsh clone git@git.olivierdelort.net:colmaris/emacs emacs

Ainsi j’ai put garder l’historique de mon dépôt emacs, et je peux maintenant l’utiliser avec vcsh sans problème.

Configuration de mr

Une fois tous mes dépôts de configuration initialiser avec vcsh, je suis passé à la configuration de mr dont le but premier, dans mon cas, est de pouvoir pousser mes modifications sur mon gitlab et les sauvegarder sur github. Il n’y a pas très longtemps je n’étais pas pour l’utilisation de github, mais les différents commentaires sur cet article et une récente discussion avec des amis m’a fait changer d’avis. Et comme de toute façon ses dépôts seront public pourquoi ne pas en faire profiter les utilisateurs de github cela pourra être utile à quelqu’un, qui sait.

La configuration de mr se fait via un fichier .mrconfig directement placé dans le $HOME. Voici le mien

# -*- mode: sh -*-

[DEFAULT]

git_gc = git gc "$@"

# * Dotfiles Organisation

# ** Emacs

[$HOME/.config/vcsh/repo.d/emacs.git]

checkout =

vcsh clone git@git.olivierdelort.net:colmaris/emacs.git emacs

vcsh emacs remote set-url --add origin git@github.com:colmaris/dotfiles-emacs.git

# ** Openbox

[$HOME/.config/vcsh/repo.d/openbox.git]

checkout =

vcsh clone git@git.olivierdelort.net:colmaris/dotfiles-openbox.git openbox

vcsh openbox remote set-url --add origin git@github.com:colmaris/dotfiles-openbox.git

# ** Terminator

[$HOME/.config/vcsh/repo.d/terminator.git]

checkout =

vcsh clone git@git.olivierdelort.net:colmaris/terminator-solarized.git terminator

vcsh terminator remote set-url --add origin git@github.com:colmaris/terminator-solarized.git


# ** Zsh

[$HOME/.config/vcsh/repo.d/zsh.git]

checkout =

vcsh clone git@git.olivierdelort.net:colmaris/dotfiles-zsh.git zsh

vcsh zsh remote set-url --add origin git@github.com:colmaris/dotfiles-zsh.git

Petite explication :

# ** Emacs
#ici j'indique ou se trouve la tête du dépôt
[$HOME/.config/vcsh/repo.d/emacs.git]
#ici se trouve les actions à réaliser lors du clonage
checkout =
# je clone à partir de mon gitlab
vcsh clone git@git.olivierdelort.net:colmaris/emacs.git emacs
#je rajoute mon compte github à l'origin de mon dépôt
vcsh emacs remote set-url --add origin git@github.com:colmaris/dotfiles-emacs.git

Lors du clonage des dépôts mr rajoutera l’url de mon compte github à l’origin déjà configurée.

Ce qui me permet de pousser d’un seul coup tous les dépôts sur mon github.

mr push

Déploiement

A partir de maintenant je peux déployer mes configurations sur n’importe quel ordinateur ou git, vcsh et mr sont installés.

Je procède comme suit :

#installation des prérequis
sudo apt-get install git vcsh mr
#configuration de mr
git clone git@git.olivierdelort.net:colmaris/dotfiles-mr.git ~/.mrconfig
#clonage 
mr checkout

Et voilà en quelques minutes j’ai déployé ma configuration et je suis prêt à travailler. S’il m’arrive de faire des modifications je les livre et les pousse directement dans le dépôt concerné. Et sur mes autres ordinateurs il me suffit de faire une mise à jour avec la commande ‘mr update‘ pour qu’elles soient prises en comptent.

mr update
mr update: /home/draconis/.config/vcsh/repo.d/apache-autoindex.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/draconis-install.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/emacs.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/eso-theme.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/motd-colmaris.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/mrconfig.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/mytheme-lightdm.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/openbox.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/terminator.git
Already up-to-date.

mr update: /home/draconis/.config/vcsh/repo.d/zsh.git
Already up-to-date.

mr update: finished (10 ok)

Conclusion

Depuis que j’utilise cette méthode je revis littéralement, je ne me soucis plus de savoir si j’ai ma clef usb à jour et avec moi. Tout est centralisé sur mon gitlab et j’ai mon github en sauvegarde. Je l’ai étendu sur d’autre projet sur lesquels je travaille.

2014-05-16

Création d’un nas maison avec proxmox – Partie 1 La mise en place

Depuis quatre ans toutes mes données locales étaient stockées sur un Nas Synology. J’en étais et j’en suis toujours très content, il faisait son boulot de Nas et le faisait bien.

Mais à force de tous stocker dessus le disque dur commençait à saturer, mes données commençaient à se sentir à l’étroit.

Le défaut principal de ce nas c’est qu’il est mono disque et si je veux m’agrandir il me faut acheter un plus gros disque, ensuite trier, réorganiser, copier mes données de mon ancien disque dur vers le nouveau ou investir dans un autre modèle plus gros, mais ma ministre du budget a rejeté ma requête.

Du coup j’ai commencé à me torturer les méninges afin de trouver une nouvelle configuration pour mon stockage de données, après quelques jours d’intense réflexion la solution m’apparut.

Mon serveur proxmox ! Et oui pourquoi ne pas me monter moi-même mon Nas à partir d’une machine virtuelle? C’est un adage très connu des libristes, “si ça n’existe pas, fais le”.

De quoi vais-je avoir besoin ?

  • Un disque dur en plus de celui dejà en place
  • Faire du partage de dossiers natif, sur Linux(nfs), et sur Windows(cifs)
  • Séparer sur deux disques durs mes données
  • Intégré un serveur ownCloud
  • Accessible depuis tous les ordinateurs de la maison
  • Sécuriser les fichiers avec une gestion des droits

Maintenant au boulot !

1.Création du serveur et installation physique des disques durs

Rien de très compliquer dans cette étape dans un premier temps je créé la machine virtuelle qui me servira de Nas, ensuite je branche les deux disques durs. Ses disques durs font 2 To chacun et seront répartis comme suit :

  • Premier disque : sdb -> Mes films, Vidéos, photos
  • Second disque dur: sdc -> Mes seriesTv, Documents, ma Musique

Je ne vais pas rentrer dans les détails de la création d’une VM Proxmox il y a plein d’informations sur internet, je vais seulement donner les spécifications techniques de celle-ci:

Processeur : 1

Ram : Une plage entre 512mo et 1go, au repos elle consommera au minimum 512, et en cas de grosse activitée elle pourra monter jusqu’à 1go de consommation mémoire.

Disque système : 32 go

Une carte réseau

Le tout avec une Debian Wheezy comme système d’exploitation.

2.Ajout des disque durs dans la VM

Passons maintenant dans le vif du sujet. Mes disques durs en place j’ai dû préparer le deuxième disque neuf avant son intégration dans la VM.

#Partionnage avec cfdisk
cfdisk /dev/sdc
#puis formatage en ext4
mkfs.ext4 /dev/sdc

Ensuite intégration dans la vm, depuis la console proxmox :

# pour le disque sdb branché sur le port sata 1
qm set <Id de la VM> -sata1 /dev/sdb
# pour le disque sdc branché sur le port sata 2
qm set <Id de la VM> -sata2 /dev/sdc

A présent les deux durs sont montés et fonctionnel dans la VM, comme le montre la figure suivante :

montage

3.Installation des différents services

A cette étape pas trop le choix des logiciels :

Partage de fichiers : Nfs pour Linux, Samba pour Windows

apt-get install nfs-common nfs-kernel-server

Acces distant : Ssh

apt-get install openssh-server

Pour plus de confort j’installe ma clef publique sur le serveur SSH depuis mon ordianteur

ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.150

Serveur ownCloud: Utilisation du dépôt développeur

echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list 
wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key
apt-key add - < Release.key 
apt-get update
apt-get install owncloud

Rsync pour les sauvegardes

apt-get install rsync

Il ne me reste plus qu’à copier les données sur chacun des disques, avant de configurer le tout. Vu le travail de rédaction, j’ai décidé de diviser ce sujet en plusieurs parties. Dans la prochaine j’aborderai le partage de fichiers.

2014-05-14

Ménage de printemps

Quatre mois d’inactivité sur mon blog, par faute de temps, pris par mes projets informatiques, j’ai décidé de faire peau neuve et de faire évoluer le blog. Le faire évoluer en bien j’espère, l’avenir me le dira.

Une évolution graphique

Le but est de moderniser le design du blog. Marre des couleurs sombres et ternes, place à la couleur avec parcimonie. Le flash bling bing pas pour moi. Je voulais un thème qui soi actuel, simple, sans fioriture pour cibler directement le contenu. Ce nouveau thème se concentra sur le contenu principal du blog et rien d’autre, fini les widget à rallonge.

Une évolution rédactionelle

La seconde évolution sera faites principalement sur les billets et les sujets abordés. Ce blog sera un peu plus personnel, je ferai toujours des minis tutos avec des cas concrets, mais je traiterai de sujets moins technique, ou tout simplement mon côté geek. Mais une chose  ne changera pas, je resterai le plus possible fidèle à ma vision de l’informatique, libre, éthique et abordable par tous.

Il me reste encore quelques petites retouches à faire par-ci par là, mais je vous souhaite la bienvenue dans mon nouveau chez moi :)

Changement de FAI pour B&amp;You

Le FAI est le composant le plus important pour quelqu’un qui souhaite faire de l’auto-hébergement, mais nous ne sommes pas tous égaux sur ce point là. Pour l’instant je n’ai pas le droit à la fibre alors que la ville voisine de la mienne y a accès J’ai été client Free pendant plus de six ans et bien que j’ai été plutôt satisfait mais dernièrement divers points m’ont fatigués au plus haut point :

  • Le peering vers des sites US (Youtube, AppStore, …)
  • Le débit disponible en soirée,
  • Le prix d’abonnement de 36€ et l’option TV à 1€.

Finalement, je me suis décidé à quitter Free au début de l’année mais je ne savais pas pour qui car mine de rien lorsque l’on fait de l’auto-hébergement ce n’est pas un choix facile à faire…

L’herbe est-elle plus verte ailleurs ?

Le choix d’un nouveau FAI n’est pas un choix à faire à la légère parce que l’on sait ce que l’on quitte mais on ne peux malheureusement pas savoir à l’avance ce que l’on aura une fois que le changement effectué. Après avoir épluché internet, lu des avis sur différentes offres, changé d’avis une bonne dizaine de fois (peut être plus, j’ai arreté de compter à dix), demandé conseil à mes connaissances j’ai été capable de prendre une décision début avril.

Tout d’abord, il fallait lister les besoins que j’avais :

  • IP-fixe, le plus le plus important (exit Orange et SFR),
  • Avoir le port 25 ouvert (pour les mails sortants).

En gros, il ne restait plus grand monde pour choisir mon FAI : Free, Bouygues Telecom, OVH, FDN. Ma compagne travaillant en télé-travail à 40%, il fallait justifier auprès de son employeur «du sérieux» de notre connection à internet, j’ai donc été obligé d’enlever le FDN et OVH de la liste (oui cela peut paraître bizarre mais je n’ai pas eu trop le choix), ce qui a fait que j’ai choisi Bouygues Telecom plutôt par défaut que par choix personnel.

Pour avoir un récapitulatif très complet sur les caractéristiques des FAI et de l’auto-hébergement, je vous conseille l’excellent wiki.auto-hebergement.fr et en particulier ce post qui traite également du choix de son FAI, une lecture très intéressante.

L’offre de Bouygues Telecom

A la base, je ne voulait plus payer pour des services que je n’utilisait pas (la TV), je me suis tourné vers des offres «moins haut de gamme» car Bouygues Telecom ne propose pas d’offre sans TV, la seule alternative étant B&You. J’ai profité d’une opération de promotion pour ne pas payer la box 35€ (ce qui est du vol selon moi) mais seulement 1€ ce qui est plus proche de sa valeur réelle.

L’inscription se faisant entièrement par internet, les choses devraient aller vite, nous allons voir cela.

Chronologie de l’activation B&You

Ma plus grande crainte était de devoir survivre sans le net alors puisque l’on fait du télé-travail, c’est clairement la grosse inconnue. Finalement le changement c’est très bien passé puisque internet a été coupé environ 1 journée (ce qui a impacté ma compagne une demi-journée de télé-travail) et qu’il a fallu moins de 10 jours entre la souscription et l’activation de la ligne B&You :

  • 09/04/2014 : Souscription à B&You et commande de la BBox
  • 15/04/2014 : Réception de la BBox
  • 17/04/2014 vers 12h : Coupure de ma ligne Free
  • 18/04/2014 vers 19h : La ligne B&You fonctionne

Finalement, le changement est passé comme une lettre à la poste, mais j’avoue que la communication de B&You sur l’activation de la ligne est entièrement à revoir. J’attend toujours le SMS qui est censé m’informer de brancher ma box !!!

Du côté de ma ligne de téléphone fixe, le changement c’est passé parfaitement et c’est agréable de pouvoir conserver son numéro de fixe.

La box B&You

Quand on vient de la Freebox, n’importe quel box d’un concurrent va paraitre old-school, dépassée techniquement, ringarde. Avec la box obligatoire de B&You se sera deux fois plus vrai, l’interface, les fonctionnalités sont vraiment très limitée et l’interface ressemble vraiment à la livebox qu’il y avait chez mes parents en 2004. D’un point de vue technique, c’est aussi vrai : Wifi G, 4 ports ethernet 100Mbps. Je capte toujours le wifi dans tout mon appartement mais plus aussi bien qu’avant.

Du côté de la configuration, l’administration est vraiment une horreur à utiliser, à cause de la lenteur de navigation, des bugs rencontrés, je ne me risque plus à toucher à quoi que ce soit de peur de plantages. Bref, j’ai hâte de pouvoir tester avec une autre box, cela semble être possible mais je vais attendre de tomber sur un poste sur le sujet car je ne veux pas perdre ma ligne de téléphone fixe.

Bref, ce n’est clairement pas le meilleur matériel que j’ai rencontré, je m’y attendais donc de ce côté là je n’ai pas été déçu.

Conclusion

Pour l’instant je dirais que je suis satisfait de ce changement de FAI, ma connexion est stable à n’importe quelle heure de la journée et je fais environ 20€ d’économies sur ma facture internet mensuelle (ce qui n’est pas négligeable). Les gros points positifs de ce changement sont :

  • La rapidité de la migration de la ligne ADSL
  • Portabilité de mon numéro fixe
  • Le prix de la box
  • Internet à n’importe quelle heure

Et les plus gros points noirs sont :

  • L’interface de la box
  • Les débits de la box (ethernet & Wifi)
  • Mon débit est moins bon qu’avant (700ko/s contre 500ko/s)

Pour ce qui est de la SheevaBoite, elle a été indisponible environ 32h, ce qui est quand même beaucoup mais il a fallu le temps de configurer le routage de la box

Pour l’instant, je recommande l’offre B&You même si j’ai perdu mon reverseDNS, ce n’est pas la mort, mais par rapport aux objectifs initiaux, je rappelle une meilleur connexion internet en soirée et payer moins cher, je m’y retrouve parfaitement.

En tout cas, ce changement de FAI qui me paraissait compliqué c’est en fait très bien passé et il n’est pas impossible que j’ai à le refaire prochainement… :D

Note : Cet article était à l’origine plus complet et devait être publié le 21 avril, mais les Dieux de l’informatique en ont décidés autrement.

2014-05-13

Un terminal aux petits oignons

Après des années d’utilisation très basique je me suis enfin penché sur l’amélioration de mon terminal. Au départ il me servait uniquement pour les mises à jour système, au fil du temps son utilisation s’est imposée d’elle-même a tel point qu’il est en permanence ouvert dans le coin d’un de mes bureaux virtuels.

Ne sachant pas où aller et de quoi j’avais besoin, j’ai constitué un mini cahier des charges comme ligne directrice.

J’ai principalement besoin :

  • Un thème graphique reposant pour le yeux.
  • La surbrillance des commandes tapées (m’indiquer quand j’ai fait une faute de frappe sur une commande).
  • D’un seul coup d’oeil connaître la branche git sur laquelle je travaille, et si des changements sont à “commiter”.
  • Dans une même fenêtre travailler sur plusieurs terminaux, avec par exemple des sessions ssh différentes.
  • Un Prompt succin avec les infos essentielles

Tout est prêt, let’s go !

1. Le choix de l’application

Mon choix c’est porté sur Terminator, rapide, léger, paramétrable très simplement (un seul fichier de config). Je peux passer d’un seul terminal à 10 avec une seule séquence de touche, et je peux tous les piloté à partir d’un seul prompt.

Pour agrémenter le tout un joli thème inspiré du thème solarized de Ethan Schoonover.

Pour ceux qui sont intéressés voici Ma configuration ->

2. Le choix du Shell

Pour résumé le shell est la partie centrale du terminal, l’interpréteur de commandes dans la langue de Molière, il permet d’accéder aux fonctionnalités internes du système d’exploitation. Le plus connu étant le bash et ses dérivés, j’ai préféré  zsh.

Installation :

sudo apt-get install zsh
chsh -s /bin/zsh utilisateur

Après le redémarrage du terminal zsh est opérationnel ! Tout le nécessaire de configuration de zsh se trouve dans notre home /home/utilisateur/.zshrc. C’est le coeur de zsh !

Pour simplifier grandement sa configuration je l’utilise avec un petit utilitaire appelé antigen. Ce petit utilitaire me permet de mieux gérer les plugins dont j’ai besoin pour zsh, ainsi que d’autre fonctionnalités que j’ai renseignés dans le zshrc.

En gros lorsque je veux installer et utiliser un plugin (bundle dans antigen) il me suffit de renseigner dans mon zshrc et il fait le reste.  Exemple si je veux utiliser des plugins de oh-my-zsh :

antigen use oh-my-zsh
# * Plugins
antigen bundles <<EOBUNDLES
# Git and github autocompletions and aliases
git
git-extras
# Other
command-not-found
systemd
EOBUNDLES

Antigen va m’installer oh-my-zsh, et activera les plugins que j’ai configurés par la suite.

Pour le prompt j’utilise un thème perso, inspiré du thème  powerline line

Pour ceux qui sont intéressés voici Ma configuration ->

3. En conclusion

Depuis que je me suis penché sur l’amélioration de mon terminal, je suis plus tranquille et moins fatigué dans son utilisation. Mes tâches d’administration souvent pénible et répétitives se font avec une effroyable efficacité. J’arrive maintenant à mettre tous les serveurs à jours en une ligne de commande. Le terminal fait partie de ses petits outils que l’on néglige souvent, car leur puissance est  méconnue.

Et voici le résultat :

terminal_13052014

2014-05-09

Récupérer le flux RSS d’une page Facebook

fb_rss
Exemple avec la page sur les offres d’appartement/colocs sur Paris.

1. On récupère l’ID de la page Facebook.

On peut faire ça simplement avec http://findmyfacebookid.com/ ou manuellement en regardant dans l’url du logo/avatar de la page ex :

https://www.facebook.com/Plan.location.appartement.paris/photos/a.519555864755542.117596.519555808088881/519555868088875/?type=1&source=11

2. Ajouter l’ID à la fin de cette url : http://www.facebook.com/feeds/page.php?format=rss20&id=519555808088881 et voila un flux RSS valide pour agrégateur préféré. (Liferea, Feedex etc…)

Ne me remerciez pas :)

J'aime(1)Ferme-la !(4)

2014-05-08

Ajouter un moteur de recherche à Firefox

Si vous utilisez Mysearch, vous voudriez bien sûr le voir remplacer votre Google par défaut. Pas de soucis avec Firefox.

Allez sur votre instance MySearch favorite (ex : cette page) et paramétrez vos options de recherche (langue, type de recherche). Ensuite :

  • sur Firefox Desktop, ouvrir la liste des moteurs de recherche pour l’ajouter:
    ajouter moteur de recherche firefox

    Documentation Firefox
  • Sur Firefox Mobile, appuyez en maintenant l’appui au niveau de la zone de recherche sur la page de Mysearch, et choisissez « Ajouter un moteur de recherche ».
    Documentation Firefox Mobile
J'aime(6)Ferme-la !(1)

Auto-hébergement : agrégation (bonding) de 2 lignes ADSL avec OpenVPN (1/2)

Ou comment doubler efficacement sa capacité de nuisance d’upload/download afin de conquérir le monde (youpi !).

On t’as reconnu Fantomas ! Ha non, mince, celle là je l’ai déjà faite…

Bon, déjà, je vous le dis tout de suite : l’image ci-dessous n’est pas un fake, même si l’upload peut vous sembler totalement « délirant » au premier abord (voir les explications plus bas).

bonding-adsl-openvpn

Ce test a été réalisé (si vous en voulez d’autres, bande de sceptiques que vous êtes, y’a pas de souci) avec deux lignes ADSL free.fr (mais sans aucune Freebox, na !) agrégées ensemble avec le module « bonding » du noyau Linux, le tout piloté par OpenVPN et quelques règles iptables/iproute2 pas piquées des hannetons.

Le trafic sortant était ensuite routé vers un petit VPS (à pas cher) puis vers un autre VPN (AirVPN, un service génial, plus tard un billet sur ce sujet), ce qui nous a donné cette adresse IP de sortie en… tadaaa… Hollande ! (La sent tu, tralalalalèèèère…)*

*L’ensemble de la rédaction ainsi que toute l’équipe de modération se désolidarise totalement de cette blague lamentable et présentent ses plus plates excuses à tous les VPN amis implantés dans des pays qui sentent gravement le fromage et qui se seraient sentis (sic !) agressés par ce jeu de mot des plus foireux. (Et, s’il vous plait, déconnez pas dans les commentaires, j’ai vraiment pas envie d’avoir le soldat Ryan Valls sur le dos.)

Bref, pour faire simple, l’agrégation de liens ADSL avec OpenVPN, ça marche (et si vous aimez le fromage qui pue pas que des pieds, faites donc un saut en Hollande, ou pas, c’est vous qui voyez).

Mais, comme toujours et avant de se lancer dans l’aventure, il y a quelques petits détails importants à prendre en compte et c’est ce que nous allons voir dans la suite de ce billet.

Un des premiers points importants concernant le bonding avec OpenVPN, bien au delà du débit (et là, « chérie », tu le sens mon gros upload…), c’est que votre FAI (que vous détestez car c’est un collabo, le genre à « vendre du beurre aux allemands » ) ne saura plus tout ce que vous branlez avec vos deux lignes ADSL : normal, une bonne partie du trafic (ou même tout le trafic si vous êtes complètement parano) ne transitera plus en clair.

Donc, gardez bien à l’esprit que vous aurez l’air, à vous tout seul, d’un « Usual suspects » en puissance et pour cause : que du trafic chiffré distribué sur deux lignes ADSL, c’est pas madame Michu au fin fond du Cantal (l’autre pays du fromage…) qui va s’amuser à ça.

Et si, en plus, vous vous amusez à envoyer des mails graveleux avec Thunderbird et PGP, alors là c’est le pompon…

Hé, Ho ! J’suis pas Crésus, ça coûte un bras deux lignes ADSL !

(Totalement) faux.

Si vous vous démerdez un peu, deux lignes ADSL, pour un particulier et en dégroupage total, ça ne coûte pas plus de 40 € TTC / mois (qui veut voir mes anciennes factures ?).

Le plus cher, dans l’histoire, ce sont les frais d’installation de France Télécom pour tirer/ouvrir/activer une seconde ligne (55 €) et, éventuellement, l’achat d’un « vrai » modem/routeur supplémentaire si, comme bibi, vous ne pouvez pas saquer (restons poli) les affreuses « machinbox » (toutes plus moisies les unes que les autres) fournies par les opérateurs.

Mmmmh… Ami auto-hébergé, tu sembles dubitatif, je peux le voir au fond de ton kernel (que tu mets à jour, hein !?).

Bon, ok, soyons précis : la TV via ADSL qui pixelise (ou non), je m’en contrefous comme de l’achat de mon dernier pull (pas plus de 15 € sinon c’est de l’arnaque : un enfant chinois ou indien surexploité sans vergogne 16 heures par jour ne vaut pas plus).

Bref, le tiers-monde se meurt mais souriez en attendant, bande de privilégiés que vous êtes, scrutez tranquillement les offres ADSL « nues » en promo : ce que vous voulez, c’est du « Vrai Nain Ternet™ » et pas l’ensemble de la merde télévisuelle déversée chaque jour sur le PAF.

Je vous le redis encore une fois : avec les « promos » permanentes, deux lignes ADSL (avec IP fixe ou non) chez de gros opérateurs, ça ne vaut pas plus de 40 € / mois.

Toujours pour info, FDN (mais si, vous savez, les trois « guignols » dans un garage qui n’ont strictement aucune légitimité dans le secteur…) estime que la bande passante d’un abonné ADSL coûte 3 € / mois.

Certes, les FAI ont d’autres coûts lié à l’infrastructure, au renouvellement des routeurs hors de prix, au personnel, aux boutiques, à la hotline. Encore que, sur ce dernier point, j’ai un léger doute.

Mais, surtout, ce sont les investissements massifs (et éhontés) dans des saloperies de boitiers certifiés « DPI Inside » qui, à mon avis, plombent leurs bilans (sans parler des dividendes illégitimes mais ça, c’est encore une autre histoire, éhontée elle aussi).

Tout ça pour dire que, je sais pas pour vous, mais perso je m’en contrefous car leurs technos liberticides pour faire du profilage marketing à tout-va, ils peuvent se la… Bref… En tous cas, bien profond (et, si possible, avec du gravier, du goudron et des plumes).

Lire la suite…

2014-05-06

Mysearch version 1.0 et paquet debian

Ça fait un petit moment que je travaille sur mon projet de moteur de recherche anonymisé. Je l’utilise depuis quelques mois et il est maintenant prêt à entrer en production et découvrir le monde !

Je l’ai appelé Mysearch. Il s’agit d’une application qui va faire office de proxy entre vous et les grands moteurs de recherche du web. Ce n’est donc pas un moteur de recherche à proprement car il n’a pas de crawler propre, mais plutôt un intermédiaire anonymisateur, comme DuckDuckGo. Voila à quoi ca ressemble:

mysearch

J’ai mis à disposition mon instance de Mysearch sur https://search.jesuislibre.net si vous voulez tester.

Concrètement, Mysearch va anonymiser vos recherches :

  • en masquant votre IP originelle vis à vis du moteur de recherche
  • en vous proposant une page web propre expurgée de tout moyen de tracking (cookie vous identifiant même si vous n’avez pas de compte, lien unique pour chaque résultat permettant de savoir quel résultat vous avez choisi , scripts obscurs utilisés pour vous traquer, mot-clés de votre de recherche transmis au résultat choisi, enregistrement de votre recherche à votre profil, etc…) dont sont truffés les pages de résultats des moteurs de recherche commerciaux (Google, Bing, Yahoo, etc…)
  • du coup, la page web est bien mois lourde et économise votre bande passante (11ko versus 830ko pour une recherche simple sur Google !)
  • en supprimant les publicités qui squattent la place du premier résultat

L’intérêt par rapport à DuckDuckGo:

  • la pertinence des résultats de Google (DuckDuckGo achète ses résultats à Yandex qui renvoie des résultats pourris sur les requêtes avec plusieurs mots clés)
  • qui peut vérifier ce que fait DuckDuckGo de vos données personnelles? C’est une entreprise américaine, donc soumise aux desiratas de la NSA sans qu’elle puisse communiquer dessus.
  • pas de publicité à la place du premier résultat. Car DuckDuckGo a comme Google, un business model basé sur la publicité (vous ne croyez quand même pas que c’était gratuit hahaha…)

Pour l’instant les moteurs de recherches intégrés à Mysearch sont Google, Google Image, Google Vidéo, Wikipedia et Openstreetmap. On peut choisir la langue dans laquelle on veut les résultats. Le design de la page web est approprié à une utilisation tant sur smartphone que sur grand écran.

Le sources de Mysearch se trouvent sur la forge Codingteam

J’ai créé un paquet Debian pour installer simplement Mysearch chez vous. Mysearch est lancé en tant que service automatiquement au démarrage.Il utilise un utilisateur spécifique « mysearch » pour la sécurité de vos données persos. Vous pouvez arrêter le service en lançant en root : # service mysearch stop

Vous pouvez y accéder à l’adresse http://localhost:60061 (encore un chiffre de plus pour le port et je pouvais écrire GOOGLE en leet speak)

J'aime(22)Ferme-la !(0)

Suivre mon blog sur Facebook

Lorsque l’on découvre Internet, on navigue sur quelques sites. Puis, on a de plus en plus de sites web que l’on trouve intéressants. On les met en favoris et on revient dessus tous les jours. Puis, la quantité de sites web à suivre devient trop grande et ingérable, on ouvre des dizaines d’onglets dans son navigateur, on passe son temps à vérifier si notre site web préféré n’a pas sorti un nouvel article, on ne sait plus comment mettre de coté cet article intéressant pour plus tard.

Les fichiers RSS générés par la plupart des sites web honnêtes permettent de répondre efficacement à cette problématique. J’utilise Liferea et Feedex pour suivre les sites web qui m’intéresse et j’en suis très content.

Malheureusement, le RSS a un défaut : il est difficile de compter les lecteurs, de les traquer et donc de vendre de l’espace publicitaire à des annonceurs. Cela explique que les grands sites web gratuits le décrient. Au mieux, ils proposent un flux RSS avec les 200 premiers caractères de leur articles…

Un autre modèle est préféré par les sites web qui font du business : le flux contrôlé. Là il est possible de savoir qui lit quoi, qui aime quoi, de compter les clics et les vues et donc de monétiser des publicités ciblées qui rapportent. C’est ce que proposent Facebook, Twitter et GooglePlus et tout est fait pour faciliter l’utilisateur à souscrire à leur services.

A priori, moi je m’en fous. Les sites web écrits pour vendre de la pub ont rarement un contenu intéressant sur la durée. Ça tourne vite à la production d’article sans information, bourré de fautes d’orthographe et long à lire. Donc une perte de temps.

Mais Facebook a 26 millions de comptes actifs en France. Ca fait un paquet de gens qui utilisent ce service pour s’abreuver de news et leur demander d’utiliser le RSS après avoir subi tant d’infantilisation ça me parait impossible. Donc si je veux que mon blog atteigne une plus large audience (plus on est de fous, plus on rit), je dois être accessible sur Facebook.

Vous pouvez donc maintenant me suivre sur votre plateforme préférée qui vous trace jusque dans votre lit :

  • Facebook (vous n’aurez que les premières lignes des articles, désolé)
  • Twitter (en 140 caractères, vous espériez quoi?)

J’utilise le plugin Worddress « Add link to facebook » pour remplir ma page Facebook automatiquement. J’ai du livrer un numéro de téléphone à Facebook pour y arriver ! Le contenu des commentaires postés sur Facebook est répliqué automatiquement sur mon blog mais pas l’inverse pour garder ce blog comme point central et ne pas trahir mes lecteurs qui ne voudraient pas voir leur nom et prose cédés à Facebook.

J'aime(3)Ferme-la !(32)

2014-05-03

Fermeture des services web, et vous?

Arthur HOARO a écrit un bon billet sur une question intéressante :  Qu’arrivera-t-il quand le site web que vous utilisez fermera?
Exemples qui me viennent à l’esprit :

  • Google: j’utiliserai le moteur concurrent
  • Facebook : Les données que vous avez données à Facebook changeront de main. Qui rachètera Facebook ? hum hum….
J'aime(23)Ferme-la !(3)

2014-05-01

CAcert retiré de Debian

À la différence de toutes les autres autorités de certification, CAcert est une autorité de certification communautaire qui fournit gratuitement des certificats SSL/TLS.

Ce n’est pas seulement à cause de cette façon de fonctionner, similaire à l’approche de Debian, que Debian a distribué le certificat racine de CAcert depuis 2005, même après que CAcert a retiré sa demande d’être incluse dans le magasin de certifications approuvées de Mozilla en 2007, à cause d’un audit interne en cours.

La discussion de savoir si Debian continuerait à distribuer le certificat racine de CAcert dans son magasin de certifications approuvées est née de la réponse à un bogue signalé en juillet 2013 plaidant pour son retrait. Après avoir débattu le pour et le contre pendant des mois, c’est le 13 mars que Michael Shuler, le responsable du paquet ca-certificates, a finalement rendu public la décision de ne plus diffuser le certificat racine de CAcert dans Debian.

Pour un résumé détaillé du débat, veuillez vous reporter à l’article de LWN sur le sujet.

StartSSL est une autorité de certification , non communautaire, reconnue par la plupart des navigateurs, propose un offre de certificats SSL gratuits. Il n’est pas possible d’avoir de certificat « wildcard » à ce prix mais on peut en créer un pour chaque sous domaine, ce qui, avec le support du SNI dans SSLv3, permet d’héberger plusieurs domaines et sous domaines en HTTPS sur le même serveur.

J'aime(69)Ferme-la !(1)

2014-04-30

Bon anniversaire Koozali Foundation

La fondation Koozali qui a en charge le développement de la SME Server vient de souffler sa première bougie : Bon anniversaire Koozali foundation

La SME Server est une distribution Linux, orientée Serveur, qui peut s’enorgueillir de 15 ans d’expériences et qui vient de releaser la version SME9 beta 4. Comme les bonnes nouvelle arrivent rarement seule, la ‘Release Candidate’  est annoncée pour bientôt.

Une simple histoire de jours, ou de semaines maintenant.

La SME Server est une distribution communautaire, développée par une ‘petite’ équipe expérimentée, où chaque élément a su trouver sa place…vous êtes convié à venir y trouver la votre.

Tous les Talents y sont nécessaires et même celui de beta_fracasseur :)

Je vais devoir décevoir ceux qui pensent que les Logiciels Libres sont gratuits d’efforts en plus d’être gratuits du point de vue financier. Le Logiciel Libre est développé par des Hommes, à nous d’apporter notre pierre à l’édifice pour rendre à la communauté ce qu’elle nous a apporté : Notre Liberté.

Heartbleed est là pour nous rappeler que lorsqu’on réutilise le travail des autres sans le critiquer, sans y participer, sans l’améliorer on arrive à ce résultat…Si j’osai une comparaison avec un champ de blé, la semence provenant du champ ne peut être réutilisée chaque année, soit vous en achetez à la coopérative, soit vous en échangez avec les voisins pour éviter la dégénération.

Bon curieusement  échanger sa semence est interdit en France, mais là on sort du débat pour rentrer dans celui des semences Fermières/Paysannes.

Le libre c’est bon, investissez vous!!!

 

2014-04-29

[Wiki]Sudo, première approche du super utilisateur

Sous linux, par défaut seul l’administrateur (root) a le droit d’effectuer les taches courantes de gestion comme installer des programmes/mises à jour, lancer/arrêter des services, modifier des paramètres noyau en temps réel… Sous Windows, depuis Vista, l’utilisateur n’est plus administrateur par défaut et doit accepter une élévation de privilèges quand il installe un programme (ou d’autres taches « administratives »). Hors, sous « Unix », depuis 1980 existe un programme permettant lui aussi de donner temporairement des droits administrateur à un utilisateur standard. Il aura fallu l’arrivée d’Ubuntu pour voir son utilisation décuplée.

Les avantages sont évidents : il est possible de déléguer le pouvoir quelques minutes, pratique si par exemple un correctif critique doit être déployé, ou relancer un service planté. Ça ne sera pas abordé, mais il est possible aussi de garder une trace des utilisations de sudo. Bref, les cas d’usages sont multiples, et l’on ne va voir que deux cas dans cette introduction : l’élévation complète, qui est celle retenue par Ubuntu, et l’élévation sélective (c’est-à-dire donner uniquement les droits sur certaines commande.

 

Pour la suite de l’article, c’est par là : Sudo, première approche du super utilisateur.

2014-04-23

Dotclear et le spam des commentaires

Le spam des commentaires est malheureusement une chose inévitable lorsque le blog commence à être bien référencé.

  • Les filtres de l'extension « Antispam » de dotclear sont assez efficaces, pour le peu qu'on enregistre suffisamment de mots clés dans le filtre : Bad Words, Liste de termes interdits.

C'est simple, il suffit d'entrer les termes anglais les plus usités, genre : That (80% de positif !) , quartz, hello, you, etc
Le seul inconvénient étant de chopper aussi les commentaires pertinents dont l'auteur aura voulu utiliser un anglicisme.

  • Au départ les spam étaient peu nombreux, pas un problème donc.

Puis de temps en temps un « chinois »[1] passait par ici et écrivait 500 fois le même commentaire toutes les 30 secondes, depuis la même IP.
Facile à bloquer avec une règle IP table du type :

iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP

Jusque là, ça reste gentillet, les filtres font leurs taf, on trie les faux-positifs, ça se gère tranquillement sans perte de temps (quelques vingtaines par semaines).
Puis ça se corse !

  • Ces mêmes « chinois » reviennent mieux armés, dans le sens où cette fois, après un ban iptables, ils reviennent avec une IP différentes, mais faisant partie de la même plage.

Un simple commande whois sur cette IP donne la plage dédiée au spammeur, et hop, un iptables manuel sur la plage… Oui c'est pas bien, mais ça défoule ^^; D'autant plus que d'autres viennent avec des plages différentes, et avec les contenu de spam et les fausse adresses mail utilisées on se doute que ce sont les mêmes gus.

iptables -I INPUT -p tcp --dport 80 -m iprange --src-range xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx -j DROP

Au bout de quelques ban manuel on finit par avoir la paix… Sauf que !
On se rend alors compte que ces salopiots ont cochés la case mise à disposition par le plugin dotclear bien pratique pour le visiteur humain, subscribeToComments 1.4-alpha1 servant à s'abonner au commentaire pour être prévenu par e-mail d'une réponse à ce commentaire.
Et là, c'est une autre affaire, car on se retrouve avec des tonnes d'abonnements bidons dans la page de gestion du plugin, et presqu'autant de mailer-daemon témoignant de l'échec d'envoi des e-mails de notifications… vu que les spammeurs rempilent derrière leurs propres spam, alors même qu'il se sont vu filtrés par le filtre Antispam et que donc leurs spam ne sont pas publiés.

  • Depuis quelques temps ces « chinois » me laissent tranquille, mais une nouvelle sorte de spammeur à débarqué… Les Zombies !

Vu la nature de ces spams, j'imagine qu'il s'agit de PC Windaube infectés de virus spammeur qui partagent une base de données avec mon IP publique dedans !
En effet, contrairement aux «chinois », ces spams débarquent du monde entier, avec des contenus plus ou moins du même genre, et des adresses e-mail dans un style différent et plus élaborées. Impossible ici de s'amuser à bannir les IP à la main avec dans les 60 spams par jours, ni à chopper les plages IP, car cette fois on est susceptible de réellement bloquer des visiteurs légitimes !
Ho, les filtres Antispam de dotclear font toujours bien le travail, mais il devient pénible de trier à la main les faux-positif et de nettoyer les abonnement aux commentaires… De fait et a regret, j'ai donc dû prendre la décision de désactiver subscribeToComments rendant le suivit des commentaires inexistant pour les visiteurs.
Voyous de publicitaires $#ø%@'&€…



Il est donc temps d'étudier une solution automatique pour bannir ces IP malignes.

Ça m'entrainera à écrire du script… L'idée ici est donc la suivante,

Toutes les 12 heures :

- Pour les 12 dernières heures écoulées, faire une requête sur la base de donnée de dotclear pour lister toutes les adresses IP des commentaires marqués indésirable par l'Antispam.
- Virer les doublons (car oui, ils reviennent, soit dans les minutes, soit les jours suivants)
- Bannir toutes les IP de cette liste avec iptables.
- Écrire un fichier de log horodaté.
- Envoyer le fichier de log par e-mail.

#!/bin/bash
 
###################################################
# BANNIR LES SPAMMEURS des commentaires DOTCLEAR #
# À programmer dans crontab toutes les 12h ################
###################################################
# ——————————— #
# Initilisation des variables #
# ——————————— #
 
login=utilisateur				# Le nom d'utilisateur ayant les droits sur la base de donnée.
password=motdepasse		# Le mot de passe associé.
base=blog					# Le nom de la base de donnée.
table=dc_comment			# La table des commentaires.
champ1=comment_spam_filter	# Le champ des commentaires marqués comme filtrés.
champ2=comment_ip			# Le champ de l'IP.
champ3=comment_dt			# Le champ de la date et heure.
condition=dcFilter% 			# Le filtre pour ne conserver que les lignes dont le champ1 commence par : dcFilter.
depuis=$(date -d "12 hour ago" "+%F %T") # La date moins 12 heures.
requete1="SELECT $champ1,$champ2,$champ3 FROM $base.$table WHERE $champ1 LIKE 'dcFilter%' AND $champ3 BETWEEN '$depuis' AND now()"
 
# ———— #
# Fonctions #
# ———— #
 
bannir () {					# Bannir l'adresse IP contenue dans la variable: ip2.
iptables -I INPUT -s $ip2 -j DROP
}
 
# ————————————————————— #
# Requête MYSQL pour réccupérer les IP à bannir #
# ————————————————————— #
 
# mysql -uutilisateur -pmotdepasse -e "SELECT comment_spam_filter,comment_ip,comment_dt FROM blog.dc_comment WHERE comment_spam_filter LIKE 'dcFilter%' AND comment_dt BETWEEN '2013-02-08 20:01:30' AND now()";
 
mysql -u$login -p$password -e "$requete1" | while read spamfilter ip date		# Lire la requête mysql ligne par ligne et récupérer les valeurs de chaque champs pour les affecter respectivement aux variables: spamfilter ip date.
						do
							if [ "$ip" = "comment_ip" ]; then		# Si la variable: ip, contient le mot: comment_ip, Alors.
								echo "comment_ip" > /dev/null	# L'envoyer au trou noir !
							else								# Sinon,
								echo  "$ip"					# Appeler successivement la valeur de la variable: ip.
							fi
						done | sort -u > /tmp/dc_spam.tmp		# Stocker les ip dans le fichier tmp en supprimant les doublons.
# —————————— #
# Bannir les IP récoltées #
# —————————— #
 
date '+%Y-%m-%d %X' >> /var/log/dc_BannedIP.log			# Écrit la date dans le fichier log: dc_BannedIP.log.
echo -e "\n" >> /var/log/dc_BannedIP.log						# Saute une ligne dans le fichier log: dc_BannedIP.log.
 
if [ -s /tmp/dc_spam.tmp ]; then								# Si le fichier tmp n'est pas vide.
	while read ip2										# Lire le fichier: tmp, ligne par ligne.
	do
		echo "$ip2"                  								# Appeler successivement la valeur de la variable: ip2.
		bannir   	 	                     							# Appeler la fonction: bannir.
	done < /tmp/dc_spam.tmp >> /var/log/dc_BannedIP.log		# Ajouter la liste des IP que l'on vient de bannir dans le fichier log: dc_BannedIP.log
	echo -e "———————————————————" >> /var/log/dc_BannedIP.log	# Écrit une ligne horizontale dans le fichier log: dc_BannedIP.log.
else
	echo "aucune IP à bannir" >> /var/log/dc_BannedIP.log		# Sinon, ne rien faire.
	echo -e "———————————————————" >> /var/log/dc_BannedIP.log	# Écrit une ligne horizontale dans le fichier log: dc_BannedIP.log.
fi
 
# ————————————— #
# Envoie d'un email avec le log #
# ————————————— #
 
mutt -s "IP Bannies pour Dotclear" admin@mondomaine.org -a /var/log/dc_BannedIP.log < /root/scripts/emailmessage.txt

Note

[1] le whois indique des IP depuis la Chine…

2014-04-20

Lister et tuer les processus en cours sous Linux

Pour lister les processus de tous les utilisateurs du système : ps -faux
Pour lister uniquement vos processus : ps -fux

$ ps -fux
 USER  PID  %CPU %MEM VSZ   RSS TTY STAT START TIME COMMAND
 erwan 3377 0.0 0.1 600268  13212  ? Ssl 16:06 0:00 x-session-manager
 erwan 3418 0.0 0.0 10584   336    ? Ss  16:06 0:00 \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager
 erwan 3442 0.0 0.2 816644  21384  ? Sl  16:06 0:00 \_ /usr/lib/gnome-settings-daemon/gnome-settings-daemon
 erwan 3520 1.7 2.5 1893352 202408 ? Sl  16:06 1:29 \_ /usr/bin/gnome-shell
 erwan 5067 3.9 3.8 1242492 302140 ? Sl  16:24 2:39 | \_ iceweasel
 erwan 6172 0.0 0.3 906316  25784  ? Sl  17:13 0:00 | \_ nautilus --new-window
 erwan 3572 0.0 0.1 551768  9596   ? SNl 16:06 0:00 \_ /usr/lib/tracker/tracker-miner-fs

C’est beaucoup plus pratique que la commande top car il n’y a pas de limitation de hauteur d’écran.

On y trouve des infos très utiles :

  • l’user qui a lancé le processus
  • la commande complète avec arguments qui a servie à lancer le processus
  • l’arborescence des commandes pour savoir quels sont les processus parents et enfants.
  • la date à laquelle le processus a été lancé et sa durée de vie
  • la charge du CPU
  • le PID, identifiant propre à chaque processus

Pour arrêter les processus qui vous intéressent, récupérez le PID correspondant (ex: 5067) et lancez :

$ kill 5067

.
Si le programme ne se ferme pas assez rapidement, vous pouvez le forcer à s’arrêter immédiatement :

$ kill -9 5067
J'aime(0)Ferme-la !(0)

2014-04-18

Fail2ban : bloquer des IP sur certaines URL

Régulièrement, sur mon serveur apache, je recupère des requêtes sur des urls qui n'existent pas et qui sont visiblement destinées à chercher à brute-forcer une authentification.

Puisque fail2ban est installé sur la machine, on peut l'utiliser afin de bannir les IP de ces bots.

On commence par définir un nouveau filtre dans le fichier /etc/fail2ban/filter.d/apache-customurl.conf :

[Definition]
url = myadmin\/scripts\/setup.php|phpMyAdmin\/scripts\/setup.php|pma\/scripts\/setup.php|wordpress\/wp-admin\/|wp-admin\/|wp-login.php|blog\/wp-login.php|administrator\/index.php

failregex = ^<HOST>.*"(GET|POST).\/(%(url)s).*$
ignoreregex =

Ce filtre est activé dans le fichier de configuration de fail2ban /etc/fail2ban/jail.conf :

[apache-customurl]

enabled  = true
port     = http,https
filter   = apache-customurl
logpath  = /var/log/apache*/*access.log
maxretry = 1 
bantime  = 36000

On peut tester que la regexp est correcte avec la commande :

fail2ban-regex /var/log/apache2/www-access.log /etc/fail2ban/filter.d/apache-customurl.conf

Enfin, on relance le service

# debian
service fail2ban reload 

Lister les connexions entrantes de votre ordinateur

La commande netstat -tape permet de lister les processus qui acceptent des connections entrantes sur votre ordinateur. Facile à se rappeler !
Pour plus d’information, man netstat.

# netstat -tape
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        User       Inode       PID/Program name
tcp        0      0 localhost:60061         *:*                     LISTEN      mysearch   7850        2813/python     
tcp        0      0 *:43173                 *:*                     LISTEN      statd      13393       1844/rpc.statd  
tcp        0      0 *:sunrpc                *:*                     LISTEN      root       13372       1816/rpcbind    
tcp        0      0 *:ssh                   *:*                     LISTEN      root       33422       6097/sshd       
tcp        0      0 *:gdomap                *:*                     LISTEN      root       6788        2253/gdomap     
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN      root       13375       1816/rpcbind    
tcp6       0      0 [::]:32947              [::]:*                  LISTEN      statd      13397       1844/rpc.statd  
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      root       33424       6097/sshd
J'aime(0)Ferme-la !(0)
Généré le 2014-09-19 23:26 UTC avec Planet Venus