<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Blog d'Olivier Raulin]]></title>
  <link href="http://blog.olivier-raulin.fr/atom.xml" rel="self"/>
  <link href="http://blog.olivier-raulin.fr/"/>
  <updated>2014-03-10T16:33:30+01:00</updated>
  <id>http://blog.olivier-raulin.fr/</id>
  <author>
    <name><![CDATA[Olivier Raulin]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Firefox Sync - Installation de son propre serveur]]></title>
    <link href="http://blog.olivier-raulin.fr/2014/01/06/firefox-sync-installation-de-son-propre-serveur/"/>
    <updated>2014-01-06T19:30:00+01:00</updated>
    <id>http://blog.olivier-raulin.fr/2014/01/06/firefox-sync-installation-de-son-propre-serveur</id>
    <content type="html"><![CDATA[<p>S&#8217;il y a bien quelque chose que j&#8217;appréciais en utilisant Google Chrome (au delà de son apparence rapidité par rapport à Firefox), c&#8217;est bien la synchronisation entre tous les appareils des préférences, extensions et autres paramètres. Je suis repassé sur Iceweasel depuis quelques temps, et j&#8217;ai vu que Mozilla avait également implémenté une fonction de synchronisation entre appareils.</p>

<p>On peut soit passer par leur service, limité à 25 Mo par utilisateur (mais gratuit) soit installer soi-même son propre serveur. Etant un peu de nature paranoïaque, j&#8217;ai donc choisi la seconde solution après avoir testé la façon dont fonctionne leur service.</p>

<!-- more -->


<p>Certains blocs expliquent que la procédure d&#8217;installation fonctionne mal, voire pas du tout, même après plusieurs essais.<br/>
J&#8217;ai donc décidé de vérifier ces allégations en testant la <a href="http://docs.services.mozilla.com/howtos/run-sync.html">procédure officielle du site de Mozilla</a> sur un nouveau conteneur sur mon NAS.</p>

<p>Je réplique donc les commandes citées
 apt-get install python-dev mercurial sqlite3 python-virtualenv libssl-dev
 hg clone <a href="https://hg.mozilla.org/services/server-full">https://hg.mozilla.org/services/server-full</a>
 cd server-full
 make build</p>

<p>Là, j&#8217;obtiens une erreur liée à une résolution qui ne peut pas s&#8217;effectuer. Je ne cherche pas bien longtemps, je tente de relancer le make build, qui cette fois se déroule sans problème.</p>

<p>Une fois l&#8217;installation terminée, je passe à l&#8217;étape de configuration.</p>

<p>Je le lance, puis je vais sur son URL:5000 et obtiens une 404. Fonctionnement étrange, mais soit.</p>

<p>Cela semble fonctionner à peu près &hellip; sauf si le certificat SSL de son reverse proxy n&#8217;est pas ajouté en exception, visiblement :&ndash;)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Installation de Proxmox sur mon NAS Debian]]></title>
    <link href="http://blog.olivier-raulin.fr/2014/01/06/installation-de-proxmox-sur-mon-nas-debian/"/>
    <updated>2014-01-06T19:09:00+01:00</updated>
    <id>http://blog.olivier-raulin.fr/2014/01/06/installation-de-proxmox-sur-mon-nas-debian</id>
    <content type="html"><![CDATA[<p>Jusqu&#8217;à peu, j&#8217;avais chez moi un NAS, qui ne me servait qu&#8217;à stocker des fichiers, et un serveur basé sur une carte-mère Mini-ITX et un Athlon 3800+, épaulé de 2 Gio de RAM.<br/>
Lors de mes différentes reviews de CPU, j&#8217;ai remarqué que le CPU de mon NAS (un APU AMD) avait un score supérieur de deux fois à mon Athlon 3800+ &hellip; avec un TDP trois fois moindre.</p>

<p>Il ne m&#8217;a pas fallu longtemps pour me dire que je gaspillais de l&#8217;électricité et du temps d&#8217;attente à laisser ces machines séparées.<br/>
Rapidement cependant, je me suis rendu compte que l&#8217;actuel serveur était jonché de tests divers et variés, avec des services pas réellement utilisés qui étaient lancés, des bouts de configuration par-ci par-là &hellip; bref, une plate-forme de test.<br/>
Je voulais faire quelque chose de plus propre à cette occasion, et la virtualisation m&#8217;a permis de répondre à cette problématique.</p>

<!-- more -->


<h2>Pourquoi virtualiser ?</h2>

<p>La virtualisation, on en parle beaucoup : c&#8217;est vrai que c&#8217;est très pratique, on peut lancer plusieurs systèmes sur sa machine de bureau par exemple, en même temps. Sur un serveur, c&#8217;est globalement le même principe : on lance plusieurs machines distinctes les unes des autres.</p>

<p>Nous avons, au choix, dans la virtualisation, deux types de technologies : la virtualisation complète, ou bien la para-virtualisation par conteneurs.<br/>
Dans le premier cas, le système virtualisé (invité) a conscience qu&#8217;il est virtualisé : ses composants portent bien souvent la marque du distributeur (de la solution de virtualisation), et les pilotes sont spécifiques. Charge à l&#8217;hyperviseur de transformer tout ça vers le système hôte par la suite.<br/>
Si cette option est indispensable pour faire tourner des systèmes différents (Linux / Windows, Windows / Unix, Linux / Unix, etc.) elle a l&#8217;inconvénient qu&#8217;on perd un peu en performances dans la &ldquo;conversion&rdquo;.</p>

<p>N&#8217;ayant que peu le besoin d&#8217;avoir d&#8217;autres systèmes que ma Debian préférée, je pouvais passer via une solution type OpenVZ, qui utilise des conteneurs afin de virtualiser (on partage le noyau avec la machine et on lance ses processus dans son coin). J&#8217;ai quand même décidé de me laisser une porte de sortie vers KVM, et me suis tourné vers Proxmox, qui propose assez simplement une interface web pour gérer ses machines.</p>

<p>Ainsi, j&#8217;ai donc la possibilité de créer de nouveaux conteneurs ou bien de nouvelles machines virtuelles.</p>

<h2>Dans la pratique : Le NAS tourne sous Debian.</h2>

<p>La question suivante, c&#8217;était que mon NAS tournait sous Debian, et que je n&#8217;avais pas envie de le réinstaller. Fort heureusement, Proxmox est basée sur Debian également, et l&#8217;installation de quelques packages et d&#8217;un noyau personnalisé suffisent à transformer une Debian en une Proxmox !<br/>
J&#8217;ai cependant rencontré quelques soucis de dépendances, j&#8217;ai du bidouiller un peu pour que cela se fasse bien (jouer entre apt-get et aptitude, par exemple !).</p>

<p>Au bout de quelques minutes (ou heures, je ne sais plus :) ) ma Proxmox était opérationnelle ! J&#8217;ai donc commencé à créer un conteneur par service :
&ndash; Owncloud (permet de remplacer Google Drive et Dropbox)
&ndash; SabNZBd (outil en Python pour Usenet)
&ndash; Sickbeard (outil en Python pour suivre ses séries)
&ndash; Couchpotato (outil en Python également, mais pour les films)
&ndash; ZNC (bouncer IRC pour rester connecté aux salons que je fréquente même mon PC fixe éteint)
&ndash; Jabber (serveur XMPP)
&ndash; Transmission, en version web (client Torrent)
&ndash; Headphones (outil en Python permettant la gestion de librairie musicale)
&ndash; un serveur DNS (pour usage futur, donc éteint pour le moment)</p>

<p>Chaque machine est indépendante des autres, et utilise la mémoire et les ressources CPU dont ses applications a besoin. J&#8217;ai une vue directe sur le réseau, le CPU , la RAM utilisée &hellip; par chaque machine. Je peux ainsi couper l&#8217;une ou l&#8217;autre en fonction des besoins.</p>

<p>Il reste sur l&#8217;hôte la gestion du serveur NFS, ainsi que du RAID logiciel.
Huit machines lancées, plus l&#8217;hôte, consomment à peine 1 Gio de RAM, sur les 8 que propose mon NAS.</p>

<h2>Bilan</h2>

<p>Je suis entièrement satisfait de cette migration : elle ne change rien à la gestion de mes fichiers, elle me permet de séparer les services que j&#8217;utilise, je gère le NAT sur ma freebox de façon simplifiée (j&#8217;ai une IP interne par service, qui tourne sur un port plus &ldquo;classique&rdquo;), le tout en consommant moins &hellip;</p>

<p>Et pour ce qui est de l&#8217;accessibilité de l&#8217;extérieur, j&#8217;ai toujours un reverse proxy sur mon Raspberry Pi qui me permet d&#8217;accéder, par noms, aux différentes machines.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Votre mobile pendant vos voyages à l'étranger]]></title>
    <link href="http://blog.olivier-raulin.fr/2013/11/13/votre-mobile-pendant-vos-voyages-a-letranger/"/>
    <updated>2013-11-13T22:09:00+01:00</updated>
    <id>http://blog.olivier-raulin.fr/2013/11/13/votre-mobile-pendant-vos-voyages-a-letranger</id>
    <content type="html"><![CDATA[<p>Il arrive parfois de partir en vacances à l&#8217;étranger, pour certains veinards que vous êtes. Et là, de nombreuses questions se posent : comment faire pour rester joignable pendant mon séjour ? Quels sont les tarifs impliqués ? Que faut-il préparer avant de partir ?<br/>
J&#8217;apporterai une réponse à ces questions dans ce billet, que j&#8217;espère le plus clair et le plus instructif possible.</p>

<!-- more -->


<h2>Cool, les vacances !</h2>

<p>Vous partez, une, deux voires plusieurs semaines à l&#8217;étranger, donc.<br/>
Bien évidemment, votre compagnon téléphonique sera du voyage, pour être joignable à tout moment &hellip; au cas où. Et c&#8217;est compréhensible.</p>

<h3>Ce qu&#8217;il faut s&#8217;assurer avant de partir</h3>

<p>Principalement, il est nécessaire de s&#8217;occuper de deux choses avant de partir</p>

<h4>Chez son opérateur</h4>

<p>Il faut s&#8217;assurer que l&#8217;option &ldquo;Voyages&rdquo;, si elle existe, est activée sur votre forfait. Généralement, votre espace client vous l&#8217;indiquera, et un coup de fil à votre services clients vous permettra le cas échéant de demander plus d&#8217;informations sur cette option qui permettra d&#8217;activer le <em>roaming</em>. Derrière ce mot étrange se cache tout simplement le fait d&#8217;être en <em>itinérance</em> sur un réseau mobile qui n&#8217;est pas le sien. Vu que l&#8217;on est dans un pays étranger, c&#8217;est donc normal.</p>

<p>Si votre opérateur ne vous propose pas cette option, changez vite de forfait avant de partir ;&ndash;)</p>

<p>Autre point que j&#8217;avais oublié (Merci Julian) : Les bandes de fréquences ne sont pas toujours les mêmes qu&#8217;en France. Pour l&#8217;Europe, aucun problème, mais les fréquences aux USA ou dans certains pays d&#8217;Asie par exemple sont différentes. Le plus simple est de demander confirmation à votre opérateur que votre téléphone français fonctionnera là-bas :&ndash;)</p>

<h4>Sur son téléphone</h4>

<p>Si vous désirez pouvoir joindre vos proches depuis le pays étranger, il est nécessaire de faire une petite modification dans votre répertoire.<br/>
En effet, habituellement, nous rentrons les numéros sous leur forme géographique française, telle que 0Y.XX.XX.XX.XX, où Y prend une valeur entre 1 et 9 en fonction du numéro.</p>

<p>Si cette méthode fonctionne tout à fait bien lorsque nous nous trouvons en France, il ne faut pas oublier que nous allons sur le réseau mobile d&#8217;un opérateur étranger, pour qui le 06 que nous appelons peut tout à fait être un numéro appartenant à son réseau national &hellip;<br/>
Il risque donc de mal acheminer l&#8217;appel.</p>

<p>La manipulation est simple : elle consiste à <strong>remplacer le premier 0 du numéro par +33</strong>.
Ainsi, un 06.00.00.00.00 sera transformé en +336.00.00.00.00</p>

<p>Rassurez-vous, cette numérotation fonctionne parfaitement de la France vers la France !<br/>
L&#8217;habitude est donc bonne à prendre à chaque fois que vous rajoutez un numéro dans votre répertoire :&ndash;)</p>

<h3>Combien ça coûte ?</h3>

<p>Ici, la question est très délicate, car certaines coyances populaires veulent complexifier la chose, semble-t-il.<br/>
Je vais établir quatre scénarios différents, afin que vous compreniez bien tous les tenants et les aboutissants.<br/>
Dans tous les cas, pour connaître les tarifs appliqués, il faudra voir avec votre opérateur &hellip;</p>

<h4>Mobile français en France vers mobile français à l&#8217;étranger</h4>

<p>Votre soeur, Alice, a un mobile français. Elle veut vous joindre lorsque vous partez pour savoir si votre séjour se passe bien. Combien paiera-t-elle ?<br/>
La réponse est simple : un appel <strong>normal</strong>, comme si vous vous trouviez en France.<br/>
Attention par contre, <strong>vous</strong> paierez à la réception de l&#8217;appel.</p>

<h4>Mobile français en France vers mobile étranger dans son pays</h4>

<p>Votre frère, Marc, habite en Allemagne, et il a un numéro Allemand. Son numéro commence donc par +49 (49 étant l&#8217;indicatif téléphonique de l&#8217;Allemagne).
Lorsque vous l&#8217;appelez, vous payez le prix d&#8217;une communication internationale. Lui ne paie rien.<br/>
C&#8217;est ce qui se produira, par exemple, si vous prenez une carte SIM locale pendant votre voyage, avec un forfait prépayé par exemple.</p>

<h4>Mobile français à l&#8217;étranger vers numéro en France</h4>

<p>Vous payez un montant un peu plus élevé que si on vous avait appelé, votre correspondant ne paie rien.</p>

<h4>Mobile français à l&#8217;étranger vers mobile étranger en France</h4>

<p>Ici, c&#8217;est jackpot (mais pas pour vous) : vous payez le tarif d&#8217;une communication vers le pays d&#8217;origine de la ligne de votre correspondant, et celui-ci paye les frais d&#8217;itinérance puisqu&#8217;il n&#8217;est pas dans son pays.</p>

<h4>Et les SMS ?</h4>

<p>Les SMS utilisent le même fonctionnement que les appels.</p>

<h4>Pour conclure</h4>

<p>En conclusion de ces différents points :
&ndash; Lorsque vous appelez un numéro français depuis la France, vous ne paierez toujours que le prix normal, que celui-ci soit à 2m de vous ou bien à l&#8217;autre bout du monde
&ndash; Lorsque vous recevez un appel à l&#8217;étranger, vous payez (Note : la réception de SMS est gratuite)
&ndash; Lorsque vous appelez la France depuis l&#8217;étranger, vous payez encore plus cher (Note : votre forfait SMS illimité ne s&#8217;applique pas, vous paierez les SMS envoyés depuis l&#8217;étranger)</p>

<p>J&#8217;espère que cet article vous aura permis de mieux comprendre, si ce n&#8217;était pas déjà le cas, le bazar que peut être la gestion de l&#8217;itinérance au niveau du mobile.
Si toutefois vous aviez encore un doute, ou une question, n&#8217;hésitez pas : Vous pouvez écrire à l&#8217;adresse <mon prénom> @ olivier-raulin.fr (en remplaçant par mon prénom, évidemment :&ndash;) )</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Passer son trafic web au travers de SSH]]></title>
    <link href="http://blog.olivier-raulin.fr/2013/10/25/passer-son-trafic-web-au-travers-de-ssh/"/>
    <updated>2013-10-25T15:43:00+02:00</updated>
    <id>http://blog.olivier-raulin.fr/2013/10/25/passer-son-trafic-web-au-travers-de-ssh</id>
    <content type="html"><![CDATA[<p>Si vous êtes abonné chez Free, vous n&#8217;êtes pas sans savoir qu&#8217;il est parfois compliqué d&#8217;accéder à YouTube en heures de pointe.<br/>
Bien que la situation se soit grandement améliorée depuis quelques temps, tout n&#8217;est pas toujours rose.</p>

<p>Il existe une solution assez simple pour contourner ce problème, du moins si l&#8217;on possède une machine à l&#8217;extérieur de son réseau (par exemple, un serveur virtuel, ou bien un petit Kimsufi chez OVH (enfin, s&#8217;ils acceptent un jour à nouveau les clients :&ndash;) )</p>

<!-- more -->


<p>Cet article parlera donc de SSH, de SOCKS et de tunnel.</p>

<h2>SSH, SOCKS, tunnel ? Pardon ?</h2>

<p>Je vais vous expliquer, rapidement, ces différents termes.</p>

<h3>SSH</h3>

<p>SSH, qui signifie <strong>S</strong>ecure <strong>SH</strong>ell, est un protocole de communication chiffré (attention, celui qui utilise le verbe crypter, je l&#8217;enferme dedans (la crypte) !)<br/>
On peut faire tout un tas de choses avec &hellip; globalement, c&#8217;est simplement un protocole qui permet à deux machines de communiquer de façon sécurisée.</p>

<p>On le connaît bien souvent dans le domaine de l&#8217;administration système, via la prise de contrôle à distance d&#8217;un shell (ligne de commande).</p>

<p>Mais il est également possible, grâce à une option du client OpenSSH, de créer un véritable proxy SOCKS sur sa machine.</p>

<h3>SOCKS</h3>

<p>Pas question de parler de chaussettes ici, je vais plutôt résumer très rapidement l&#8217;article Wikipédia (anglais, car l&#8217;article français est nul).</p>

<p>SOCKS est donc un protocole qui route des paquets entre un client et un serveur au travers d&#8217;un proxy (un proxy qui s&#8217;appelle SOCKS, pour le coup).<br/>
Je ne vais pas partir dans une explication de ce qu&#8217;est un proxy, sinon on ne va pas s&#8217;en sortir.</p>

<h3>Tunnel</h3>

<p>Ici, le mot est très transparent, et a une correspondance dans la vie réelle : un tunnel, c&#8217;est tout simplement un grand tube avec deux extrémités :&ndash;)</p>

<h2>Et le rapport avec YouTube ?</h2>

<p>J&#8217;y viens, ne soyez pas trop impatients !</p>

<p>Nous partons donc du principe que vous disposez de deux machines distinctes et géographiquement distantes.
Typiquement, votre ordinateur de bureau chez vous, sur une connexion ADSL, et une machine ailleurs, sur une connexion de datacenter (100M, ou même Gigabit).</p>

<p>Ce que l&#8217;on va faire, c&#8217;est utiliser la connexion de notre serveur afin d&#8217;accéder à Youtube (ou autres, ça marche pour tous les sites web).</p>

<p>Et cela &hellip; grâce simplement à une seule commande. Nous allons utiliser l&#8217;option -D du client SSH, qui nous permettra de mettre immédiatement en écoute un proxy SOCKS sur le port de notre choix (rappel, les 1024 premiers sont réservés et seul root peut les utiliser)</p>

<p>La commande à utiliser est donc la suivante :</p>

<pre><code>ssh -D 8080 utilisateur@hôte 
</code></pre>

<p>Petite explication pour ce qui est dans la commande :<br/>
+ 8080 indique le port <strong>local</strong> sur lequel SSH va écouter les connexions entrantes<br/>
+ utilisateur désigne l&#8217;utilisateur avec lequel on se connecte au serveur distant (et on évitera root, parce qu&#8217;on a conscience des risques de sécurité d&#8217;avoir un compte root ouvert)<br/>
+ hôte désigne l&#8217;adresse ou le nom du serveur distant. Par exemple, monserveur.mondomaine.com, ou bien son adresse IP, directement.</p>

<p>SSH nous connecte donc effectivement au serveur, tout en mettant en écoute un port local. Nous avons presque fini.</p>

<p>La dernière étape est d&#8217;aller dans les paramètres de son navigateur, et de renseigner dans la partie Proxy les informations suivantes :<br/>
Proxy SOCKS (attention, on ne remplit pas HTTP ni les autres champs) : localhost : 8080 (si on a mis un autre port dans la commande, on le modifie, bien évidemment)</p>

<p>Et &hellip; c&#8217;est tout ! :)<br/>
On peut maintenant regarder des vidéos de châtons en 1080p ! :&ndash;)</p>

<h2>Pourquoi ?</h2>

<p>Une fois cet article terminé, je me suis rendu compte qu&#8217;il manquait une petite explication au pourquoi du comment, à ce qu&#8217;on a fait, et les implications.<br/>
Globalement, chaque fournisseur d&#8217;accès à Internet a des accords avec des fournisseurs de transit, afin d&#8217;interconnecter les différents réseaux mondieux.</p>

<p>Certaines routes, fréquemment utilisées (on prendra comme analogie le périphérique parisien) saturent souvent quand trop de monde veulent les emprunter.</p>

<p>Ce que nous faisons, c&#8217;est que nous sortons prendre une autoroute que moins de monde utilise pour aller là où on veut &hellip; et même si le chemin est plus long, vu qu&#8217;on va beaucoup plus vite, ce n&#8217;est pas très grave. Bien évidemment, cette autoroute a un petit péage en fonction des services que l&#8217;on a à notre disposition.</p>

<p>Techniquement, notre navigateur envoie toutes ses requêtes à notre proxy SOCKS, qui lui ne fait que transférer cela à la machine distante, qui se charge elle d&#8217;effectuer réellement les requêtes et de les renvoyer dans le tunnel pour qu&#8217;on les recoive. C&#8217;est presque &ldquo;simple&rdquo; comme fonctionnement.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Mise en place d'un reverse proxy Nginx]]></title>
    <link href="http://blog.olivier-raulin.fr/2013/08/28/mise-en-place-dun-reverse-proxy-nginx/"/>
    <updated>2013-08-28T18:37:00+02:00</updated>
    <id>http://blog.olivier-raulin.fr/2013/08/28/mise-en-place-dun-reverse-proxy-nginx</id>
    <content type="html"><![CDATA[<p>Quand on est geek, il arrive qu&#8217;on héberge plusieurs services sur plusieurs ports chez soi &hellip; et, malheureusement, on se retrouve confronté à la limite d&#8217;une seule adresse IP (hors IPv6, mais c&#8217;est un autre sujet :) ), qui est celle que notre fournisseur d&#8217;accès nous offre.</p>

<p>C&#8217;était clairement un problème jusqu&#8217;à ce soir. J&#8217;avais mis en place une solution de contournement utilisant un web-proxy &hellip; qui était malheureusement assez peu pratique.<br/>
En visitant le blog de <a href="http://blog.h%C3%A9ry.com/">Victor Héry</a>, je suis tombé sur <a href="http://blog.h%C3%A9ry.com/article9/configurer-un-reverse-proxy-apache-http-https">cet article</a> qui indiquait comment monter un reverse proxy avec Apache. D&#8217;ailleurs, son explication de l&#8217;utilité du bazar est assez claire, n&#8217;hésitez pas à aller le lire.</p>

<p>Du coup, j&#8217;ai entrepris de faire la même chose avec Nginx sur mon Raspberry Pi (parce que Apache, c&#8217;est trop facile :&ndash;) )</p>

<!-- more -->


<p><strong>Edit 10 mars 2014 :</strong> Coquille trouvée par un lecteur concernant l&#8217;emplacement du fichier contenant la configuration : il n&#8217;était pas situé dans /etc/nginx mais dans /etc/nginx/sites-available/<br/>
Il faut également vérifier que le fichier nginx.conf va bien chercher les fichiers dans sites-enabled et faire le lien symbolique qui va bien :)</p>

<h2>Nginx ? Proxy ? Reverse ?</h2>

<p>Pour expliquer rapidement, Nginx (A prononcer Engine X, j&#8217;ai appris ça récemment) est un serveur web, qui a des fonctionnalités de proxy, de reverse proxy, et load balancer, etc.<br/>
Il a un gros intérêt, c&#8217;est sa très faible consommation en ressources.</p>

<p>Un proxy, globalement, c&#8217;est une machine qui va servir d&#8217;intermédiaire entre le client (votre ordinateur, par exemple) et un serveur (par exemple, un serveur web)<br/>
Généralement, un proxy est utilisé en entreprise en guise de &ldquo;porte de sortie&rdquo; vers le web. Quand on ne renseigne pas l&#8217;adresse du proxy dans le navigateur, il n&#8217;est pas possible d&#8217;accéder à Internet.</p>

<p>Le reverse proxy, il fait l&#8217;inverse : depuis Internet, accéder à plusieurs (machines|services|sites|&hellip;) qui sont dans un réseau local, sans passer par de la translation d&#8217;adresse / de ports, qui, bien que pratique, est rapidement limitée quand on a qu&#8217;une adresse IP, par exemple.</p>

<p>Pour schématiser rapidement, pour accéder aux différents services que j&#8217;ai chez moi, je veux une adresse en trucbidule.mondomaine.fr ou machinchose.mondomaine.fr et pas mondomaine.fr:1337 ou mondomaine.fr:42</p>

<h2>La mise en place à proprement parler</h2>

<h3>La création des sous-domaines</h3>

<p>J&#8217;ai un domaine qui pointe vers l&#8217;adresse IP de chez moi, qui sera, à des fins de confidentialité, modifié dans ce billet. Je prendrai <a href="http://chezmoi.exemple.fr">http://chezmoi.exemple.fr</a> comme &hellip; exemple.</p>

<p>Je déclare donc dans mes DNS de nouveaux enregistrements :
+ service1.chezmoi.exemple.fr
+ service2.chezmoi.exemple.fr</p>

<p>Je les fais pointer en CNAME vers chezmoi.</p>

<p>Jusque là, rien de très compliqué.</p>

<h3>L&#8217;installation de nginx</h3>

<p>Là encore, rien de très compliqué sous Debian &hellip;</p>

<pre><code>apt-get install nginx
</code></pre>

<h3>La configuration de nginx</h3>

<h4>Le SSL</h4>

<p>Devant de plus en plus parano, je désirais forcer l&#8217;utilisation de SSL à ce niveau-là, afin d&#8217;éviter toute interception éventuelle de mes mots de passe sur des réseaux non sécurisés &hellip;<br/>
J&#8217;ai du suivre ce <a href="http://wiki.nginx.org/HttpSslModule">tutoriel</a> très bien fait, et donc en gros, avec 3 commandes j&#8217;étais prêt à activer le SSL sur mes domaines</p>

<pre><code>openssl genrsa -out nginx.key 2048
openssl req -new -key nginx.key -out nginx.csr
openssl x509 -req -days 3650 -in nginx.csr -signkey nginx.key -out nginx.crt
</code></pre>

<p>Et voilà, un certificat SSL signé par moi-même, accompagné de sa clé.</p>

<h4>Les hôtes virtuels</h4>

<p>Ici, les concepts qui entrent en jeu sont un peu plus coriaces &hellip;<br/>
Pour faire simple, on fait correspondre une configuration à un nom de domaine (service1.chezmoi.exemple.fr par exemple)<br/>
On dit à notre nginx que quand le client appelle service1.chezmoi.exemple.fr, il agit de telle manière.</p>

<p>Note : La directive Host est implémentée dans la version 1.1 du protocole HTTP, un client en version 1.0 ne pourra pas accéder à vos hôtes &hellip; mais globalement, vous ne devriez pas avoir à vous en soucier, HTTP1.0 n&#8217;est plus utilisé depuis un bout de temps.</p>

<p>Je créée donc un fichier /etc/nginx/sites-available/reverse, où je place toutes mes configurations.
Les voici, en brut, commentés avec les # :</p>

<pre><code># On commence par dire où se situent nos certificats SSL
# On aurait pu les mettre séparément dans chaque "server" en ayant besoin.
ssl_certificate /etc/nginx/nginx.crt;
ssl_certificate_key /etc/nginx/nginx.key;

server {
        # Redirection vers HTTPS
        # Ici, je spécifie que toute requête vers le port 80 (HTTP) sera renvoyée vers le même hôte, en HTTPS.
        listen 80;
        return 301 https://$host$request_uri;
}

server {
        # Service 1
        listen 443;
        # J'active SSL
        ssl on;

        server_name service1.chezmoi.exemple.fr; # Ici, c'est le nom de domaine qui sera appelé dans le navigateur
        location / { # pour le dossier racine (/), on active le mode proxy vers l'adresse spécifiée, sur le port spécifié
                proxy_pass http://premieremachine:1081/;
        }
}

server {
        # Service 2
        listen 443;
        ssl on;

        # On peut spécifier 2 noms de domaine différents qui auront le même comportement
        server_name service2.chezmoi.exemple.fr;
        server_name chezmoi.exemple.fr;
        location / {
                proxy_pass https://secondemachine:443/;
        }
}
</code></pre>

<p>On relance le service &hellip; et ça roule !
On teste dans son navigateur en HTTP, on est bien redirigé vers la même adresse en HTTPS &hellip;<br/>
On a un avertissement qui dit que le certificat est signé par une autorité non-reconnue (moi :) ), c&#8217;est normal, on &ldquo;accepte les risques&rdquo; et c&#8217;est parti.</p>

<p>Notre serveur nginx fait donc bien son travail de proxy &hellip; nous ne savons pas, en tant que client, quelle machine travaille derrière : on sait juste que sur l&#8217;URL appelée, le service nous est retourné.</p>

<h4>HTTPS de bout en bout ?</h4>

<p>Je n&#8217;ai eu aucun souci pour proxyfier du HTTPS, pour répondre à Victor :&ndash;)<br/>
Pour schématiser rapidement : |client|&lt;==SSL==>|proxy|&lt;==SSL==>|serveur|</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Pourquoi j'ai conseillé à un ami l'école 42]]></title>
    <link href="http://blog.olivier-raulin.fr/2013/08/19/pourquoi-jai-conseille-a-un-ami-lecole-42/"/>
    <updated>2013-08-19T20:43:00+02:00</updated>
    <id>http://blog.olivier-raulin.fr/2013/08/19/pourquoi-jai-conseille-a-un-ami-lecole-42</id>
    <content type="html"><![CDATA[<p>J&#8217;ai conseillé à un ami, qui fréquentait la même école que moi jusqu&#8217;à présent, de postuler à l&#8217;école 42, et de participer à la piscine.<br/>
Pourquoi ? C&#8217;est ce que je détaillerai dans ce billet.</p>

<!-- more -->


<h2>42, c&#8217;est quoi ?</h2>

<p>Tout d&#8217;abord, il semble nécessaire de parler de cette école : 42, qu&#8217;est-ce que c&#8217;est ? Pourquoi 42 ?<br/>
Mes lecteurs &ldquo;geeks&rdquo; auront reconnu l&#8217;allusion à la réponse universelle, de l&#8217;écrivain Douglas Adams, dans son livre <em>Le guide du voyageur galactique (The Hitchhiker&rsquo;s Guide to the Galaxy)</em>.<br/>
(D&#8217;ailleurs, je n&#8217;ai pas lu le livre, j&#8217;en ai presque honte, mais si quelqu&#8217;un veut bien me le prêter &hellip;)</p>

<p>Le nom de l&#8217;école provient donc d&#8217;une référence connotée &ldquo;geek&rdquo;. C&#8217;est plutôt un bon départ, pour une école d&#8217;informatique, non ?<br/>
Fondée par Nicolas Sadirac (ancien directeur général d&#8217;Epitech), ainsi que deux de ses cadres dirigeants, Kwame Yamgnane et Florian Bucher, et financée intégralement pour les dix premières années de fonctionnement par Xavier Niel (fondateur d&#8217;Iliad, la maison-mère de Free, notamment) : ensuite, Xavier Niel espère que d&#8217;autres entreprises prendront le relais pour financer une formation innovante et permettant à de jeunes talents d&#8217;être formés gratuitement à l&#8217;informatique.</p>

<p>Généralement, quand Xavier Niel annonce une nouveauté, cela provoque un grand bruit (Cf le lancement de Free mobile). Cela n&#8217;a pas manqué avec le lancement de 42, à tel point
que près de 50000 personnes ont débuté les tests de recrutement. Sur ces 50000, dont je faisais partie, beaucoup se sont arrêtés, soit en cours de route, soit à la fin des tests, pour la simple raison que la candidature était uniquement &ldquo;pour voir comment c&#8217;était&rdquo; : le fait est que les tests sont amusants, principalement des tests de logique et de persévérance &hellip;</p>

<p>Lorsque j&#8217;ai vu les résultats que pourraient donner cette école, et l&#8217;offre immédiate d&#8217;Ametix d&#8217;offrir un poste payé 45000€ annuels pour la première promotion sortante, je dois avouer que j&#8217;ai été emballé : enfin, une formation de pointe dans l&#8217;informatique était proposée en France, et cela gratuitement !<br/>
En regardant le programme, je dois avouer que c&#8217;est très complet. Surtout en trois ans &hellip; nous verrons bien ce que ça donnera dans la pratique, après tout.</p>

<h2>Pourquoi je l&#8217;ai conseillée, et à qui ?</h2>

<p>Dans mon école, où je suis en cinquième et dernière année d&#8217;études (une école privée dont je ne vanterai pas les mérites), j&#8217;ai des amis, dont un qui est en première année. Il m&#8217;a avoué pendant cette année s&#8217;ennuyer pendant les cours, il trouvait que cela n&#8217;allait pas assez vite, qu&#8217;il n&#8217;apprenait pas grand chose. Je lui ai donc naturellement répondu que je comprenais ce qu&#8217;il ressentait &hellip; et puis, finalement, je lui ai conseillé de passer les tests d&#8217;admission de 42. Surpris au départ, puis curieux, il a finalement passé ces tests. Puis, étant admissible, il s&#8217;est posé la question de savoir si ça valait vraiment le coup. Là encore, je lui ai conseillé de poursuivre le processus en se rendant à Paris pour le &ldquo;check-in&rdquo;, autrement dit une présentation de ce que serait l&#8217;école pendant le premier mois d&#8217;été, puis pendant les trois ans qui suivent.</p>

<p>Finalement, il est allé à ce &ldquo;check-in&rdquo;. Puis il en est revenu, un peu effrayé. Je me rappelle ses paroles &ldquo;Ils parlent de 60 à 70 heures de travail par semaine, je tiendrai jamais le coup.&#8221;<br/>
Effectivement, le rythme, surtout pendant la piscine, est éprouvant. Pour les débutants complets, c&#8217;est facilement douze heures de travail par jour, pendant tous les jours de la semaine. Pas de vacances pour trois ans, pas de week-ends (sauf si l&#8217;étudiant le décide &hellip; et accepte les conséquences ;&ndash;) ) : il faut être paré.</p>

<p>Aujourd&#8217;hui, il fait partie de la seconde &ldquo;piscine&rdquo;, période ultime de sélection, où environ 750 étudiants travaillent, pendant un mois complet, et se plongent, d&#8217;abord dans le Shell, puis rapidement et pour le reste du mois dans l&#8217;apprentissage du langage C. Les premiers abandonnent dès le premier jour, beaucoup suivent &hellip; pendant tous le mois. De la piscine de juillet, il est resté 500 étudiants sur les 800 du départ : on peut juger que beaucoup ne pouvaient pas tenir le rythme, où n&#8217;étaient simplement pas fait pour travailler dans l&#8217;informatique &hellip; ce qui est totalement compréhensible (on retrouve, globalement, des chiffres assez proches dans les premières années des autres écoles).</p>

<p>De ses mots, il commence réellement à apprécier la piscine. Je le comprends totalement. C&#8217;est un challenge permanent, sans rythme imposé, sans cours imposés (les cours sont sous forme de vidéos sur l&#8217;intranet, et chacun les visionne (ou pas) à son rythme afin de rendre les exercices (ou pas, là encore ;&ndash;) ).<br/>
Ce qui fait que cette piscine est passionnante, et que j&#8217;aurais sûrement adoré ? Le challenge, tout d&#8217;abord, la découverte de nouvelles choses, la nouveauté &hellip;<br/>
Les inconvénients sont de respecter la Norme de 42 &hellip; ma foi assez stricte, mais je pense, très formatrice.<br/>
A quoi ça sert de sortir des gens qui font du code illisible ? :&ndash;)</p>

<p>Si je lui ai conseillé 42, c&#8217;était parce que je savais qu&#8217;il était un peu comme moi, qu&#8217;il a en lui le &ldquo;gêne&rdquo; de l&#8217;informatique.<br/>
Quel est ce &ldquo;gêne&rdquo; de l&#8217;informatique ? Selon moi, cela se matérialise par une curiosité exacerbée, et un besoin de comprendre &ldquo;comment ça marche&rdquo;.<br/>
Depuis des années, je suis passionné et très curieux des machines que je découvre, j&#8217;ai envie de savoir comment elles fonctionnent, et je veux en savoir toujours plus.<br/>
De l&#8217;informatique sans challenge, sans renouveau, pour moi ce n&#8217;est pas de l&#8217;informatique, et je suis certain qu&#8217;il pense -ou pensera, dans quelques années- comme cela.</p>

<h2>Et la suite ?</h2>

<p>La suite, c&#8217;est que je suis persuadé qu&#8217;il terminera brillamment cette piscine, et je suis persuadé qu&#8217;il sera admissible dans cette école, parmi les mille étudiants sélectionnés.<br/>
Et je suis persuadé qu&#8217;il réussira ses trois années de formation haut la main, j&#8217;oserai presque parier qu&#8217;il sera assez haut dans le classement &hellip; mais pour ne pas lui mettre trop de pression, je ne vais pas le dire :&ndash;)</p>

<p>Dans tous les cas, je lui souhaite bien du courage, et il est certain que je serai ravi de le conseiller en tant que recrue dès que possible, pour des stages ou un premier emploi, parce que je sais qu&#8217;il sera un excellent informaticien.<br/>
Je n&#8217;ai pas conseillé cette école à beaucoup de mes connaissances. Pour dire vrai, je ne l&#8217;ai conseillée qu&#8217;à deux personnes, que je considérais apte à réussir. Une seule d&#8217;entre elle a relevé le défi, je lui souhaite tout le courage qu&#8217;il faut pour mener à bien ces trois années et en ressortir excellent.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Serveur de mail et webmail]]></title>
    <link href="http://blog.olivier-raulin.fr/2013/07/28/serveur-de-mail-et-webmail/"/>
    <updated>2013-07-28T19:54:00+02:00</updated>
    <id>http://blog.olivier-raulin.fr/2013/07/28/serveur-de-mail-et-webmail</id>
    <content type="html"><![CDATA[<p>
Avec le scandale qu&#8217;à fait l&#8217;affaire PRISM sur l&#8217;ampleur de la surveillance à l&#8217;échelle planétaire de la population, on peut se dire qu&#8217;il devient important de se passer des &#8220;grands&#8221; fournisseurs.<br />
Si cela ne sera clairement pas facile en ce qui concerne la recherche sur Internet, en revanche on peut légitimement se poser la question en ce qui concerne nos conversations personnelles.<br />
Je ne pense pas que les mails que je reçoive intéressent particulièrement les différents gouvernements de la planète, mais le simple fait que ceux-ci puissent être lus par quelqu&#8217;un d&#8217;autre que moi me gêne.</p>


<!-- more -->


<p>
Quoi de mieux qu&#8217;une petite machine pas chère pour gérer un petit serveur de mails ? :-) <br />
Ayant déjà touché un peu à Postfix pour la gestion des mails, je me suis dit qu&#8217;il serait parfait pour mon usage, je suis donc parti sur cette solution.<br />
Il me fallait également un serveur IMAP, et pour lui, je me suis orienté vers Dovecot, que j&#8217;avais également approché rapidement par le passé <br/>
Et enfin, la dernière étape : le webmail. Mon choix s&#8217;est orienté vers Roundcube. Un peu par défaut, n&#8217;ayant pas eu d&#8217;apparition divine m&#8217;indiquant qu&#8217;un autre webmail était &#8220;mieux&#8221;.</p>


<p>
A ma grande surprise, la configuration s&#8217;est passé &#8230; des plus simplement. J&#8217;ai installé Postfix, ma distribution m&#8217;a demandé l&#8217;usage que je souhaitais en faire, j&#8217;ai répondu &#8220;site Internet&#8221;, et la configuration s&#8217;est faite seule.<br />
Idem pour Dovecot et Roundcube &#8230; Tout au plus, j&#8217;ai dû empêcher le lancement d&#8217;Apache (lié à RoundCube par les dépendances), et utiliser le nginx précédemment configuré pour faire pointer tout cela vers la bonne adresse &#8230; Mais c&#8217;est bien tout !<br />
J&#8217;ai également généré des certificats SSL pour RoundCube &#8230; principalement pour utiliser l&#8217;application Android du même nom sans risquer du spoofing &#8230; sait-on jamais :)<br />

</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Le serveur]]></title>
    <link href="http://blog.olivier-raulin.fr/2013/07/28/le-serveur/"/>
    <updated>2013-07-28T19:19:00+02:00</updated>
    <id>http://blog.olivier-raulin.fr/2013/07/28/le-serveur</id>
    <content type="html"><![CDATA[<p>
Note préalable : j&#8217;écris ce billet avec gedit, et plus directement avec nano depuis le serveur, c&#8217;est quand même un peu plus &#8220;convivial&#8221;.<br />
Ce billet aura donc vocation de parler du serveur qui héberge ce blog (entre autres).<br />
J&#8217;ai depuis quelques temps l&#8217;envie de tenir un blog à vocation plutôt technique, mais je n&#8217;ai jamais pris le temps de m&#8217;y mettre sérieusement.<br />
Ce qui m&#8217;a décidé ? L&#8217;apparition du premier serveur dédié à 3€ par mois &#8230; chez OVH. On dira ce qu&#8217;on veut, c&#8217;est une bonne affaire pour qui n&#8217;a pas besoin d&#8217;un hébergeur &#8220;parfait&#8221;. </p>


<!-- more -->


<p>
La machine derrière est donc composée d&#8217;un processeur Atom N2800, 2 Go de RAM, un disque dur de 500 Go, et une connectivité de 100Mbps.<br />
Les plus geeks d&#8217;entre vous imagineront immédiatement plein d&#8217;usages sympas pour seulement 3€ (Hors Taxes, certes) par mois.
</p>


<p>
Maintenant que j&#8217;ai cette machine à disposition, qu&#8217;est-ce que je compte en faire ?<br />
La question mérite de se poser. Pour l&#8217;instant, j&#8217;ai quelques pistes, que j&#8217;explorerai au fur et à mesure du temps.<br />
Parmi les idées que j&#8217;ai, on peut lister :
<ul>
    <li>un blog à vocation technique (sur lequel vous êtes présentement),</li>
    <li>un serveur de mail avec webmail,</li>
    <li>un serveur Owncloud (que j&#8217;ai déjà chez moi),</li>
    <li>des backups de mes fichiers divers,</li>
    <li>peut-être un serveur git, si j&#8217;en ressens le besoin un jour.</li>
</ul>

Pour le moment, c&#8217;est tout ce que j&#8217;envisage. J&#8217;essayerai de faire un billet pour chaque point technique ci-dessus, afin d&#8217;aider ceux qui voudraient faire la même chose de le faire.<br />

</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Commençons par ce blog]]></title>
    <link href="http://blog.olivier-raulin.fr/2013/07/25/commencons-par-ce-blog/"/>
    <updated>2013-07-25T23:05:00+02:00</updated>
    <id>http://blog.olivier-raulin.fr/2013/07/25/commencons-par-ce-blog</id>
    <content type="html"><![CDATA[<h3>Comment fonctionne ce blog ?</h3>


<p>
Vous connaissez probablement Wordpress, système de gestion de blog utilisé par près de la moitié des blogs au niveau mondial &#8230;<br />
Eh bien, désolé, mais vous n&#8217;êtes pas sur un blog propulsé par Wordpress.<br />
Désireux de connaître d&#8217;autres systèmes, j&#8217;ai demandé à twitter ce qu&#8217;on pouvait me conseiller : on m&#8217;a répondu Octopress. <br />
Après quelques recherches rapides, je tombe donc sur <a href="http://octopress.org/">le site officiel</a>.<br />
Après légère réflexion, je me suis dit qu&#8217;il serait plus utile d&#8217;avoir un système générant des pages statiques, plutôt qu&#8217;un système comme Wordpress qui est dynamique (et donc régénère les pages à chaque visite). Ça tombe bien, Octopress est un système comme cela.
</p>


<!-- more -->


<p>
Pour faire simple, j&#8217;écris mes articles et mes pages dans des fichiers texte tout simples, avec les balises HTML que je souhaite, et puis je lance la génération des fichiers statiques.<br />
Pour le moment, cela ne prend que quelques secondes, mais je suppose que sur des fichiers fréquemment modifiés, et en grand nombre, le temps doive s&#8217;allonger &#8230; ce n&#8217;est pas très important, vu le but et la popularité attendue du blog ;-) )<br />
Je retire plusieurs avantages à ce système :
<ul>
    <li>Je n&#8217;ai pas à m&#8217;occuper de mises à jour de sécurité de la plateforme</li>
    <li>La consommation en ressources serveur est largement limitée par rapport à un blog dynamique</li>
    <li>J&#8217;ai découvert une nouvelle techno !</li>
    <li>Le moteur de génération des pages est en Ruby, et il paraît que c&#8217;est à la mode</li>
</ul>

Le serveur web utilisé est Nginx, que je n&#8217;avais jamais approché réellement jusqu&#8217;à présent, et qui s&#8217;avère assez proche d&#8217;Apache en ce qui concerne la gestion des hôtes virtuels.

</p>

]]></content>
  </entry>
  
</feed>
