# articles

feed_id: http://www.blog-des-telecoms.com/lancement-forum-de-support-freeswitch/
title: Mathias : Lancement du forum de support pour FreeSwitch
uri: Mathias-Lancement-du-forum-de-support-pour-FreeSwitch
url: http://www.blog-des-telecoms.com/lancement-forum-de-support-freeswitch/
content:
<p>Afin de combler un manque, j’ai décidé de lancer un forum de support dédié à la communauté francophone de FreeSwitch. En effet, je reçois pas mal de demandes d’aide par email, et je trouve dommage de ne pas faire profiter la communauté des réponses.</p>
<p>FreeSwitch est un outil fantastique permettant de créer des applications VoIP et vidéo (mais pas seulement) complexes et performantes. J’ai créé plusieurs sections (d’autres sections peuvent être envisagées) : actualités, installation, configuration, programmation et matériels. L’objectif est de créer une communauté d’entre-aide.</p>
<p>Si vous souhaitez devenir modérateur, envoyez moi un message privé.</p>
<p>L’adresse : <a href="https://freeswitch-france.org/forum" target="_blank">forum FreeSwitch France</a></p>
<!-- Simple Share Buttons Plus (v1.1.4) simplesharebuttons.com/plus --><div data-ssbp-counts="true" data-ssbp-total-counts="true" data-ssbp-responsive="true"><button><span></span></button><div data-ssbp-share-text="Partagez cet article si vous l'avez aimé, merci" data-ssbp-url="http://www.blog-des-telecoms.com/category/open-source/feed/" data-ssbp-title="" data-ssbp-short-url="" data-ssbp-post-id="1458"></div></div><div><h3>Autres articles à lire:</h3><ul><li><a href="http://www.blog-des-telecoms.com/howto-comment-configurer-monit-pour-surveiller-freeswitch/" target="_blank">Howto : comment configurer monit pour surveiller FreeSwitch</a></li><li><a href="http://www.blog-des-telecoms.com/freeswitch-sortie-de-la-version-stable-1-4-la-1-4-4-pour-etre-precis/" target="_blank">Freeswitch : sortie de la version stable 1.4 (la 1.4.4 pour…</a></li><li><a href="http://www.blog-des-telecoms.com/nouveau-theme-du-blog-des-telecom/" target="_blank">Nouveau thème du blog des télécoms</a></li><li><a href="http://www.blog-des-telecoms.com/pyfreebilling-demo-en-ligne/" target="_blank">PyFreeBilling : démo en ligne</a></li><li><a href="http://www.blog-des-telecoms.com/ansible-freeswitch-role-installation-et-compilation-automatique/" target="_blank">Ansible : freeswitch role – installation et…</a></li></ul><div></div></div><p>Cet article <a rel="nofollow" href="http://www.blog-des-telecoms.com/lancement-forum-de-support-freeswitch/">Lancement du forum de support pour FreeSwitch</a> est apparu en premier sur <a rel="nofollow" href="http://www.blog-des-telecoms.com/">Blog des télécoms - Par Mathias, expert et formateur</a> rédigé par <a rel="nofollow" href="http://www.blog-des-telecoms.com/author/mathias-wolff-consultant-chef-de-projet-freelance/">Mathias</a>.</p>
<p><img src="media/98986061.ea69d4f0fe4774861517d6390c8c2d35" data-original-source="http://cdn.libravatar.org/avatar/ea69d4f0fe4774861517d6390c8c2d35" alt="Gravatar de Mathias" class="gravatar" /><br/><i>Original post of <a href="http://www.blog-des-telecoms.com/lancement-forum-de-support-freeswitch/" title="Visit the source">Mathias</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://ilphrin.com/planet/2016/03/08/nyaovim-le-gui-neovim-avec-electron.html
title: Ilphrin : Nyaovim le GUI Neovim avec Electron
uri: Ilphrin-Nyaovim-le-GUI-Neovim-avec-Electron
url: http://ilphrin.com/planet/2016/03/08/nyaovim-le-gui-neovim-avec-electron.html
content:
<p>Voilà un projet dont j’avais plusieurs fois entendu parler mais sans jamais réellement me pencher dessus. Le seul défaut que je trouvais à Neovim c’est de ne pas avoir de GUI associé vraiment digne de ce nom, ce que je cherche est quelque chose de joli principalement mais aussi qui permette vraiment de profiter d’une interface graphique: prévisualisation, barre de défilement, bulle d’information et autre, etc…</p>

<!--break-->

<p>Et bien il s’avère qu’il existe un projet qui semble s’approcher pas mal de ce que je cherche dans l’architecture! Et ce projet s’appelle <a href="https://github.com/rhysd/NyaoVim">Nyaovim</a> (Nya est l’équivalent de Miaou au Japon). C’est une interface graphique web pour Neovim, qui est utilisé comme application pc grâce à Electron.</p>

<p><a href="http://ilphrin.com/electron.atom.io">Electron</a> permet de créer des logiciels “desktop” avec des technos web, et à été développé notamment par Github pour créer leur petit nouveau: <a href="http://ilphrin.com/atom.io">Atom</a>. Electron part du moteur de rendu web Chromium avec un outil coté serveur très connu qui est <a href="https://nodejs.org/en/">NodeJS</a>, et permet donc de créer des logiciels en HTML/CSS Javascript.</p>

<p>L’avantage de ce système c’est qu’avec Nyaovim on va pourvoir d’une part créer des plugins dédiés à ce GUI en créant des <a href="https://github.com/rhysd/neovim-component">WebComponent</a>, comme les deux que le développeur de Nyaovim à déjà codé: <a href="https://github.com/rhysd/nyaovim-markdown-preview">markdown-preview</a> et <a href="https://github.com/rhysd/nyaovim-popup-tooltip">popup-tooltip</a>.</p>

<p>Bon du coup comment profiter de cet outil? C’est très simple, il faut disposer du gestionnaire de package de NodeJS appelé <a href="https://www.npmjs.com/">NPM</a>, disponible dans la plupart des dépôt des grandes distribution de ce monde, qui est fourni lorsqu’on installe NodeJS sur son pc. Ensuite la commande a lancer pour installer Nyaovim est la suivante:</p>

<div><pre><code data-lang="bash">sudo npm install -g nyaovim

nyaovim</code></pre></div>

<p>Et voilà votre GUI est maintenant installé et lancé!</p>

<p>Ce projet est indiqué comme instable sur son dépôt Github donc je ne serais pas vindicateur vis à vis du résultat. Mais il y a quand même de nombreux bugs qui me chagrine encore un peu:</p>

<ul><li>Les bugs graphiques sont souvent présents, j’ai souvent ma barre vim-airline qui apparait en plein milieu de mon buffer, ou un caractère fantome qui se superpose à mon curseur, etc…</li>
  <li>La bulle de complétion ne s’affiche plus, ou parfois apparait par clignotement, c’est qui est un peu dommage, surtout pour moi qui utilise les snippet Ultisnips à foison…</li>
  <li>Quelques boutons dans la barre de menu pour ouvrir un buffer de certains fichiers de config’ ne serait pas un mal, comme nyaovimrc.html (le fichier de configuration de l’interface de nyaovim), ou tout simplement du vimrc</li>
</ul><p>Malgré ces soucis je ne peux que conseiller d’aller voir ce projet qui à le mérite d’essayer quelque chose de nouveau et qui part sur une base très solide pour de futurs plugins ou améliorations très sympathique!</p>

<p>Sur ce j’ai finit pour aujourd’hui, mais j’ai encore deux trois articles dans la poche en ce moment, notamment toujours a propos de Vim/Neovim qui risque de plaire à certains ;)</p>
<p><img src="media/9292dabf.235511b5004cfd4af8c43a8b06c9e121" data-original-source="http://cdn.libravatar.org/avatar/235511b5004cfd4af8c43a8b06c9e121" alt="Gravatar de Ilphrin" class="gravatar" /><br/><i>Original post of <a href="http://ilphrin.com/planet/2016/03/08/nyaovim-le-gui-neovim-avec-electron.html" title="Visit the source">Ilphrin</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://genma.free.fr/?Printemps-de-l-Entreprise-Data-Day-mardi-15-mars
title: genma : Printemps de l'Entreprise : "Data Day" mardi 15 mars !
uri: genma-Printemps-de-l-Entreprise-Data-Day-mardi-15-mars
url: http://genma.free.fr/?Printemps-de-l-Entreprise-Data-Day-mardi-15-mars
content:
<img alt="" align="right" src="media/ff04a3d2.arton2459.jpg" data-original-source="http://genma.free.fr/IMG/arton2459.jpg" width="150" height="79"><div><p>Le mardi 15 mars 2016, c'est Printemps de l'Entreprise : "Data Day" à l'IUT de Vannes en Bretagne. Le programme complet de la journée est en ligne <a href="media/aa45e9fd.ProgrammePrintemps2016_V1_NB.pdf" data-original-source="http://www.iutvannes.fr/wp-content/uploads/2014/09/ProgrammePrintemps2016_V1_NB.pdf" title="ProgrammePrintemps2016_V1_NB.pdf">ProgrammePrintemps2016_V1_NB.pdf</a></p> <p><span>
<img src="media/f20e2f35.breizh_genma-6f02b.jpg" data-original-source="http://genma.free.fr/local/cache-vignettes/L400xH254/breizh_genma-6f02b.jpg" width="400" height="254" alt=""></span></p> <p>Lors de cette journée, je serai sur place et j'interviendrais pour trois animations :<br><strong>Conférence de 8h45 à 10h00</strong>. Il y aura une première conférence <strong>- Vie privée et big data Données personnelles : comment le marketing utilise (ou non) vos données ?</strong> par Alexandre Léchenet d'alphoenix.net. Suivi de la mienne à savoir <strong>Big Data : comment s'en sortir ?</strong></p> <p>Suivrons ensuite deux "ateliers" que j'animerai : <br><img src="media/66cde48a.puce-32883.gif" data-original-source="http://genma.free.fr/local/cache-vignettes/L8xH11/puce-32883.gif" width="8" height="11" alt="-"><strong>Vie privée et Big Data : Degooglisons Internet par Framasoft</strong> de 10h15 à 11h15<br><img src="media/66cde48a.puce-32883.gif" data-original-source="http://genma.free.fr/local/cache-vignettes/L8xH11/puce-32883.gif" width="8" height="11" alt="-"><strong>Présentation de Firefox OS</strong> de 14h à 15h : l'actualité et l'avenir.</p> <p>Mes supports de présentation seront prochainement en ligne.</p></div>
<p><img src="media/42493842.dd4318d0d3a7d2ffb13756f63b76d85d" data-original-source="http://cdn.libravatar.org/avatar/dd4318d0d3a7d2ffb13756f63b76d85d" alt="Gravatar de genma" class="gravatar" /><br/><i>Original post of <a href="http://genma.free.fr/?Printemps-de-l-Entreprise-Data-Day-mardi-15-mars" title="Visit the source">genma</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Appel à la communauté: aidez moi à traduire la série « Parlons XMPP »
uri: 2016-03-09-Goffi-Appel-à-la-communauté-aidez-moi-à-traduire-la-série-P
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_107%3A2015/07/27/Appel-%C3%A0-la-communaut%C3%A9%3A-aidez-moi-%C3%A0-traduire-la-s%C3%A9rie-%C2%AB-Parlons-XMPP-%C2%BB

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_107%3A2015/07/27/Appel-%C3%A0-la-communaut%C3%A9%3A-aidez-moi-%C3%A0-traduire-la-s%C3%A9rie-%C2%AB-Parlons-XMPP-%C2%BB

content:
<p>Salut à vous,</p>

<p>la série que j'ai commencé fin juin, « <a href="http://www.goffi.org/tag/parlons_xmpp" hreflang="fr" title="Parlons XMPP">Parlons XMPP</a> » a plus de succès que ce à quoi je m'attendais (surtout en été !), et a incité plusieurs personnes à regarder un peu plus ce que peut faire ce protocole.</p>

<p>Du coup j'aimerais bien traduire la série en anglais (ou autre !), mais je n'ai vraiment pas le temps de le faire moi même, vu que je dois déjà travailler sur Salut à Toi, et que l'écriture des articles en français me prend beaucoup de temps.</p>

<p>Alors je veux tenter le coup avec une traduction collaborative, un peu comme ce que fait framasoft pour traduire des articles de l'anglais vers le français, mais dans l'autre sens.</p>

<p>Tous les articles sont sous licence libre (Cc By-SA), et il faut bien noter que je parle souvent de « <a href="http://salut-a-toi.org/" title="Salut à Toi site officiel">Salut à Toi</a> » sur lequel je travaille, même si je parle aussi d'autres projets.</p>

<p>Bref, je tente le coup, j'ai ouvert un framapad avec le premier article.</p>

<p>Si vous voulez participer ajoutez votre nom ou pseudo pour être dans les auteurs de la traduction, et vous pouvez traduire en dessous du paragraphe en français. Je demanderai une relecture par un anglophone à la fin.</p>

<p>En dehors des 6 articles déjà publiés, je pense continuer au rythme d'un par semaine au moins pendant l'été.</p>

<p>Pour aider à la traduction, c'est par ici: <a href="https://bimestriel.framapad.org/p/parlons_XMPP">https://bimestriel.framapad.org/p/parlons_XMPP</a></p>

<p>Merci d'avance !</p>

<p>Goffi</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_107%3A2015/07/27/Appel-%C3%A0-la-communaut%C3%A9%3A-aidez-moi-%C3%A0-traduire-la-s%C3%A9rie-%C2%AB-Parlons-XMPP-%C2%BB" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Conférences des RMLL
uri: 2016-03-09-Goffi-Conférences-des-RMLL
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_108%3A2015/07/28/Conf%C3%A9rences-des-RMLL

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_108%3A2015/07/28/Conf%C3%A9rences-des-RMLL

content:
<p>Salut à vous,</p>

<div> </div>

<div>j'attendais de voir les vidéos publiées, c'est désormais le cas. Notre passage aux RMLL s'est très bien passé et a été l'occasion de se faire de nouveaux contacts et d'avoir des discussions très intéressantes. J'ai particulièrement apprécié participer à la table ronde sur les nouveaux médias, et rencontrer Arno de SPIP/SeenThis (je connaissais déjà les autres participants).</div>

<div> </div>

<div>Je n'ai pas eu l'occasion de voir beaucoup de conférences car j'étais au stand, mais je viens bien sûr vous recommander de voir celles sur XMPP ou en particulier la table ronde sur les nouveaux médias:</div>

<div>

<p>Toutes les interventions étaient vraiment intéressantes, y compris dans le public. Merci à ceux qui y ont participé, et à Olicat pour avoir animé.</p>
</div>

<div>
<p>En ce qui concerne XMPP, il y a bien sur les conférences de Libervia et Movim. Pour Libervia la qualité est vraiment mauvaise, aussi je vous recommande plutôt la version de Pas Sage En Seine, c'est la même conférence:</p>
</div>

<div>

<p>Libervia</p>
</div>

<div>

<p>Movim</p>
</div>

<div>
<p>Et sur un plan plus technique, la conférence « PubSub, Microblogage et XMPP » dont j'ai déjà parlé plusieurs fois:</p>
</div>

<div></div>

<div>
<p>En dehors de ça comme je l'ai dit je n'ai pas pu voir beaucoup de conférences. J'ai particulièrement aimé celle de Paul Kocialkowski sur Replicant (en anglais, il y en a aussi eu une en français que je n'ai pas pu voir, je ne sais pas si c'est le même ou pas, du coup je mets les 2):</p>
</div>

<div></div>

<div>
<p>À voir aussi celle de Gelnior (de Newebe/Cozy cloud) sur la conception graphique, je l'avais vue aux JDLL:</p>
</div>

<div></div>

<div>
<p>Enfin, autre conférence que je n'ai pas (encore) vue, mais comme on en parle dans la table ronde je la mets ici, la conférence « SPIP et sa communauté »:</p>
</div>

<div></div>

<div> </div>

<div>Il y en a eu beaucoup d'autres, aussi n'hésitez pas à préciser en commentaires celles que vous conseillez.</div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_108%3A2015/07/28/Conf%C3%A9rences-des-RMLL" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Parlons XMPP - épisode 7 - cas pratiques: SleekXMPP et SàT
uri: 2016-03-09-Goffi-Parlons-XMPP-épisode-7-cas-pratiques-SleekXMPP-et-SàT
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_112%3A2015/08/06/Parlons-XMPP-%C3%A9pisode-7-cas-pratiques%3A-SleekXMPP-et-S%C3%A0T

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_112%3A2015/08/06/Parlons-XMPP-%C3%A9pisode-7-cas-pratiques%3A-SleekXMPP-et-S%C3%A0T

content:
<style type="text/css">/* Styles pour Pygments (coloration syntaxique) */

.hll { background-color: #ffffcc }
.c { color: #408080; font-style: italic } /* Comment */
.err { border: 1px solid #FF0000 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666666 } /* Operator */
.cm { color: #408080; font-style: italic } /* Comment.Multiline */
.cp { color: #BC7A00 } /* Comment.Preproc */
.c1 { color: #408080; font-style: italic } /* Comment.Single */
.cs { color: #408080; font-style: italic } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gr { color: #FF0000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #00A000 } /* Generic.Inserted */
.go { color: #888888 } /* Generic.Output */
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #0044DD } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #008000 } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #B00040 } /* Keyword.Type */
.m { color: #666666 } /* Literal.Number */
.s { color: #BA2121 } /* Literal.String */
.na { color: #7D9029 } /* Name.Attribute */
.nb { color: #008000 } /* Name.Builtin */
.nc { color: #0000FF; font-weight: bold } /* Name.Class */
.no { color: #880000 } /* Name.Constant */
.nd { color: #AA22FF } /* Name.Decorator */
.ni { color: #999999; font-weight: bold } /* Name.Entity */
.ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.nf { color: #0000FF } /* Name.Function */
.nl { color: #A0A000 } /* Name.Label */
.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #19177C } /* Name.Variable */
.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mb { color: #666666 } /* Literal.Number.Bin */
.mf { color: #666666 } /* Literal.Number.Float */
.mh { color: #666666 } /* Literal.Number.Hex */
.mi { color: #666666 } /* Literal.Number.Integer */
.mo { color: #666666 } /* Literal.Number.Oct */
.sb { color: #BA2121 } /* Literal.String.Backtick */
.sc { color: #BA2121 } /* Literal.String.Char */
.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.s2 { color: #BA2121 } /* Literal.String.Double */
.se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.sh { color: #BA2121 } /* Literal.String.Heredoc */
.si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.sx { color: #008000 } /* Literal.String.Other */
.sr { color: #BB6688 } /* Literal.String.Regex */
.s1 { color: #BA2121 } /* Literal.String.Single */
.ss { color: #19177C } /* Literal.String.Symbol */
.bp { color: #008000 } /* Name.Builtin.Pseudo */
.vc { color: #19177C } /* Name.Variable.Class */
.vg { color: #19177C } /* Name.Variable.Global */
.vi { color: #19177C } /* Name.Variable.Instance */
.il { color: #666666 } /* Literal.Number.Integer.Long */
</style><p>(pour lire les épisodes précédents, suivez <a href="http://www.goffi.org/tag/parlons_xmpp">l'étiquette correspondante</a>)</p>

<p>Comme cela a été demandé plusieurs fois, nous allons pour cet article faire un petit cas pratique avec deux bots XMPP.</p>

<h2>SleekXMPP</h2>

<p>c'est <a href="http://sleekxmpp.com/">SleekXMPP</a> que nous allons tester, que je n'avais jamais utilisé avant cet article. Il s'agit d'une bibliothèque Python qui se veut simple, avec peu de dépendances, et gérant tout avec des greffons. Vous pouvez aussi utiliser le fork (amical) fait pour Poezio, <a href="https://dev.louiz.org/projects/slixmpp">Slixmpp</a> qui a réécrit le cœur de la bibliothèque pour tout gérer en asynchrone (sans thread) via le récent asyncio (aussi il faut une version de Python >= à 3.4, alors que SleekXMPP fonctionne avec Python 2 et 3).</p>

<p>Sans entrer trop dans les détails, que vous trouverez sur le site officiel avec plusieurs tutoriels (<a href="http://sleekxmpp.com/">http://sleekxmpp.com/</a>), faisons un simple bot qui répond à des commandes ad-hoc (aucun lien avec Tintin, voir plutôt l'<a href="http://www.goffi.org/post/2015/07/27/Parlons-XMPP-%C3%A9pisode-6-les-commandes-%C3%A0-distance">épisode 6</a>):</p>

<p>Ce script est une adaptation de <a href="https://github.com/fritzy/SleekXMPP/blob/develop/examples/adhoc_provider.py">l'exemple donné dans le dépôt officiel</a> (<a href="https://github.com/fritzy/SleekXMPP/blob/develop/LICENSE">voir sa licence</a>). Des explications sont données après le script, et il devrait fonctionner avec Python 2.6 ou supérieur ou 3.1 ou supérieur.</p>

<pre>
<code><span>#!/usr/bin/env python</span>
<span># -*- coding: utf-8 -*-</span>
<span>import</span> <span>sleekxmpp</span>
<span>from</span> <span>sleekxmpp</span> <span>import</span> <span>jid</span>

<span>JID</span><span>=</span><span>"mon_super_bot@mon_super_server.tld"</span>
<span>PWD</span><span>=</span><span>"mon_super_mot_de_passe"</span>
<span>ADMIN</span><span>=</span><span>jid</span><span>.</span><span>JID</span><span>(</span><span>"mon_admin@mon_super_server.tld"</span><span>)</span>
<span>CMD_ENVOI</span> <span>=</span> <span>u'envoi message'</span>
<span>CMD_DECO</span> <span>=</span> <span>u'déconnexion'</span>
<span>CMD_ADMIN</span> <span>=</span> <span>u'gros bouton rouge'</span>


<span>class</span> <span>MonSuperBot</span><span>(</span><span>sleekxmpp</span><span>.</span><span>ClientXMPP</span><span>):</span>

    <span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>
        <span>sleekxmpp</span><span>.</span><span>ClientXMPP</span><span>.</span><span>__init__</span><span>(</span><span>self</span><span>,</span> <span>JID</span><span>,</span> <span>PWD</span><span>)</span>
        <span>self</span><span>.</span><span>add_event_handler</span><span>(</span><span>"session_start"</span><span>,</span> <span>self</span><span>.</span><span>session_start</span><span>)</span>
        <span># note 1</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0030'</span><span>)</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0004'</span><span>)</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0050'</span><span>)</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0199'</span><span>,</span> <span>{</span><span>'keepalive'</span><span>:</span> <span>True</span><span>,</span> <span>'frequency'</span><span>:</span><span>15</span><span>})</span>

    <span>def</span> <span>session_start</span><span>(</span><span>self</span><span>,</span> <span>event</span><span>):</span>
        <span># note 2</span>
        <span>self</span><span>.</span><span>send_presence</span><span>()</span>
        <span>self</span><span>.</span><span>get_roster</span><span>()</span>
        <span>self</span><span>[</span><span>'xep_0050'</span><span>]</span><span>.</span><span>add_command</span><span>(</span><span>node</span><span>=</span><span>'monbot'</span><span>,</span>
                                     <span>name</span><span>=</span><span>u'Commandes de monbot'</span><span>,</span>
                                     <span>handler</span><span>=</span><span>self</span><span>.</span><span>_handle_commands</span><span>)</span>

    <span>def</span> <span>_handle_commands</span><span>(</span><span>self</span><span>,</span> <span>iq</span><span>,</span> <span>session</span><span>):</span>
        <span>form</span> <span>=</span> <span>self</span><span>[</span><span>'xep_0004'</span><span>]</span><span>.</span><span>makeForm</span><span>(</span><span>'form'</span><span>,</span> <span>'bot'</span><span>)</span>
        <span>form</span><span>[</span><span>'instructions'</span><span>]</span> <span>=</span> <span>u'Choisissez une commande'</span>
        <span>options</span> <span>=</span> <span>[</span><span>CMD_ENVOI</span><span>,</span> <span>CMD_DECO</span><span>]</span>

        <span># note 3</span>
        <span>if</span> <span>session</span><span>[</span><span>'from'</span><span>]</span><span>.</span><span>bare</span> <span>==</span> <span>ADMIN</span><span>:</span>
            <span>options</span><span>.</span><span>append</span><span>(</span><span>CMD_ADMIN</span><span>)</span>

        <span>form</span><span>.</span><span>addField</span><span>(</span><span>var</span><span>=</span><span>'command'</span><span>,</span>
                      <span>label</span><span>=</span><span>u'commande'</span><span>,</span>
                      <span>ftype</span><span>=</span><span>'list-single'</span><span>,</span>
                      <span>required</span><span>=</span><span>True</span><span>,</span>
                      <span>options</span><span>=</span><span>options</span>
                      <span>)</span>

        <span>session</span><span>[</span><span>'payload'</span><span>]</span> <span>=</span> <span>form</span>
        <span>session</span><span>[</span><span>'next'</span><span>]</span> <span>=</span> <span>self</span><span>.</span><span>_handle_command_complete</span>
        <span>session</span><span>[</span><span>'has_next'</span><span>]</span> <span>=</span> <span>False</span>

        <span>return</span> <span>session</span>

    <span>def</span> <span>_handle_command_complete</span><span>(</span><span>self</span><span>,</span> <span>payload</span><span>,</span> <span>session</span><span>):</span>
        <span>form</span> <span>=</span> <span>payload</span>
        <span>command</span> <span>=</span> <span>form</span><span>[</span><span>'values'</span><span>][</span><span>'command'</span><span>]</span>

        <span>if</span> <span>command</span> <span>==</span> <span>CMD_ENVOI</span><span>:</span>
            <span>self</span><span>.</span><span>send_message</span><span>(</span><span>mto</span><span>=</span><span>session</span><span>[</span><span>'from'</span><span>],</span>
                              <span>mbody</span><span>=</span><span>"Message important !"</span><span>,</span>
                              <span>mtype</span><span>=</span><span>'headline'</span><span>)</span>
        <span>elif</span> <span>command</span> <span>==</span> <span>CMD_DECO</span><span>:</span>
            <span>self</span><span>.</span><span>disconnect</span><span>(</span><span>wait</span><span>=</span><span>True</span><span>)</span> <span># note 4</span>
        <span>elif</span> <span>command</span> <span>==</span> <span>CMD_ADMIN</span><span>:</span>
            <span># note 5</span>
            <span>if</span> <span>session</span><span>[</span><span>'from'</span><span>]</span><span>.</span><span>bare</span> <span>==</span> <span>ADMIN</span><span>:</span>
                <span>session</span><span>[</span><span>'notes'</span><span>]</span> <span>=</span> <span>[(</span><span>'warning'</span><span>,</span> <span>'BOOM !'</span><span>)]</span>
            <span>else</span><span>:</span>
                <span>raise</span> <span>ValueError</span><span>(</span><span>"ce n'est pas un admin !"</span><span>)</span>
        <span>return</span> <span>session</span>


<span>if</span> <span>__name__</span> <span>==</span> <span>'__main__'</span><span>:</span>
    <span>xmpp</span> <span>=</span> <span>MonSuperBot</span><span>()</span>
    <span>if</span> <span>xmpp</span><span>.</span><span>connect</span><span>():</span> <span># note 6</span>
        <span>print</span><span>(</span><span>r"\\o/"</span><span>)</span>
        <span>xmpp</span><span>.</span><span>process</span><span>(</span><span>block</span><span>=</span><span>True</span><span>)</span>
    <span>else</span><span>:</span>
        <span>print</span><span>(</span><span>":("</span><span>)</span></code></pre>

<h3>Explications</h3>

<p>Après avoir importé sleekxmpp, nous utilisons quelques constantes (n'oubliez pas bien sûr de remplacer JID et PWD par des valeurs adaptées) pour simplifier, les exemples officiels permettent de manière plus élégante de préciser jid et mot de passe en ligne de commande.</p>

<p>Notre bot se comportera comme un client, nous héritons donc de sleekxmpp.ClientXMPP.</p>

<p>au niveau de la <strong>note 1</strong> nous implémentons les greffons qui gèrent les XEPs qui nous intéressent :</p>

<ul><li>disco (<a href="https://xmpp.org/extensions/xep-0030.html">XEP-0030</a>) pour annoncer ad-hoc, comme expliqué dans l'<a href="http://www.goffi.org/post/2015/07/01/Parlons-XMPP-%C3%A9pisode-3-le-c%C5%93ur-et-les-extensions-%28suite%29">épisode 3</a></li>
	<li>les formulaires de données (x-data, <a href="https://xmpp.org/extensions/xep-0004.html">XEP-0004</a>) et les commandes « ad-hoc » (commands, <a href="https://xmpp.org/extensions/xep-0050.html">XEP-0050</a>), expliquées dans l'<a href="http://www.goffi.org/post/2015/07/27/Parlons-XMPP-%C3%A9pisode-6-les-commandes-%C3%A0-distance">épisode 6</a></li>
	<li>la <a href="https://xmpp.org/extensions/xep-0199.html">XEP-0199</a> permet d'envoyer et de répondre à des « pings », afin de s'assurer que la connexion et les logiciels sont toujours actifs.</li>
</ul><p>À la <strong>note 2</strong> nous envoyons notre présence et demandons la liste de contacts (« roster »), ce qui est requis par les RFCs, certains serveurs pouvant refuser de répondre si ce n'est pas fait.<br>
Ensuite nous utilisons le greffon des commandes « ad-hoc » pour ajouter le point d'entrée à nos commandes.</p>

<p>Ce point d'entrée appellera la méthode « _handle_commands », et nous utilisons un formulaire (comme expliqué dans la XEP-0004) pour spécifier nos commandes. La liste « options » nous sert à indiquer nos commandes dans l'ordre voulu.</p>

<p>Au niveau de la <strong>note 3</strong>, nous profitons de l’identification forte de XMPP pour vérifier très simplement si le demandeur utilise l'adresse (jid) de notre compte privilégié, que nous avons indiqué dans la constante « ADMIN ». Nous aurons ainsi un jeu de commandes différent si nous utilisons le compte privilégié ou un autre.<br>
Évidemment si vous voulez profiter de l'authentification forte, il faut vous assurer que tout est en ordre au niveau des certificats et du chiffrement (ce que fait a priori SleekXMPP de base, consultez la documentation pour plus d'informations).</p>

<p>L'ajout de commande se fait ici par une liste à choix unique (« list-single »), mais vous pouvez demander d'autres choses comme des mots de passe ou des jids, tout est expliqué dans la XEP-0004.</p>

<p>Quelques précisions sur ad-hoc : à chaque « page » vous pouvez effectuer une action:</p>

<ul><li><em>cancel</em> pour annuler</li>
	<li><em>prev</em> pour revenir en arrière</li>
	<li><em>execute</em> pour lancer une commande ou continuer la session</li>
	<li><em>next</em> pour passer à la page suivante</li>
	<li><em>complete</em> pour finir la sesssion</li>
</ul><p>Ces actions sont gérées par sleekXMPP à travers le dictionnaire « session », la meilleure documentation que j'ai trouvée sur le sujet est le code lui-même : dans le fichier « sleekxmpp/plugins/xep_0050/adhoc.py » présent dans les sources.</p>

<p>Ad-hoc permet également d'indiquer un message, une « note », pour donner l'état de votre commande, elle peut avoir un type « info », « warn » (warning: attention) ou « error » (erreur).</p>

<p>Dans le code nous indiquons que nous avons notre dernière « page » par « session['has_next'] = False », et qu'il faut traiter la réponse dans « _handle_command_complete ». Oui c'est un peu contre-intuitif d’avoir à la fois has_next à False, et un next, mais ce dernier correspond à la réponse et non à une nouvelle page.</p>

<p>Passons à ces réponses. Nous regardons ce qui est dans le formulaire pour savoir quoi faire. Dans le premier cas nous envoyons un message manchette ou « headline » (voir l'<a href="http://www.goffi.org/post/2015/06/25/Parlons-XMPP-%C3%A9pisode-2-le-c%C5%93ur-et-les-extensions">épisode 2</a>)</p>

<p>Dans le deuxième cas (au niveau de la <strong>note 4</strong>) on fait une déconnexion. Alors j'ai eu un problème ici avec SleekXMPP, que j'utilise pour la première fois comme indiqué plus haut : il faudrait pour faire propre terminer la session ad-hoc avant de déconnecter, mais je n'ai pas trouvé de moyen simple de le faire, vu que la déconnexion est immédiate et qu'il faut retourner le dictionnaire session pour terminer la séquence. Peut-être que je suis passé à côté de quelque chose, n'hésitez pas préciser en commentaire si vous avez une astuce.</p>

<p>Passons à la <strong>note 5</strong>: je refais une vérification du jid avant de lancer la commande privilégiée. La raison est simple: le formulaire est envoyé du client au bot par le serveur sans être vérifié par ce dernier, c'est au bot à le faire. Il est interdit d'ajouter une nouvelle commande, mais comme je doute que SleekXMPP conserve le formulaire d’origine pour vérifier qu'il n'y a rien de nouveau, un attaquant pourrait ajouter la commande privilégiée sans être admin. Cette vérification permet de l'éviter.</p>

<p>Pour faire propre il faudrait envoyer une réponse XMPP précisant que l'action est interdite, mais pour faire simple je me suis contenté d'une exception ici.</p>

<p>Enfin, au niveau de la <strong>note 6</strong> on se connecte. Pour un serveur local de test, si vous n'avez pas de serveur DNS configuré comme il faut, vous pouvez spécifier l'adresse ip ou le nom de domaine local en dur, ainsi que le port (par exemple « self.connect(('localhost', 5222)) ». Si votre certificat n'est pas valide, vous pouvez aussi utiliser « use_tls=False » (pour les tests uniquement !). La documentation de SleekXMPP vous indiquera plus clairement comment gérer correctement les certificats.</p>

<p>Enfin, un autre problème que j'ai eu avec SleekXMPP: il ne semble pas possible avec ma version (1.3.1) d'indiquer de ne pas utiliser de commande « exécuter » ou de spécifier son équivalence (ce qui est pourtant possible avec la XEP-0050). Il faudrait qu'elle soit absente ou équivalent à « compléter ». Vous allez ainsi avoir un bouton qui sera inutile, et provoquera même une erreur. Là encore si quelqu'un plus habitué à la bibliothèque peut indiquer en commentaire comment corriger cela. Utilisez donc le bouton « compléter » (ou « finir ») et non « exécuter » de votre client.</p>

<p>Voilà la capture de notre bot piloté par Gajim:</p>

<p><img src="https://goffi.org:5281/upload/75bef9f4-6530-4960-9a59-6708ec7395fb/WvESBh5p" alt="bot piloté par Gajim" title="bot piloté par Gajim" width="80%" height="80%"></p>

<h2>Salut à Toi</h2>

<p>Pour indiquer les ajouts faits au code, nous utilisons un bot dénommé « Sabot ». Nous gérons les sources avec <a href="https://mercurial.selenic.com/">Mercurial</a> (sur <a href="https://repos.goffi.org/">https://repos.goffi.org/</a>). Celui-ci permet d'exécuter une commande via des crochets (« hooks »), dont un qui est lancé à chaque série de commits: incoming. Nous avons donc ceci dans notre hgrc:</p>

<pre>
<code><span>[hooks]</span>
<span>incoming.sabot</span> <span>=</span> <span>/chemin/vers/hg_sabot_hook.sh</span></code></pre>

<p>Pour le bot, nous profitons du côté multi-interfaces de SàT: SàT a une architecture qui permet pour un même client (et donc les mêmes profils, comptes, etc) d'avoir différentes interfaces (console, ligne de commande, bureau, web, etc).</p>

<p>Nous avons donc créé le compte comme un compte normal grâce à Primitivus, l'interface console (nous sommes sur un serveur sans interface graphique disponible). On peut joindre le salon désiré (ici <a href="xmpp:sat@chat.jabberfr.org?join">sat@chat.jabberfr.org</a>), et le mêttre en favori (grâce à la XEP-0048), ainsi que gérer l'entrée automatique (« autojoin »). Il ne reste plus qu'à envoyer le message quand le script hg_sabot_hook.sh est appelé, ce que nous faisons à l'aide de « jp », l'interface en ligne de commande:</p>

<pre>
<code><span>#!/bin/sh</span>

<span>#on s'assure d'abord que D-Bus est lancé</span>
<span>eval</span> <span>`</span>/chemin/vers/dbus-launch.sh<span>`</span>

<span>REPOS_BASE</span><span>=</span><span>"http://repos.goffi.org/sat"</span>
<span>PROJECT_FULL</span><span>=</span><span>"Salut à Toi"</span>
<span>REPOS</span><span>=</span><span>"$REPOS_BASE/rev/$HG_NODE"</span>
<span>MUC</span><span>=</span><span>"sat@chat.jabberfr.org"</span>

hg log -r <span>$HG_NODE</span> --template <span>"Commit from {author|person} on $PROJECT_FULL\\n{desc}\\n$REPOS"</span> <span>|</span> jp message -cp sabot <span>$MUC</span></code></pre>

<p>(le vrai script est un tout petit peu plus long puisqu'il gère aussi les noms des autres dépôts).</p>

<p>L'option « -c » indique de se connecter si ça n'est pas le cas, et « -p sabot » précise qu'il faut utiliser le profil « sabot »</p>

<p>Le script dbus-launch.sh s'assure juste que D-Bus est bien lancé et réutilisé entre les sessions de l'utilisateur:</p>

<pre>
<code><span>#!/bin/sh</span>
<span>DBUS_PATH</span><span>=</span><span>"/tmp/.dbus.`whoami`"</span>
<span>if</span> <span>[</span> ! -e <span>$DBUS_PATH</span> <span>]</span><span>;</span> <span>then</span>
        dbus-launch --sh-syntax > <span>$DBUS_PATH</span>
        chmod <span>400</span> <span>$DBUS_PATH</span>
<span>fi</span>
cat <span>$DBUS_PATH</span></code></pre>

<p>Voilà pour ces cas pratiques. La prochaine fois, je parlerai soit de PubSub, soit de Jingle.</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_112%3A2015/08/06/Parlons-XMPP-%C3%A9pisode-7-cas-pratiques%3A-SleekXMPP-et-S%C3%A0T" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Parlons XMPP - épisode 8 - PubSub et PEP
uri: 2016-03-09-Goffi-Parlons-XMPP-épisode-8-PubSub-et-PEP
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_114%3A2015/09/08/Parlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_114%3A2015/09/08/Parlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP

content:
<div><p>(pour lire les épisodes précédents, suivez <a href="http://www.goffi.org/tag/parlons_xmpp">l'étiquette correspondante</a>)</p><p>Aujourd'hui nous allons expliquer dans les grandes lignes comment fonctionnent « PubSub » et « PEP », et voir à quoi cela peut servir. Cet article va reprendre en partie ce que j'ai dit à la conférence « <a href="http://www.goffi.org/post/2015/07/23/Conf%C3%A9rence-%C2%AB-PubSub%2C-microblogage-et-XMPP-%C2%BB-en-ligne">PubSub, microblogage et XMPP</a> » en juillet dernier aux RMLL.</p><p>PubSub signifie « Publish/Subscribe » (Publication/Abonnement), c'est un mécanisme qui permet à une ou plusieurs personnes de publier toutes sortes d'informations sur un endroit connu (qu'on appelle un nœud) et aux personnes qui le désirent de s'abonner, c'est à dire d'avoir accès au contenu et d'être averti des modifications, le tout avec un système d'accès simple. Il s'agit du patron de conception « <a href="https://fr.wikipedia.org/wiki/Observateur_%28patron_de_conception%29">observateur/observable</a> » décentralisé et appliqué à XMPP.</p><p>Le fonctionnement est expliqué dans la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a>, c'est une des XEPs les plus longues de XMPP mais le principe est relativement simple à comprendre. Sans reprendre le long glossaire du document, expliquons quelques termes :</p><ul><li>le <strong>service PubSub</strong> est l'entité qui gère le mécanisme de publication, d'autorisation, d'abonnement, de notification. C'est une entité XMPP et un jid y est donc associé, c'est à lui que vous faites toutes les requêtes pour un nœud donné.</li><li>le <strong>nœud</strong> est un espace associé à une publication. On peut associer ça à l'adresse d'un flux Atom.</li><li>un « <strong>item</strong> » (élément) est une publication dans un nœud. On peut associer ça à un article dans un flux Atom.</li><li>cet « item » contient un « <strong>payload</strong> » (charge utile), c'est à dire un contenu significatif qui dépend de la fonctionnalité utilisée. En effet la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a> décrit un mécanisme générique et souple, qui est ensuite utilisé dans des cas pratiques par d'autres extensions.</li></ul><p>Un service PubSub est généralement un composant de votre serveur, mais ça peut-être n'importe quelle entité : votre serveur lui-même (c'est le cas avec PEP que nous allons voir ci-dessous), ou un client voire votre client lui-même (mais c'est assez rare – je n'ai jamais vu de client le faire –, car en général on utilise le service de son serveur).</p><p>Le mécanisme général est très simple et centré sur les nœuds : chaque entité (associée à un jid) à un rôle lié à ce nœud selon qu'elle l'ait créé, qu'elle soit publieur, abonné, banni ou sans lien avec le nœud. À ces rôles sont donnés des autorisations : le droit d'écrire (avec le « publish model » ou modèle de publication) et le droit en lecture (avec l'« access model » ou modèle d'accès).</p><p>Reprenons de manière un peu plus formelle. Les rôles dont nous avons parlé sont appelés « affiliations », et on peut avoir les suivantes:</p><ul><li>owner (propriétaire): en général celui qui a créé le nœud</li><li>publisher (publieur): celui ou ceux (il peut y en avoir plusieurs) qui ont accès en écriture</li><li>publish-only (publication seulement): droit d'écriture mais pas de lecture, c'est un cas peu fréquent.</li><li>member (membre): quelqu'un qui est abonné au nœud</li><li>none (rien): l'entité n'a pas de lien avec le nœud</li><li>outcast (banni): l'entité a été explicitement interdite d'accès au nœud</li></ul><p>La <a href="https://xmpp.org/extensions/xep-0060.html#affiliations">section 4.1 de la XEP-0060</a> fourni un tableau qui montre les autorisations selon l'affiliation. Ainsi on voit que le propriétaire peut publier ou configurer un nœud.</p><p>Les modèles d'accès (pour la lecture) définis dans la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a> sont les suivants:</p><ul><li>open (ouvert, public): tout le monde peut lire le nœud</li><li>presence (présence – oui je traduis même pour un seul accent –) : si une entité est autorisée à voir la présence du publieur, alors elle peut accéder au nœud</li><li>roster (liste de contacts): si une entité est dans un groupe défini (dans la configuration du nœud) de la liste de contacts du service pubsub, elle a accès au nœud.</li><li>whitelist (liste blanche): des entités sont explicitement autorisées dans la configuration du nœud</li></ul><p>Et rapidement les modèles de publication:</p><ul><li>publishers (publieurs): quelqu'un qui a l'affiliation publieur peut écrire</li><li>subscribers (abonnés): n'importe quel abonné peut écrire</li><li>open (ouvert/libre): tout le monde peut écrire</li></ul><p>Il faut bien noter une chose essentielle dans PubSub : quand la combinaison autorisation/abonnement/configuration le permet, on reçoit une notification immédiatement quand un élément est publié, modifié ou supprimé. Autrement dit on n'est plus du tout dans l'analogie avec un flux Atom – où on doit aller vérifier régulièrement qu'il n'y a rien de nouveau –, on est prévenu si nécessaire. Ceci est beaucoup plus efficace, rapide, et économe en ressources.</p><p>Voilà pour la base. La XEP défini d'autres choses qu'il n'est pas forcément pertinent d'expliquer ici, comme les métadonnées ou les inscriptions temporaires. On peut toutefois s'arrêter sur les collections, qui ne sont que mentionnées dans la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a> mais décrites en détails dans la <a href="https://xmpp.org/extensions/xep-0248.html">XEP-0248</a>. Elles permettent de faire des arbres de nœuds, et ainsi de représenter des données avec des relations entre elles. Des exemples valent parfois mieux qu'un long discours: les collections peuvent être utilisées pour représenter un système de fichiers sur un disque dur, ou un arbre généalogique.</p><p>Tout ceci est souple, générique, puissant, et relativement facile à utiliser par un client. Mais la XEP étant très longue, et l'implémentation de la partie service plus complexe, les implémentations ont mis du temps à arriver (et encore aujourd'hui elles sont très inégales). Comme PubSub peut être intéressant même sans tout le mécanisme, une version simplifiée est décrite dans la <a href="https://xmpp.org/extensions/xep-0163.html">XEP-0163</a>: « Personal Eventing Protocol » (Protocole d'évènements personels).</p><p>Cette dernière se base sur PubSub, mais définit les règles suivantes qui simplifient beaucoup :</p><ul><li><p><em>1 compte (jid) = 1 service</em> : probablement la règle la plus importante, elle évite d'avoir à chercher un service PubSub associé à un jid, puisque le service est l'adresse canonique (« bare jid ») de l'entité. Ainsi pour la microblogage (<a href="https://xmpp.org/extensions/xep-0277.html">XEP-0277</a>), il suffit de connaître le jid de la personne – le nœud étant défini dans la XEP – pour retrouver ses publications.</p></li><li><p><em>1 publieur par nœud</em> : le propriétaire et le publieur sont le même, et il n'y a qu'un publieur par nœud. On se coupe ainsi de l'édition collaborative par souci de simplification, et il faudra utiliser PubSub pour ce genre d'applications.</p></li><li><p><em>accès par présence par défaut</em> : sans rien toucher, il suffit d'avoir quelqu'un dans sa liste de contacts (et qui a accès à la présence) pour qu'il soit autorisé à voir nos publications</p></li><li><p><em>notifications filtrées sur l'intérêt exprimé</em> : pour éviter d'être submergé de notifications, une entité/un client doit explicitement indiquer qu'il est intéressé par tel ou tel nœud</p></li><li><p><em>options par défaut au plus simple</em></p></li></ul><p>PEP était utilisé au début pour des événements (sans grand intérêt à mon sens) comme l'humeur ou la musique en cours d'écoute, mais depuis son utilisation a évolué.</p><p>Voici, pour finir, quelques exemples d'utilisation de PubSub ou PEP:</p><ul><li>enregistrement de données publiques ou semi-publiques (<a href="https://xmpp.org/extensions/xep-0222.html">XEP-0222</a>), par exemple une clef publique de chiffrement</li><li>enregistrement de données privées (<a href="https://xmpp.org/extensions/xep-0223.html">XEP-0223</a>), très utile pour n'importe quelle donnée de petite taille</li><li>les marque-pages (<a href="https://xmpp.org/extensions/xep-0048.html">XEP-0048</a>) utilisés pour les salons de discussions utilisent PEP (la XEP-0048 a été modifiée après l'apparition de PEP pour s'y adapter)</li><li>le microblogage bien entendu (<a href="https://xmpp.org/extensions/xep-0277.html">XEP-0277</a>), qui utilise PEP et utilise du Atom pour sa « charge utile » (« payload ») et un accès en général public. Les commentaires sont sur un nœud PubSub séparé, en général avec un modèle de publication par abonnement.</li><li>la <a href="https://xmpp.org/extensions/xep-0214.html">XEP-0214</a> utilise PubSub et les collections pour faire un dépôt de fichiers</li><li>le futur protocole de discussions de groupe « MUC 2 » devrait se baser sur PubSub</li></ul><p>PubSub pourrait aussi être utilisé pour placer des points sur une carte, faire un wiki, organiser des événements, ou encore gérer et surveiller une batterie de serveurs qui nous préviendraient en cas de problème.</p><p>Je reviendrai sûrement plus tard sur tout ça pour expliquer le microblogage ou d'autres extensions.</p><p>La prochaine fois, je pense vous parler de Jingle (mais pas de la partie vidéo-conférence). J'espère qu'à ce stade vous commencez à comprendre que XMPP n'est pas <em>une</em> technologie, mais un ensemble de technologies coordonnées et qui se réutilisent les unes les autres quand nécessaire.</p><p>J'ai un peu réduit le rythme des articles ces derniers temps car je travaille sur mon projet, et qu'<a href="http://www.goffi.org/tag/talk_xmpp">une partie a été traduite en anglais</a> avec l'aide de pas mal de monde (merci encore !), tout cela prend du temps.</p><p>Si vous venez à la fête de l'huma ce week-end, vous pourrez me trouver au village du libre, où Parinux me prête gentiment un bout de stand (merci aussi !). Je n'y serai pas en permanence, car je compte aussi profiter un peu de la fête :)</p></div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_114%3A2015/09/08/Parlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Vous voulez du (micro)blogage, de la décentralisation et du chiffrement sur Android ?
uri: 2016-03-09-Goffi-Vous-voulez-du-(micro)blogage-de-la-décentralisation-et-du-c
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_115%3A2015/10/22/Vous-voulez-du-%28micro%29blogage%2C-de-la-d%C3%A9centralisation-et-du-chiffrement-sur-Android

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_115%3A2015/10/22/Vous-voulez-du-%28micro%29blogage%2C-de-la-d%C3%A9centralisation-et-du-chiffrement-sur-Android

content:
<p>Salut à vous !</p><div> </div><div>Aujourd'hui nous lançons une petite campagne de financement participatif pour le développement d'une version Android de Libervia/Salut à Toi.</div><div> </div><div>Nous souhaitons ici développer une application native, avec toutes les fonctionnalités avancées dont nous disposons déjà, telles que le (micro)blogage, le chiffrement de bout en bout via OTR (et il est possible que nous ajoutions OMEMO/Axolotl, une nouvelle méthode permettant de chiffrer les messages hors ligne ou dans une discussion de groupe), le partage de fichiers, ou des choses plus exotiques comme <a href="http://goffi.org/post/2014/02/17/Une-t%C3%A9l%C3%A9commande-universelle-pour-vos-logiciels">une télécommande universelle</a>.</div><div> </div><div>Ce développement fonctionnera également sur bureau (Gnu/Linux bien sûr, mais il devrait fonctionner sur d'autres plateformes comme Windows ou Mac OS X) avec la même interface.</div><div> </div><div>Il existe déjà quelques clients Android (comme le très joli <a href="https://movim.eu/">Movim</a> de notre ami Edhelas, <a href="http://conversations.im/">Conversations</a> ou <a href="http://www.xabber.com/">Xabber</a>), mais aucun n'offre actuellement le même bouquet de fonctionnalités que Libervia/Salut à Toi, aussi ce développement sera un vrai plus.</div><div> </div><div>D'autre part nous sommes particulièrement attentifs à l'éthique (cf notre <a href="http://salut-a-toi.org/social_contract.html">contrat social</a>) et nous sommes organsiés en association loi 1901 en autogestion, dans l'idée de faire une coopérative sur le long terme. Cette campagne est aussi l'occasion de tester un moyen de financement, et nous avons choisi Arizuka car ce site se concentre sur les projets de l'économie sociale et solidaire.</div><div> </div><div>Voilà, donc maintenant on compte sur vous ! N'hésitez pas à poser vos question soit en commentaire, soit par courriel (goffi@goffi.org) soit sur notre salon de discussion XMPP: <a href="xmpp:sat@chat.jabberfr.org?join">sat@chat.jabberfr.org</a></div><div> </div><div>lien vers la campagne: <a href="http://www.arizuka.com/fr/projects/libervia">http://www.arizuka.com/fr/projects/libervia</a></div><div>Salut à Toi: <a href="http://salut-a-toi.org/">http://salut-a-toi.org</a></div><div> </div><div><br>P.-S. : nous préparons aussi une (grosse) nouvelle version dans les semaines à venir, je ferai certainement une série d'articles pour expliquer les nouveautés et comment se servir de Libervia ou SàT en général.</div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_115%3A2015/10/22/Vous-voulez-du-%28micro%29blogage%2C-de-la-d%C3%A9centralisation-et-du-chiffrement-sur-Android" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Parlons XMPP - épisode 9 - copie de fichiers et Jingle
uri: 2016-03-09-Goffi-Parlons-XMPP-épisode-9-copie-de-fichiers-et-Jingle
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_117%3A2015/11/04/Parlons-XMPP-%C3%A9pisode-9-copie-de-fichiers-et-Jingle

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_117%3A2015/11/04/Parlons-XMPP-%C3%A9pisode-9-copie-de-fichiers-et-Jingle

content:
<div><p>(pour lire les épisodes précédents, suivez <a href="http://www.goffi.org/tag/parlons_xmpp">l'étiquette correspondante</a>)</p><p>Bien que déjà répété un certain nombre de fois, je le redis : XMPP fait bien plus que de la messagerie instantanée. Une des fonctionnalités qui est apparue rapidement est la copie de fichiers, voyons cela de plus près</p><p>Le problème : XMPP étant du XML, il n'est pas vraiment adapté aux données purement binaires comme des fichiers. La solution est de passer par l'extérieur, c'est à dire une autre connexion non XML, et d'utiliser le flux XML pour la gérer, on parle de connexion « out-band ». Malheureusement, parfois il n'est pas possible d'établir cette connexion, alors on passe tout par le flux XML : c'est lent, peu efficace, mais ça fonctionne presque toujours, on parle de connexion « in-band » (qu'on pourrait traduire par « interne »).<br>Il y a aussi des cas où il est plus simple et efficace de rester « in-band », enfin surtout un : si on envoie très peu de données, comme une petite image (un <a href="https://fr.wikipedia.org/wiki/Avatar_%28informatique%29">avatar</a> par exemple).</p><p>Comme souvent dans le monde XMPP, plusieurs solutions ont été proposées, expérimentées, parfois adoptées puis dépréciées, jusqu'à ce qu'on trouve et garde celle qui semble convenir le mieux, et qui est a priori la meilleure techniquement.<br>Commençons par la solution courante, appelée « Stream Initiation » (initiation de flux), elle est définie par la <a href="https://xmpp.org/extensions/xep-0095.html">XEP-0095</a>, et la copie de fichier l'utilise via la <a href="https://xmpp.org/extensions/xep-0096.html">XEP-0096</a>.</p><p>La copie de fichiers est la seule application qui utilise la <a href="https://xmpp.org/extensions/xep-0095.html">XEP-0095</a>. Nous avons 2 personnes en jeu : celle qui veut envoyer le fichier, qu'on appellera « l'expéditeur » (« sender » en anglais) et celui qui veut le recevoir, qu'on appellera « le destinataire » (« receiver » en anglais).</p><p>La <a href="https://xmpp.org/extensions/xep-0096.html">XEP-0096</a> défini ce qu'on appelle un « profil » pour l'initiation de flux, le profil « transfert de fichier ». Elle sert principalement à transmettre les métadonnées du fichier : une description, sa taille, son nom, sa date de dernière modification, et un « hash », c'est à dire une somme de contrôle pour vérifier que le fichier a été correctement copié. C'est l'algorithme <a href="https://fr.wikipedia.org/wiki/MD5">MD5</a> qui est utilisé ici, pourtant connu pour avoir des failles, même si elles ne sont pas dramatiques dans le cadre d'un transfert de fichier (l'expéditeur étant déjà validé par ailleurs).</p><p>Il est également possible d'indiquer une fourchette (« range ») à copier, c'est à dire un point de départ (« offset ») dans le fichier et une longueur (« length »), pratique si un transfert a été interrompu en plein milieu, par une coupure de courant par exemple.</p><p>Le reste, c'est la <a href="https://xmpp.org/extensions/xep-0095.html">XEP-0095</a> qui s'en occupe, il s'agit juste de négocier la méthode à utiliser, le destinataire accepte ou non le flux, et choisi une des méthodes. Il y a 2 méthodes principales : la première est le transfert en interne (« In-Band Bytestreams », <a href="https://xmpp.org/extensions/xep-0047.html">XEP-0047</a>) qui se contente de transcoder les données en <a href="https://fr.wikipedia.org/wiki/base64" title="Définition Wikipédia">base64</a>.</p><p>La deuxième (la <a href="https://xmpp.org/extensions/xep-0065.html">XEP-0065</a>, « SOCKS5 Bytestreams ») est plus intéressante, elle utilise <a href="https://fr.wikipedia.org/wiki/SOCKS#SOCKS_v5">SOCKS v5</a> pour établir une connexion externe (« out-band ») et tenter une connexion directe ou via un « proxy » qui est un élément externe relayant les données. L'utilisation d'un proxy est moins efficace qu'une connexion directe bien entendu (les données passent par un 3ᵉ point), mais est parfois nécessaire si une connexion directe est impossible à cause d'un <a href="https://fr.wikipedia.org/wiki/Pare-feu_%28informatique%29">pare-feu</a> ou d'un <a href="https://fr.wikipedia.org/wiki/Network_address_translation">NAT</a> par exemple. XMPP permet, grâce à disco (la <a href="https://xmpp.org/extensions/xep-0030.html">XEP-0030</a>) de savoir automatiquement si votre serveur propose un proxy.<br>C'est donc la <a href="https://xmpp.org/extensions/xep-0065.html">XEP-0065</a> qui est à l'origine du nom « proxy65 » couramment utilisé.<br>Petit détail qui a son importance : dans le cas du transfert direct, la connexion se fait du destinataire vers l'expéditeur (qui a ouvert un port pour l'occasion), aussi la connexion peut échouer dans beaucoup de cas (par exemple l'expéditeur est derrière un NAT). Une méthode a été faite pour améliorer la situation, mais elle n'a jamais été standardisée, vous pouvez la trouver ici : <a href="http://delta.affinix.com/specs/stream.html">http://delta.affinix.com/specs/stream.html</a>.</p><p>Voilà pour la méthode actuelle. Elle pose de nombreux problèmes : c'est uniquement l'expéditeur qui doit proposer et le destinataire accepte ou refuse, il n'y a pas de vraie méthode de secours (appelée « fallback » en anglais), c.-à-d. de méthode pour passer de SOCKS5 (ou « s5b ») au transfert « in-band » (ou « ibb »), et il y a souvent des difficultés pour établir une connexion directe comme expliqué au paragraphe précédent. Bref, ça n'est pas satisfaisant. Mais le problème est assez complexe, il n'est pas si simple de faire une connexion directe, c'est à dire pair à pair (ou « peer to peer » en anglais).</p><p>Heureusement, une nouvelle méthode est apparue, et elle est beaucoup plus souple et efficace : Jingle. Mais cet article étant déjà long, j'en parlerai la prochaine fois.</p><p>J'en profite pour annoncer que je vais commencer une série d'articles pour expliquer l'architecture et ce qu'on peut faire concrètement avec « Salut à Toi ».</p><p>Je vous rappelle aussi que nous avons une campagne de financement participatif en cours pour porter « Salut à Toi » sur Android et faire une version de bureau, et que nous avons bien besoin de soutien ! <a href="http://www.arizuka.com/fr/projects/libervia">http://www.arizuka.com/fr/projects/libervia</a><br>Merci :)</p></div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_117%3A2015/11/04/Parlons-XMPP-%C3%A9pisode-9-copie-de-fichiers-et-Jingle" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Goffi : <a href="">Parlons XMPP - &eacute;pisode 9 - copie de fichiers et Jingle</a> (04/11/2015)</li></ul></div></p>


title: Goffi : SàT: Comment ça marche ?
uri: 2016-03-09-Goffi-SàT-Comment-ça-marche
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_118%3A2015/11/09/S%C3%A0T%3A-Comment-%C3%A7a-marche

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_118%3A2015/11/09/S%C3%A0T%3A-Comment-%C3%A7a-marche

content:
<p>Salut à vous,<br><br>En parallèle <a href="http://www.goffi.org/tag/parlons_xmpp">de la série d'articles sur XMPP</a>, j'en commence une pour expliquer « <a href="http://salut-a-toi.org/">Salut à Toi</a> », notre logiciel à tout faire basé sur ce protocole. Il y a beaucoup de choses qui tournent autour de ce logiciel, sur son organisation technique, sa philosophie, et ce qu'on peut faire avec. Aussi je vais faire des articles plus ou moins techniques (plutôt moins), et je vais bientôt expliquer quelques cas concrets d'utilisation.</p><div><br>Ce premier article est un peu technique, puisque je vais expliquer l'organisation générale du logiciel, et ce qu'elle a de particulier.<br><br>Donc pour vous donner une idée, SàT c'est dans les grandes lignes ça:<br><br><img src="media/0e11bab9.sat_simplified_overview.png" data-original-source="http://ftp.goffi.org/media/pictures/schemas/sat_simplified_overview.png" alt="http://ftp.goffi.org/media/pictures/schemas/sat_simplified_overview.png" height="336" width="502"><br><br>C'est un client XMPP. Si vous avez lu mes articles, vous savez que XMPP ne signifie pas que « messagerie instantanée », mais beaucoup, beaucoup plus de choses. Le projet SàT essaye non seulement de faire le maximum de ces choses, mais aussi d'expérimenter de nouvelles.<br><br>La partie centrale <b>①</b> est la partie « d'arrière-plan » ou « backend » en anglais. C'est elle qui gère le plus gros du logiciel. La partie à droite <b>②</b> sont les « frontaux » (« frontends » en anglais) ou encore les interfaces homme/machine. C'est elles qui gèrent tout l'affichage des informations, ou la réception des commandes et autres messages.<br><br>Ce qui fait la force de cette architecture, c'est qu'il est très facile de faire un nouveau frontal, et que le tout représente <strong><u>un seul client</u></strong>. Autrement dit : si vous créez un profil (voir plus bas) sur un frontal, il sera disponible sur tous les autres, si vous envoyez un message d'un côté, il sera visible sur tous les frontaux connectés, l'historique est commun, les fonctionnalités aussi.<br>En effet, quand on ajoute une fonctionnalité (les messages de groupe par exemple, la copie de fichier, les blogs), c'est dans le « backend » que nous le faisons, et elle se retrouve ainsi disponible partout. Évidemment dans certains cas ça demande du développement particulier pour les interfaces : nous avons un jeu de Tarot par exemple, et on ne dessine pas les cartes de la même manière dans l'interface console (appelée Primitivus) et dans l'interface web (appelée Libervia).<br><br>Les interfaces (ou frontaux) disponibles aujourd'hui sont:<br> <ul><li><b>Libervia</b> : interface web </li><li><b>Primivus</b> : interface de console (avec des fenêtres de type <a href="https://fr.wikipedia.org/wiki/Ncurses" hreflang="fr">ncurses</a>) </li><li><b>jp</b>: ligne de commande, permet d'automatiser des tâches facilement, d'envoyer un fichier dans parcourir des menus, d'écrire depuis Vim, etc </li></ul><p><br>Nous avions une autre interface pour le bureau, appelée « <i>Wix</i> », mais nous l'avons abandonnée, car elle était peu pratique et peu utilisée. Notre campagne de financement en cours permettra de remplacer cette interface et par la même occasion de porter le projet sur Android.</p><p>Cette architecture a un autre avantage : il est facile d'intégrer SàT dans des logiciels existants, et avec n'importe quel langage de programmation, mais laissons cela de côté pour le moment.<br><br>SàT a également une architecture modulaire via l'utilisation de greffons (ou « plugins » en anglais) au niveau du <b>③</b> sur le schéma : le cœur ne gère que l'essentiel (messages simples, liste de contacts, système de logs, gestion des profils, etc), et toutes les fonctionnalités avancées sont disponibles sous forme de greffons (messages de groupe, blog/microblogs, syntaxes avancées, etc). L'idée est d'une part de pouvoir désactiver les fonctionnalités qu'on ne veut pas, et d'autres part de permettre d'étendre facilement le logiciel : un greffon sera d'autant plus intéressant qu'il sera disponible pour toutes les interfaces. Ainsi un de nos greffons gère les marque-pages (c.-à-d. une liste de salons de discussions) : ils sont utilisables à la fois avec Primitivus (en texte), avec Libervia (graphiquement via le web) ou encore avec jp (en ligne de commande). À terme nous comptons faire un système de téléchargement automatisé de greffons, un peu comme les dépôts de logiciels.<br><br>Nous avons besoin de travailler un peu côté serveur, pour notre composant <a href="http://www.goffi.org/post/2015/09/08/Parlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP">PubSub</a> ou notre annuaire par exemple, nous avons donc aussi quelques travaux de ce côté.</p></div><div> </div><div>Enfin les profils dont je parlais plus haut sont des comptes locaux associés à un compte XMPP. Ainsi j'ai un profil pour mon compte sur le serveur <i>jabber.fr</i> et un autre pour celui sur <i>libervia.org</i>, je peux utiliser l'un ou l'autre ou les 2 en même temps.<br> <br>Voilà pour une première introduction, un peu technique parce que je voulais expliquer l'originalité de l'architecture. La prochaine fois je pense parler un plus spécifiquement de Libervia, et du système de blogs/microblogs décentralisé.<br><br>N'oubliez pas que nous avons <a href="http://www.arizuka.com/fr/projects/libervia">une campagne de financement en cours</a>, et nous avons grand besoin de soutien ! Merci.<br> </div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_118%3A2015/11/09/S%C3%A0T%3A-Comment-%C3%A7a-marche" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : centralisé, décentralisé, P2P, mais c'est quoi tout ça ?
uri: 2016-03-09-Goffi-centralisé-décentralisé-P2P-mais-c-est-quoi-tout-ça
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_119%3A2015/11/10/centralis%C3%A9%2C-d%C3%A9centralis%C3%A9%2C-P2P%2C-mais-c-est-quoi-tout-%C3%A7a

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_119%3A2015/11/10/centralis%C3%A9%2C-d%C3%A9centralis%C3%A9%2C-P2P%2C-mais-c-est-quoi-tout-%C3%A7a

content:
<p>Une petite mise au point technique, parce que je vois qu'il y a beaucoup de confusion sur les termes « <i>centralisé</i> » (encore lui ça va), « <i>décentralisé</i> », « <i>distribué</i> », « <i>fédéré</i> », « <i>pair à pa</i><i>ir</i> », etc.<br><br>Il faut dire que la confusion est assez normale, il n'y a pas vraiment de définition de ces termes, et ce que les gens entendent en les employant dépend de leurs lectures, leur compréhension, et leur sensibilité.<br><br>Commençons par le plus simple : <b>centralisé</b>. Un système centralisé c'est un système où tout le monde dépend d'une même autorité, un serveur a priori dans le cas informatique. Bien qu'un système centralisé soit beaucoup plus simple à faire sur le plan technique (facile de trouver des gens ou des informations quand ils sont tous au même endroit), il peut avoir ses propres problèmes : montée en charge en particulier ; il est plus difficile d'absorber des données quand il n'y a qu'un centre de traitement, les tuyaux peuvent rapidement se trouver trop petits, etc.<br><br>Un système de communication centralisé pose de nombreux problèmes : il est évident qu'il est plus facile d'espionner, censurer ou modifier des données quand elles sont dépendantes d'un seul point. Même sans intention malicieuse, on a un point unique de défaillance (ce que les anglophones appellent « single point of failure »), c.-à-d. qu'une panne, une attaque, une catastrophe naturelle ou pas provoque l'arrêt du service voire la perte des archives.<br>Dans les cas les plus gros, on prend un hangar et on le remplit d'ordinateurs, ce sont les fameux centres de données ou « data centers ».<br><br>Là où ça se complique un peu, c'est qu'un système centralisé peut être physiquement en plusieurs endroits, ou utiliser des systèmes de répartition/répétition des données. Le principe est d'éviter l'engorgement ou les risques de pannes cités plus haut, mais même si ces machines sont séparées et communiquent entre elles à distance, elles sont a priori toujours sous la même autorité.</p><p><br><img src="media/7bdf1829.centralised_simple.png" data-original-source="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/centralised_simple.png" alt="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/centralised_simple.png" height="300" width="371"></p><div><p><br>Passons maintenant aux systèmes décentralisés/distribués/fédérés. Certains vont pousser les haut-cris que je mette tout ça ensemble, parce qu'il n'y pas vraiment de définition et que chacun se fait plus ou moins la sienne.<br><br>« <b>dé-centralisé</b> » veut dire qui n'a pas de centre, ni plus ni moins. L'idée pour un système de communication, c'est que toute entité (individu, association, organisation, etc) puisse être une partie d'un réseau qui n'a pas d'autorité principale, et que ces autorités puissent parler entre elles.<br><br>On essaye ainsi d'éviter les problèmes de la centralisation, mais on se retrouve avec tout un tas de nouveaux problèmes, techniques pour la plupart : il est beaucoup plus difficile de retrouver des données ou des gens en plusieurs endroits, de se mettre d'accord sur la « langue » à utiliser pour communiquer (surtout quand on a des logiciels ou des versions d'un même logiciel différents), ou encore d'être sûr que la donnée qu'on a est à jour (est-ce que le message a été modifié ou supprimé ?).<br><br>« <b>fédéré</b> » est généralement employé pour parler de systèmes différents (noms de domaines différents par exemple, voire logiciels différents) qui peuvent communiquer entre eux. Un système décentralisé est fédéré par nature, sinon on a affaire à plusieurs systèmes centralisés indépendants. Disons que si on veut être pointilleux, on peut dire qu'un système décentralisé peut communiquer avec seulement certaines entités (je communique avec les serveurs de mon entreprise internationale, mais pas avec le reste du monde), et que la fédération implique l'idée que c'est ouvert à tous (ou presque, il y a souvent des gens qu'on ne veut pas, les spammeurs par exemple).<br><br>« <b>distribué</b> » ne devrait pas être employé pour les systèmes de communication. Le terme est normalement utilisé pour le calcul : si votre ordinateur a plusieurs processeurs, il distribue la charge de calcul entre eux, ou dans le cas de très grosses demandes (recherche par exemple), on peut demander à plusieurs machines distantes de faire chacun une partie d'une grosse opération mathématique. Dans ce cas, l'organisation de la répartition est souvent contrôlé par une même autorité (par exemple le laboratoire qui veut faire cette opération).<br>Par extension, le terme est aussi utilisé pour les systèmes de fichiers, et certains l'emploient pour les logiciels de communication, mais cela ne veut pas dire autre chose que décentralisé.</p><p><br><img src="media/afd70115.decentralised_simple.png" data-original-source="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/decentralised_simple.png" alt="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/decentralised_simple.png" height="300" width="401"></p><p><br>Enfin, il y a le terme P2P ou « <b>pair à pair</b> » (« peer to peer » en anglais). En fait une connexion pair à pair n'est rien d'autre qu'une connexion directe entre 2 ordinateurs, mais on l'associe souvent aux technologies plus ou moins apparentées qui ont commencé à apparaître à la fin des années 90/au début des années 2000 et qui servaient (et servent toujours) principalement à partager des fichiers.<br><br>Après <i>Napster</i> (lancé mi 1999) qui était un bête système centralisé qui mettait en relation des machines pour une connexion directe, il y a eu beaucoup d'essais et d'évolutions pour trouver un système qui permet de se passer de serveurs, l'idée étant principalement de permettre au réseau de fonctionner même si on lui coupe l'accès à une partie de lui-même.<br><br>Je vous passe toutes les techniques qui sont utilisées : c'est un domaine très pointu, très intéressant, et qui demanderait facilement un livre pour être expliqué. Ça part des systèmes de répartition par propagation de proche en proche à la Usenet, jusqu'aux récentes chaînes de blocs (blockchain), en passant par les tables de hachage distribuée (Distributed Hash Table), etc.<br><br>Ce qui fait principalement la différence entre un système « décentralisé » et « entièrement P2P », c'est la place du serveur. Un serveur, dans les grandes lignes, c'est ce qui permet à votre logiciel (le « client ») de contacter d'autres clients via d'autres serveurs. Il est là pour tout un tas de raisons : identifier les gens, donner les bonnes données aux bonnes personnes, garder<br>les fichiers à donner à un client actuellement hors ligne quand il sera disponible, etc.<br>Si on supprime le serveur, inévitablement c'est votre client (ou un autre) qui va devoir se charger de ce travail, ce qui aura un impact sur votre bande passante, la charge de travail pour votre processeur (et donc la durée de vie de votre batterie le cas échéant), et compliquera la tâche de votre logiciel (plus difficile de savoir à qui parler et à qui faire confiance quand on n'a pas de serveur comme référence).</p><p><img src="media/472c5950.fully_P2P_simple.png" data-original-source="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/fully_P2P_simple.png" alt="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/fully_P2P_simple.png" height="300" width="414"><br><br>Pour transformer un système décentralisé avec serveurs en système entièrement P2P (c.-à-d. sans serveur), je vais vous donner une recette : vous mettez un seul client sur votre serveur, et vous mettez le serveur et le client sur la même machine.<br>Bien sûr si vous voulez être vraiment indépendant, il va falloir supprimer le besoin de points de références, et en particulier le système de noms de domaine ou « Domain Name System ». C'est ce qui associe le nom de votre serveur (par exemple « libervia.org ») à l'adresse « IP » qui permet de vous retrouver sur Internet. Il va falloir aussi être capable de retrouver les données ou les gens un peu partout, et là on se retrouve avec les technologies intéressantes mais complexes évoquées plus haut (« D.H.T. », « Blockchain », « SuperPeer », etc).<br> </p><h2>Et XMPP dans tout ça ?</h2><p>Je vais quand même parler un peu de XMPP. XMPP est un système dit « <b>hybride</b> », c'est à dire qu'il fonctionne normalement sur un modèle client/serveur, mais il peut faire du P2P à la demande (pour transférer un fichier ou faire de la visioconférence par exemple).<br>Il est même possible de fonctionner sans serveur sur un réseau local (<a href="https://xmpp.org/extensions/xep-0174.html" target="_blank">comme expliqué ici</a>), et il peut parfaitement devenir à terme un système entièrement P2P comme expliqué dans le paragraphe précédent.<br><br>Ceci dit, même si l'approche entièrement P2P est séduisante, je pense que l'architecture décentralisée sur un modèle client/serveur est un compromis bien plus efficace : elle limite le travail de votre client, permet une meilleure optimisation du trafic ou du calcul, et facilite l'échange asynchrone (quand deux personnes ne sont pas connectées en même temps). Bref, c'est tout sauf un modèle du passé comme on peut le lire parfois, et bien qu'il y ait plusieurs recherches et options intéressantes pour des systèmes entièrement P2P, il ne faudrait pas jeter le bébé avec l'eau du bain.</p></div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_119%3A2015/11/10/centralis%C3%A9%2C-d%C3%A9centralis%C3%A9%2C-P2P%2C-mais-c-est-quoi-tout-%C3%A7a" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Libervia/Salut à Toi à « fêtons Linux » (Lausanne 28/11/2015)
uri: 2016-03-09-Goffi-Libervia-Salut-à-Toi-à-fêtons-Linux-(Lausanne-28-11
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_120%3A2015/11/20/Libervia/Salut-%C3%A0-Toi-%C3%A0-%C2%AB-f%C3%AAtons-linux-%C2%BB-%28Lausanne-28/11/2015%29

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_120%3A2015/11/20/Libervia/Salut-%C3%A0-Toi-%C3%A0-%C2%AB-f%C3%AAtons-linux-%C2%BB-%28Lausanne-28/11/2015%29

content:
<p>Un rapide billet pour vous dire que nous avons été invités à participer à « <a href="http://www.fetonslinux.ch/">fêtons Linux</a> », une journée de rencontre autour des logiciels libres et de Gnu/Linux.</p>


<p>J'y ferai 2 conférences, une technique de 45 min pour expliquer le cœur du projet (à 13h), et une plus grand public de 20 min (à 14h30), et bien sûr je serai présent toute la journée pour discuter (je passerai également par Genève s'il y a du monde qui veut s'y retrouver).</p>


<p>Un grand merci à l'organisation.</p>


<p>Nous avons également passé le premier palier pour notre campagne de financement, c'est à dire que nous sommes engagés à faire un prototype de version de bureau. Mais il nous manque encore un peu moins de 2000 € pour la version Android, et nous avons 2 semaines pour y arriver, aussi faite tourner ce lien partout ou vous pouvez, nous avons besoin d'un coup de pouce pour nous faire connaître : <a href="http://www.arizuka.com/fr/projects/libervia" hreflang="fr">www.arizuka.com/fr/projects/libervia</a> (ou en anglais: <a href="http://www.arizuka.com/en/projects/libervia" hreflang="en">www.arizuka.com/en/projects/libervia</a>). Merci !</p>


<p>Je n'ai pas eu le temps d'écrire d'article cette semaine car je suis débordé par le développement : nous espérons sortir la nouvelle version très bientôt.</p>


<p>À bientôt</p>


<p>N.B.: j'ai dû temporairement mettre la modération a priori sur les commentaires, j'ai depuis 2 semaines une vague de spam qui passe les filtres en place.</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_120%3A2015/11/20/Libervia/Salut-%C3%A0-Toi-%C3%A0-%C2%AB-f%C3%AAtons-linux-%C2%BB-%28Lausanne-28/11/2015%29" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Libervia (Salut à toi) 0.6.0 : des avancées majeures !
uri: 2016-03-09-Goffi-Libervia-(Salut-à-toi)-0-6-0-des-avancées-majeures
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_121%3A2015/12/02/Libervia-%28Salut-%C3%A0-toi%29-0.6.0-%3A-des-avanc%C3%A9es-majeures-%21

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_121%3A2015/12/02/Libervia-%28Salut-%C3%A0-toi%29-0.6.0-%3A-des-avanc%C3%A9es-majeures-%21

content:
<p>Salut à vous,</p><p>Nous avons le plaisir d'annoncer la sortie de Salut à Toi (SàT) 0.6.0 et donc de son interface web « Libervia ». Pour mémoire, SàT est un « couteau suisse de la communication », un outil libre et décentralisé permettant de partager publiquement ou de façon privée des messages, des fichiers, des articles de blog, de microblog, etc.</p><p>Le projet a de nombreuses fonctionnalités allant du chiffrement de bout en bout aux jeux, et peut également servir de base pour créer de nouveaux réseaux.<br>C'est aussi un projet éthique, géré par une association loi 1901, suivant un « contrat social », utilisant exclusivement des logiciels libres, militant pour la décentralisation, et fermement opposé à la publicité.</p><p><br>Cette version a vu un très gros travail sur le système de blogs : Libervia offre un moteur de blog décentralisé, accessible à des groupes restreints ou de l'extérieur, et entièrement basé sur le protocole standard et ouvert « XMPP ». L'utilisation de ce standard permet de communiquer avec d'autres projets comme Movim ou Jappix, créant ainsi un grand réseau libre.<br><br>Le partage de fichiers en pair à pair (P2P) a aussi été grandement amélioré grâce au protocole « Jingle », ouvrant la voie pour de futures applications comme la visioconférence.</p><p>L'annonce officielle est disponible sur le blog suivant (basé sur Libervia) : <a href="https://libervia.org/blog/salut-a-toi">https://libervia.org/blog/salut-a-toi</a>.</p><p>Une dépêche Linuxfr plus détaillée est en cours de modération et devrait être publiée sous peu.</p><p>Une campagne de financement participatif est en cours pour faire une version de bureau (une étape déjà franchie), et une version Android. Cette campagne étant très proche de la fin, <a href="http://www.arizuka.com/fr/projects/libervia">c'est le moment de nous soutenir !</a></p><p><br> <img src="media/1a5af7d4.overview.png" data-original-source="http://ftp.goffi.org/media/screenshots/0.6/overview.png" alt="http://ftp.goffi.org/media/screenshots/0.6/overview.png" height="277" width="551"> </p><p> </p><p><em>site officiel </em><i>:</i> <a href="http://salut-a-toi.org/">http://salut-a-toi.org</a><br><i>démo :</i> <a href="https://libervia.org/">https://libervia.org</a><br><i>campagne de financement :</i> <a href="https://www.arizuka.com/fr/projects/libervia">https://www.arizuka.com/fr/projects/libervia</a><br>N'hésitez pas à nous contacter (<a href="http://salut-a-toi.org/community.html">http://salut-a-toi.org/community.html</a>)</p><p>L'équipe « Salut à Toi »</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_121%3A2015/12/02/Libervia-%28Salut-%C3%A0-toi%29-0.6.0-%3A-des-avanc%C3%A9es-majeures-%21" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Appel à la communauté: aidez moi à traduire la série « Parlons XMPP »
uri: 2016-03-10-Goffi-Appel-à-la-communauté-aidez-moi-à-traduire-la-série-P
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_107%3A2015%2F07%2F27%2FAppel-%C3%A0-la-communaut%C3%A9%3A-aidez-moi-%C3%A0-traduire-la-s%C3%A9rie-%C2%AB-Parlons-XMPP-%C2%BB

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_107%3A2015%2F07%2F27%2FAppel-%C3%A0-la-communaut%C3%A9%3A-aidez-moi-%C3%A0-traduire-la-s%C3%A9rie-%C2%AB-Parlons-XMPP-%C2%BB

content:
<p>Salut à vous,</p>

<p>la série que j'ai commencé fin juin, « <a href="http://www.goffi.org/tag/parlons_xmpp" hreflang="fr" title="Parlons XMPP">Parlons XMPP</a> » a plus de succès que ce à quoi je m'attendais (surtout en été !), et a incité plusieurs personnes à regarder un peu plus ce que peut faire ce protocole.</p>

<p>Du coup j'aimerais bien traduire la série en anglais (ou autre !), mais je n'ai vraiment pas le temps de le faire moi même, vu que je dois déjà travailler sur Salut à Toi, et que l'écriture des articles en français me prend beaucoup de temps.</p>

<p>Alors je veux tenter le coup avec une traduction collaborative, un peu comme ce que fait framasoft pour traduire des articles de l'anglais vers le français, mais dans l'autre sens.</p>

<p>Tous les articles sont sous licence libre (Cc By-SA), et il faut bien noter que je parle souvent de « <a href="http://salut-a-toi.org/" title="Salut à Toi site officiel">Salut à Toi</a> » sur lequel je travaille, même si je parle aussi d'autres projets.</p>

<p>Bref, je tente le coup, j'ai ouvert un framapad avec le premier article.</p>

<p>Si vous voulez participer ajoutez votre nom ou pseudo pour être dans les auteurs de la traduction, et vous pouvez traduire en dessous du paragraphe en français. Je demanderai une relecture par un anglophone à la fin.</p>

<p>En dehors des 6 articles déjà publiés, je pense continuer au rythme d'un par semaine au moins pendant l'été.</p>

<p>Pour aider à la traduction, c'est par ici: <a href="https://bimestriel.framapad.org/p/parlons_XMPP">https://bimestriel.framapad.org/p/parlons_XMPP</a></p>

<p>Merci d'avance !</p>

<p>Goffi</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_107%3A2015%2F07%2F27%2FAppel-%C3%A0-la-communaut%C3%A9%3A-aidez-moi-%C3%A0-traduire-la-s%C3%A9rie-%C2%AB-Parlons-XMPP-%C2%BB" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Conférences des RMLL
uri: 2016-03-10-Goffi-Conférences-des-RMLL
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_108%3A2015%2F07%2F28%2FConf%C3%A9rences-des-RMLL

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_108%3A2015%2F07%2F28%2FConf%C3%A9rences-des-RMLL

content:
<p>Salut à vous,</p>

<div> </div>

<div>j'attendais de voir les vidéos publiées, c'est désormais le cas. Notre passage aux RMLL s'est très bien passé et a été l'occasion de se faire de nouveaux contacts et d'avoir des discussions très intéressantes. J'ai particulièrement apprécié participer à la table ronde sur les nouveaux médias, et rencontrer Arno de SPIP/SeenThis (je connaissais déjà les autres participants).</div>

<div> </div>

<div>Je n'ai pas eu l'occasion de voir beaucoup de conférences car j'étais au stand, mais je viens bien sûr vous recommander de voir celles sur XMPP ou en particulier la table ronde sur les nouveaux médias:</div>

<div>

<p>Toutes les interventions étaient vraiment intéressantes, y compris dans le public. Merci à ceux qui y ont participé, et à Olicat pour avoir animé.</p>
</div>

<div>
<p>En ce qui concerne XMPP, il y a bien sur les conférences de Libervia et Movim. Pour Libervia la qualité est vraiment mauvaise, aussi je vous recommande plutôt la version de Pas Sage En Seine, c'est la même conférence:</p>
</div>

<div>

<p>Libervia</p>
</div>

<div>

<p>Movim</p>
</div>

<div>
<p>Et sur un plan plus technique, la conférence « PubSub, Microblogage et XMPP » dont j'ai déjà parlé plusieurs fois:</p>
</div>

<div></div>

<div>
<p>En dehors de ça comme je l'ai dit je n'ai pas pu voir beaucoup de conférences. J'ai particulièrement aimé celle de Paul Kocialkowski sur Replicant (en anglais, il y en a aussi eu une en français que je n'ai pas pu voir, je ne sais pas si c'est le même ou pas, du coup je mets les 2):</p>
</div>

<div></div>

<div>
<p>À voir aussi celle de Gelnior (de Newebe/Cozy cloud) sur la conception graphique, je l'avais vue aux JDLL:</p>
</div>

<div></div>

<div>
<p>Enfin, autre conférence que je n'ai pas (encore) vue, mais comme on en parle dans la table ronde je la mets ici, la conférence « SPIP et sa communauté »:</p>
</div>

<div></div>

<div> </div>

<div>Il y en a eu beaucoup d'autres, aussi n'hésitez pas à préciser en commentaires celles que vous conseillez.</div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_108%3A2015%2F07%2F28%2FConf%C3%A9rences-des-RMLL" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Parlons XMPP - épisode 7 - cas pratiques: SleekXMPP et SàT
uri: 2016-03-10-Goffi-Parlons-XMPP-épisode-7-cas-pratiques-SleekXMPP-et-SàT
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_112%3A2015%2F08%2F06%2FParlons-XMPP-%C3%A9pisode-7-cas-pratiques%3A-SleekXMPP-et-S%C3%A0T

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_112%3A2015%2F08%2F06%2FParlons-XMPP-%C3%A9pisode-7-cas-pratiques%3A-SleekXMPP-et-S%C3%A0T

content:
<style type="text/css">/* Styles pour Pygments (coloration syntaxique) */

.hll { background-color: #ffffcc }
.c { color: #408080; font-style: italic } /* Comment */
.err { border: 1px solid #FF0000 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666666 } /* Operator */
.cm { color: #408080; font-style: italic } /* Comment.Multiline */
.cp { color: #BC7A00 } /* Comment.Preproc */
.c1 { color: #408080; font-style: italic } /* Comment.Single */
.cs { color: #408080; font-style: italic } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gr { color: #FF0000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #00A000 } /* Generic.Inserted */
.go { color: #888888 } /* Generic.Output */
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #0044DD } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #008000 } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #B00040 } /* Keyword.Type */
.m { color: #666666 } /* Literal.Number */
.s { color: #BA2121 } /* Literal.String */
.na { color: #7D9029 } /* Name.Attribute */
.nb { color: #008000 } /* Name.Builtin */
.nc { color: #0000FF; font-weight: bold } /* Name.Class */
.no { color: #880000 } /* Name.Constant */
.nd { color: #AA22FF } /* Name.Decorator */
.ni { color: #999999; font-weight: bold } /* Name.Entity */
.ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.nf { color: #0000FF } /* Name.Function */
.nl { color: #A0A000 } /* Name.Label */
.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #19177C } /* Name.Variable */
.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mb { color: #666666 } /* Literal.Number.Bin */
.mf { color: #666666 } /* Literal.Number.Float */
.mh { color: #666666 } /* Literal.Number.Hex */
.mi { color: #666666 } /* Literal.Number.Integer */
.mo { color: #666666 } /* Literal.Number.Oct */
.sb { color: #BA2121 } /* Literal.String.Backtick */
.sc { color: #BA2121 } /* Literal.String.Char */
.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.s2 { color: #BA2121 } /* Literal.String.Double */
.se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.sh { color: #BA2121 } /* Literal.String.Heredoc */
.si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.sx { color: #008000 } /* Literal.String.Other */
.sr { color: #BB6688 } /* Literal.String.Regex */
.s1 { color: #BA2121 } /* Literal.String.Single */
.ss { color: #19177C } /* Literal.String.Symbol */
.bp { color: #008000 } /* Name.Builtin.Pseudo */
.vc { color: #19177C } /* Name.Variable.Class */
.vg { color: #19177C } /* Name.Variable.Global */
.vi { color: #19177C } /* Name.Variable.Instance */
.il { color: #666666 } /* Literal.Number.Integer.Long */
</style><p>(pour lire les épisodes précédents, suivez <a href="http://www.goffi.org/tag/parlons_xmpp">l'étiquette correspondante</a>)</p>

<p>Comme cela a été demandé plusieurs fois, nous allons pour cet article faire un petit cas pratique avec deux bots XMPP.</p>

<h2>SleekXMPP</h2>

<p>c'est <a href="http://sleekxmpp.com/">SleekXMPP</a> que nous allons tester, que je n'avais jamais utilisé avant cet article. Il s'agit d'une bibliothèque Python qui se veut simple, avec peu de dépendances, et gérant tout avec des greffons. Vous pouvez aussi utiliser le fork (amical) fait pour Poezio, <a href="https://dev.louiz.org/projects/slixmpp">Slixmpp</a> qui a réécrit le cœur de la bibliothèque pour tout gérer en asynchrone (sans thread) via le récent asyncio (aussi il faut une version de Python >= à 3.4, alors que SleekXMPP fonctionne avec Python 2 et 3).</p>

<p>Sans entrer trop dans les détails, que vous trouverez sur le site officiel avec plusieurs tutoriels (<a href="http://sleekxmpp.com/">http://sleekxmpp.com/</a>), faisons un simple bot qui répond à des commandes ad-hoc (aucun lien avec Tintin, voir plutôt l'<a href="http://www.goffi.org/post/2015/07/27/Parlons-XMPP-%C3%A9pisode-6-les-commandes-%C3%A0-distance">épisode 6</a>):</p>

<p>Ce script est une adaptation de <a href="https://github.com/fritzy/SleekXMPP/blob/develop/examples/adhoc_provider.py">l'exemple donné dans le dépôt officiel</a> (<a href="https://github.com/fritzy/SleekXMPP/blob/develop/LICENSE">voir sa licence</a>). Des explications sont données après le script, et il devrait fonctionner avec Python 2.6 ou supérieur ou 3.1 ou supérieur.</p>

<pre>
<code><span>#!/usr/bin/env python</span>
<span># -*- coding: utf-8 -*-</span>
<span>import</span> <span>sleekxmpp</span>
<span>from</span> <span>sleekxmpp</span> <span>import</span> <span>jid</span>

<span>JID</span><span>=</span><span>"mon_super_bot@mon_super_server.tld"</span>
<span>PWD</span><span>=</span><span>"mon_super_mot_de_passe"</span>
<span>ADMIN</span><span>=</span><span>jid</span><span>.</span><span>JID</span><span>(</span><span>"mon_admin@mon_super_server.tld"</span><span>)</span>
<span>CMD_ENVOI</span> <span>=</span> <span>u'envoi message'</span>
<span>CMD_DECO</span> <span>=</span> <span>u'déconnexion'</span>
<span>CMD_ADMIN</span> <span>=</span> <span>u'gros bouton rouge'</span>


<span>class</span> <span>MonSuperBot</span><span>(</span><span>sleekxmpp</span><span>.</span><span>ClientXMPP</span><span>):</span>

    <span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>
        <span>sleekxmpp</span><span>.</span><span>ClientXMPP</span><span>.</span><span>__init__</span><span>(</span><span>self</span><span>,</span> <span>JID</span><span>,</span> <span>PWD</span><span>)</span>
        <span>self</span><span>.</span><span>add_event_handler</span><span>(</span><span>"session_start"</span><span>,</span> <span>self</span><span>.</span><span>session_start</span><span>)</span>
        <span># note 1</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0030'</span><span>)</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0004'</span><span>)</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0050'</span><span>)</span>
        <span>self</span><span>.</span><span>register_plugin</span><span>(</span><span>'xep_0199'</span><span>,</span> <span>{</span><span>'keepalive'</span><span>:</span> <span>True</span><span>,</span> <span>'frequency'</span><span>:</span><span>15</span><span>})</span>

    <span>def</span> <span>session_start</span><span>(</span><span>self</span><span>,</span> <span>event</span><span>):</span>
        <span># note 2</span>
        <span>self</span><span>.</span><span>send_presence</span><span>()</span>
        <span>self</span><span>.</span><span>get_roster</span><span>()</span>
        <span>self</span><span>[</span><span>'xep_0050'</span><span>]</span><span>.</span><span>add_command</span><span>(</span><span>node</span><span>=</span><span>'monbot'</span><span>,</span>
                                     <span>name</span><span>=</span><span>u'Commandes de monbot'</span><span>,</span>
                                     <span>handler</span><span>=</span><span>self</span><span>.</span><span>_handle_commands</span><span>)</span>

    <span>def</span> <span>_handle_commands</span><span>(</span><span>self</span><span>,</span> <span>iq</span><span>,</span> <span>session</span><span>):</span>
        <span>form</span> <span>=</span> <span>self</span><span>[</span><span>'xep_0004'</span><span>]</span><span>.</span><span>makeForm</span><span>(</span><span>'form'</span><span>,</span> <span>'bot'</span><span>)</span>
        <span>form</span><span>[</span><span>'instructions'</span><span>]</span> <span>=</span> <span>u'Choisissez une commande'</span>
        <span>options</span> <span>=</span> <span>[</span><span>CMD_ENVOI</span><span>,</span> <span>CMD_DECO</span><span>]</span>

        <span># note 3</span>
        <span>if</span> <span>session</span><span>[</span><span>'from'</span><span>]</span><span>.</span><span>bare</span> <span>==</span> <span>ADMIN</span><span>:</span>
            <span>options</span><span>.</span><span>append</span><span>(</span><span>CMD_ADMIN</span><span>)</span>

        <span>form</span><span>.</span><span>addField</span><span>(</span><span>var</span><span>=</span><span>'command'</span><span>,</span>
                      <span>label</span><span>=</span><span>u'commande'</span><span>,</span>
                      <span>ftype</span><span>=</span><span>'list-single'</span><span>,</span>
                      <span>required</span><span>=</span><span>True</span><span>,</span>
                      <span>options</span><span>=</span><span>options</span>
                      <span>)</span>

        <span>session</span><span>[</span><span>'payload'</span><span>]</span> <span>=</span> <span>form</span>
        <span>session</span><span>[</span><span>'next'</span><span>]</span> <span>=</span> <span>self</span><span>.</span><span>_handle_command_complete</span>
        <span>session</span><span>[</span><span>'has_next'</span><span>]</span> <span>=</span> <span>False</span>

        <span>return</span> <span>session</span>

    <span>def</span> <span>_handle_command_complete</span><span>(</span><span>self</span><span>,</span> <span>payload</span><span>,</span> <span>session</span><span>):</span>
        <span>form</span> <span>=</span> <span>payload</span>
        <span>command</span> <span>=</span> <span>form</span><span>[</span><span>'values'</span><span>][</span><span>'command'</span><span>]</span>

        <span>if</span> <span>command</span> <span>==</span> <span>CMD_ENVOI</span><span>:</span>
            <span>self</span><span>.</span><span>send_message</span><span>(</span><span>mto</span><span>=</span><span>session</span><span>[</span><span>'from'</span><span>],</span>
                              <span>mbody</span><span>=</span><span>"Message important !"</span><span>,</span>
                              <span>mtype</span><span>=</span><span>'headline'</span><span>)</span>
        <span>elif</span> <span>command</span> <span>==</span> <span>CMD_DECO</span><span>:</span>
            <span>self</span><span>.</span><span>disconnect</span><span>(</span><span>wait</span><span>=</span><span>True</span><span>)</span> <span># note 4</span>
        <span>elif</span> <span>command</span> <span>==</span> <span>CMD_ADMIN</span><span>:</span>
            <span># note 5</span>
            <span>if</span> <span>session</span><span>[</span><span>'from'</span><span>]</span><span>.</span><span>bare</span> <span>==</span> <span>ADMIN</span><span>:</span>
                <span>session</span><span>[</span><span>'notes'</span><span>]</span> <span>=</span> <span>[(</span><span>'warning'</span><span>,</span> <span>'BOOM !'</span><span>)]</span>
            <span>else</span><span>:</span>
                <span>raise</span> <span>ValueError</span><span>(</span><span>"ce n'est pas un admin !"</span><span>)</span>
        <span>return</span> <span>session</span>


<span>if</span> <span>__name__</span> <span>==</span> <span>'__main__'</span><span>:</span>
    <span>xmpp</span> <span>=</span> <span>MonSuperBot</span><span>()</span>
    <span>if</span> <span>xmpp</span><span>.</span><span>connect</span><span>():</span> <span># note 6</span>
        <span>print</span><span>(</span><span>r"\\o/"</span><span>)</span>
        <span>xmpp</span><span>.</span><span>process</span><span>(</span><span>block</span><span>=</span><span>True</span><span>)</span>
    <span>else</span><span>:</span>
        <span>print</span><span>(</span><span>":("</span><span>)</span></code></pre>

<h3>Explications</h3>

<p>Après avoir importé sleekxmpp, nous utilisons quelques constantes (n'oubliez pas bien sûr de remplacer JID et PWD par des valeurs adaptées) pour simplifier, les exemples officiels permettent de manière plus élégante de préciser jid et mot de passe en ligne de commande.</p>

<p>Notre bot se comportera comme un client, nous héritons donc de sleekxmpp.ClientXMPP.</p>

<p>au niveau de la <strong>note 1</strong> nous implémentons les greffons qui gèrent les XEPs qui nous intéressent :</p>

<ul><li>disco (<a href="https://xmpp.org/extensions/xep-0030.html">XEP-0030</a>) pour annoncer ad-hoc, comme expliqué dans l'<a href="http://www.goffi.org/post/2015/07/01/Parlons-XMPP-%C3%A9pisode-3-le-c%C5%93ur-et-les-extensions-%28suite%29">épisode 3</a></li>
	<li>les formulaires de données (x-data, <a href="https://xmpp.org/extensions/xep-0004.html">XEP-0004</a>) et les commandes « ad-hoc » (commands, <a href="https://xmpp.org/extensions/xep-0050.html">XEP-0050</a>), expliquées dans l'<a href="http://www.goffi.org/post/2015/07/27/Parlons-XMPP-%C3%A9pisode-6-les-commandes-%C3%A0-distance">épisode 6</a></li>
	<li>la <a href="https://xmpp.org/extensions/xep-0199.html">XEP-0199</a> permet d'envoyer et de répondre à des « pings », afin de s'assurer que la connexion et les logiciels sont toujours actifs.</li>
</ul><p>À la <strong>note 2</strong> nous envoyons notre présence et demandons la liste de contacts (« roster »), ce qui est requis par les RFCs, certains serveurs pouvant refuser de répondre si ce n'est pas fait.<br>
Ensuite nous utilisons le greffon des commandes « ad-hoc » pour ajouter le point d'entrée à nos commandes.</p>

<p>Ce point d'entrée appellera la méthode « _handle_commands », et nous utilisons un formulaire (comme expliqué dans la XEP-0004) pour spécifier nos commandes. La liste « options » nous sert à indiquer nos commandes dans l'ordre voulu.</p>

<p>Au niveau de la <strong>note 3</strong>, nous profitons de l’identification forte de XMPP pour vérifier très simplement si le demandeur utilise l'adresse (jid) de notre compte privilégié, que nous avons indiqué dans la constante « ADMIN ». Nous aurons ainsi un jeu de commandes différent si nous utilisons le compte privilégié ou un autre.<br>
Évidemment si vous voulez profiter de l'authentification forte, il faut vous assurer que tout est en ordre au niveau des certificats et du chiffrement (ce que fait a priori SleekXMPP de base, consultez la documentation pour plus d'informations).</p>

<p>L'ajout de commande se fait ici par une liste à choix unique (« list-single »), mais vous pouvez demander d'autres choses comme des mots de passe ou des jids, tout est expliqué dans la XEP-0004.</p>

<p>Quelques précisions sur ad-hoc : à chaque « page » vous pouvez effectuer une action:</p>

<ul><li><em>cancel</em> pour annuler</li>
	<li><em>prev</em> pour revenir en arrière</li>
	<li><em>execute</em> pour lancer une commande ou continuer la session</li>
	<li><em>next</em> pour passer à la page suivante</li>
	<li><em>complete</em> pour finir la sesssion</li>
</ul><p>Ces actions sont gérées par sleekXMPP à travers le dictionnaire « session », la meilleure documentation que j'ai trouvée sur le sujet est le code lui-même : dans le fichier « sleekxmpp/plugins/xep_0050/adhoc.py » présent dans les sources.</p>

<p>Ad-hoc permet également d'indiquer un message, une « note », pour donner l'état de votre commande, elle peut avoir un type « info », « warn » (warning: attention) ou « error » (erreur).</p>

<p>Dans le code nous indiquons que nous avons notre dernière « page » par « session['has_next'] = False », et qu'il faut traiter la réponse dans « _handle_command_complete ». Oui c'est un peu contre-intuitif d’avoir à la fois has_next à False, et un next, mais ce dernier correspond à la réponse et non à une nouvelle page.</p>

<p>Passons à ces réponses. Nous regardons ce qui est dans le formulaire pour savoir quoi faire. Dans le premier cas nous envoyons un message manchette ou « headline » (voir l'<a href="http://www.goffi.org/post/2015/06/25/Parlons-XMPP-%C3%A9pisode-2-le-c%C5%93ur-et-les-extensions">épisode 2</a>)</p>

<p>Dans le deuxième cas (au niveau de la <strong>note 4</strong>) on fait une déconnexion. Alors j'ai eu un problème ici avec SleekXMPP, que j'utilise pour la première fois comme indiqué plus haut : il faudrait pour faire propre terminer la session ad-hoc avant de déconnecter, mais je n'ai pas trouvé de moyen simple de le faire, vu que la déconnexion est immédiate et qu'il faut retourner le dictionnaire session pour terminer la séquence. Peut-être que je suis passé à côté de quelque chose, n'hésitez pas préciser en commentaire si vous avez une astuce.</p>

<p>Passons à la <strong>note 5</strong>: je refais une vérification du jid avant de lancer la commande privilégiée. La raison est simple: le formulaire est envoyé du client au bot par le serveur sans être vérifié par ce dernier, c'est au bot à le faire. Il est interdit d'ajouter une nouvelle commande, mais comme je doute que SleekXMPP conserve le formulaire d’origine pour vérifier qu'il n'y a rien de nouveau, un attaquant pourrait ajouter la commande privilégiée sans être admin. Cette vérification permet de l'éviter.</p>

<p>Pour faire propre il faudrait envoyer une réponse XMPP précisant que l'action est interdite, mais pour faire simple je me suis contenté d'une exception ici.</p>

<p>Enfin, au niveau de la <strong>note 6</strong> on se connecte. Pour un serveur local de test, si vous n'avez pas de serveur DNS configuré comme il faut, vous pouvez spécifier l'adresse ip ou le nom de domaine local en dur, ainsi que le port (par exemple « self.connect(('localhost', 5222)) ». Si votre certificat n'est pas valide, vous pouvez aussi utiliser « use_tls=False » (pour les tests uniquement !). La documentation de SleekXMPP vous indiquera plus clairement comment gérer correctement les certificats.</p>

<p>Enfin, un autre problème que j'ai eu avec SleekXMPP: il ne semble pas possible avec ma version (1.3.1) d'indiquer de ne pas utiliser de commande « exécuter » ou de spécifier son équivalence (ce qui est pourtant possible avec la XEP-0050). Il faudrait qu'elle soit absente ou équivalent à « compléter ». Vous allez ainsi avoir un bouton qui sera inutile, et provoquera même une erreur. Là encore si quelqu'un plus habitué à la bibliothèque peut indiquer en commentaire comment corriger cela. Utilisez donc le bouton « compléter » (ou « finir ») et non « exécuter » de votre client.</p>

<p>Voilà la capture de notre bot piloté par Gajim:</p>

<p><img src="https://goffi.org:5281/upload/75bef9f4-6530-4960-9a59-6708ec7395fb/WvESBh5p" alt="bot piloté par Gajim" title="bot piloté par Gajim" width="80%" height="80%"></p>

<h2>Salut à Toi</h2>

<p>Pour indiquer les ajouts faits au code, nous utilisons un bot dénommé « Sabot ». Nous gérons les sources avec <a href="https://mercurial.selenic.com/">Mercurial</a> (sur <a href="https://repos.goffi.org/">https://repos.goffi.org/</a>). Celui-ci permet d'exécuter une commande via des crochets (« hooks »), dont un qui est lancé à chaque série de commits: incoming. Nous avons donc ceci dans notre hgrc:</p>

<pre>
<code><span>[hooks]</span>
<span>incoming.sabot</span> <span>=</span> <span>/chemin/vers/hg_sabot_hook.sh</span></code></pre>

<p>Pour le bot, nous profitons du côté multi-interfaces de SàT: SàT a une architecture qui permet pour un même client (et donc les mêmes profils, comptes, etc) d'avoir différentes interfaces (console, ligne de commande, bureau, web, etc).</p>

<p>Nous avons donc créé le compte comme un compte normal grâce à Primitivus, l'interface console (nous sommes sur un serveur sans interface graphique disponible). On peut joindre le salon désiré (ici <a href="xmpp:sat@chat.jabberfr.org?join">sat@chat.jabberfr.org</a>), et le mêttre en favori (grâce à la XEP-0048), ainsi que gérer l'entrée automatique (« autojoin »). Il ne reste plus qu'à envoyer le message quand le script hg_sabot_hook.sh est appelé, ce que nous faisons à l'aide de « jp », l'interface en ligne de commande:</p>

<pre>
<code><span>#!/bin/sh</span>

<span>#on s'assure d'abord que D-Bus est lancé</span>
<span>eval</span> <span>`</span>/chemin/vers/dbus-launch.sh<span>`</span>

<span>REPOS_BASE</span><span>=</span><span>"http://repos.goffi.org/sat"</span>
<span>PROJECT_FULL</span><span>=</span><span>"Salut à Toi"</span>
<span>REPOS</span><span>=</span><span>"$REPOS_BASE/rev/$HG_NODE"</span>
<span>MUC</span><span>=</span><span>"sat@chat.jabberfr.org"</span>

hg log -r <span>$HG_NODE</span> --template <span>"Commit from {author|person} on $PROJECT_FULL\\n{desc}\\n$REPOS"</span> <span>|</span> jp message -cp sabot <span>$MUC</span></code></pre>

<p>(le vrai script est un tout petit peu plus long puisqu'il gère aussi les noms des autres dépôts).</p>

<p>L'option « -c » indique de se connecter si ça n'est pas le cas, et « -p sabot » précise qu'il faut utiliser le profil « sabot »</p>

<p>Le script dbus-launch.sh s'assure juste que D-Bus est bien lancé et réutilisé entre les sessions de l'utilisateur:</p>

<pre>
<code><span>#!/bin/sh</span>
<span>DBUS_PATH</span><span>=</span><span>"/tmp/.dbus.`whoami`"</span>
<span>if</span> <span>[</span> ! -e <span>$DBUS_PATH</span> <span>]</span><span>;</span> <span>then</span>
        dbus-launch --sh-syntax > <span>$DBUS_PATH</span>
        chmod <span>400</span> <span>$DBUS_PATH</span>
<span>fi</span>
cat <span>$DBUS_PATH</span></code></pre>

<p>Voilà pour ces cas pratiques. La prochaine fois, je parlerai soit de PubSub, soit de Jingle.</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_112%3A2015%2F08%2F06%2FParlons-XMPP-%C3%A9pisode-7-cas-pratiques%3A-SleekXMPP-et-S%C3%A0T" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Parlons XMPP - épisode 8 - PubSub et PEP
uri: 2016-03-10-Goffi-Parlons-XMPP-épisode-8-PubSub-et-PEP
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_114%3A2015%2F09%2F08%2FParlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_114%3A2015%2F09%2F08%2FParlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP

content:
<div><p>(pour lire les épisodes précédents, suivez <a href="http://www.goffi.org/tag/parlons_xmpp">l'étiquette correspondante</a>)</p><p>Aujourd'hui nous allons expliquer dans les grandes lignes comment fonctionnent « PubSub » et « PEP », et voir à quoi cela peut servir. Cet article va reprendre en partie ce que j'ai dit à la conférence « <a href="http://www.goffi.org/post/2015/07/23/Conf%C3%A9rence-%C2%AB-PubSub%2C-microblogage-et-XMPP-%C2%BB-en-ligne">PubSub, microblogage et XMPP</a> » en juillet dernier aux RMLL.</p><p>PubSub signifie « Publish/Subscribe » (Publication/Abonnement), c'est un mécanisme qui permet à une ou plusieurs personnes de publier toutes sortes d'informations sur un endroit connu (qu'on appelle un nœud) et aux personnes qui le désirent de s'abonner, c'est à dire d'avoir accès au contenu et d'être averti des modifications, le tout avec un système d'accès simple. Il s'agit du patron de conception « <a href="https://fr.wikipedia.org/wiki/Observateur_%28patron_de_conception%29">observateur/observable</a> » décentralisé et appliqué à XMPP.</p><p>Le fonctionnement est expliqué dans la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a>, c'est une des XEPs les plus longues de XMPP mais le principe est relativement simple à comprendre. Sans reprendre le long glossaire du document, expliquons quelques termes :</p><ul><li>le <strong>service PubSub</strong> est l'entité qui gère le mécanisme de publication, d'autorisation, d'abonnement, de notification. C'est une entité XMPP et un jid y est donc associé, c'est à lui que vous faites toutes les requêtes pour un nœud donné.</li><li>le <strong>nœud</strong> est un espace associé à une publication. On peut associer ça à l'adresse d'un flux Atom.</li><li>un « <strong>item</strong> » (élément) est une publication dans un nœud. On peut associer ça à un article dans un flux Atom.</li><li>cet « item » contient un « <strong>payload</strong> » (charge utile), c'est à dire un contenu significatif qui dépend de la fonctionnalité utilisée. En effet la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a> décrit un mécanisme générique et souple, qui est ensuite utilisé dans des cas pratiques par d'autres extensions.</li></ul><p>Un service PubSub est généralement un composant de votre serveur, mais ça peut-être n'importe quelle entité : votre serveur lui-même (c'est le cas avec PEP que nous allons voir ci-dessous), ou un client voire votre client lui-même (mais c'est assez rare – je n'ai jamais vu de client le faire –, car en général on utilise le service de son serveur).</p><p>Le mécanisme général est très simple et centré sur les nœuds : chaque entité (associée à un jid) à un rôle lié à ce nœud selon qu'elle l'ait créé, qu'elle soit publieur, abonné, banni ou sans lien avec le nœud. À ces rôles sont donnés des autorisations : le droit d'écrire (avec le « publish model » ou modèle de publication) et le droit en lecture (avec l'« access model » ou modèle d'accès).</p><p>Reprenons de manière un peu plus formelle. Les rôles dont nous avons parlé sont appelés « affiliations », et on peut avoir les suivantes:</p><ul><li>owner (propriétaire): en général celui qui a créé le nœud</li><li>publisher (publieur): celui ou ceux (il peut y en avoir plusieurs) qui ont accès en écriture</li><li>publish-only (publication seulement): droit d'écriture mais pas de lecture, c'est un cas peu fréquent.</li><li>member (membre): quelqu'un qui est abonné au nœud</li><li>none (rien): l'entité n'a pas de lien avec le nœud</li><li>outcast (banni): l'entité a été explicitement interdite d'accès au nœud</li></ul><p>La <a href="https://xmpp.org/extensions/xep-0060.html#affiliations">section 4.1 de la XEP-0060</a> fourni un tableau qui montre les autorisations selon l'affiliation. Ainsi on voit que le propriétaire peut publier ou configurer un nœud.</p><p>Les modèles d'accès (pour la lecture) définis dans la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a> sont les suivants:</p><ul><li>open (ouvert, public): tout le monde peut lire le nœud</li><li>presence (présence – oui je traduis même pour un seul accent –) : si une entité est autorisée à voir la présence du publieur, alors elle peut accéder au nœud</li><li>roster (liste de contacts): si une entité est dans un groupe défini (dans la configuration du nœud) de la liste de contacts du service pubsub, elle a accès au nœud.</li><li>whitelist (liste blanche): des entités sont explicitement autorisées dans la configuration du nœud</li></ul><p>Et rapidement les modèles de publication:</p><ul><li>publishers (publieurs): quelqu'un qui a l'affiliation publieur peut écrire</li><li>subscribers (abonnés): n'importe quel abonné peut écrire</li><li>open (ouvert/libre): tout le monde peut écrire</li></ul><p>Il faut bien noter une chose essentielle dans PubSub : quand la combinaison autorisation/abonnement/configuration le permet, on reçoit une notification immédiatement quand un élément est publié, modifié ou supprimé. Autrement dit on n'est plus du tout dans l'analogie avec un flux Atom – où on doit aller vérifier régulièrement qu'il n'y a rien de nouveau –, on est prévenu si nécessaire. Ceci est beaucoup plus efficace, rapide, et économe en ressources.</p><p>Voilà pour la base. La XEP défini d'autres choses qu'il n'est pas forcément pertinent d'expliquer ici, comme les métadonnées ou les inscriptions temporaires. On peut toutefois s'arrêter sur les collections, qui ne sont que mentionnées dans la <a href="https://xmpp.org/extensions/xep-0060.html">XEP-0060</a> mais décrites en détails dans la <a href="https://xmpp.org/extensions/xep-0248.html">XEP-0248</a>. Elles permettent de faire des arbres de nœuds, et ainsi de représenter des données avec des relations entre elles. Des exemples valent parfois mieux qu'un long discours: les collections peuvent être utilisées pour représenter un système de fichiers sur un disque dur, ou un arbre généalogique.</p><p>Tout ceci est souple, générique, puissant, et relativement facile à utiliser par un client. Mais la XEP étant très longue, et l'implémentation de la partie service plus complexe, les implémentations ont mis du temps à arriver (et encore aujourd'hui elles sont très inégales). Comme PubSub peut être intéressant même sans tout le mécanisme, une version simplifiée est décrite dans la <a href="https://xmpp.org/extensions/xep-0163.html">XEP-0163</a>: « Personal Eventing Protocol » (Protocole d'évènements personels).</p><p>Cette dernière se base sur PubSub, mais définit les règles suivantes qui simplifient beaucoup :</p><ul><li><p><em>1 compte (jid) = 1 service</em> : probablement la règle la plus importante, elle évite d'avoir à chercher un service PubSub associé à un jid, puisque le service est l'adresse canonique (« bare jid ») de l'entité. Ainsi pour la microblogage (<a href="https://xmpp.org/extensions/xep-0277.html">XEP-0277</a>), il suffit de connaître le jid de la personne – le nœud étant défini dans la XEP – pour retrouver ses publications.</p></li><li><p><em>1 publieur par nœud</em> : le propriétaire et le publieur sont le même, et il n'y a qu'un publieur par nœud. On se coupe ainsi de l'édition collaborative par souci de simplification, et il faudra utiliser PubSub pour ce genre d'applications.</p></li><li><p><em>accès par présence par défaut</em> : sans rien toucher, il suffit d'avoir quelqu'un dans sa liste de contacts (et qui a accès à la présence) pour qu'il soit autorisé à voir nos publications</p></li><li><p><em>notifications filtrées sur l'intérêt exprimé</em> : pour éviter d'être submergé de notifications, une entité/un client doit explicitement indiquer qu'il est intéressé par tel ou tel nœud</p></li><li><p><em>options par défaut au plus simple</em></p></li></ul><p>PEP était utilisé au début pour des événements (sans grand intérêt à mon sens) comme l'humeur ou la musique en cours d'écoute, mais depuis son utilisation a évolué.</p><p>Voici, pour finir, quelques exemples d'utilisation de PubSub ou PEP:</p><ul><li>enregistrement de données publiques ou semi-publiques (<a href="https://xmpp.org/extensions/xep-0222.html">XEP-0222</a>), par exemple une clef publique de chiffrement</li><li>enregistrement de données privées (<a href="https://xmpp.org/extensions/xep-0223.html">XEP-0223</a>), très utile pour n'importe quelle donnée de petite taille</li><li>les marque-pages (<a href="https://xmpp.org/extensions/xep-0048.html">XEP-0048</a>) utilisés pour les salons de discussions utilisent PEP (la XEP-0048 a été modifiée après l'apparition de PEP pour s'y adapter)</li><li>le microblogage bien entendu (<a href="https://xmpp.org/extensions/xep-0277.html">XEP-0277</a>), qui utilise PEP et utilise du Atom pour sa « charge utile » (« payload ») et un accès en général public. Les commentaires sont sur un nœud PubSub séparé, en général avec un modèle de publication par abonnement.</li><li>la <a href="https://xmpp.org/extensions/xep-0214.html">XEP-0214</a> utilise PubSub et les collections pour faire un dépôt de fichiers</li><li>le futur protocole de discussions de groupe « MUC 2 » devrait se baser sur PubSub</li></ul><p>PubSub pourrait aussi être utilisé pour placer des points sur une carte, faire un wiki, organiser des événements, ou encore gérer et surveiller une batterie de serveurs qui nous préviendraient en cas de problème.</p><p>Je reviendrai sûrement plus tard sur tout ça pour expliquer le microblogage ou d'autres extensions.</p><p>La prochaine fois, je pense vous parler de Jingle (mais pas de la partie vidéo-conférence). J'espère qu'à ce stade vous commencez à comprendre que XMPP n'est pas <em>une</em> technologie, mais un ensemble de technologies coordonnées et qui se réutilisent les unes les autres quand nécessaire.</p><p>J'ai un peu réduit le rythme des articles ces derniers temps car je travaille sur mon projet, et qu'<a href="http://www.goffi.org/tag/talk_xmpp">une partie a été traduite en anglais</a> avec l'aide de pas mal de monde (merci encore !), tout cela prend du temps.</p><p>Si vous venez à la fête de l'huma ce week-end, vous pourrez me trouver au village du libre, où Parinux me prête gentiment un bout de stand (merci aussi !). Je n'y serai pas en permanence, car je compte aussi profiter un peu de la fête :)</p></div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_114%3A2015%2F09%2F08%2FParlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Vous voulez du (micro)blogage, de la décentralisation et du chiffrement sur Android ?
uri: 2016-03-10-Goffi-Vous-voulez-du-(micro)blogage-de-la-décentralisation-et-du-c
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_115%3A2015%2F10%2F22%2FVous-voulez-du-%28micro%29blogage%2C-de-la-d%C3%A9centralisation-et-du-chiffrement-sur-Android

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_115%3A2015%2F10%2F22%2FVous-voulez-du-%28micro%29blogage%2C-de-la-d%C3%A9centralisation-et-du-chiffrement-sur-Android

content:
<p>Salut à vous !</p><div> </div><div>Aujourd'hui nous lançons une petite campagne de financement participatif pour le développement d'une version Android de Libervia/Salut à Toi.</div><div> </div><div>Nous souhaitons ici développer une application native, avec toutes les fonctionnalités avancées dont nous disposons déjà, telles que le (micro)blogage, le chiffrement de bout en bout via OTR (et il est possible que nous ajoutions OMEMO/Axolotl, une nouvelle méthode permettant de chiffrer les messages hors ligne ou dans une discussion de groupe), le partage de fichiers, ou des choses plus exotiques comme <a href="http://goffi.org/post/2014/02/17/Une-t%C3%A9l%C3%A9commande-universelle-pour-vos-logiciels">une télécommande universelle</a>.</div><div> </div><div>Ce développement fonctionnera également sur bureau (Gnu/Linux bien sûr, mais il devrait fonctionner sur d'autres plateformes comme Windows ou Mac OS X) avec la même interface.</div><div> </div><div>Il existe déjà quelques clients Android (comme le très joli <a href="https://movim.eu/">Movim</a> de notre ami Edhelas, <a href="http://conversations.im/">Conversations</a> ou <a href="http://www.xabber.com/">Xabber</a>), mais aucun n'offre actuellement le même bouquet de fonctionnalités que Libervia/Salut à Toi, aussi ce développement sera un vrai plus.</div><div> </div><div>D'autre part nous sommes particulièrement attentifs à l'éthique (cf notre <a href="http://salut-a-toi.org/social_contract.html">contrat social</a>) et nous sommes organsiés en association loi 1901 en autogestion, dans l'idée de faire une coopérative sur le long terme. Cette campagne est aussi l'occasion de tester un moyen de financement, et nous avons choisi Arizuka car ce site se concentre sur les projets de l'économie sociale et solidaire.</div><div> </div><div>Voilà, donc maintenant on compte sur vous ! N'hésitez pas à poser vos question soit en commentaire, soit par courriel (goffi@goffi.org) soit sur notre salon de discussion XMPP: <a href="xmpp:sat@chat.jabberfr.org?join">sat@chat.jabberfr.org</a></div><div> </div><div>lien vers la campagne: <a href="http://www.arizuka.com/fr/projects/libervia">http://www.arizuka.com/fr/projects/libervia</a></div><div>Salut à Toi: <a href="http://salut-a-toi.org/">http://salut-a-toi.org</a></div><div> </div><div><br>P.-S. : nous préparons aussi une (grosse) nouvelle version dans les semaines à venir, je ferai certainement une série d'articles pour expliquer les nouveautés et comment se servir de Libervia ou SàT en général.</div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_115%3A2015%2F10%2F22%2FVous-voulez-du-%28micro%29blogage%2C-de-la-d%C3%A9centralisation-et-du-chiffrement-sur-Android" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Parlons XMPP - épisode 9 - copie de fichiers et Jingle
uri: 2016-03-10-Goffi-Parlons-XMPP-épisode-9-copie-de-fichiers-et-Jingle
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_117%3A2015%2F11%2F04%2FParlons-XMPP-%C3%A9pisode-9-copie-de-fichiers-et-Jingle

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_117%3A2015%2F11%2F04%2FParlons-XMPP-%C3%A9pisode-9-copie-de-fichiers-et-Jingle

content:
<div><p>(pour lire les épisodes précédents, suivez <a href="http://www.goffi.org/tag/parlons_xmpp">l'étiquette correspondante</a>)</p><p>Bien que déjà répété un certain nombre de fois, je le redis : XMPP fait bien plus que de la messagerie instantanée. Une des fonctionnalités qui est apparue rapidement est la copie de fichiers, voyons cela de plus près</p><p>Le problème : XMPP étant du XML, il n'est pas vraiment adapté aux données purement binaires comme des fichiers. La solution est de passer par l'extérieur, c'est à dire une autre connexion non XML, et d'utiliser le flux XML pour la gérer, on parle de connexion « out-band ». Malheureusement, parfois il n'est pas possible d'établir cette connexion, alors on passe tout par le flux XML : c'est lent, peu efficace, mais ça fonctionne presque toujours, on parle de connexion « in-band » (qu'on pourrait traduire par « interne »).<br>Il y a aussi des cas où il est plus simple et efficace de rester « in-band », enfin surtout un : si on envoie très peu de données, comme une petite image (un <a href="https://fr.wikipedia.org/wiki/Avatar_%28informatique%29">avatar</a> par exemple).</p><p>Comme souvent dans le monde XMPP, plusieurs solutions ont été proposées, expérimentées, parfois adoptées puis dépréciées, jusqu'à ce qu'on trouve et garde celle qui semble convenir le mieux, et qui est a priori la meilleure techniquement.<br>Commençons par la solution courante, appelée « Stream Initiation » (initiation de flux), elle est définie par la <a href="https://xmpp.org/extensions/xep-0095.html">XEP-0095</a>, et la copie de fichier l'utilise via la <a href="https://xmpp.org/extensions/xep-0096.html">XEP-0096</a>.</p><p>La copie de fichiers est la seule application qui utilise la <a href="https://xmpp.org/extensions/xep-0095.html">XEP-0095</a>. Nous avons 2 personnes en jeu : celle qui veut envoyer le fichier, qu'on appellera « l'expéditeur » (« sender » en anglais) et celui qui veut le recevoir, qu'on appellera « le destinataire » (« receiver » en anglais).</p><p>La <a href="https://xmpp.org/extensions/xep-0096.html">XEP-0096</a> défini ce qu'on appelle un « profil » pour l'initiation de flux, le profil « transfert de fichier ». Elle sert principalement à transmettre les métadonnées du fichier : une description, sa taille, son nom, sa date de dernière modification, et un « hash », c'est à dire une somme de contrôle pour vérifier que le fichier a été correctement copié. C'est l'algorithme <a href="https://fr.wikipedia.org/wiki/MD5">MD5</a> qui est utilisé ici, pourtant connu pour avoir des failles, même si elles ne sont pas dramatiques dans le cadre d'un transfert de fichier (l'expéditeur étant déjà validé par ailleurs).</p><p>Il est également possible d'indiquer une fourchette (« range ») à copier, c'est à dire un point de départ (« offset ») dans le fichier et une longueur (« length »), pratique si un transfert a été interrompu en plein milieu, par une coupure de courant par exemple.</p><p>Le reste, c'est la <a href="https://xmpp.org/extensions/xep-0095.html">XEP-0095</a> qui s'en occupe, il s'agit juste de négocier la méthode à utiliser, le destinataire accepte ou non le flux, et choisi une des méthodes. Il y a 2 méthodes principales : la première est le transfert en interne (« In-Band Bytestreams », <a href="https://xmpp.org/extensions/xep-0047.html">XEP-0047</a>) qui se contente de transcoder les données en <a href="https://fr.wikipedia.org/wiki/base64" title="Définition Wikipédia">base64</a>.</p><p>La deuxième (la <a href="https://xmpp.org/extensions/xep-0065.html">XEP-0065</a>, « SOCKS5 Bytestreams ») est plus intéressante, elle utilise <a href="https://fr.wikipedia.org/wiki/SOCKS#SOCKS_v5">SOCKS v5</a> pour établir une connexion externe (« out-band ») et tenter une connexion directe ou via un « proxy » qui est un élément externe relayant les données. L'utilisation d'un proxy est moins efficace qu'une connexion directe bien entendu (les données passent par un 3ᵉ point), mais est parfois nécessaire si une connexion directe est impossible à cause d'un <a href="https://fr.wikipedia.org/wiki/Pare-feu_%28informatique%29">pare-feu</a> ou d'un <a href="https://fr.wikipedia.org/wiki/Network_address_translation">NAT</a> par exemple. XMPP permet, grâce à disco (la <a href="https://xmpp.org/extensions/xep-0030.html">XEP-0030</a>) de savoir automatiquement si votre serveur propose un proxy.<br>C'est donc la <a href="https://xmpp.org/extensions/xep-0065.html">XEP-0065</a> qui est à l'origine du nom « proxy65 » couramment utilisé.<br>Petit détail qui a son importance : dans le cas du transfert direct, la connexion se fait du destinataire vers l'expéditeur (qui a ouvert un port pour l'occasion), aussi la connexion peut échouer dans beaucoup de cas (par exemple l'expéditeur est derrière un NAT). Une méthode a été faite pour améliorer la situation, mais elle n'a jamais été standardisée, vous pouvez la trouver ici : <a href="http://delta.affinix.com/specs/stream.html">http://delta.affinix.com/specs/stream.html</a>.</p><p>Voilà pour la méthode actuelle. Elle pose de nombreux problèmes : c'est uniquement l'expéditeur qui doit proposer et le destinataire accepte ou refuse, il n'y a pas de vraie méthode de secours (appelée « fallback » en anglais), c.-à-d. de méthode pour passer de SOCKS5 (ou « s5b ») au transfert « in-band » (ou « ibb »), et il y a souvent des difficultés pour établir une connexion directe comme expliqué au paragraphe précédent. Bref, ça n'est pas satisfaisant. Mais le problème est assez complexe, il n'est pas si simple de faire une connexion directe, c'est à dire pair à pair (ou « peer to peer » en anglais).</p><p>Heureusement, une nouvelle méthode est apparue, et elle est beaucoup plus souple et efficace : Jingle. Mais cet article étant déjà long, j'en parlerai la prochaine fois.</p><p>J'en profite pour annoncer que je vais commencer une série d'articles pour expliquer l'architecture et ce qu'on peut faire concrètement avec « Salut à Toi ».</p><p>Je vous rappelle aussi que nous avons une campagne de financement participatif en cours pour porter « Salut à Toi » sur Android et faire une version de bureau, et que nous avons bien besoin de soutien ! <a href="http://www.arizuka.com/fr/projects/libervia">http://www.arizuka.com/fr/projects/libervia</a><br>Merci :)</p></div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_117%3A2015%2F11%2F04%2FParlons-XMPP-%C3%A9pisode-9-copie-de-fichiers-et-Jingle" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Goffi : <a href="">Parlons XMPP - &eacute;pisode 9 - copie de fichiers et Jingle</a> (04/11/2015)</li><li>Goffi : <a href="">Parlons XMPP - &eacute;pisode 9 - copie de fichiers et Jingle</a> (09/03/2016)</li></ul></div></p>


title: Goffi : SàT: Comment ça marche ?
uri: 2016-03-10-Goffi-SàT-Comment-ça-marche
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_118%3A2015%2F11%2F09%2FS%C3%A0T%3A-Comment-%C3%A7a-marche

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_118%3A2015%2F11%2F09%2FS%C3%A0T%3A-Comment-%C3%A7a-marche

content:
<p>Salut à vous,<br><br>En parallèle <a href="http://www.goffi.org/tag/parlons_xmpp">de la série d'articles sur XMPP</a>, j'en commence une pour expliquer « <a href="http://salut-a-toi.org/">Salut à Toi</a> », notre logiciel à tout faire basé sur ce protocole. Il y a beaucoup de choses qui tournent autour de ce logiciel, sur son organisation technique, sa philosophie, et ce qu'on peut faire avec. Aussi je vais faire des articles plus ou moins techniques (plutôt moins), et je vais bientôt expliquer quelques cas concrets d'utilisation.</p><div><br>Ce premier article est un peu technique, puisque je vais expliquer l'organisation générale du logiciel, et ce qu'elle a de particulier.<br><br>Donc pour vous donner une idée, SàT c'est dans les grandes lignes ça:<br><br><img src="media/0e11bab9.sat_simplified_overview.png" data-original-source="http://ftp.goffi.org/media/pictures/schemas/sat_simplified_overview.png" alt="http://ftp.goffi.org/media/pictures/schemas/sat_simplified_overview.png" height="336" width="502"><br><br>C'est un client XMPP. Si vous avez lu mes articles, vous savez que XMPP ne signifie pas que « messagerie instantanée », mais beaucoup, beaucoup plus de choses. Le projet SàT essaye non seulement de faire le maximum de ces choses, mais aussi d'expérimenter de nouvelles.<br><br>La partie centrale <b>①</b> est la partie « d'arrière-plan » ou « backend » en anglais. C'est elle qui gère le plus gros du logiciel. La partie à droite <b>②</b> sont les « frontaux » (« frontends » en anglais) ou encore les interfaces homme/machine. C'est elles qui gèrent tout l'affichage des informations, ou la réception des commandes et autres messages.<br><br>Ce qui fait la force de cette architecture, c'est qu'il est très facile de faire un nouveau frontal, et que le tout représente <strong><u>un seul client</u></strong>. Autrement dit : si vous créez un profil (voir plus bas) sur un frontal, il sera disponible sur tous les autres, si vous envoyez un message d'un côté, il sera visible sur tous les frontaux connectés, l'historique est commun, les fonctionnalités aussi.<br>En effet, quand on ajoute une fonctionnalité (les messages de groupe par exemple, la copie de fichier, les blogs), c'est dans le « backend » que nous le faisons, et elle se retrouve ainsi disponible partout. Évidemment dans certains cas ça demande du développement particulier pour les interfaces : nous avons un jeu de Tarot par exemple, et on ne dessine pas les cartes de la même manière dans l'interface console (appelée Primitivus) et dans l'interface web (appelée Libervia).<br><br>Les interfaces (ou frontaux) disponibles aujourd'hui sont:<br> <ul><li><b>Libervia</b> : interface web </li><li><b>Primivus</b> : interface de console (avec des fenêtres de type <a href="https://fr.wikipedia.org/wiki/Ncurses" hreflang="fr">ncurses</a>) </li><li><b>jp</b>: ligne de commande, permet d'automatiser des tâches facilement, d'envoyer un fichier dans parcourir des menus, d'écrire depuis Vim, etc </li></ul><p><br>Nous avions une autre interface pour le bureau, appelée « <i>Wix</i> », mais nous l'avons abandonnée, car elle était peu pratique et peu utilisée. Notre campagne de financement en cours permettra de remplacer cette interface et par la même occasion de porter le projet sur Android.</p><p>Cette architecture a un autre avantage : il est facile d'intégrer SàT dans des logiciels existants, et avec n'importe quel langage de programmation, mais laissons cela de côté pour le moment.<br><br>SàT a également une architecture modulaire via l'utilisation de greffons (ou « plugins » en anglais) au niveau du <b>③</b> sur le schéma : le cœur ne gère que l'essentiel (messages simples, liste de contacts, système de logs, gestion des profils, etc), et toutes les fonctionnalités avancées sont disponibles sous forme de greffons (messages de groupe, blog/microblogs, syntaxes avancées, etc). L'idée est d'une part de pouvoir désactiver les fonctionnalités qu'on ne veut pas, et d'autres part de permettre d'étendre facilement le logiciel : un greffon sera d'autant plus intéressant qu'il sera disponible pour toutes les interfaces. Ainsi un de nos greffons gère les marque-pages (c.-à-d. une liste de salons de discussions) : ils sont utilisables à la fois avec Primitivus (en texte), avec Libervia (graphiquement via le web) ou encore avec jp (en ligne de commande). À terme nous comptons faire un système de téléchargement automatisé de greffons, un peu comme les dépôts de logiciels.<br><br>Nous avons besoin de travailler un peu côté serveur, pour notre composant <a href="http://www.goffi.org/post/2015/09/08/Parlons-XMPP-%C3%A9pisode-8-PubSub-et-PEP">PubSub</a> ou notre annuaire par exemple, nous avons donc aussi quelques travaux de ce côté.</p></div><div> </div><div>Enfin les profils dont je parlais plus haut sont des comptes locaux associés à un compte XMPP. Ainsi j'ai un profil pour mon compte sur le serveur <i>jabber.fr</i> et un autre pour celui sur <i>libervia.org</i>, je peux utiliser l'un ou l'autre ou les 2 en même temps.<br> <br>Voilà pour une première introduction, un peu technique parce que je voulais expliquer l'originalité de l'architecture. La prochaine fois je pense parler un plus spécifiquement de Libervia, et du système de blogs/microblogs décentralisé.<br><br>N'oubliez pas que nous avons <a href="http://www.arizuka.com/fr/projects/libervia">une campagne de financement en cours</a>, et nous avons grand besoin de soutien ! Merci.<br> </div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_118%3A2015%2F11%2F09%2FS%C3%A0T%3A-Comment-%C3%A7a-marche" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : centralisé, décentralisé, P2P, mais c'est quoi tout ça ?
uri: 2016-03-10-Goffi-centralisé-décentralisé-P2P-mais-c-est-quoi-tout-ça
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_119%3A2015%2F11%2F10%2Fcentralis%C3%A9%2C-d%C3%A9centralis%C3%A9%2C-P2P%2C-mais-c-est-quoi-tout-%C3%A7a

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_119%3A2015%2F11%2F10%2Fcentralis%C3%A9%2C-d%C3%A9centralis%C3%A9%2C-P2P%2C-mais-c-est-quoi-tout-%C3%A7a

content:
<p>Une petite mise au point technique, parce que je vois qu'il y a beaucoup de confusion sur les termes « <i>centralisé</i> » (encore lui ça va), « <i>décentralisé</i> », « <i>distribué</i> », « <i>fédéré</i> », « <i>pair à pa</i><i>ir</i> », etc.<br><br>Il faut dire que la confusion est assez normale, il n'y a pas vraiment de définition de ces termes, et ce que les gens entendent en les employant dépend de leurs lectures, leur compréhension, et leur sensibilité.<br><br>Commençons par le plus simple : <b>centralisé</b>. Un système centralisé c'est un système où tout le monde dépend d'une même autorité, un serveur a priori dans le cas informatique. Bien qu'un système centralisé soit beaucoup plus simple à faire sur le plan technique (facile de trouver des gens ou des informations quand ils sont tous au même endroit), il peut avoir ses propres problèmes : montée en charge en particulier ; il est plus difficile d'absorber des données quand il n'y a qu'un centre de traitement, les tuyaux peuvent rapidement se trouver trop petits, etc.<br><br>Un système de communication centralisé pose de nombreux problèmes : il est évident qu'il est plus facile d'espionner, censurer ou modifier des données quand elles sont dépendantes d'un seul point. Même sans intention malicieuse, on a un point unique de défaillance (ce que les anglophones appellent « single point of failure »), c.-à-d. qu'une panne, une attaque, une catastrophe naturelle ou pas provoque l'arrêt du service voire la perte des archives.<br>Dans les cas les plus gros, on prend un hangar et on le remplit d'ordinateurs, ce sont les fameux centres de données ou « data centers ».<br><br>Là où ça se complique un peu, c'est qu'un système centralisé peut être physiquement en plusieurs endroits, ou utiliser des systèmes de répartition/répétition des données. Le principe est d'éviter l'engorgement ou les risques de pannes cités plus haut, mais même si ces machines sont séparées et communiquent entre elles à distance, elles sont a priori toujours sous la même autorité.</p><p><br><img src="media/7bdf1829.centralised_simple.png" data-original-source="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/centralised_simple.png" alt="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/centralised_simple.png" height="300" width="371"></p><div><p><br>Passons maintenant aux systèmes décentralisés/distribués/fédérés. Certains vont pousser les haut-cris que je mette tout ça ensemble, parce qu'il n'y pas vraiment de définition et que chacun se fait plus ou moins la sienne.<br><br>« <b>dé-centralisé</b> » veut dire qui n'a pas de centre, ni plus ni moins. L'idée pour un système de communication, c'est que toute entité (individu, association, organisation, etc) puisse être une partie d'un réseau qui n'a pas d'autorité principale, et que ces autorités puissent parler entre elles.<br><br>On essaye ainsi d'éviter les problèmes de la centralisation, mais on se retrouve avec tout un tas de nouveaux problèmes, techniques pour la plupart : il est beaucoup plus difficile de retrouver des données ou des gens en plusieurs endroits, de se mettre d'accord sur la « langue » à utiliser pour communiquer (surtout quand on a des logiciels ou des versions d'un même logiciel différents), ou encore d'être sûr que la donnée qu'on a est à jour (est-ce que le message a été modifié ou supprimé ?).<br><br>« <b>fédéré</b> » est généralement employé pour parler de systèmes différents (noms de domaines différents par exemple, voire logiciels différents) qui peuvent communiquer entre eux. Un système décentralisé est fédéré par nature, sinon on a affaire à plusieurs systèmes centralisés indépendants. Disons que si on veut être pointilleux, on peut dire qu'un système décentralisé peut communiquer avec seulement certaines entités (je communique avec les serveurs de mon entreprise internationale, mais pas avec le reste du monde), et que la fédération implique l'idée que c'est ouvert à tous (ou presque, il y a souvent des gens qu'on ne veut pas, les spammeurs par exemple).<br><br>« <b>distribué</b> » ne devrait pas être employé pour les systèmes de communication. Le terme est normalement utilisé pour le calcul : si votre ordinateur a plusieurs processeurs, il distribue la charge de calcul entre eux, ou dans le cas de très grosses demandes (recherche par exemple), on peut demander à plusieurs machines distantes de faire chacun une partie d'une grosse opération mathématique. Dans ce cas, l'organisation de la répartition est souvent contrôlé par une même autorité (par exemple le laboratoire qui veut faire cette opération).<br>Par extension, le terme est aussi utilisé pour les systèmes de fichiers, et certains l'emploient pour les logiciels de communication, mais cela ne veut pas dire autre chose que décentralisé.</p><p><br><img src="media/afd70115.decentralised_simple.png" data-original-source="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/decentralised_simple.png" alt="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/decentralised_simple.png" height="300" width="401"></p><p><br>Enfin, il y a le terme P2P ou « <b>pair à pair</b> » (« peer to peer » en anglais). En fait une connexion pair à pair n'est rien d'autre qu'une connexion directe entre 2 ordinateurs, mais on l'associe souvent aux technologies plus ou moins apparentées qui ont commencé à apparaître à la fin des années 90/au début des années 2000 et qui servaient (et servent toujours) principalement à partager des fichiers.<br><br>Après <i>Napster</i> (lancé mi 1999) qui était un bête système centralisé qui mettait en relation des machines pour une connexion directe, il y a eu beaucoup d'essais et d'évolutions pour trouver un système qui permet de se passer de serveurs, l'idée étant principalement de permettre au réseau de fonctionner même si on lui coupe l'accès à une partie de lui-même.<br><br>Je vous passe toutes les techniques qui sont utilisées : c'est un domaine très pointu, très intéressant, et qui demanderait facilement un livre pour être expliqué. Ça part des systèmes de répartition par propagation de proche en proche à la Usenet, jusqu'aux récentes chaînes de blocs (blockchain), en passant par les tables de hachage distribuée (Distributed Hash Table), etc.<br><br>Ce qui fait principalement la différence entre un système « décentralisé » et « entièrement P2P », c'est la place du serveur. Un serveur, dans les grandes lignes, c'est ce qui permet à votre logiciel (le « client ») de contacter d'autres clients via d'autres serveurs. Il est là pour tout un tas de raisons : identifier les gens, donner les bonnes données aux bonnes personnes, garder<br>les fichiers à donner à un client actuellement hors ligne quand il sera disponible, etc.<br>Si on supprime le serveur, inévitablement c'est votre client (ou un autre) qui va devoir se charger de ce travail, ce qui aura un impact sur votre bande passante, la charge de travail pour votre processeur (et donc la durée de vie de votre batterie le cas échéant), et compliquera la tâche de votre logiciel (plus difficile de savoir à qui parler et à qui faire confiance quand on n'a pas de serveur comme référence).</p><p><img src="media/472c5950.fully_P2P_simple.png" data-original-source="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/fully_P2P_simple.png" alt="http://repos.goffi.org/sat_docs/raw-file/tip/schemas/decentralisation/fully_P2P_simple.png" height="300" width="414"><br><br>Pour transformer un système décentralisé avec serveurs en système entièrement P2P (c.-à-d. sans serveur), je vais vous donner une recette : vous mettez un seul client sur votre serveur, et vous mettez le serveur et le client sur la même machine.<br>Bien sûr si vous voulez être vraiment indépendant, il va falloir supprimer le besoin de points de références, et en particulier le système de noms de domaine ou « Domain Name System ». C'est ce qui associe le nom de votre serveur (par exemple « libervia.org ») à l'adresse « IP » qui permet de vous retrouver sur Internet. Il va falloir aussi être capable de retrouver les données ou les gens un peu partout, et là on se retrouve avec les technologies intéressantes mais complexes évoquées plus haut (« D.H.T. », « Blockchain », « SuperPeer », etc).<br> </p><h2>Et XMPP dans tout ça ?</h2><p>Je vais quand même parler un peu de XMPP. XMPP est un système dit « <b>hybride</b> », c'est à dire qu'il fonctionne normalement sur un modèle client/serveur, mais il peut faire du P2P à la demande (pour transférer un fichier ou faire de la visioconférence par exemple).<br>Il est même possible de fonctionner sans serveur sur un réseau local (<a href="https://xmpp.org/extensions/xep-0174.html" target="_blank">comme expliqué ici</a>), et il peut parfaitement devenir à terme un système entièrement P2P comme expliqué dans le paragraphe précédent.<br><br>Ceci dit, même si l'approche entièrement P2P est séduisante, je pense que l'architecture décentralisée sur un modèle client/serveur est un compromis bien plus efficace : elle limite le travail de votre client, permet une meilleure optimisation du trafic ou du calcul, et facilite l'échange asynchrone (quand deux personnes ne sont pas connectées en même temps). Bref, c'est tout sauf un modèle du passé comme on peut le lire parfois, et bien qu'il y ait plusieurs recherches et options intéressantes pour des systèmes entièrement P2P, il ne faudrait pas jeter le bébé avec l'eau du bain.</p></div>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_119%3A2015%2F11%2F10%2Fcentralis%C3%A9%2C-d%C3%A9centralis%C3%A9%2C-P2P%2C-mais-c-est-quoi-tout-%C3%A7a" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Libervia/Salut à Toi à « fêtons Linux » (Lausanne 28/11/2015)
uri: 2016-03-10-Goffi-Libervia-Salut-à-Toi-à-fêtons-Linux-(Lausanne-28-11
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_120%3A2015%2F11%2F20%2FLibervia%2FSalut-%C3%A0-Toi-%C3%A0-%C2%AB-f%C3%AAtons-linux-%C2%BB-%28Lausanne-28%2F11%2F2015%29

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_120%3A2015%2F11%2F20%2FLibervia%2FSalut-%C3%A0-Toi-%C3%A0-%C2%AB-f%C3%AAtons-linux-%C2%BB-%28Lausanne-28%2F11%2F2015%29

content:
<p>Un rapide billet pour vous dire que nous avons été invités à participer à « <a href="http://www.fetonslinux.ch/">fêtons Linux</a> », une journée de rencontre autour des logiciels libres et de Gnu/Linux.</p>


<p>J'y ferai 2 conférences, une technique de 45 min pour expliquer le cœur du projet (à 13h), et une plus grand public de 20 min (à 14h30), et bien sûr je serai présent toute la journée pour discuter (je passerai également par Genève s'il y a du monde qui veut s'y retrouver).</p>


<p>Un grand merci à l'organisation.</p>


<p>Nous avons également passé le premier palier pour notre campagne de financement, c'est à dire que nous sommes engagés à faire un prototype de version de bureau. Mais il nous manque encore un peu moins de 2000 € pour la version Android, et nous avons 2 semaines pour y arriver, aussi faite tourner ce lien partout ou vous pouvez, nous avons besoin d'un coup de pouce pour nous faire connaître : <a href="http://www.arizuka.com/fr/projects/libervia" hreflang="fr">www.arizuka.com/fr/projects/libervia</a> (ou en anglais: <a href="http://www.arizuka.com/en/projects/libervia" hreflang="en">www.arizuka.com/en/projects/libervia</a>). Merci !</p>


<p>Je n'ai pas eu le temps d'écrire d'article cette semaine car je suis débordé par le développement : nous espérons sortir la nouvelle version très bientôt.</p>


<p>À bientôt</p>


<p>N.B.: j'ai dû temporairement mettre la modération a priori sur les commentaires, j'ai depuis 2 semaines une vague de spam qui passe les filtres en place.</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_120%3A2015%2F11%2F20%2FLibervia%2FSalut-%C3%A0-Toi-%C3%A0-%C2%AB-f%C3%AAtons-linux-%C2%BB-%28Lausanne-28%2F11%2F2015%29" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Goffi : Libervia (Salut à toi) 0.6.0 : des avancées majeures !
uri: 2016-03-10-Goffi-Libervia-(Salut-à-toi)-0-6-0-des-avancées-majeures
feed_id:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_121%3A2015%2F12%2F02%2FLibervia-%28Salut-%C3%A0-toi%29-0.6.0-%3A-des-avanc%C3%A9es-majeures-%21

url:
http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_121%3A2015%2F12%2F02%2FLibervia-%28Salut-%C3%A0-toi%29-0.6.0-%3A-des-avanc%C3%A9es-majeures-%21

content:
<p>Salut à vous,</p><p>Nous avons le plaisir d'annoncer la sortie de Salut à Toi (SàT) 0.6.0 et donc de son interface web « Libervia ». Pour mémoire, SàT est un « couteau suisse de la communication », un outil libre et décentralisé permettant de partager publiquement ou de façon privée des messages, des fichiers, des articles de blog, de microblog, etc.</p><p>Le projet a de nombreuses fonctionnalités allant du chiffrement de bout en bout aux jeux, et peut également servir de base pour créer de nouveaux réseaux.<br>C'est aussi un projet éthique, géré par une association loi 1901, suivant un « contrat social », utilisant exclusivement des logiciels libres, militant pour la décentralisation, et fermement opposé à la publicité.</p><p><br>Cette version a vu un très gros travail sur le système de blogs : Libervia offre un moteur de blog décentralisé, accessible à des groupes restreints ou de l'extérieur, et entièrement basé sur le protocole standard et ouvert « XMPP ». L'utilisation de ce standard permet de communiquer avec d'autres projets comme Movim ou Jappix, créant ainsi un grand réseau libre.<br><br>Le partage de fichiers en pair à pair (P2P) a aussi été grandement amélioré grâce au protocole « Jingle », ouvrant la voie pour de futures applications comme la visioconférence.</p><p>L'annonce officielle est disponible sur le blog suivant (basé sur Libervia) : <a href="https://libervia.org/blog/salut-a-toi">https://libervia.org/blog/salut-a-toi</a>.</p><p>Une dépêche Linuxfr plus détaillée est en cours de modération et devrait être publiée sous peu.</p><p>Une campagne de financement participatif est en cours pour faire une version de bureau (une étape déjà franchie), et une version Android. Cette campagne étant très proche de la fin, <a href="http://www.arizuka.com/fr/projects/libervia">c'est le moment de nous soutenir !</a></p><p><br> <img src="media/1a5af7d4.overview.png" data-original-source="http://ftp.goffi.org/media/screenshots/0.6/overview.png" alt="http://ftp.goffi.org/media/screenshots/0.6/overview.png" height="277" width="551"> </p><p> </p><p><em>site officiel </em><i>:</i> <a href="http://salut-a-toi.org/">http://salut-a-toi.org</a><br><i>démo :</i> <a href="https://libervia.org/">https://libervia.org</a><br><i>campagne de financement :</i> <a href="https://www.arizuka.com/fr/projects/libervia">https://www.arizuka.com/fr/projects/libervia</a><br>N'hésitez pas à nous contacter (<a href="http://salut-a-toi.org/community.html">http://salut-a-toi.org/community.html</a>)</p><p>L'équipe « Salut à Toi »</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/S%C3%A0T_DOTCLEAR_IMPORT_BLOG_default_goffi_121%3A2015%2F12%2F02%2FLibervia-%28Salut-%C3%A0-toi%29-0.6.0-%3A-des-avanc%C3%A9es-majeures-%21" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://www.goffi.org/blog/goffi/defd5337-d8af-4459-be01-ecc8c0a0fc46
title: Goffi : Guru Meditation
uri: Goffi-Guru-Meditation
url: http://www.goffi.org/blog/goffi/defd5337-d8af-4459-be01-ecc8c0a0fc46
content:
<p>Un petit mot pour m'excuser auprès des lecteurs et en particulier des lecteurs de <a href="http://planet-libre.org/">Planet Libre</a> et de <a href="http://seenthis.net/">SeenThis</a> : je viens de passer mon blog principal sur Salut à Toi/Libervia et avec lui les flux Atom (qui me permettent d'apparaître sur ces 2 médias), et je pensais qu'avec les dates de mise à jour j'apparaîtrais à la même place qu'avant (soit en décembre pour mon dernier article). Il se trouve que mes 10 derniers articles sont apparus en tête probablement parce qu'il y a eu un changement de liens et d'identifiants, c'est pourquoi vous voyez autant de (vieux) articles d'un coup.</p>
<p>Toutes mes excuses pour ce spam involontaire, il ne devrait plus y avoir de problème désormais, et si jamais c'était le cas je désactiverais la synchronisation le temps de les résoudre.</p>
<p>J'en profite pour annoncer que je vais faire une mini série d'articles pour expliquer comment installer une instance de Libervia et importer son blog dessus.</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/defd5337-d8af-4459-be01-ecc8c0a0fc46" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://genma.free.fr/?Firefox-OS-Quick-Settings-Enhancement
title: genma : Firefox OS - Quick Settings Enhancement
uri: genma-Firefox-OS-Quick-Settings-Enhancement
url: http://genma.free.fr/?Firefox-OS-Quick-Settings-Enhancement
content:
<img alt="" align="right" src="media/d6cf5933.arton2460.jpg" data-original-source="http://genma.free.fr/IMG/arton2460.jpg" width="150" height="79"><div><p>Quick Settings Enhancement est un addon <a href="https://marketplace.firefox.com/addon/quick-settings-enhancement" title="Firefox OS - Quick Settings Enhancement">disponible dans le marketplace</a>, et <a href="https://github.com/gasolin/fxos-quick-settings" title="Github- Quick Settings Enhancement">dont le code source est sur Github</a></p> <p>Comme le montre cette image</p> <p><span>
<img src="media/f0477cb6.fxos_more_quick_settings_addon-6b631.png" data-original-source="http://genma.free.fr/local/cache-vignettes/L180xH320/fxos_more_quick_settings_addon-6b631.png" width="180" height="320" alt=""></span></p> <p>cette addon est bien pratique car elle ajoute dans la barre de notification tout un tas de raccourcis fort pratique qui viennent s'ajouter à ceux existant (mode avion, wifi, connexion de données) à savoir : l'activation ou la désactivaton du NFC, de la Géolocalisation, du mode économie de la batterie, réglage de la luminosité de l'écran... Tout un tas d'options et de réglages qui sont normalement disponibles via les menus du paramétrage sont enfin <strong>à portée de main et c'est fort pratique</strong>.</p> <p>Le petit plus, une option Lampe de poche qui permet d'allumer en continue la led Flash du téléphone (pour les modèles en disposant comme le Sony Z3C par exemple).</p> <p>Un addon devenu indispensable pour moi. Merci à Philipe, Mozillien, pour m'avoir présenté cette addon.</p></div>
<p><img src="media/42493842.dd4318d0d3a7d2ffb13756f63b76d85d" data-original-source="http://cdn.libravatar.org/avatar/dd4318d0d3a7d2ffb13756f63b76d85d" alt="Gravatar de genma" class="gravatar" /><br/><i>Original post of <a href="http://genma.free.fr/?Firefox-OS-Quick-Settings-Enhancement" title="Visit the source">genma</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - Monday 12, November 2012</a> (12/11/2012)</li><li>Pierre Dorbais : <a href="">Connecter votre agenda Owncloud &agrave; Firefox OS via CalDAV</a> (25/01/2013)</li><li>Framablog : <a href="">La promesse de Firefox OS</a> (11/02/2013)</li><li>La bande des Geexxx : <a href="">Qu&rsquo;est-ce que le projet Firefox OS ?</a> (24/07/2014)</li><li>genma : <a href="">Firefox OS - Bilan de l&#039;animation chez Leclerc</a> (01/09/2014)</li></ul></div></p>


feed_id: http://postblue.info/upstart-systemd-sysvinit-openvz-debian-jessie/
title: PostBlue : Passer à systemd sur un VPS OpenVZ avec Debian Jessie
uri: PostBlue-Passer-à-systemd-sur-un-VPS-OpenVZ-avec-Debian-Jessie
url: http://postblue.info/upstart-systemd-sysvinit-openvz-debian-jessie/
content:
<blockquote>
  <p>Attention : je n'ai pris aucune précaution, je ne pourrais être tenu pour responsable de quoique ce soit. Je suis d'ailleurs tout à fait irresponsable.</p>
</blockquote>

<p>L'un des VPS que j'administre utilisait <code>upstart</code> comme système d'initialisation, parce que le noyau OpenVZ n'a longtemps pas supporté <code>systemd</code>, ou inversément <code>systemd</code> ne supportait pas les vieux noyaux d'OpenVZ, toujours est-il que la cohabitation était controversée.</p>

<p>Le noyau d'OpenVZ est basé sur Linux 2.6.32. 2009, tout de même ! C'est le noyau qui propulsa à leur époque (2009) Ubuntu 10.04 LTS « Lucid Lynx » et Debian 6.0 « Squeeze ». Or, Debian 8.0 « Jessie », sortie en avril 2015, intégra le noyau Linux 3.16, et passa de <code>sysvinit</code> à <code>systemd</code> comme système d'initialisation par défaut.</p>

<p>Donc les services, scripts, etc, sont par défaut écrits pour fonctionner avec <code>systemd</code>. Et depuis quelques temps, le noyau OpenVZ permet de parler la même langue que <code>systemd</code> (grosso modo). Et j'avais envie de tester le changement, sachant que j'avais transféré ma machine sur un dédié <a href="https://www.kimsufi.com/fr/serveurs.xml">Kimsufi</a>.</p>

<p>Donc, on se lance.</p>

<p>Dans une session SSH, je lance l'installation par <code>aptitude</code>, qui intègre un outil de résolution des conflits et offre des solutions de remplacement en cas d'installation problématique.</p>

<pre><code>aptitude install systemd systemd-sysv
</code></pre>

<p><code>aptitude</code> propose de remplacer <code>upstart</code> par <code>systemd</code> : il suffit d'accepter.</p>

<p>Plus qu'à redémarrer. Le système va se plaindre de ne pas pouvoir utiliser l'<code>init</code> pour lancer la commande <code>reboot</code> proprement (normal, vu qu'on vient d'en changer).</p>

<p>Pour être au minimum propre (ce que je n'ai pas fait), on peut stopper proprement les services chatouilleux, MySQL &amp; co. Puis redémarrer brutalement :</p>

<pre><code>reboot -f
</code></pre>

<p>La connexion est perdue directement. Quelques secondes à attendre avant de relancer une session SSH et tenter de se connecter à la machine.</p>

<ul><li><p>Connexion établie ? Bravo, tout s'est bien passé ! On peut maintenant balancer <code>systemctl --failed</code> pour voir s'il y a des services défectueux qui trainent sur la machine.</p></li>
<li><p>Connexion impossible ? <em>Too bad!</em> Vous venez de tuer votre machine qui ne démarrera plus en l'état. Contactez votre hébergeur, réinstallez votre machine, faites vous un thé.</p></li>
</ul>
<p><img src="media/00a321c9.6e80c1e7eee37b7507d19ec8bb9afc90" data-original-source="http://cdn.libravatar.org/avatar/6e80c1e7eee37b7507d19ec8bb9afc90" alt="Gravatar de PostBlue" class="gravatar" /><br/><i>Original post of <a href="http://postblue.info/upstart-systemd-sysvinit-openvz-debian-jessie/" title="Visit the source">PostBlue</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://feedproxy.google.com/~r/QuestCeQuonSeFaitCh/~3/5LmTuNgxTfI/
title: Littlewing : Développement WEB
uri: Littlewing-Développement-WEB
url: http://feedproxy.google.com/~r/QuestCeQuonSeFaitCh/~3/5LmTuNgxTfI/
content:
<p>Bon je n’ai pas écrit d’article depuis quelques temps. Je suis à fond sur l’apprentissage des technologies WEB :</p>
<ul><li>bootstrap</li>
<li>angular</li>
<li>yeoman</li>
<li>nodejs</li>
<li>…</li>
</ul><p>J’ai donc un peu laché le développement spark/scala pour <a href="https://www.coursera.org/specializations/full-stack?utm_source=rss&amp;utm_medium=rss">le parcours de spécialisation coursera</a>.</p>
<p>Je pense écrire un peu plus ensuite ( dans quelques mois …)</p>
<p><em>See you</em></p>
<p> </p>
<p> </p>
<img src="http://feeds.feedburner.com/~r/QuestCeQuonSeFaitCh/~4/5LmTuNgxTfI" height="1" width="1" alt="">
<p><img src="media/1f2fb0ec.e9cfa2c2c1ea2abd510c6053457286f0" data-original-source="http://cdn.libravatar.org/avatar/e9cfa2c2c1ea2abd510c6053457286f0" alt="Gravatar de Littlewing" class="gravatar" /><br/><i>Original post of <a href="http://feedproxy.google.com/~r/QuestCeQuonSeFaitCh/~3/5LmTuNgxTfI/" title="Visit the source">Littlewing</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Olivier Faurax : <a href="">Mes 10 objectifs de 2010</a> (21/01/2010)</li><li>LordPhoenix : <a href="">Pourquoi les sites web concernant le libre ne devrait pas utiliser GoogleAnalytics</a> (19/01/2011)</li><li>Bardamu : <a href="">Sc&eacute;narios de retour en force des WebApps pour un web plus libre</a> (09/08/2011)</li><li>Littlewing : <a href="">Afficher la console web d&#039;Apache ServiceMix</a> (12/10/2011)</li><li>Littlewing : <a href="">Compression HTTP et services web</a> (10/02/2012)</li></ul></div></p>


feed_id: http://www.goffi.org/blog/goffi/067646bd-9439-430a-98c2-c655f5a63e40
title: Goffi : Installer une instance de Libervia (SàT) en moins de 10 min
uri: Goffi-Installer-une-instance-de-Libervia-(SàT)-en-moins-de-10-min
url: http://www.goffi.org/blog/goffi/067646bd-9439-430a-98c2-c655f5a63e40
content:
<p>﻿Bon avouons le tout de suite, je triche, 2 fois. La première c'est que nous allons utiliser les images Docker autrement dit des versions pré-installées et qui facilitent la vie. La deuxième c'est que quand je dis « moins de 10 min », je ne compte pas le temps de téléchargement de ces images, qui peut bien évidemment varier selon la vitesse de votre connexion.</p>
<p>Ceci dit, voyons comment avoir une instance de Libervia, l'interface web du projet « <a href="https://salut-a-toi.org/">Salut à Toi</a> », fonctionnelle de manière triviale. Pour mémoire il s'agit d'un outil de communication (d'aucuns parlent de « réseau social ») basé sur le protocole standard et ouvert « XMPP », et donc compatible avec la multitude de logiciels déjà existants.</p>
<h1>Préparatifs</h1>
<h2>Docker</h2>
<p>Il vous faut essentiellement avoir Docker installé sur votre machine. Sur une Debian ou dérivée (Ubuntu, Linux Mint – attention dans ce dernier cas, <a href="https://linuxfr.org/news/linux-mint-a-ete-compromise">elle a récemment été compromise</a> –, etc) il suffit de faire :</p>
<pre><code># apt-get install docker.io
</code></pre>
<p>En tant que root (c.-à-d. précédez de « sudo » si nécessaire). Dans les autres cas, reportez-vous à <a href="https://docs.docker.com/engine/installation/">la documentation officielle</a>.</p>
<p>Il faut ensuite vous ajouter au groupe « docker », ce qui devrait pouvoir se faire avec</p>
<pre><code># adduser <votre_nom_d_utilisateur> docker &amp;&amp; newgrp docker
</code></pre>
<p>Ou, si vous avez sudo installé et configuré (c'est le cas sur Ubuntu par exemple):</p>
<pre><code># sudo adduser $(whoami) docker &amp;&amp; newgrp docker
</code></pre>
<p>À partir de maintenant, il n'est plus besoin d'être root, vous pouvez faire la suite avec votre utilisateur normal, qui vient d'être ajouté au groupe « docker ».</p>
<h2>libervia_cont.sh</h2>
<p>La deuxième chose à faire est d'installer le script libervia_cont.sh qui aide grandement à la gestion des conteneurs de Libervia. Pour cela, il suffit d'entrer :</p>
<pre><code>wget https://repos.goffi.org/sat_docs/raw-file/tip/docker/libervia_cont.sh &amp;&amp; chmod a+x libervia_cont.sh
</code></pre>
<p>(si wget n'est pas présent, installez-le, par exemple avec « apt-get install wget »)</p>
<h1>Lancement</h1>
<p>Pour lancer Libervia, il vous faut maintenant entrer :</p>
<pre><code>./libervia_cont.sh
</code></pre>
<p>Et c'est tout ! Si si, je vous assure, le script et Docker se chargent de télécharger les images (ce qui peut prendre un peu de temps selon votre connexion) et de les lancer, À la fin, vous allez voir une liste de ports s'afficher, en particulier vous devez avoir une ligne qui ressemble à :</p>
<pre><code>port 8080 (HTTP):                       0.0.0.0:32771
</code></pre>
<p>Le numéro à la fin est le port choisi par Docker pour accéder à Libervia via HTTP, il vous suffit d'ouvrir votre butineur sur <em>http://localhost:32771</em> (en remplaçant <em>32771</em> par le port que vous avez bien sûr) et vous devriez voir apparaître la page d'accueil de Libervia. Le serveur n'est accessible qu'après quelques secondes.</p>
<p><img src="media/3c2ac59c.libervia_login.png" data-original-source="https://goffi.org/upload/8de3cd04-8296-46bc-bb5c-18143244c769/libervia_login.png" alt="Libervia login"></p>
<p>Plutôt simple non ? Bon comme c'était trop facile, voyons voir comment configurer tout ça.</p>
<h1>Configuration</h1>
<h2>ports</h2>
<p>Une des options les plus importantes est l'option <strong>-p</strong>, qui permet de lancer Libervia avec des ports fixes, ainsi vous pourrez atteindre Libervia sur le port 8080 et non un port qui change à chaque lancement.</p>
<p>Vous pouvez spécifier des ports différents grâce aux variables d'environnement <strong>SAT_CONT_PORT_</strong><em>xxxx</em> où <em>xxxx</em> est le port que vous voulez remplacer. Ainsi si vous voulez utiliser les ports 80 et 443 qui sont les ports standard HTTP et HTTPS, plutôt que 8080 et 8443, il vous suffit de faire, avant de lancer libervia_cont.sh :</p>
<pre><code>export SAT_CONT_PORT_8080=80
export SAT_CONT_PORT_8443=443
</code></pre>
<h2>nom de domaine</h2>
<p>Si vous avez déjà votre nom de domaine (l'obtention d'un nom de domaine et sa configuration dépassent le cadre de cet article, mais les explications ne manquent pas sur le web), vous pouvez le spécifier avec l'argument <strong>-d</strong> ou avec la variable d'environement <strong>SAT_CONT_DOMAIN</strong>, exemple :</p>
<pre><code>export SAT_CONT_DOMAIN=goffi.org
</code></pre>
<h2>éditer les fichiers</h2>
<p>Vous pouvez éditer le fichier de configuration de SàT/Libervia en tapant simplement</p>
<pre><code>./libervia_cont.sh config
</code></pre>
<p>De même, pour éditer la configuration du Prosody intégré, faites</p>
<pre><code>./libervia_cont.sh config prosody
</code></pre>
<h1>Sauvegardes</h1>
<p>Le script gère également les commandes de sauvegardes. Pour faire une sauvegarde, il suffit de taper</p>
<pre><code>./libervia_cont.sh backup
</code></pre>
<p>Ceci crééra un fichier <em><code>sat_data_backup_<date_de_sauvegarde>.tar.gz</code></em>. Pour le restaurer plus tard, vous n'aurez qu'à faire</p>
<pre><code>./libervia_cont.sh restore sat_data_backup_<date_de_sauvegarde>.tar.gz
</code></pre>
<h1>À suivre…</h1>
<p>Cet article est le premier d'une petite série où je vais vous expliquer comment mettre en place et publier dans un blog comme le mien (qui tourne désormais avec SàT/Libervia) grâce à ce que nous venons d'installer. La prochaine fois (demain ?) j'expliquerai la configuration avancée (certificat personnalisé, lancement automatique).</p>
<p>Si vous parlez anglais, l'utilisation des images Docker et du script libervia_cont.sh sont documentés <a href="https://wiki.goffi.org/wiki/Docker/en">sur le wiki</a>.</p>
<p>Nous aimerions beaucoup faciliter l'installation de Libervia avec d'autres méthodes, par exemple avec des scripts pour <a href="https://yunohost.org/">YunoHost</a>, un peu d'aide serait très appréciée, car nous sommes déjà bien chargés. Si vous pensez pouvoir participer, venez en discuter sur le salon <a href="xmpp:sat@chat.jabberfr.org?join">sat@chat.jabberfr.org</a>.</p>
<p><strong>N.B.</strong> : comme vous l'avez vu l'image contient un serveur XMPP (Prosody) pré-configuré pour simplifier l'installation. Cependant Salut à Toi et donc Libervia marchent bien évidemment avec tout autre serveur (les fonctionnalités seront juste adaptées selon ce qui est disponible), et vous pouvez créer un profil externe, sur un autre serveur (vous pouvez même entrer directement un jid et un mot de passe existant dans Libervia). Il est probable qu'il existe de futures variantes de ces images sans serveur XMPP pré-installé, ou avec un autre.</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/067646bd-9439-430a-98c2-c655f5a63e40" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: https://francois.aichelbaum.com/share-multifunctional-printer-synology/
title: Francois Aichelbaum : Share a multifunctional printer (with your Synology)
uri: Francois-Aichelbaum-Share-a-multifunctional-printer-(with-your-Synol
url: https://francois.aichelbaum.com/share-multifunctional-printer-synology/
content:
<p>So, lately, we decided to truly use several different computers at home. The fun part is that we want to share the same peripherals (as the multi-functional printer (here, as an HP PhotoSmart B109a), with different OS (for now, Linux and Windows). Let’s see how our Synology saved the day.</p><p><span></span></p><p>The Synology NAS embed a Linux system so basically, we should be able to run most of the applications, as far as we can deploy/compile it. But, because the Synology guys wants to ease our life, they did a great thing : they offer <a href="https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Printer/How_to_set_up_and_use_a_multifunctional_printer_shared_by_Synology_NAS">the possibility</a> to add a multi-functional printer and manage it. As far as they did great, the system only embed some drivers (and software – i.e. only cups) and for me, even if the printer is fully discovered, only the print services will be shared over network.</p><p>So I had to complete the setup. First, I need to be able to extend the system with new package. As we have a pretty recent DS1515+, we don’t have any <a href="https://fr.wikipedia.org/wiki/IPKG">ipkg</a> system out of the box. But now, this is pretty well documented over internet (in <a href="https://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#How_to_install_ipkg">english</a> or in <a href="http://www.cachem.fr/synology-installer-ipkg/">french</a>, for instance).</p><p>Now that we can install third party software easily on the CLI, let’s setup <a href="https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy">SANE</a>. So, as a root on the Synology :</p><pre>ipkg install hplip libusb libieee1284 sane-backends xinetd
echo <span>"hpaio"</span> >> <span>/opt/etc</span><span>/sane.d/dll</span>.conf
echo <span>"hpaio"</span> > <span>/opt/etc</span><span>/sane.d/dll</span>.d/hplip</pre><p>Let’s see if the Synology see the scanner :</p><pre>sane-find-scanner</pre><p>Which should reply something like :</p><pre>found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003</pre><p>Since the NAS sees the scan, let’s test it with SANE via :</p><pre>scanimage -L</pre><p>It will reply something as :</p><pre>device `hpaio:/usb/Photosmart_B109a-m?serial=CN999750CB05C7' is a Hewlett-Packard Photosmart_B109a-m all-in-one</pre><p>Now, let’s ensure that the service is visible from the rest of the network. To do so, we need to edit /opt/etc/xinetd.conf where we check the line “only_from” : it should match the IP range of the local network. Then we edit /opt/etc/sane.d/saned.conf with the same purpose. We can now edit xinetd to start the sane service properly with the right port, editing /opt/etc/xinetd.d/sane-port :</p><pre>service sane-port
{
    port = <span>6566</span>
    socket_type = stream
    <span>wait</span> = <span>no</span>
    user = root
    group = root
    server = <span>/opt/sbin</span><span>/saned
}</span></pre><p>Let’s start it (it will be automatically started on the next reboot :</p><pre>/opt/etc/init.d/S10xinetd</pre><p>As we’re good on the server side, let’s focus on the client side. We’ll start with the Linux client as it’s the simpliest. I assume you already installed <a href="http://www.xsane.org/">xsane</a>.  Now, we just need to tell Xsane where it can find the scan. So, we edit /<span>etc/sane.d/net.conf to replace “</span># localhost” with the IP of the Synology. The printer is just a few click away when you go through the regular GUI to add a network printer. We’re good to go.</p><p>On the Windows side (Windows 10 here), it’s a bit more tricky. First, we’ll focus on the printer service. For this, we’ll have to follow the <a href="https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Printer/How_to_set_up_and_use_a_multifunctional_printer_shared_by_Synology_NAS">directives</a> from Synology. This will enable a printer. Windows might complain about missing drivers for some mass storage USB device and an unknown device but you can just ignore as those are the scan and the multi card reader.</p><p>For the scan service, we’ll have to install some other tools. Indeed, Windows use a specific protocol which is not compatible with sane (it can be TWAIN, ISIS or WIA).  But , as we exposed the scan via sane, we need … sane … Absolute logical logic. Thanks to our opensource community friends, port exists. Not so much up2date or maintained, but it’s enough ok to be used. The solution here will be <a href="https://sourceforge.net/projects/sanewinds/">SaneWinDS</a>. Just download the installer, follow the instruction of the GUI and here you go. Reboot your Windows (after all, it remains as a Windows), and now you have a Sane application on your Windows that you can use. The UI is pretty archaic but it should do the trick.</p><p>The post <a rel="nofollow" href="https://francois.aichelbaum.com/share-multifunctional-printer-synology/">Share a multifunctional printer (with your Synology)</a> appeared first on <a rel="nofollow" href="https://francois.aichelbaum.com/">Here and Now ... Then and There</a>.</p>
<p><img src="media/fa8a9a5c.d3aee8c1dcab31df72e021766230892b" data-original-source="http://cdn.libravatar.org/avatar/d3aee8c1dcab31df72e021766230892b" alt="Gravatar de Francois Aichelbaum" class="gravatar" /><br/><i>Original post of <a href="https://francois.aichelbaum.com/share-multifunctional-printer-synology/" title="Visit the source">Francois Aichelbaum</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Equinoxefr : <a href="">Linux &ndash; Scanner en r&eacute;seau avec une imprimante HP officejet</a> (28/07/2012)</li></ul></div></p>


feed_id: http://framablog.org/2016/03/11/comment-creer-une-belle-framacarte-avec-un-compte-tutos-umap-34/
title: Framablog : Comment créer une belle Framacarte avec un compte ? (Tutos uMap 3/4)
uri: Framablog-Comment-créer-une-belle-Framacarte-avec-un-compte-(Tut
url: http://framablog.org/2016/03/11/comment-creer-une-belle-framacarte-avec-un-compte-tutos-umap-34/
content:
<p>Juste avant Noël, <a href="http://framablog.org/2015/12/23/framacarte-pour-liberer-vos-maps-de-google/">nous vous présentions Framacartes</a>, un service de création de cartes personnalisées pour vos sites web, communautés, randos, chasses au trésor… Framacartes est basé sur le logiciel <a href="http://wiki.openstreetmap.org/wiki/UMap">Umap</a>, qui permet d’ajouter des points, tracés et polygones sur les fonds de cartes d’<a href="http://www.openstreetmap.fr/">OpenStreetMap</a>.</p>
<p>C’est alors qu’Antoine Riche, ingénieur informatique, <a href="http://cartocite.fr/">Contributeur et Formateur OpenStreetmap</a>, nous a contactés pour nous présenter <a href="http://wiki.cartocite.fr/doku.php?id=umap:tutoriel_umap">sa série de tutoriels</a> (libres, eux aussi) pour apprendre à maîtriser uMap (et donc Framacartes) à toute la famille Dupuis-Morizeau.</p>
<p>C’est avec son autorisation (et de chaleureux remerciements) que nous reproduirons sur le framablog les quatre premiers tutos (le niveau « débutant ») afin d’en faire profiter le plus grand nombre.</p>
<p>Nous avons commencé par nous<a href="http://framablog.org/2016/02/16/comment-consulter-une-framacarte-tutos-umap-14"> familiariser avec uMap pour profiter pleinement d’une Framacarte</a>…</p>
<p>Puis, nous avons vu <a href="http://framablog.org/2016/03/04/comment-creer-sa-premiere-framacarte-tutos-umap-24/">comment créer sa première Framacarte</a>…</p>
<p>Cette semaine, créons un compte afin de faire de bien jolies cartes et de ne pas les perdre !</p>
<p><span></span></p>
<h2>J’utilise un compte et crée une belle carte</h2>
<h3>Ce que nous allons apprendre</h3>
<div>
<ul><li>
<div>Utiliser un compte pour retrouver ses cartes</div>
</li>
<li>
<div>Changer la forme, la couleur et le pictogramme d’un marqueur</div>
</li>
<li>
<div>Créer et modifier une ligne ou un polygone</div>
</li>
</ul></div>
<h2>Procédons par étapes</h2>
<div>
<p>Nous avons appris dans <a title="umap:2_-_je_cree_ma_premiere_carte_umap" href="http://framablog.org/2016/03/04/comment-creer-sa-premiere-framacarte-tutos-umap-24/">le tutoriel précédent</a> comment créer une carte anonyme contenant un marqueur. Nous allons à présent créer une carte plus complète : la carte de nos vacances au <a title="http://www.openstreetmap.org/way/119055693" href="http://www.openstreetmap.org/way/119055693" rel="nofollow">Camping de la plage Goulien</a> sur la Presqu’île de Crozon en Bretagne.</p>
<p>Au lieu de créer une carte anonyme, nous allons utiliser un compte pour créer cette carte.</p>
</div>
<h3>1. Utiliser un compte</h3>
<div>
<p><strong>uMap</strong> permet d’associer ses cartes à un compte. Cela présente deux avantages importants par rapport à la création de cartes anonymes :</p>
<ul><li>
<div>les cartes créées avec un compte constituent un catalogue permettant d’accéder facilement à ses cartes</div>
</li>
<li>
<div>on peut modifier chaque carte du catalogue sans avoir besoin de conserver un lien d’édition</div>
</li>
</ul><p>Le logiciel umap ne gère pas directement de comptes utilisateurs : la gestion des comptes dépend de la configuration du logiciel. Sur <a title="http://umap.openstreetmap.fr" href="http://framacarte/" rel="nofollow">https://framacarte.org</a>, nous vous proposons d’utiliser un compte OpenStreetMap. Si vous n’avez pas de compte, c’est le moment de vous inscrire sur le site <a title="http://www.openstreetmap.org" href="http://www.openstreetmap.org/" rel="nofollow">www.openstreetmap.org</a> : cliquez <strong>Créer un compte</strong> dans le coin supérieur droit et suivez les instructions – une adresse mail vous sera demandée (<a title="http://openstreetmap.fr/inscription-openstreetmap" href="http://openstreetmap.fr/inscription-openstreetmap" rel="nofollow">plus d’infos</a>).</p>
<p><a href="media/e111cb89.framacarte-connexion.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/framacarte-connexion.png" rel="attachment wp-att-5656"><img src="media/e111cb89.framacarte-connexion.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/framacarte-connexion.png" alt="framacarte connexion" width="1230" height="268" srcset="http://framablog.org/wp-content/uploads/2016/03/framacarte-connexion-300x65.png 300w, http://framablog.org/wp-content/uploads/2016/03/framacarte-connexion-768x167.png 768w, http://framablog.org/wp-content/uploads/2016/03/framacarte-connexion-1024x223.png 1024w, http://framablog.org/wp-content/uploads/2016/03/framacarte-connexion.png 1230w" sizes="(max-width: 1230px) 100vw, 1230px"></a></p>
<p>Cliquez sur <strong>Connexion / Créer un compte</strong> puis sur le pictogramme correspondant au compte que vous souhaitez utiliser. Apparaît alors la page de connexion du site : saisissez le nom d’utilisateur et le mot de passe. La page suivante vous demande d’autoriser l’application uMap à utiliser ce compte : accordez cet accès. Vous retrouvez alors la page d’accueil de uMap, sur laquelle le lien de connexion a laissé la place à un lien <strong>Mes cartes</strong> vous permettant d’accéder à l’ensemble des cartes créées avec ce compte.</p>
<p><a href="media/ceccddc9.framacarte-compte-3.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/framacarte-compte-3.png" rel="attachment wp-att-5655"><img src="media/ceccddc9.framacarte-compte-3.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/framacarte-compte-3.png" alt="framacarte compte 3" width="1329" height="280" srcset="http://framablog.org/wp-content/uploads/2016/03/framacarte-compte-3-300x63.png 300w, http://framablog.org/wp-content/uploads/2016/03/framacarte-compte-3-768x162.png 768w, http://framablog.org/wp-content/uploads/2016/03/framacarte-compte-3-1024x216.png 1024w, http://framablog.org/wp-content/uploads/2016/03/framacarte-compte-3.png 1329w" sizes="(max-width: 1329px) 100vw, 1329px"></a></p>
<p>Notez l’<abbr title="Uniform Resource Locator">URL</abbr> de la barre d’adresse quand vous consultez votre catalogue de cartes : celle-ci contient le nom de votre compte – par exemple <a title="http://umap.openstreetmap.fr/fr/user/cartocite/" href="https://framacarte.org/fr/user/PouhiouNoenaute/" rel="nofollow">https://framacarte.org/fr/user/PouhiouNoenaute/</a>. Vous pouvez l’utiliser pour accéder à votre catalogue de cartes, même sans être connecté à votre compte : vous pouvez diffuser cette <abbr title="Uniform Resource Locator">URL</abbr>, les récipiendaires ne pourront pas modifier vos cartes.</p>
<p>Toutes les cartes que vous créez en étant connecté à votre compte sont ajoutées à votre catalogue.</p>
</div>
<h3>2. Créer un joli marqueur</h3>
<div>
<p>Commençons par créer une carte : donnons-lui un nom, définissons une emprise et ajoutons un marqueur à <a title="http://www.openstreetmap.org/?mlat=48.2387&amp;mlon=-4.5434#map=16/48.2387/-4.5434" href="http://www.openstreetmap.org/?mlat=48.2387&amp;mlon=-4.5434#map=16/48.2387/-4.5434" rel="nofollow">l’emplacement du camping</a>. Nous avons vu dans <a title="umap:2_-_je_cree_ma_premiere_carte_umap" href="http://framablog.org/2016/03/04/comment-creer-sa-premiere-framacarte-tutos-umap-24/">le tutoriel précédent</a> comment effectuer ces opérations.</p>
<p><a href="media/48731931.umap_marqueur_props.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_marqueur_props.png" rel="attachment wp-att-5657"><img src="media/48731931.umap_marqueur_props.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_marqueur_props.png" alt="umap_marqueur_props" width="291" height="363"></a></p>
<p>Ce gros marqueur bleu n’est pas très explicite pour figurer un camping. Remédions à cela. Dans le panneau latéral visible lorsqu’un marqueur est sélectionné, le menu <strong>Propriétés avancées</strong> permet de modifier l’apparence du marqueur :</p>
<ul><li>
<div><strong>Couleur</strong> : cliquer sur <code>Hériter</code> permet de choisir une couleur.</div>
</li>
<li>
<div><strong>Forme de l’icône</strong> : le choix <code>Par défaut</code> correspond au marqueur actuel, les autres choix sont Cercle, Goutte et Épingle.</div>
</li>
<li>
<div><strong>Symbole pour le marqueur</strong> : cliquer sur <code>Ajouter un symbole</code> pour choisir parmi une centaine de pictogrammes. Notez que le symbole n’est affiché que pour les formes d’icônes <code>Par défaut</code> et <code>Goutte</code>.</div>
</li>
<li>
<div><strong>Étiquette</strong> : choisir <code>Oui</code> permet d’afficher en permanence le nom associé au marqueur</div>
</li>
</ul><p>Voici le marqueur obtenu avec les propriétés ci-contre :</p>
<p><a href="media/3b17a81f.umap_camping.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_camping.png" rel="attachment wp-att-5658"><img src="media/3b17a81f.umap_camping.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_camping.png" alt="umap_camping" width="143" height="68"></a></p>
</div>
<h4>Modifier un marqueur</h4>
<div>
<p>Pour modifier un marqueur de la carte, deux possibilités s’offrent à vous :</p>
<ul><li>
<div>un clic sur le marqueur affiche le panneau qui vous permet de modifier son nom et sa description</div>
</li>
<li>
<div>un glisser-déposer vous permet de déplacer le marqueur sur la carte</div>
</li>
</ul></div>
<h3>3. Créer une ligne</h3>
<div>
<p>Le premier jour de vacances nous allons en kayak de mer jusqu’à la Pointe de Dinan à l’ouest de la plage de Goulien. Traçons l’itinéraire suivi.</p>
<p><a href="media/3cafc4f5.umap_line.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_line.png" rel="attachment wp-att-5659"><img src="media/3cafc4f5.umap_line.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_line.png" alt="umap_line" width="38" height="38"></a>Le bouton <strong>Dessiner une ligne</strong> permet de tracer, point par point, une ligne constiutée de plusieurs segments. Cliquez à nouveau sur le dernier point tracé pour terminer la ligne : apparaît alors à droite un panneau permettant de donner un nom et une description à la ligne, comme pour les marqueurs.</p>
</div>
<h4>Modifier une ligne</h4>
<div>
<p>A tout moment vous pouvez sélectionner une ligne en double-cliquant dessus. Vous pouvez alors éditer ses propriétés dans le panneau latéral, ou modifier son tracé sur la carte :</p>
<ul><li>
<div><strong>supprimer un point</strong> de la ligne, matérialisé par un carré blanc, en cliquant dessus</div>
</li>
<li>
<div><strong>déplacer un point</strong> par un glisser-déposer</div>
</li>
<li>
<div><strong>insérer un point</strong> en cliquant sur un carré gris se trouvant au milieu de chaque segment</div>
</li>
<li>
<div><strong>allonger la ligne</strong> avec un Ctrl-Clic lorsque le curseur est placé sur le premier ou dernier point</div>
</li>
<li>
<div><strong>couper la ligne</strong> en deux : Clic droit sur un point puis choisir l’option <code>Scinder la ligne</code></div>
</li>
</ul><p><a href="media/2e85a967.umap_ligne.jpg" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_ligne.jpg" rel="attachment wp-att-5660"><img src="media/2e85a967.umap_ligne.jpg" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_ligne.jpg" alt="umap_ligne" width="1150" height="350" srcset="http://framablog.org/wp-content/uploads/2016/03/umap_ligne-300x91.jpg 300w, http://framablog.org/wp-content/uploads/2016/03/umap_ligne-768x234.jpg 768w, http://framablog.org/wp-content/uploads/2016/03/umap_ligne-1024x312.jpg 1024w, http://framablog.org/wp-content/uploads/2016/03/umap_ligne.jpg 1150w" sizes="(max-width: 1150px) 100vw, 1150px"></a></p>
</div>
<h4>Propriétés d’une ligne</h4>
<div>
<p><a href="media/95ed519b.umap_ligne_props.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_ligne_props.png" rel="attachment wp-att-5661"><img src="media/95ed519b.umap_ligne_props.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_ligne_props.png" alt="umap_ligne_props" width="278" height="416"></a><br>
Les propriétés avancées d’une ligne permettent de définir sa couleur et d’autres paramètres définissant son <em>style</em> :</p>
<ul><li>
<div>l’<strong>épaisseur</strong> est définie en nombre de pixels, sa valeur par défaut est 3 : saisir une valeur plus grande pour un trait plus large (qui sera plus facile à sélectionner).</div>
</li>
<li>
<div>l’<strong>opacité</strong> est un nombre entre 0 (transparent) et 1 (opaque), sa valeur par défaut est 0.5. Plus le trait est épais plus il peut être transparent.</div>
</li>
<li>
<div>la <strong>simplification</strong> du tracé définit la précision du tracé en nombre de pixels : le tracé s’adaptera au niveau de zoom. Il est en général inutile de modifier cette valeur pour un tracé réalisé <em>à la main</em>.</div>
</li>
<li>
<div>les <strong>pointillés</strong> sont définis par une série de chiffres séparés par des virgules : nombre de pixels affichés, nombre de pixels cachés, etc. L’épaisseur du trait doit être prise en compte : plus les traits sont épais plus les intervalles doivent être grands.</div>
</li>
</ul><p>Voici le style de trait obtenu avec les propriétés ci-contre :</p>
<p><a href="media/a747ebfd.umap_ligne_tirets.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_ligne_tirets.png" rel="attachment wp-att-5662"><img src="media/a747ebfd.umap_ligne_tirets.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_ligne_tirets.png" alt="umap_ligne_tirets" width="426" height="117" srcset="http://framablog.org/wp-content/uploads/2016/03/umap_ligne_tirets-300x82.png 300w, http://framablog.org/wp-content/uploads/2016/03/umap_ligne_tirets.png 426w" sizes="(max-width: 426px) 100vw, 426px"></a></p>
</div>
<h3>4. Créer un polygone</h3>
<div>
<p>Le second jour de vacances nous louons un dériveur et naviguons dans la zone définie par le club nautique. Ajoutons cette zone à la carte.</p>
<p><a href="media/4a9b644b.umap_polygon.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_polygon.png" rel="attachment wp-att-5663"><img src="media/4a9b644b.umap_polygon.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_polygon.png" alt="umap_polygon" width="38" height="38"></a>Le bouton <strong>Dessiner un polygone</strong> permet de tracer le périmètre d’un polygone point par point, et de le terminer en cliquant à nouveau sur le dernier point comme pour le tracé d’une ligne. Une différence toutefois : dès le troisième point l’intérieur du polygone est coloré.</p>
</div>
<h4>Propriétés d’un polygone</h4>
<div>
<p>La liste des propriétés d’un polygone est assez longue. On y retrouve les mêmes propriétés que pour les lignes (couleur, opacité, etc.) : celles-ci s’appliquent au périmètre du polygone. Plus bas nous trouvons des propriétés spécifiques aux polygones :</p>
<ul><li>
<div>les options <strong>trait</strong> et <strong>remplissage</strong> permettent de ne pas afficher le périmètre ou l’intérieur du polygone : si aucun de ces deux éléments est affiché le polygone est invisible.</div>
</li>
<li>
<div>la <strong>couleur du remplissage</strong> est par défaut celle du trait, mais peut être modifiée.</div>
</li>
<li>
<div>l’<strong>opacité du remplissage</strong> varie de 0 à 1, elle peut être très légère pour un polygone.</div>
</li>
</ul><p>Deux autres options propres aux polygones sont disponibles :</p>
<ul><li>
<div><strong>lien externe</strong> : spécifier une <abbr title="Uniform Resource Locator">URL</abbr> aura pour effet d’ouvrir le page Web correspondante lorsque l’utilisateur clique sur le polygone.</div>
</li>
<li>
<div><strong>Cliquable</strong> : choisir la valeur <code>non</code> ne permettra pas à l’utilisateur de sélectionner le polygone, donc de voir son nom et sa description dans une popup. Cela peut être utile pour définir la zone d’intérêt de la carte, qui ne porte pas elle-même d’information utile.</div>
</li>
</ul><div>
<p><em>Un polygone non-cliquable ne peut plus être sélectionné sur la carte même en mode édition. Il faut pour cela passer par l’opération <strong>Visualiser les données</strong> disponible dans le sélecteur de calque, puis éditer l’élément correspondant dans la liste des données.</em></p>
</div>
</div>
<h2>Faisons le point</h2>
<div>
<p>Notre deuxième carte est déjà plus intéressante que la première, et en plus nous savons comment la retrouver facilement. Nous verrons dans le prochain et dernier tuto comment personnaliser notre carte.</p>
</div>
<h2>Liens utiles :</h2>
<div>
<ul><li><strong>Aller sur <a href="https://framacarte.org/">Framacarte</a></strong></li>
<li><strong>L’<a href="http://wiki.cartocite.fr/doku.php?id=umap:tutoriel_umap">ensemble des tutos uMap</a> d’Antoine Riche</strong></li>
<li><strong><a href="http://cartocite.fr/">Carto’CITÉ</a>, l’agence de Géomatique d’Antoine</strong></li>
<li><strong>Découvrir<a href="http://www.openstreetmap.fr/"> OpenStreetMap</a> et sa communauté francophone</strong></li>
<li><strong>Découvrir <a href="http://wiki.openstreetmap.org/wiki/UMap">Umap</a></strong></li>
</ul></div>
<p><img src="media/d4130779.f411e4809021b786b7eb0c8956612e76" data-original-source="http://cdn.libravatar.org/avatar/f411e4809021b786b7eb0c8956612e76" alt="Gravatar de Framablog" class="gravatar" /><br/><i>Original post of <a href="http://framablog.org/2016/03/11/comment-creer-une-belle-framacarte-avec-un-compte-tutos-umap-34/" title="Visit the source">Framablog</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Framablog : <a href="">Comment consulter une Framacarte&amp;nbsp;? (Tutos uMap 1/4)</a> (16/02/2016)</li><li>Framablog : <a href="">Comment cr&amp;eacute;er sa premi&amp;egrave;re Framacarte&amp;nbsp;? (Tutos uMap 2/4)</a> (04/03/2016)</li><li>Framablog : <a href="">Framacarte, pour lib&amp;eacute;rer vos maps de Google&amp;nbsp;!</a> (23/12/2015)</li><li>Framablog : <a href="">GitHub et les libristes&amp;nbsp;: un danger et un d&amp;eacute;fi&amp;nbsp;!</a> (28/01/2016)</li><li>Framablog : <a href="">Framacalc Reloaded&amp;nbsp;: la force de vos feuilles de calculs se r&amp;eacute;veille&amp;nbsp;!</a> (29/01/2016)</li></ul></div></p>


feed_id: http://blog.sciunto.org//posts/NAS1/
title: François Boulogne : NAS : choix des composants
uri: François-Boulogne-NAS-choix-des-composants
url: http://blog.sciunto.org//posts/NAS1/
content:
<p>Dans ce billet, j'établis mon choix pour le montage d'un NAS.</p>

<p>Mon état des lieux est le suivant. J'ai plus de 8To de données personnelles et professionnelles qui sont actuellement sur des disques durs usb. Il devient compliqué de brancher et débrancher, de manipuler sans laisser tomber, de savoir quoi est sur qui.</p>

<p>La sauvegarde est un enfer : sauvegarde de machines sur des disques, de machines sur des machines, de disques sur des disques, etc. J'ai toutes les chances de rater un étape.
L'idée est donc de rationnaliser tout ça :</p>

<ul><li>Une machine qui héberge données et sauvegarde des desktops/serveurs.</li>
<li>Une autre machine qui sauvegarde les données critiques du NAS.</li>
</ul><h1>Avantages/inconvénients d'un NAS</h1>

<p>Avantages</p>

<ul><li>Espace de stockage continu plutôt que N disques distincts</li>
<li>Espace disponible sur le réseau (communication avec plusieurs machines, montage NFS...)</li>
<li>Facilite grandement la sauvegarde régulière</li>
<li>Résilient à des pannes disques (ça dépend du RAID choisi, mais je m'intéresse à un système résilient)</li>
</ul><p>Inconvénients</p>

<ul><li>Si un nombre critique de disques flanche ou un autre problème apparait (erreur de manipulation, matériel défaillant causant une perte majeure des disques), on perd tout.</li>
<li>Machine supplémentaire donc coût supplémentaire comparé à un boitier de disque externe.</li>
<li>Les disques de parité sont de la mémoire morte, c'est-à-dire de l'espace non visible par l'utilisateur.</li>
<li>Un système RAID n'est pas une sauvegarde, il faudra donc sauvegarder.</li>
</ul><h1>Choix technologiques</h1>

<ul><li>De la redondance de données pour être résilient aux pannes disques.</li>
<li>Système de fichiers ZFS qui est éprouvé pour ce genre d'usage (en attendant que btrfs soit mature).</li>
</ul><p>Par conséquent, on s'oriente vers un RAIDz1, 2 ou 3, c'est-à-dire 1, 2 ou 3 disques de redondance. A l'heure actuelle, il semble que RAIDZ1 soit déconseillé. L'argument est le suivant. Les disques sont de plus en plus gros. Par conséquent, si un disque est en panne, il est nécessaire de le remplacer pour reconstruire le pool. La charge appliquées sur les disques est d'autant plus grande que chaque disque est volumineux. Il y a donc un risque (non négligeable ?) qu'un second disque casse à ce moment là.
RAIDZ3 demande beaucoup d'investissement. J'opte donc pour RAIDZ2. Le nombre minimal de disques est de 4 et il est conseillé d'avoir un nombre pair.</p>

<h1>Les NAS commerciaux</h1>

<p>On va voir que notre machine sans disque présentée ci-dessous peut recevoir jusqu'à 12 disques. Bien plus qu'il nous en faut.
Les NAS commerciaux de 2 ou 4 disques sont courants. Si on se base sur des marques bien connues comme synology, il faut compter</p>

<ul><li>2 baies 300-350€</li>
<li>4 baies 450€</li>
<li>5 baies 600-700€</li>
<li>6 baies 700-800€</li>
<li>12 baies à 1300€.</li>
</ul><p>C'est un prix typique plutôt minimaliste, on peut sans problème trouver bien plus cher.
Je n'ai pas vu de synology à 6 baies.</p>

<p>D'un point de vue rentabilité, un 4 baies est juste pour un RAID6 (=RAIDZ2 pour ZFS), car seule la moitié de l'espace acheté sera disponible. Le 5 baies étant le plus proche, je vais comparer avec le <a href="https://www.synology.com/fr-fr/products/DS1515">DS1515</a> :</p>

<ul><li>quad core 1.4 GHz</li>
<li>2 Go RAM</li>
<li>disques EXT4 hot swappable</li>
<li>Extension possible à 15 disques, mais avec un module coutant 450€ / 5 disques supplémentaires</li>
<li>Ajout d'un disque SSD possible (Les tests de performance présentés sur le site utilisent un SSD)</li>
</ul><p>L'avantage d'un tel NAS est le coté clef en main du produit (d'après ce que je lis). Par contre, les inconvénients que je vois :</p>

<ul><li>peu d'évolutivité en nombre de disques ou chère</li>
<li>logiciel propriétaire</li>
<li>pour un RAID6, je n'ai que 5-2 = 3 fois la taille d'un disque disponible. La sacrifice est important.</li>
<li>le 8 baies est bien plus cher</li>
</ul><p>Pour un prix légèrement inférieur, ma proposition ci-dessous me donne</p>

<ul><li>quad core 2.4 GHz</li>
<li>16Go RAM ECC</li>
<li>disques en ZFS (ou autre chose)</li>
<li>Avec le boitier, on peut y mettre jusqu'à 8 disques facilement, 10 sans trop de difficulté.</li>
</ul><p>Pour l'évolutivité :</p>

<ul><li>Possibilité d'ajouter deux disques SSD pour améliorer les performances si le besoin sans fait sentir (pour NFS ?).</li>
<li>Possibilité de monter jusqu'à 64 Go de RAM (je reviendrai là dessus).</li>
<li>Possibilité d'ajouter de la ventilation.</li>
<li>Possibilité d'en faire autre chose qu'un NAS si les besoins devaient évoluer brutalement.</li>
</ul><h1>Le choix</h1>

<p>Pour le matériel, et notamment la partie critique (carte mère, mémoire, etc), je conseille <a href="http://www.ldlc.com/">LDLC</a> car ils ont un excellent support téléphonique (déjà testé), une bonne politique de retour, un site bien fait et une livraison gratuite dans des points relais.
Les choix ne sont pas neufs en soi. Je me suis largement inspiré des conseils donnés sur le forum de freenas et quelques blogs.</p>

<h2>Le système d'exploitation</h2>

<p>BSD gère nativement ZFS, mais ça reste possible avec debian. Néanmoins, j'ai une confiance plus grande sur un support natif, je m'oriente donc vers <a href="http://freenas.org/">FreeNAS</a> pour la distribution.
La documentation de FreeNAS est exhaustive, le forum est très actif et possède beaucoup de contenu.</p>

<h2>UPS</h2>

<p>Le nombre de disques durs peut être important. Je veux que ça tienne un minimum et avoir le temps d'éteindre proprement. De plus, les capacités des batteries peuvent diminuer au cours du temps, il faut prendre ce paramètre en compte.</p>

<ul><li><a href="http://www.apc.com/products/configure/index.cfm?base_sku=BX1400U-FR&amp;totalwatts=200">APC BX1400U-FR 1400VA</a>. Env 130€</li>
</ul><h2>Carte mère</h2>

<p>Les critères que j'ai retenu :</p>

<ul><li>le nombre de port SATA</li>
<li>la capacité en mémoire vive (FreeNAS en consomme beaucoup et de manière générale, c'est plutôt bien de ne pas en manquer)</li>
<li>le réveil par réseau (Wake On LAN)</li>
<li>la consommation énergétique (inférieure à <a href="http://www.tweaktown.com/reviews/6842/asrock-rack-c2550d4i-intel-avoton-mini-itx-server-motherboard-review/index8.html">50W</a>)</li>
</ul><p>ASRock fabrique de très belles cartes mères pour les serveurs.
Mon choix s'est porté sur une version 4 coeurs. En 8 coeurs, la différence de prix est selon moi trop importante pour une utilité relative sur un NAS. Le petit plus que j'apprécie : le CPU est livré avec la carte mère, pas besoin d'aller jouer avec la pâte thermique.</p>

<h3>Version Quad core</h3>

<ul><li>ASRock C2550D4I 290€ <a href="http://www.ldlc.com/fiche/PB00161902.html">LDLC</a></li>
<li><a href="http://www.servethehome.com/intel-atom-c2550-benchmarks-4-core-avoton-tested/">Benchmark</a></li>
</ul><p>Caractéristiques :</p>

<ul><li>mini itx</li>
<li>Intel Avoton C2550 Quad Core 2.4GHZ featuring 14W TDP</li>
<li>16 Go par slot, 64 max, 4 slots</li>
<li>12 SATA (4 SATA2, 8 SATA3)</li>
<li>Support de l'<a href="https://fr.wikipedia.org/wiki/Intelligent_Platform_Management_Interface">IPMI</a></li>
<li>3 ports USB (dont un pour l'UPS, et un pour l'OS)</li>
</ul><h3>Version Octa core</h3>

<ul><li>ASRock C2750D4I 419€ <a href="http://www.ldlc.com/fiche/PB00157542.html">LDLC</a></li>
<li><a href="http://www.servethehome.com/intel-atom-c2750-8-core-avoton-rangeley-benchmarks-fast-power/">Benchmark</a></li>
</ul><p>Les autres caractéristiques sont identiques à ci-dessus.</p>

<h2>RAM ECC</h2>

<p>Il est important d'utiliser des mémoires ECC. C'est recommander par freenas pour éviter les corruptions de données.</p>

<ul><li><a href="http://www.asrockrack.com/general/productdetail.asp?Model=C2550D4I#Memory">liste des compatibilités</a></li>
<li>Choix : DDR3 1600 ECC 8GB Crucial CT102472BD160B. Compter 80€ les 8 Go</li>
</ul><p>8Go est le minimum pour FreeNAS, 16Go devrait être à peu près confortable avec la possibilité de passer à 32Go.
Les mémoires de 16Go sont un peu trop couteuses ici. Notre système se limitera donc à 32Go pour des raisons de coûts.</p>

<h2>Chassis</h2>

<p>Critères :</p>

<ul><li>de l'espace, pour faire circuler l'air et pour faciliter l'installation.</li>
<li>un grand nombre d'emplacements pour disques 3.5"</li>
<li>de la ventillation et des filtres pour la poussière</li>
<li>des cables bien rangés</li>
<li>compatible carte mini itx</li>
</ul><p>Mon choix :</p>

<ul><li><a href="http://www.fractal-design.com/home/product/cases/define-series/define-r5-black">Fractal R5</a> 110€</li>
</ul><p>Caractéristiques :</p>

<ul><li>alim  ATX/EPS</li>
<li>2 SSD (à placer sur le coté)</li>
<li>8 disques 3.5" ou 2.5"</li>
<li>2 espaces pour lecteurs optiques dans lesquels il serait possible de mettre deux racks pour disques durs 3.5" ou 2.5"</li>
<li>2 ventilateurs 140mm fournis</li>
<li>un grand nombre de réceptacles pour des ventilateurs supplémentaires</li>
</ul><h2> Alim</h2>

<p>Il faut donc choisir une alimentation ATX/EPS. Toujours prendre de la qualité pour éviter de sentir un jour le plastique brûlé.</p>

<ul><li>FSP AURUM S400 400W 80PLUS Gold 60€ <a href="http://www.ldlc.com/fiche/PB00150492.html">(LDLC)</a></li>
<li>Enermax Revolution XT ERX430AWT 80PLUS Gold 75€ <a href="http://www.ldlc.com/fiche/PB00159190.html">(LDLC)</a></li>
</ul><h2>USB</h2>

<ul><li>SanDisk Cruzer Fit 16 Go 6€</li>
</ul><p>Avantages :</p>

<ul><li>petit prix</li>
<li>deux fois l'espace nécessaire à freenas</li>
<li>5 mm de longueur. Elle s'oublira à l'arrière de la machine.</li>
</ul><h2>Disques</h2>

<p>Je privilégie :</p>

<ul><li>des disques de récupération (en bon état tout de même)</li>
<li>des disques à faible vitesse (5400 tours/min) car ils chauffent moins</li>
<li>des disques WD red, j'en ai une très bonne expérience</li>
</ul><p>A noter que la taille totale disponible dépend de la taille du plus petit disque.
Il faut aussi réfléchir aux besoins futurs avec les remarques suivantes :</p>

<ul><li>On ne pourra pas ajouter de disques. Il n'est pas raisonnable de mettre deux vdev, et il est impossible d'étendre un vdev.</li>
<li>Quel coût existera-t-il si on veut augmenter la taille de chaque disque ? Quel gain ? Faut-il le faire maintenant ou plus tard (évolution des prix, existant).</li>
</ul><p>Ces choix sont à faire au cas par cas. A noter aussi qu'il est déconseillé d'acheter tous les disques de même modèle, en même temps, chez le même fournisseur. La probabilité qu'ils tombent en panne simultanément est plus grande.</p>

<h3>Connectique</h3>

<ul><li>La carte mère est venue avec 6 cables SATA. A compléter si on veut passer à 8.</li>
<li>L'alimentation possède un nombre limité de connecteur d'alim SATA (5). Il faut donc soit mettre des dédoubleurs sur des fiches molex (que l'on utilise pas), soit des extensions de fiche SATA.</li>
</ul><h2>SSD</h2>

<p>Il n'est pas encore clair qu'un disque SSD apporte des améliorations pour mon utilisation (cf <a href="https://www.reddit.com/r/freenas/comments/3hv4h1/ssd_cache/">reddit</a> ou <a href="https://forums.freenas.org/index.php?threads/slideshow-explaining-vdev-zpool-zil-and-l2arc-for-noobs.7775/">Introduction to vdev, zpool, ZIL, L2ARC</a>).
Le point sensible est ici la partie NFS qui peut avoir besoin d'un cache pour être plus rapide.
De même que pour les NAS assemblés, c'est optionnel et souvent laissé au regard de l'utilisateur.
La documentation de freenas indique qu'il faut privilégier la RAM en premier.</p>

<h1>Liens intéressants</h1>

<ul><li><a href="http://www.durindel.fr/tutoriel-configuration-de-freenas">Excellent tuto en français sur freenas</a></li>
<li><a href="http://www.durindel.fr/utilisation-avancee-de-freenas">... et son pendant avancé</a></li>
<li><a href="http://doc.freenas.org/">Doc freenas</a></li>
<li><a href="https://forums.freenas.org/index.php?threads/hardware-recommendations-read-this-first.23069/">Forum freenas : choix matériel</a></li>
<li><a href="http://blog.brianmoses.net/2015/01/diy-nas-2015-edition.html">NAS edition 2015</a> et <a href="http://blog.brianmoses.net/2016/02/diy-nas-2016-edition.html">NAS edition 2016</a></li>
<li><a href="http://blog.superuser.com/2011/09/14/building-a-nas-server-2/">Pourquoi ZFS</a> + doc freenas</li>
<li><a href="http://louwrentius.com/">Blog d'une personne ayant monté un NAS de 71 To</a> (justification ZFS, choix RAID...)</li>
<li><a href="https://forums.freenas.org/index.php?threads/slideshow-explaining-vdev-zpool-zil-and-l2arc-for-noobs.7775/">Introduction to vdev, zpool, ZIL, L2ARC</a></li>
</ul>
<p><img src="media/140e5c7a.36bd0d829d0779d8b3e8cfb87f9b9537" data-original-source="http://cdn.libravatar.org/avatar/36bd0d829d0779d8b3e8cfb87f9b9537" alt="Gravatar de François Boulogne" class="gravatar" /><br/><i>Original post of <a href="http://blog.sciunto.org//posts/NAS1/" title="Visit the source">François Boulogne</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>François Boulogne : <a href="">Autoh&eacute;bergement d&#039;un gitlab</a> (30/09/2015)</li><li>François Boulogne : <a href="">Autoh&eacute;bergement : Pour qui ? Pour quoi ? Contre qui ? Contre quoi ?</a> (02/10/2015)</li><li>François Boulogne : <a href="">Mise &agrave; jour du plugin pandoc pour ikiwiki</a> (19/12/2015)</li><li>François Boulogne : <a href="">rss-bridge : flux rss pour sites qui n&#039;en proposent pas</a> (19/12/2015)</li><li>François Boulogne : <a href="">Pourquoi je soutiens l&#039;April</a> (08/02/2014)</li></ul></div></p>


feed_id: http://postblue.info/liste-des-extensions-firefox-que-jutilise/
title: PostBlue : Liste d’extensions Firefox
uri: PostBlue-Liste-d-extensions-Firefox
url: http://postblue.info/liste-des-extensions-firefox-que-jutilise/
content:
<p>Petite <a href="http://postblue.info/tag/liste">liste</a> simple et rapide des extensions ajoutées à mon installation de <a href="https://www.mozilla.org/fr/firefox/new/">Firefox</a>, sur une distribution <a href="https://www.archlinux.org/">Arch Linux</a> avec le gestionnaire de bureau <a href="https://www.gnome.org/">GNOME</a>.</p>

<p>N'hésitez pas à me conseiller l'une ou l'autre extension que je ne connaitrais pas.</p>

<h1>Arc Firefox Theme</h1>

<p>J’utilise le thème <a href="https://github.com/horst3180/arc-theme">Arc</a> sous GNOME<sup><a href="http://postblue.info/liste-des-extensions-firefox-que-jutilise/#fn:1" rel="footnote">1</a></sup>, et donc aussi le thème développé pour le navigateur (parce que j'aime la régularité du style des applications).</p>

<p><img src="https://camo.githubusercontent.com/2634644b8361e5f43292bb926468cf6dc74bdaf8/687474703a2f2f692e696d6775722e636f6d2f556a4a616245332e706e67" alt="Arc Firefox"></p>

<blockquote>
  <p>Choisir un thème de la collection <a href="https://addons.mozilla.org/fr/firefox/collections/horst3180/a/">Arc Firefox Themes</a> sur le site de Modules pour Firefox.</p>
</blockquote>

<h1>eID Belgique</h1>

<p>Cette extension permet d’utiliser la carte d’identité électronique belge (eID) dans Firefox.</p>

<ol><li>Outre cette extension, il faut <a href="http://eid.belgium.be/fr">installer le middleware eid-mw</a> sur sa machine (et il y a même des dépôts pour l'<a href="http://eid.belgium.be/fr/utiliser_votre_eid/installer_le_logiciel_eid/linux">installation sur des machines GNU / Linux</a>).  </li>
<li>Le lecteur de carte d’identité électronique doit être connecté à la machine avant le lancement de Firefox pour que l'extension fonctionne.</li>
</ol><blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/belgium-eid/">eID Belgique</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>GNotifier</h1>

<p>GNotifier intègre les notifications de Firefox et Thunderbird au système de notification natif de GNOME (mais sensément de tout gestionnaire de bureau sous Linux utilisant <code>libnotify</code>) et de Windows (8 et 10). Il remplace le gestionnaire de pop-up par défaut dans Firefox pour l'intégrer au bureau,  pour :</p>

<ul><li>la complétion de téléchargement, avec la possibilité de sélectionner l'action par défaut au clic : ouvrir le document ou le dossier parent ;</li>
<li>les nouveaux éléments dans les flux RSS ;</li>
<li>les sites/services envoyant des notifications, comme <a href="http://freshrss.org/">FreshRSS</a><sup><a href="http://postblue.info/liste-des-extensions-firefox-que-jutilise/#fn:2" rel="footnote">2</a></sup> ou <a href="https://movim.eu/">Movim</a>.</li>
</ul><p><img src="https://camo.githubusercontent.com/4102e7ccbd322f0561de3f26c6d8c85161c29892/68747470733a2f2f7261772e6769746875622e636f6d2f6d6b696f6c2f474e6f7469666965722f6d61737465722f6d6973632f676e6f6d65322e706e67" alt="GNotifier"></p>

<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/gnotifier/">GNotifier</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>HTitle</h1>

<p>HTitle permet de cacher la barre de titre de Firefox quand la fenêtre est maximisée, et donc de gagner de l'espace vertical pour afficher le plus de contenu possible à l'écran<sup><a href="http://postblue.info/liste-des-extensions-firefox-que-jutilise/#fn:3" rel="footnote">3</a></sup>. Le développement de ce module est malheureusement abandonné, mais il fonctionne encore sans souci sur une installation récente de Firefox.</p>


<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/htitle/">HTitle</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>uBlock Origin</h1>

<p>uBlock est une extension qui bloque les publicités et les pisteurs, tout simplement et avec légèreté (mémoire et processeur).</p>

<p><img src="media/868c190d.157572.png" data-original-source="https://addons.cdn.mozilla.net/user-media/previews/full/157/157572.png" alt=""></p>

<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/ublock-origin/">uBlock Origin</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>Greasemonkey</h1>

<p>Un gestionnaire de scripts utilisateur pour Firefox, utilisé en mon cas pour le script <a href="https://reek.github.io/anti-adblock-killer/">Anti-Adblock Killer</a>.</p>

<p><img src="media/31173129.header.png" data-original-source="https://raw.githubusercontent.com/reek/anti-adblock-killer/gh-pages/images/header.png" alt=""></p>

<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/greasemonkey/">Greasemonkey</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>HTTPS Everywhere</h1>

<p>Module issu de la collaboration entre le <a href="https://www.torproject.org/">Tor Project</a> et l'<a href="https://eff.org/">Electronic Frontier Foundation</a>, <a href="https://www.eff.org/fr/HTTPS-everywhere">HTTPS Everywhere (site officiel du projet)</a> active une redirection automatique, côté navigateur, vers le contenu accessible en HTTPS des sites visités, sur base d'une base de donnée locales.</p>

<p><img src="media/a0473871.https-everywhere2.jpg" data-original-source="https://www.eff.org/files/https-everywhere2.jpg" alt="HTTPS Everywhere"></p>

<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/https-everywhere/">HTTPS Everywhere</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>Privacy Badger</h1>

<p><a href="https://www.eff.org/fr/privacybadger">Privacy Badger (site officiel du projet)</a> bloque (en apprenant, pas tout tout de suite) les scripts espions et les pisteurs.</p>

<p><img src="media/db46abdf.badger-fpg-1b.jpg" data-original-source="https://www.eff.org/files/2014/05/01/badger-fpg-1b.jpg" alt="Privacy Badger"></p>

<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/privacy-badger-firefox/">Privacy Badger</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>PassFF</h1>

<p>Cette extension n'est rien de moins qu'un gestionnaire de mots de passe. Ou plutôt, c'est une extension qui permet à Firefox de dialoguer avec <code>pass</code>, un <a href="https://www.passwordstore.org/">password store</a>, directement depuis le navigateur.</p>

<p><code>pass</code> est un gestionnaire de mots de passe qui se base sur <code>git</code> pour collectionner les changements apportés à sa base de données, et GPG pour chiffrer les mots de passe.</p>

<p><img src="media/5c49da95.137958.png" data-original-source="https://addons.cdn.mozilla.net/user-media/previews/full/137/137958.png" alt="PassFF"></p>

<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/passff/">PassFF</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>Pure URL</h1>

<p>Cette extension supprime des URLs de la barre d'adresse les éléments suivants :</p>

<ul><li><code>utm_source</code>, <code>utm_medium</code>, <code>utm_term</code>, <code>utm_content</code> et <code>utm_campaign</code>, traçage pour Google Analytics ;</li>
<li><code>yclid</code>, traçage pour Yandex.Metrica ;</li>
<li><code>feature</code>, pollution de l'URL sur YouTube ;</li>
<li><code>fb_action_ids</code>, <code>fb_action_types</code>, <code>fb_ref</code>, <code>fb_source</code>, <code>action_object_map</code>, <code>action_type_map</code>, <code>action_ref_map</code>, traçage pour Facebook ;</li>
<li><code>ref</code>, <code>fref</code>, <code>hc_location</code>, pollution de l'URL sur Facebook ;</li>
<li><code>ref_</code>, pollution de l'URL sur IMDB.</li>
</ul><blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/pure-url/">Pure URL</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<h1>Decentraleyes</h1>

<p>Decentraleyes protège du pistage lié à l'accès à des contenus centralisés. Du coup, cette extension accélère de nombreuses requêtes en les servant localement, allégeant la charge des sites (qui ne vont plus s'alimenter de celles hébergées sur l'un ou l'autre CDN, <a href="http://postblue.info/ugly-cdn/">dont j'ai déjà dit tout le mal que je pensais</a>). Elle complète les bloqueurs de contenus habituels.</p>

<p><img src="https://addons.cdn.mozilla.net/user-media/previews/full/137/137406.png?modified=1402852866" alt="Decentraleyes: evade content delivery networks without breaking websites."></p>

<blockquote>
  <p>Installer l'extension <a href="https://addons.mozilla.org/fr/firefox/addon/decentraleyes/">Decentraleyes</a> depuis le site de Modules pour Firefox.</p>
</blockquote>

<div><ol><li><p>Plusieurs variantes sont disponibles, dont Dark et Darker qui sont sombres, j’utilise celle qui est « claire ». <a href="http://postblue.info/liste-des-extensions-firefox-que-jutilise/#fnref:1" title="return to article">↩</a></p></li>
<li><p>Voir <a href="http://doc.freshrss.org/fr/users/05_Configuration/#temps-daffichage-de-la-notification-html5">la documentation de FreshRSS</a> pour un complément d'information. <a href="http://postblue.info/liste-des-extensions-firefox-que-jutilise/#fnref:2" title="return to article">↩</a></p></li>
<li><p>Voir <a href="https://github.com/chpii/Headerbar">le tutoriel Headerbar sur GitHub</a> pour une petite marche à suivre de l'intégration de Firefox au bureau GNOME avec le thème Adwaita. <a href="http://postblue.info/liste-des-extensions-firefox-que-jutilise/#fnref:3" title="return to article">↩</a></p></li></ol></div>
<p><img src="media/00a321c9.6e80c1e7eee37b7507d19ec8bb9afc90" data-original-source="http://cdn.libravatar.org/avatar/6e80c1e7eee37b7507d19ec8bb9afc90" alt="Gravatar de PostBlue" class="gravatar" /><br/><i>Original post of <a href="http://postblue.info/liste-des-extensions-firefox-que-jutilise/" title="Visit the source">PostBlue</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://www.xieme-art.org/post/2016/03/Demarrage-PXE-Openwrt-dnsmasq-freenas
title: ephase : Démarrage PXE avec Openwrt, Dnsmasq et FreeNAS
uri: ephase-Démarrage-PXE-avec-Openwrt-Dnsmasq-et-FreeNAS
url: http://www.xieme-art.org/post/2016/03/Demarrage-PXE-Openwrt-dnsmasq-freenas
content:
<p>Ajourd'hui j'ai décidé de simplifier mon architecture réseau , je me sépare donc de mon serveur DHCP(dhcpd) et décide d'utiliser celui de mon routeur sous <a href="https://openwrt.org/">OpenWRT</a>. Il y a tout de même un petit couac : mon vieux serveur me permettait de démarrer en PXE pour différentes architectures x86 : efi, efi64 et Bios.</p>

<p>Si la configuration du PXE sous dhcpd est très documenté, avec <a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> c'est pas vraiment le cas. Je vous livre ici le résultat de mes recherche avec un exemple qui fonctionne très bien.</p>

<h3>Ce que j'ai</h3>

<p>J'ai  un routeur TPLink sous OpenWRT et un serveur Freenas qui fournit des services SMB, NFS et TFTP. FreeNAS et déjà configuré et fonctionnel puisque je l'utilisait déjà avec mon serveur DHCP.</p>

<p>Le démarrage PXE est assuré par <a href="http://ipxe.org/">iPXE</a>. Le tout doit me permettre de démarrer des machines via le réseau soit pour installer des Windows, soit cloner / restaurer des machines avec Clonezilla ou encore dépanner / récupérer des données avec SysrecueCD. Las machines clientes sur lesquelles j'interviens vont du vieux portable en Core Duo à l'ordinateur fixe en Core i7 en passant par des Mac (bon je triche, là iPXE démarre depuis une clé USB : pas de vrai PXE possible).</p>

<p>Voilà un schéma de ce que je veux :</p>

<p><img src="media/5cfc6dd0.plan_reseau.png" data-original-source="http://www.xieme-art.org/public/tutoriels/linux/ipxe_openwrt/plan_reseau.png" alt="img" title=""></p>

<p>Sur mon FreeNAS, TFTP est activé, les fichiers sont rangés comme ceci :</p>

<ul><li><code>tftp/efi</code></li>
<li>
<ul><li><code>ipxe.efi</code> : le chargeur de démarrage ipxe en mode efi64</li>
</ul></li>
<li>
<ul><li><code>ipxe_32.efi</code> : le chargeur de démarrage ipxe en mode EFI 32 bits, ce n'est pas très utile normalement mais il arrive encore de trouver des machines efi32 …</li>
</ul></li>
<li><code>tftp/bios</code></li>
<li>
<ul><li><code>ipxe.pxe</code> : le chargeur de démarrage ipxe en mode Bios</li>
</ul></li>
<li><code>/tftp/c</code></li>
<li>
<ul><li><code>boot.ipxe</code> : le fichier de configuration contenant le menu qu'ipxe appelle lorsqu'il démarre.</li>
</ul></li>
</ul><h3>configuration du routeur</h3>

<p>J'ai donc besoin de configurer dnsmasq sur le routeur pour lui permettre de choisir le bon fichier de démarrage par le réseau en fonction de ma machine cliente.</p>

<p>Je me connecte sont en SSH sur mon routeur,  puis j'édite le fichier <code>/etc/dnsmasq.conf</code> comme ci dessous :</p>

<pre><code># mach arch type for proper pxe Boot
dhcp-match=bios,option:client-arch, 0 
dhcp-match=efi32,option:client-arch, 6  
dhcp-match=efix64,option:client-arch, 7
dhcp-match=efix64,option:client-arch, 9

#Special case : iPXE boot
dhcp-match=ipxe,option:user-class,iPXE                  

# Boot now!                                             
dhcp-boot=tag:bios,bios/ipxe.pxe,srvtech,192.168.10.250 
dhcp-boot=tag:efix32,efi/ipxe.efi,srvtech,192.168.10.250
dhcp-boot=tag:efix64,efi/ipxe.efi,srvtech,192.168.10.250
dhcp-boot=tag:ipxe,c/boot.ipxe,srvtech,192.168.10.250
</code></pre>

<p>Le principe est très simple, on colle une étiquette en fonction de l'architecture du client avec l'option <code>dhcp-match</code>. La syntaxe est <strong>dhcp-match=tag:[<em>étiquette</em>],option:[<em>option_a_comparer</em>],[<em>valeur_a_comparer</em>]</strong>.</p>

<p>Cette étiquette servira ensuite au dhcp d'envoyer à la machine client le bon ordre de récupération du fichier de démarrage avec l'option <code>dhcp-boot</code> avec comme syntaxe <strong>dhcp-boot=tag:[<em>étiquette</em>],[<em>fichier_de_demarrage</em>],[<em>nom_du_serveur</em>],[<em>adresse_du_serveur</em>]</strong>.</p>

<p>Étant donné qu'iPXE vient chercher son fichier de configuration lui aussi en mode PXE, notre serveur DCHP attribue à sa demande une étiquette spéciale afin qu'il récupère convenablement celui-ci.</p>

<p>Il suffit ensuite de redémarrer le service dnsmasq avec la commande <code>/etc/init.d/dnsmasq restart</code>.</p>

<p>Il suffit maintenant de tester un démarrage par le réseau mais attention, pensez a désactiver le <a href="https://fr.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Lancement_s.C3.A9curis.C3.A9_.28secure_boot.29">Secure Boot</a> dans les paramétrages de l'EFI sur vos machines clientes...</p>
<p><img src="media/1a4b2017.281735ef45203576d6a311b5167aaffe" data-original-source="http://cdn.libravatar.org/avatar/281735ef45203576d6a311b5167aaffe" alt="Gravatar de ephase" class="gravatar" /><br/><i>Original post of <a href="http://www.xieme-art.org/post/2016/03/Demarrage-PXE-Openwrt-dnsmasq-freenas" title="Visit the source">ephase</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Feilong : <a href="">APT (ou autre&hellip;) par proxy socks 5</a> (31/12/2008)</li><li>Geekfault : <a href="">PXE : Y a-t-il un bootloader sur l&rsquo;r&eacute;seau ?</a> (15/05/2010)</li><li>Matao : <a href="">Recompiler un noyau PXE pour ajouter des drivers manquants</a> (09/11/2010)</li><li>Blogmotion : <a href="">Comment activer le boot PXE avec Tomato</a> (02/12/2014)</li></ul></div></p>


feed_id: http://philippe.scoffoni.net/installation-mypads-debian-8/
title: Philippe Scoffoni : Installation de MyPads sur Debian 8
uri: Philippe-Scoffoni-Installation-de-MyPads-sur-Debian-8
url: http://philippe.scoffoni.net/installation-mypads-debian-8/
content:
<h2><img src="media/fb5a3a9b.logo_mypads.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/logo_mypads.png" alt="logo_mypads" width="200" height="200" srcset="http://philippe.scoffoni.net/wp-content/uploads/2016/03/logo_mypads-150x150.png 150w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/logo_mypads-160x160.png 160w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/logo_mypads-320x320.png 320w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/logo_mypads.png 200w" sizes="(max-width: 200px) 100vw, 200px">Vendre du MyPads ?</h2>
<p>Allons droit au but, si je me lance dans cette installation c’est dans l’idée d’évaluer la faisabilité de proposer un service payant basé sur ce logiciel. Pour l’instant, j’en suis aux premières expérimentations. De nombreuses questions sont encore en suspens tant sur le plan technique que commercial.</p>
<p><strong>Comment facturer ce service ?</strong> Une facturation au <strong>compte utilisateur</strong> impliquerait d’interdire les pads publics, sinon comment comptabiliser les utilisateurs <img src="media/da2d029e.simple-smile.png" data-original-source="http://philippe.scoffoni.net/wp-includes/images/smilies/simple-smile.png" alt=":-)"> ?</p>
<p>Le<strong> nombre de pads</strong> créés pourrait être un autre critère, mais là aussi ce n’est pas évident si l’on permet des pads publics. Il me semble que c’est plus le nombre d’utilisateurs qui génère la charge machine  que le nombre de pads créé. Un pad public utilisé par 200 personnes ce ne doit pas être rien en terme de charge.</p>
<p>Reste la solution, et c’est peut-être la plus simple, de mettre à disposition des <strong>instances dédiées</strong> avec des ressources allouées. Ce sont elles qui limiteront de fait les capacités d’usage de MyPads. L’avantage est de ne pas avoir à se soucier du nombre d’utilisateurs. En effet, il peut y avoir des utilisateurs ponctuels, réguliers, etc. De plus l’ouverture de pads publics redevient envisageable.</p>
<p>J’ouvrirais probablement une bêta avec des comptes ou instances gratuites pour voir un peu le comportement en charge de l’engin. En attendant, je vais déjà l’utiliser dans le cadre de mes prestations ou de projets en lien avec la formation.</p>
<p>Reste à savoir s’il y a un marché pour ce type d’offre… Face aux <strong>Google Apps</strong> ou à <strong>Office 365</strong> dont les fonctionnalités sont bien plus avancées, j’ai quelques doutes… Mais il y a peut-être une micro-niche dans le domaine de l’éducation ou de la formation.</p>
<p>Mais commençons par le début : la mise en place. Je procède à un installation dans un serveur virtuel sous <strong>Proxmox 3</strong> et une machine virtuelle<strong> OpenVZ </strong>équipé d’une<strong> Debian 8</strong>.</p>
<h2>Installer Etherpad</h2>
<p>C’est la première étape, <strong>MyPads</strong> a été développé comme un module complémentaire du logiciel libre Etherpad. <a rel="nofollow" href="http://framasoft.net/" target="_blank">Framasoft</a> a déjà pensé à nous et met à disposition <a rel="nofollow" href="http://framacloud.org/cultiver-son-jardin/installation-detherpad/" target="_blank">un tutoriel pour l’installation d’Etherpad</a>. <strong>Si je prends, je donne</strong>, allez voir <a rel="nofollow" href="https://soutenir.framasoft.org/partenaires" target="_blank">sur la page mécènes</a>, vous y trouverez ma société <img src="media/da2d029e.simple-smile.png" data-original-source="http://philippe.scoffoni.net/wp-includes/images/smilies/simple-smile.png" alt=":-)"> . Je suggère fortement à toutes les entreprises qui utilisent Mypads sur leurs serveurs d’en faire autant.</p>
<p>Etherpad est basé sur <strong>NodeJS</strong>. Ce dernier est disponible dans les dépôts de Debian 8 ce qui n’est pas le cas pour la version 7. Il vous faudra procéder comme expliqué sur le tutoriel de Framasoft dans ce dernier cas. Donc pour NodeJS :</p>
<pre>apt-get install nodejs</pre>
<p>et pour Node Package Manager :</p>
<pre>apt-get install npm</pre>
<p>Toujours rien de bien difficile. Continuons de suivre le tutoriel en créant un utilisateur dédié à Etherpad et en installant git et tout ce qu’il faut pour compiler.</p>
<p>Enfin, voici le moment venu de cloner le dépôt d’Etherpad sur la machine. A ce stade, il vous faudra également ajouter la commande curl</p>
<pre>apt-get install curl</pre>
<p>et créer le lien symbolique node pointant vers nodejs</p>
<pre><code><span>ln</span> -<span>s</span> /usr/bin/nodejs /usr/bin/node</code></pre>
<p>Vous pourrez alors lancer le script d’installation. Effectuez la configuration comme indiqué sur le tutoriel et installer <strong>Mongodb</strong>. A noter qu’il n’est plus utile d’indiquer « sessionKey » dans le fichier json. La valeur est désormais générée automatiquement.</p>
<pre>apt-get install mongod</pre>
<p>Appliquez les modifications de configuration du tutoriel. Si vous n’avez pas fait d’erreur, la console va vous afficher :</p>
<pre>Ensure that all dependencies are up to date...  If this is the first time you have run Etherpad please be patient.
npm WARN package.json async-stacktrace@0.0.2 No repository field.
npm WARN package.json channels@0.0.4 No repository field.
npm WARN package.json tinycon@0.0.1 No repository field.
Ensure jQuery is downloaded and up to date...
Clearing minified cache...
Ensure custom css/js files are created...
Started Etherpad...
[2016-02-27 20:59:07.483] [INFO] console - Installed plugins: 
[2016-02-27 20:59:07.496] [INFO] console - Report bugs at https://github.com/ether/etherpad-lite/issues
[2016-02-27 20:59:07.497] [INFO] console - Your Etherpad version is 1.5.7 (d880527)
[2016-02-27 20:59:07.578] [INFO] console - You can access your Etherpad instance at http://0.0.0.0:9001/
[2016-02-27 20:59:07.578] [INFO] console - The plugin admin page is at http://0.0.0.0:9001/admin/plugins
</pre>
<p>Well done <img src="media/da2d029e.simple-smile.png" data-original-source="http://philippe.scoffoni.net/wp-includes/images/smilies/simple-smile.png" alt=":-)"><br><a href="media/821ce640.SC3A9lection_207.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/02/S%C3%A9lection_207.png" rel="attachment wp-att-6088" data-rel="lightbox-0" title=""><img src="media/821ce640.SC3A9lection_207.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/02/S%C3%A9lection_207.png" alt="Sélection_207" width="817" height="450" srcset="http://philippe.scoffoni.net/wp-content/uploads/2016/02/Sélection_207-300x165.png 300w, http://philippe.scoffoni.net/wp-content/uploads/2016/02/Sélection_207-768x423.png 768w, http://philippe.scoffoni.net/wp-content/uploads/2016/02/Sélection_207-600x330.png 600w, http://philippe.scoffoni.net/wp-content/uploads/2016/02/Sélection_207.png 817w" sizes="(max-width: 817px) 100vw, 817px"></a></p>
<p>Il vous faudra encore installer un <strong>proxy web</strong> pour rediriger selon vos besoins un nom de domaine sur votre installation. Dans mon cas ce dernier existe déjà, il m’a suffi de déclarer mon nouveau sous-domaine et le faire pointer vers la bonne machine virtuelle.</p>
<p>Dans les éléments de configuration d’Etherpad, j’ai changé la langue par défaut positionné à « en-gb » par ‘fr » dans le fichier /home/etherpad/etherpad-lite/settings.json aux environs de la ligne 73.</p>
<p>Autres détails, j’utilise pour l’instant l’utilitaire <a rel="nofollow" href="https://www.gnu.org/software/screen/manual/screen.html" target="_blank">screen</a> pour lancer Etherpad et bénéficier d’une vue sur la console. Ce n’est probablement pas la solution finale que j’adopterais, mais pour l’instant elle me permet de voir ce qui se passe côté serveur simplement.</p>
<h2>Ajoutons MyPads</h2>
<p>Là, cela devient enfantin, puisqu’il suffit de se rendre sur la page d’administration sous l’url http://example.com/admin/plugins et de faire une recherche sur Mypads. Cliquez ensuite sur « Install ». Vous n’avez plus qu’à vous rendre sur votre url http://example.com/mypads.</p>
<p>Pour accéder à la page d’administration de MyPads, il vous faut utiliser l’utilisateur que vous avez configuré dans le fichier /home/etherpad/etherpad-lite/settings.json.</p>
<p>Dans zone de recherche saisissez mypads et cliquez sur Install. A ce stade, j’ai également ajouté les plug-ins suivants :</p>
<ul><li>adminpads : pour gérer tous les pads qui ont été créés sur l’instance et faire le ménage facilement ;</li>
<li>sync_status: pour voir un petit message et se rassurer sur la bonne sauvegarde de ses modifications ;</li>
</ul><p>Quand je compare mes pads à ceux du Framapad, je me dis qu’il doit me manquer encore quelques plug-ins. Si un admin de Framasoft passe par là et peut laisser la liste des plug-ins en commentaires, cela serait sympa <img src="media/da2d029e.simple-smile.png" data-original-source="http://philippe.scoffoni.net/wp-includes/images/smilies/simple-smile.png" alt=":-)"></p>
<p>Il me faut personnaliser la page d’accueil et limiter ou au moins contrôler les possibilités de création de comptes. Je n’ai pas retrouvé l’information sur qui avait développé au final MyPads. Là encore, laissez l’information en commentaire, j’aimerais bien le contacter pour chiffrer les évolutions qui me sont nécessaires pour pouvoir proposer une offre de services pour MyPads.</p>
<hr><a href="http://philippe.scoffoni.net/installation-mypads-debian-8/#comments">Réagir à cet article</a>
<p><small>Article original écrit par Philippe Scoffoni le 12/03/2016. | <a href="http://philippe.scoffoni.net/installation-mypads-debian-8/">Lien direct vers cet article</a><br><br>Cette création est mise à disposition sous un <a rel="license" href="http://creativecommons.org/licenses/by/2.0/fr/">contrat Creative Commons BY</a>  à l'exception des images qui l'illustrent (celles-ci demeurent placées sous leur mention légale d'origine).</small></p>.

<p><img src="media/59ec0aeb.ee4bb1c08ac2d03c76f391d4b26c812a" data-original-source="http://cdn.libravatar.org/avatar/ee4bb1c08ac2d03c76f391d4b26c812a" alt="Gravatar de Philippe Scoffoni" class="gravatar" /><br/><i>Original post of <a href="http://philippe.scoffoni.net/installation-mypads-debian-8/" title="Visit the source">Philippe Scoffoni</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Philippe Scoffoni : <a href="">Comment permettre des discussions entre utilisateurs dans Owncloud</a> (08/07/2015)</li><li>Philippe Scoffoni : <a href="">Roadbook de la configuration de ma Debian 7 de production</a> (11/01/2014)</li><li>Philippe Scoffoni : <a href="">Installer Owncloud 8.1 sur Debian 8 avec Nginx et MariaDB</a> (26/07/2015)</li><li>Framablog : <a href="">MyPads : le d&eacute;veloppement est lanc&eacute;</a> (11/12/2014)</li><li>Framablog : <a href="">MyPads : le d&amp;eacute;veloppement est lanc&amp;eacute;</a> (11/12/2014)</li></ul></div></p>


title: Journal du hacker : Liens intéressants Journal du hacker semaine #10
uri: Journal-du-hacker-Liens-intéressants-Journal-du-hacker-semaine-10
feed_id:
https://blog.journalduhacker.net/index.php?article22/liens-interessants-journal-du-hacker-semaine-10

url:
https://blog.journalduhacker.net/index.php?article22/liens-interessants-journal-du-hacker-semaine-10

content:
<p>Pour la 10ème semaine de 2016, voici 5 liens intéressants que vous avez peut-être ratés, relayés par <a href="https://www.journalduhacker.net/">le Journal du hacker</a>, votre source d’informations pour le Logiciel Libre francophone !</p>

<a href="https://www.journalduhacker.net/"><img src="media/01f45034.logo-journal-du-hacker.png" data-original-source="https://blog.journalduhacker.net/data/medias/logo-journal-du-hacker.png"></a>

<ul><li><a href="https://www.journalduhacker.net/s/tcwcop/booster_son_association_gr_ce_aux_outils_num_riques">Booster son association grâce aux outils numériques</a></li>
<li><a href="https://www.journalduhacker.net/s/k0ub0k/linux_mint_a_t_compromise">Linux Mint a été compromise</a></li>
<li><a href="https://www.journalduhacker.net/s/d6mggq/la_raspberry_pi_3_chauffe_et_atteint_presque_les_100_c">La Raspberry Pi 3 chauffe et atteint presque les 100°C !</a></li>
<li><a href="https://www.journalduhacker.net/s/h1nsta/snowden_les_demandes_du_fbi_c_est_du_bullshit">Snowden : les demandes du FBI, c'est du « bullshit »</a></li>
<li><a href="https://www.journalduhacker.net/s/wyud9w/la_soci_t_getty_image_met_framasoft_en_demeure_de_supprimer_un_article_2014_maj_2016">La société GETTY IMAGE met Framasoft en demeure de supprimer un article</a></li>
</ul><p>Pour ne plus rater aucun article de la communauté francophone, voici :</p>

<ul><li><a href="https://www.journalduhacker.net/rss">Le flux RSS du Journal du hacker</a></li>
<li><a href="https://twitter.com/journalduhacker">Le compte Twitter du Journal du hacker</a></li>
<li><a href="https://framasphere.org/u/journalduhacker">Le compte Diaspora* du Journal du hacker</a></li>
</ul><p>De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !</p>

<p>Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. <a href="https://www.journalduhacker.net/invitations/request">Rejoignez-nous</a> pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !</p>

<p><strong>Et vous ? Qu’avez-vous pensé de ces articles ?</strong> N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)</p>
<p><img src="media/ffe97a17.7916ee3cafa0bc3e9583bedad876dcd5" data-original-source="http://cdn.libravatar.org/avatar/7916ee3cafa0bc3e9583bedad876dcd5" alt="Gravatar de Journal du hacker" class="gravatar" /><br/><i>Original post of <a href="https://blog.journalduhacker.net/index.php?article22/liens-interessants-journal-du-hacker-semaine-10" title="Visit the source">Journal du hacker</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://liens.planet-libre.org/?do=weekly&amp;week=20160314
title: Planet Libre : Brèves du Planet Libre - lundi 14, mars 2016
uri: Planet-Libre-Brèves-du-Planet-Libre-lundi-14-mars-2016
url: http://liens.planet-libre.org/?do=weekly&amp;week=20160314
content:
<h3><a href="https://linuxfr.org/users/antistress/journaux/ou-en-est-la-version-gnu-linux-de-firefox-cote-performances">Où en est la version GNU/Linux de Firefox côté performances ? - Journal sur LinuxFR.org</a></h3>
	<small>
		
			<div>
			<span>Firefox</span> <span>Linux</span> 
			</div>
		
		
		
	</small><br><br>
	antistress : Vous l'avez peut-être remarqué, différentes fonctionnalités sont dans les tuyaux tandis que certaines sont déjà activées – mais à un rythme différent selon les systèmes d'exploitation. D'où l'idée de faire le point sur ce qui est déjà implémenté et activé, déjà implémenté mais pas activé, ou pas encore implémenté… En bonus, un comparatif des performances du mode multi-processus selon les OS et selon les navigateurs.
	<br><br><hr><h3><a href="http://www.numerama.com/politique/150425-google-applique-le-droit-a-loubli-a-toutes-les-recherches-faites-en-europe.html">Google applique le droit à l'oubli à toutes les recherches faites en Europe - Numerama</a></h3>
	<small>
		
			<div>
			<span>CNIL</span> <span>Google</span> <span>anonyme</span> <span>oubli</span> <span>recherche</span> <span>pistage</span> 
			</div>
		
		
		
	</small><br><br>
	antistress : "Les nouvelles règles de Google en matière de droit à l'oubli entrent en vigueur cette semaine. Désormais, les résultats n'apparaîtront plus que si l'on effectue ses recherches en dehors de l'Union européenne. Suffisant pour satisfaire la CNIL ?"
	<br><br><hr>
<p><img src="media/39e36007.754dc5064d6c809129010f98e0616725" data-original-source="http://cdn.libravatar.org/avatar/754dc5064d6c809129010f98e0616725" alt="Gravatar de Planet Libre" class="gravatar" /><br/><i>Original post of <a href="http://liens.planet-libre.org/?do=weekly&amp;week=20160314" title="Visit the source">Planet Libre</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 17, juin 2013</a> (17/06/2013)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 24, juin 2013</a> (24/06/2013)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 21, avril 2014</a> (21/04/2014)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 01, juillet 2013</a> (01/07/2013)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 08, juillet 2013</a> (08/07/2013)</li></ul></div></p>


feed_id: http://fgallaire.flext.net/quel-dpl-pour-2016/
title: fgallaire : Quel DPL pour 2016 ?
uri: fgallaire-Quel-DPL-pour-2016
url: http://fgallaire.flext.net/quel-dpl-pour-2016/
content:
<p>Le temps passe vite, et cela fait déjà presque un an que <a href="http://blog.halon.org.uk/" target="_blank">Neil McGovern</a> a été <a href="http://fgallaire.flext.net/neil-mcgovern-elu-dpl-pour-2015/" target="_blank">élu Debian Project Leader</a> (<a href="http://www.debian.org/devel/leader" target="_blank">DPL</a>). Chaque <a href="http://wiki.debian.org/DebianDeveloper" target="_blank">développeur Debian</a> pouvait donc se porter candidat entre le 6 et le 12 mars à la suite du traditionnel <a href="https://lists.debian.org/debian-devel-announce/2016/03/msg00002.html" target="_blank">appel à candidatures</a>.</p>
<p>Dès le 7 mars, Neil exprimait <a href="https://lists.debian.org/debian-vote/2016/03/msg00002.html" target="_blank">le souhait de ne pas se représenter</a> :</p>
<blockquote><p>Just for avoidance of doubt, I do /not/ intend on re-standing for my post. I would encourage any candidates to put themselves forward.</p></blockquote>
<p>Malheureusement, peu de développeurs semblent motivés par la charge de DPL comme <a href="http://blog.liw.fi/posts/dpl-2016-not-platform/" target="_blank">l’exprimait Lars Wirzenius</a> :</p>
<blockquote><p>After some serious thinking, I’ve decided not to nominate myself in the Debian project leader elections for 2016. […] Why not run? I don’t think I want to deal with the stress. I already have more than enough stress in my life, from work.</p></blockquote>
<p>et il n’y aura donc finalement qu’un candidat cette année :</p>
<ul><li><a href="http://www.debian.org/vote/2016/platforms/mehdi" target="_blank">Mehdi Dogguy</a></li>
</ul><p>La question de la légitimité d’un scrutin avec un seul candidat <a href="https://lists.debian.org/debian-vote/2016/03/msg00005.html" target="_blank">a été posée</a> par Paul Wise, mettant en avant le fait qu’il ne s’agissait pas cette fois de renouveler sa confiance à un DPL déjà en poste comme c’était le cas de <a href="http://fgallaire.flext.net/zack-2-0/" target="_blank">Zack en 2011</a>.</p>
<p>Cependant, il est important de préciser que Mehdi avait fait un très bon résultat l’année dernière en finissant deuxième pour sa première tentative, et qu’il se positionnait ainsi comme un candidat très sérieux pour cette année.</p>
<p>Les presque mille développeurs Debian seront libres de voter du 3 au 16 avril lors d’un vote utilisant la <a href="http://fr.wikipedia.org/wiki/M%C3%A9thode_Condorcet" target="_blank">méthode Condorcet</a>.</p>
<p>Vous pouvez retrouver tous les débats de la campagne sur la <a href="http://lists.debian.org/debian-vote/2016/03/threads.html" target="_blank">mailing list debian-vote</a>.</p>
<div><a href="http://twitter.com/share?url=http://fgallaire.flext.net/quel-dpl-pour-2016/&amp;via=fgallaire&amp;text=Quel%20DPL%20pour%202016%20?&amp;related=:&amp;lang=en&amp;count=horizontal">Tweet</a></div>
<p><img src="media/8f79fd12.7fc5cf58fae9981c528af0ed4372f187" data-original-source="http://cdn.libravatar.org/avatar/7fc5cf58fae9981c528af0ed4372f187" alt="Gravatar de fgallaire" class="gravatar" /><br/><i>Original post of <a href="http://fgallaire.flext.net/quel-dpl-pour-2016/" title="Visit the source">fgallaire</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>fgallaire : <a href="">Quel DPL pour 2012 ?</a> (19/03/2012)</li><li>fgallaire : <a href="">Zack 3.0</a> (15/04/2012)</li><li>fgallaire : <a href="">Zack 2.0</a> (20/04/2011)</li><li>fgallaire : <a href="">Quel DPL pour 2013 ?</a> (11/03/2013)</li><li>fgallaire : <a href="">Neil McGovern &eacute;lu DPL pour 2015</a> (15/04/2015)</li></ul></div></p>


title: Progi1984 : Docker: utiliser SASS, PHPMyAdmin, MailDev et Sentry
uri: Progi1984-Docker-utiliser-SASS-PHPMyAdmin-MailDev-et-Sentry
feed_id:
http://rootslabs.net/blog/667-docker-utiliser-sass-phpmyadmin-maildev-et-sentry#pk_campaign=source&amp;pk_kwd=rss_tag_planet-php

url:
http://rootslabs.net/blog/667-docker-utiliser-sass-phpmyadmin-maildev-et-sentry#pk_campaign=source&amp;pk_kwd=rss_tag_planet-php

content:
<p>Dans mon précédent article, j’ai mis en place un <a href="http://rootslabs.net/blog/648-docker-environnement-de-developpement-versionnable">environnement de développement basé sur des containers Docker avec Nginx, PHP-fpm et MySQL</a>. Dans cet article, nous allons mettre en place différents containers Docker pour installer les outils suivants : SASS, PHPMyAdmin, MailDev et Sentry.</p>
<p><img src="media/61c74084.logo_docker_large-1024x352.png" data-original-source="http://rootslabs.net/blog/wp-content/uploads/2016/02/logo_docker_large-1024x352.png" alt="Logo Docker" width="1024" height="352" srcset="http://rootslabs.net/blog/wp-content/uploads/2016/02/logo_docker_large-300x103.png 300w, http://rootslabs.net/blog/wp-content/uploads/2016/02/logo_docker_large-768x264.png 768w, http://rootslabs.net/blog/wp-content/uploads/2016/02/logo_docker_large-1024x352.png 1024w" sizes="(max-width: 1024px) 100vw, 1024px"></p>
<p><!-- more --></p>
<p>Nous allons mettre les interfaces web des divers outils sur plusieurs ports :</p>
<ul><li>81 : PhpMyAdmin ;</li>
<li>82 : MailDev ;</li>
<li>83 : Sentry.</li>
</ul><p>Le port 80 reste pour notre application.</p>
<h2>PHPMyAdmin</h2>
<p>Pour <a href="https://www.phpmyadmin.net/">PhyMyAdmin</a>, il faut ajouter dans le fichier  </p><pre>docker-compose.yml</pre> les lignes suivantes :
<p></p><pre>## Tools : PhpMyAdmin
pma:
  image: nazarpc/phpmyadmin
  ports:
    - "81:80"
  links:
    - db:mysql
  environment:
    MYSQL_ROOT_PASSWORD: root</pre><p> </p>
<p>Pour faire fonctionner PhpMyAdmin, la ligne de commande suivante le télécharge et l’active :</p><pre>c:\\wamp\\www\\myProject>docker-compose up</pre><p> </p>
<h2>MailDev</h2>
<p>Pour <a href="http://djfarrelly.github.io/MailDev/">MailDev</a>, il faut ajouter dans le fichier  </p><pre>docker-compose.yml</pre> les lignes suivantes :
<p></p><pre>## Tools : MailDev
maildev:
  image: djfarrelly/maildev
  restart: always
  ports:
    - "82:80"</pre><p> </p>
<p>Pour faire fonctionner MailDev, on exécute </p><pre>docker-compose up</pre>.
<h2>SASS</h2>
<p>Pour <a href="http://sass-lang.com/">MailDev</a>, il faut ajouter dans le fichier  </p><pre>docker-compose.yml</pre> les lignes suivantes :
<p></p><pre>## Tools : SASS
sass:
  image: larryprice/sass
  volumes:
    - ./:/src</pre><p> </p>
<p>Automatiquement, chaque fichier SCSS sera transformé en fichier CSS dès que SASS verra une modification et affichera les erreurs en cas de problème :</p>
<p><img src="media/482d0fbf.docker_sass_log.png" data-original-source="http://rootslabs.net/blog/wp-content/uploads/2016/03/docker_sass_log.png" alt="Docker : Log de SASS" width="851" height="81"></p>
<p>Pour faire fonctionner SASS, on exécute </p><pre>docker-compose up</pre>.
<h2>Sentry</h2>
<p>Pour <a href="https://getsentry.com/">Sentry</a>, il faut ajouter dans le fichier </p><pre>docker-compose.yml</pre> les lignes suivantes :
<p></p><pre>## Tools : Sentry
sentry:
  image: slafs/sentry
  restart: always
  ports:
    - "83:9000"
  environment:
    SECRET_KEY: ""
    SENTRY_URL_PREFIX: ""
    SENTRY_ADMIN_USERNAME: Progi1984
    SENTRY_ADMIN_PASSWORD: mysecretpass
    SENTRY_ADMIN_EMAIL: progi1984@gmail.com
    SENTRY_PUBLIC: "true"
    SENTRY_INITIAL_TEAM: "myProjectTeam"
    SENTRY_INITIAL_PROJECT: "myProject"
    SENTRY_INITIAL_PLATFORM: "php"
    SENTRY_INITIAL_KEY: ":"</pre><p> </p>
<p>Toutes les clés composant le noeud « environment » sont décrites ici : <a href="https://hub.docker.com/r/slafs/sentry/">https://hub.docker.com/r/slafs/sentry/</a>.</p>
<p>Pour faire fonctionner Sentry, on exécute </p><pre>docker-compose up</pre>.
<h2>Conclusion</h2>
<p>Comme nous avons pu le voir, il est assez simple des composants à notre environnement de développement. Docker étant basé sur des containers, ajouter ou supprimer un composant à notre environnement se relève d’autant plus simple que Docker Compose permet de tout faire en un seul fichier.</p>
<p>Cet article <a rel="nofollow" href="http://rootslabs.net/blog/667-docker-utiliser-sass-phpmyadmin-maildev-et-sentry">Docker: utiliser SASS, PHPMyAdmin, MailDev et Sentry</a> est apparu en premier sur <a rel="nofollow" href="http://rootslabs.net/blog">RootsLabs</a>.</p>
<p><img src="media/86296e32.16023066ffed311303d907c9d9b756b1" data-original-source="http://cdn.libravatar.org/avatar/16023066ffed311303d907c9d9b756b1" alt="Gravatar de Progi1984" class="gravatar" /><br/><i>Original post of <a href="http://rootslabs.net/blog/667-docker-utiliser-sass-phpmyadmin-maildev-et-sentry#pk_campaign=source&amp;pk_kwd=rss_tag_planet-php" title="Visit the source">Progi1984</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://cyrille-borne.com/article2291/linux-et-la-securite-quelques-elements-factuels
title: Cyrille BORNE : Linux et la sécurité, quelques éléments factuels
uri: Cyrille-BORNE-Linux-et-la-sécurité-quelques-éléments-factuels
url: http://cyrille-borne.com/article2291/linux-et-la-securite-quelques-elements-factuels
content:
<p>On a coutume de déclarer <strong>le système Linux comme très bien sécurisé</strong> et il ne fait aucun doute que niveau sécurité les utilisateurs de Linux ont bien moins de problèmes que ceux de Windows, mais pour combien de temps encore ?</p>

<p>Les linuxiens rencontrent moins de mauvaises surprises, certes, mais la situation est loin d'être aussi simple et, avec le temps, du fait de la prépondérance du noyau Linux dans la plupart des smartphones, des systèmes embarqués, et bien d'autres services encore il faut s'attendre à ce que le système Linux soit de plus en plus la cible des pirates. Or comme jusqu'à il y a peu les attaques étaient bien plus rares sur Linux que sur les systèmes Windows, la sécurité parfois, je dis bien parfois, est passée au second plan dans certains contextes et solutions proposées. En disant cela je ne nie tout de même pas le très gros travail fourni par les développeurs, sur le noyau comme sur d'autres produits, pour chasser et corriger sans cesse les failles.</p>

<p>Il y a quelque temps je lisais un article sur un blog déclarant le <strong>noyau Linux</strong> comme moins fiable que celui de Windows, et cette affirmation se basait sur la liste des vulnérabilités recensées par le CERT-FR en 2015. Je ne vais pas polémiquer sur la méthode, sur le fait qu'il aurait fallu détailler les « multiples vulnérabilités » recensées dans les bulletins, le fait qu'il y a un noyau Linux d'origine et des déclinaisons par distributions, les possibles doublons, ni sur la démarche curieuse de baser sa conclusion uniquement sur des corrections de failles, corrections faites en toute transparence par les mainteneurs des noyaux. Bref, à moins de détailler très précisément le décompte faille par faille et correction par correction aucun chiffre valable ne peut être fait sur ces bases. Je doute d'ailleurs que l'on puisse arriver à une quelconque étude digne de foi à un instant T sauf à comparer des machines faisant tourner chacune un noyau différent sur chaque distribution Linux principale et des Windows toujours en service afin de vérifier toutes les failles connues et bien entendu aussi si possible en trouver des non encore découvertes. Il faudra alors aussi vérifier la sécurité de toutes les applications car un Os ne se compose pas uniquement d'un noyau. Bref, travail immense et surtout sans fin. Et sans intérêt au final, tellement les solutions proposées aussi bien avec Linux que Windows sont nombreuses, différentes, et doivent réponde aussi à des besoins divers et variés.</p>

<p>Personnellement je me bornerai à dire que j'ignore quel système est le plus sûr, je sais seulement que j'obtiendrai de meilleurs résultats avec celui que je connais le mieux, c'est à dire Linux. Et il peut tout à fait en être différemment pour d'autres.</p>

<p>Pour autant <a href="http://www.dsfc.net/infrastructure/securite/noyaux-linux-moins-fiables-que-noyau-windows/">cet article de dsfc.net</a>, bien au-delà de la provocation facile a un gros avantage, il attire l'attention du lecteur sur un problème ayant besoin d’être moins négligé par le plus grand nombre et à sortir d'une forme d'insouciance pour certains acteurs du libre, acteurs parfois à la marge des grandes réalisations d'ailleurs, mais pas seulement eux.</p>

<p>Une autre chose sur le noyau Linux. Si l'on veut le sécuriser plus que d'ordinaire il existe des patchs pour répondre à certains cas, des noyaux spécialisés, comme <a href="https://grsecurity.net/">le noyau grsecurity de Yves-Alexis Perez</a>. À noter d'ailleurs qu'un <a href="https://packages.debian.org/search?keywords=grsec">noyau pré compilé est disponible avec Debian Sid</a> et qu'il s'installe avec les outils dédiés et ses dépendances attr gradm2 linux-grsec-base linux-image-4.3.0-1-grsec-amd64 pax-utils paxctl. Mais attention, il ne suffit pas d'installer le noyau, il faudra le configurer. Pour cela <a href="https://www.corsac.net/">voir corsac.net</a> et les <a href="https://forums.grsecurity.net/">forums.grsecurity.net/</a> ou par exemple <a href="https://wiki.gentoo.org/wiki/Hardened/Grsecurity2_Quickstart">le wiki gentoo</a> même si ces dernières pages dans l'ensemble datent un peu.</p>

<p>Alors, peut-on dire que le système Linux est parfaitement sûr ? Bien évidement non, et d'ailleurs qui oserait le prétendre. Comme tout système il a ses failles même si elles sont régulièrement corrigées. Mais on pourrait dire aussi que malgré ses grandes qualités, le système des droits sur les fichiers, la possibilité de les étendre encore plus avec <strong>selinux</strong>, la séparation entre user et admin, la centralisation des dépôts et bien d'autres éléments encore en matière de sécurité Linux a aussi des faiblesses.</p>

<p><strong>Les faiblesses de Linux en général.</strong></p>

<p>En matière de sécurité toutes les distributions ne sont pas égales. Bien entendu les distributions principales comme Debian ou Redhat, voir aussi Archlinux, Gentoo, Fedora, Ubuntu, Mageia, Suses, vont suivre et appliquer très rapidement les correctifs de sécurité sur leurs produits, il n'en sera pas de même pour toutes les distributions ou plus exactement pour tous les forks qui, faute de moyens, voire parfois par négligence ou même par incompétence, ne feront pas le travail nécessaire dans les mêmes conditions.</p>

<p>À titre d'exemple je prendrai la <strong>Mint</strong>, et plus exactement sa version <strong>LMDE 2 Betsy</strong>. Là, c'est flagrant, ses utilisateurs courent des risques, et plus particulièrement s'ils font les mises à jour avec l'utilitaire dédié, mintupdate. Ce dernier va récupérer la liste des paquets à mettre à jour, liste bien différente de ce qui se passe si on utilise apt ou aptitude pour maintenir sa distribution à jour. Par exemple à l'heure ou j'écris ce billet, sur une LMDE 2 amd64 (mais c'est la même choses avec une i386) le dernier noyau disponible est le noyau Debian 3.16.0-4 version 3.16.7-ckt7-1 du 01 mars 2015 alors que la Debian Stable propose le 3.16.7-ckt20-1+deb8u4 du 29 février 2016 incorporant jusqu'au CVE-2016-2550.</p>

<p>Si vous voulez connaître les correctifs appliqués entre le 1 mars 2015 et aujourd'hui si vous utilisez une Debian vous pouvez passer la commande :<br><code>:~$ aptitude changelog linux-image-3.16.0-4-amd64</code><br>
et vous verrez qu'ils sont très très nombreux. À noter que sur une Debian Stable on peut aussi disposer du noyau des backpots, à savoir à ce jour le 4.3.5-1~bpo8+1 (2016-02-23).</p>

<p>Si on utilise aptitude ou apt pour les mises à jour, ou activer les niveaux 4 et 5 de mintupdate désactivés par défaut, on pourra installer le dernier noyau ainsi que de nombreux autres paquets non pris en charge par leur programme mintupdate. Mais alors quid de la gestion de toutes les dépendances ? S'ils ne les incorporent pas c'est qu'ils ont des raisons. Et puis cela n'est pas conseillé à des débutants, cœur des utilisateurs de Mint paraît-il.</p>

<p>La situation de la Mint 17 Qiana basée sur Ubuntu n'est guère meilleure au niveau du noyau puisque en standard est utilisé le 3.16.0-29 du 16 décembre 2014 et là, même si vous activez les 5 niveaux de préférence de mintupdate, il ne vous en sera pas proposé d'autre, sauf à passer par la ligne de commande où vous aurez le 4.2.0-30 disponible à l'installation</p>

<p>Je vous parle de Mint, je suis sévère dans les lignes qui précèdent pourtant cette distribution a de grandes qualités et le travail accompli est très intéressant, ce qui me fait regretter d'autant tous ces défauts, ces faiblesses qui, au final pourraient être facilement corrigées à condition de revoir le tempo, les procédures de mises à jour. Et d'ailleurs on pourrait attribuer ces mêmes faiblesses à bien d'autres forks maintenus par de petites équipes car elles ne sont pas l'apanage de Mint. À vérifier.</p>

<p>Là ou les problèmes se compliquent et les faiblesses se multiplient, indépendamment des noyaux, c'est lorsqu'on installe sur sa distribution, et c'est valable pour toutes, des programmes sensibles, par exemple Owncloud. Je cite <strong>Owncloud</strong> mais je pourrais en prendre bien d'autres. Il faut alors faire très attention aux correctifs apportés par les développeurs à la source et la rapidité avec laquelle ces mêmes correctifs ont été incorporés par les mainteneurs de ces paquets dans les distributions. Ils ne sont pas forcément coupables de laisser-aller ou de négligences car cela demande un travail considérable d'adaptation et parfois aussi la communication n'est pas parfaite au niveau des développeurs à la source. Et pourtant il peut dans certains cas y avoir des failles béantes non corrigées pendant un certain temps. Pour Owncloud il peut être utile dans certains cas d'installer le programme empaqueté par les développeurs Owncloud directement, quite parfois à se passer d'une meilleure intégration avec le système.</p>

<p>D'autres failles encore peuvent exister dans des programmes non incorporés dans les distributions, comme des systèmes de wiki, des galeries photos, des partages de données, développés par des passionnés très compétents et dévoués dans leurs branches, par exemple le php, mais moins au fait des problèmes de sécurités.</p>

<p>Alors, à ces faiblesses peut-on apporter des solutions ? Dans certains cas il appartient aux développeurs de ne pas négliger la sécurité, d'avoir ce problème toujours à l'esprit, d'anticiper.</p>

<p>Mais parfois il en va de <strong>la responsabilité de l'utilisateur</strong>. Ne pas installer n'importe quel programme sans être certain du sérieux du développeur doit faire partie de ses préoccupations. On trouve à sa disposition, en général en dehors des circuits et miroirs des grands distributions des programmes mal fichus, qui par exemple ne respectent pas la bonne gestion des droits des fichiers alors que ceci fait partie intégrante du premier rempart sécuritaire. Il y a aussi des forks réalisés à la va vite ou parfois avec des dépôts non suffisamment sécurisés comme on l'a vu dernièrement avec Mint dont un serveur a été compromis et une ( une ? ) iso contenait une porte dérobée. À l'utilisateur donc de savoir faire le tri et éviter de choisir des forks dont la plus grosse qualité reste en fin de compte la qualité du papier peint, ou sont basés sur des solutions prétendument miracles pour se démarquer de la concurrence.</p>

<p>Alors au final que conclure ? <strong>Oui Linux a de grandes qualités de sécurité</strong> et son développement en toute transparence est un gage de sérieux sur ce plan mais pour autant il ne faut pas se voiler la face, <strong>il y a des failles et des faiblesses, parfois dues aux développeurs, et parfois aussi à la négligence de ses utilisateurs</strong> qui, en fin de compte, en la matière ne diffèrent guère de certains utilisateurs de Windows et que l'on remarquait d'avantage car il était le système le plus utilisé. Le choix des sources de logiciels, la multiplication des ppa n'est pas innocent en matière de stabilité mais aussi de sécurité.</p>

<p><strong>Windows a fait des progrès certains en matière de sécurité ces dernières années</strong> et il appartient à Linux de ne pas s'endormir sur ses lauriers. On pourrait aussi dire que certains forks peu scrupuleux ou du moins attentifs en matière de sécurité peuvent nuire sérieusement à la réputation de Linux. Et cela est d'autant plus grave si ces forks se trouvent en tête de gondole de sites comme Distrowatch. Il appartient aussi aux utilisateurs avancés de vérifier le sérieux des forks avant de les conseiller au grand public, ceci pourrait éviter aux débutants de se fourvoyer et d'en pâtir un jour.</p>

<p>Mais, bien plus que sur Linux, c'est sur Android que l'on risque de voir très bientôt les attaques se multiplier à l'infini.</p>
<p><img src="media/65327678.20faece4cc1e02ca974f1d3d88e9650d" data-original-source="http://cdn.libravatar.org/avatar/20faece4cc1e02ca974f1d3d88e9650d" alt="Gravatar de Cyrille BORNE" class="gravatar" /><br/><i>Original post of <a href="http://cyrille-borne.com/article2291/linux-et-la-securite-quelques-elements-factuels" title="Visit the source">Cyrille BORNE</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://genma.free.fr/?Ubuntu-sur-un-disque-externe-Oui-c-est-possible
title: genma : Ubuntu sur un disque externe ? Oui c'est possible
uri: genma-Ubuntu-sur-un-disque-externe-Oui-c-est-possible
url: http://genma.free.fr/?Ubuntu-sur-un-disque-externe-Oui-c-est-possible
content:
<img alt="" src="http://genma.free.fr/IMG/arton2451.jpg?1456406602" width="150" height="79"><div><p>Afin de pouvoir <i>faire de la veille technologique</i> en utilisant un PC sans pour autant installer tout et n'importe quoi sur celui-ci, j'ai utilisé la possibilité d'installer Ubuntu sur un disque dur externe.</p>
<p>La procédure est très simple.</p>
<p>Pour éviter tout risque d'erreur à l'installation de Grub, j'ai enlevé le disque dur interne avant de commencer. Puis depuis un live USB d'installation classique, j'ai installé Ubuntu en mode chiffré (option choisie au moment de l'installation) sur le disque dur externe branché en USB. Une installation standard, <i>classique</i>.</p>
<p>Maintenant lorsque je le souhaite, je branche ce disque externe en USB, je demande au PC de démarrer en USB. Il alimente alors le disque dur, Grub s'affiche et je lance Ubuntu. Je tape ma phrase de passe (rappel mon disque externe est chiffré).</p>
<p>J'ai testé le fait que ce disque dur USB marche sur différents PC à la configuration assez proche. Base Intel, un DELL Inspiron assez ancien (Core2duo) et un Lenovo Thinkpad (Core I5). C'est transparent pour moi, je n'ai aucun message d'erreurs (Je pense que cela es lié au fait que le noyau Linux d'Ubuntu se débrouille très bien avec le changement de matériel vu que ce dernier est très proche).</p>
<p>J'ai eu des mises à jour du noyau, Grub s'est mis à jour en conséquence. Je n'ai pas eu à retiré à nouveau le disque dur interne.</p>
<p>Avec Ubuntu sur ce disque dur externe en USB, j'ai tous les avantages d'un système live, mais en plus je peux installer et conserver applications et documents, vu que je suis sur un disque dur.</p>
<p>En terme de performance, le fait d'être en USB au lieu d'être dans le PC ne se fait pas sentir. Le disque est en SATA (1), sur de l'USB2. Ubuntu est en installation par défaut, je n'ai fait aucune optimisation. Le chiffrement du disque ne change pas les performances.</p>
<p>Une bonne solution pour transporter un système mobile complet.</p></div>
<p><img src="media/42493842.dd4318d0d3a7d2ffb13756f63b76d85d" data-original-source="http://cdn.libravatar.org/avatar/dd4318d0d3a7d2ffb13756f63b76d85d" alt="Gravatar de genma" class="gravatar" /><br/><i>Original post of <a href="http://genma.free.fr/?Ubuntu-sur-un-disque-externe-Oui-c-est-possible" title="Visit the source">genma</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://david.mercereau.info/api-ovh-reboot-dun-vps-via-un-script-php/
title: David Mercereau : [API OVH] Reboot d’un VPS via un script PHP
uri: David-Mercereau-API-OVH-Reboot-d-un-VPS-via-un-script-PHP
url: http://david.mercereau.info/api-ovh-reboot-dun-vps-via-un-script-php/
content:
<p><a href="http://www.ovh.com/" target="_blank">OVH</a> possède une API qui peut s’avérer très pratique pour automatiser des tâches du manager : <a href="https://api.ovh.com/" target="_blank">https://api.ovh.com</a></p>
<p>J’ai choisi d’utiliser le PHP pour ces scripts car il est déjà installé sur mes machines, je n’ai donc pas besoin de supplément.</p>
<h3>Premier test, lister mes VPS</h3>
<p>Je commence gentils, je fais un script qui listera simplement les VPS disponible chez OVH.</p>
<p>Télécharger et décompressé la dernière version de « php-ovh » et ces dépendances : <a href="https://github.com/ovh/php-ovh/releases" target="_blank">https://github.com/ovh/php-ovh/releases</a></p><pre>root@monsrv:~# mkdir ovhphp/
root@monsrv:~# cd ovhphp/
root@monsrv:~/ovhphp# wget https://github.com/ovh/php-ovh/releases/download/v2.0.0/php-ovh-2.0.0-with-dependencies.tar.gz
root@monsrv:~/ovhphp# tar -xzvf php-ovh-2.0.0-with-dependencies.tar.gz</pre><p>Ensuite on crée un tocken via cette URL : <a href="https://api.ovh.com/createToken/?GET=/vps" target="_blank">https://api.ovh.com/createToken/?GET=/vps</a> ou on ne va autoriser que le <strong>GET</strong> sur <strong>/vps</strong>.</p>
<p>On va obtenir la page suivante, il va falloir conserver <em>Application Key</em>, <em>Application Secret</em> &amp; <em>Consumer Key</em> pour les mettre dans le script :</p>
<p><a href="media/42d8e90e.SC3A9lection_167.jpg" data-original-source="http://david.mercereau.info/wp-content/uploads/2016/03/S%C3%A9lection_167.jpg" rel="attachment wp-att-1882 lightbox-0"><img src="media/283abad0.SC3A9lection_167-300x291.jpg" data-original-source="http://david.mercereau.info/wp-content/uploads/2016/03/S%C3%A9lection_167-300x291.jpg" alt="OVH api keys résulstat" width="300" height="291" srcset="http://david.mercereau.info/wp-content/uploads/2016/03/Sélection_167-300x291.jpg 300w, http://david.mercereau.info/wp-content/uploads/2016/03/Sélection_167-600x581.jpg 600w, http://david.mercereau.info/wp-content/uploads/2016/03/Sélection_167.jpg 676w" sizes="(max-width: 300px) 100vw, 300px"></a>On va pouvoir créer le script suivant (pensez à recopier vos <em>Application Key</em>, <em>Application Secret</em> &amp; <em>Consumer Key</em> dans les variables) :</p><pre>#!/usr/bin/php
<?php

// This script is a skeleton of script or application using OVH APIs
// You can launch it with the command php script.php
// Or include it into a website be deleting the first line

require __DIR__ . '/vendor/autoload.php';
use \\Ovh\\Api;

////////////////////////////////////////////////////
//     Dont forget to update your credentials     //
////////////////////////////////////////////////////

// Please read the documentation to get your credentials
// https://github.com/ovh/php-ovh
$applicationKey = "hsNT*************";
$applicationSecret = "8FcOC***********************";
$consumer_key = "bU5j**************************";

// Information about API and rights asked
$endpoint = 'ovh-eu';

// Get API connector instance
$conn = new Api(    $applicationKey,
                    $applicationSecret,
                    $endpoint,
                    $consumer_key);

////////////////////////////////////////////////////
//       Your logic will be inserted here         //
////////////////////////////////////////////////////

// This is an example
// Here, use the API connector as you want. Here, we are getting all hosting services
$vps = $conn->get('/vps');

print_r($vps);

?></pre><p>Lancement du script, voici le résultat :</p><pre>root@romeo:~/ovhphp# php getvps.php 
Array
(
    [0] => vks00000.ip-XX-XX-XX.eu
)</pre><p>vks00000.ip-XX-XX-XX.eu c’est le nom de mon VPS (pour l’exemple), ça fonctionne.</p>
<h3>Les choses sérieuses :  un reboot</h3>
<p>Même script avec action cette fois, pour tester le reboot d’un VPS via un script.</p>
<p>De nouveau la création d’API  avec l’url <a href="https://api.ovh.com/createToken/?POST=/vps/votreNomDeVPS/reboot" target="_blank">https://api.ovh.com/createToken/?POST=/vps/vks00000.ip-XX-XX-XX.eu/reboot</a>. Ici on va autoriser le <strong>POST</strong> sur <strong><a href="https://eu.api.ovh.com/console/#/vps/%7BserviceName%7D/reboot%23POST" target="_blank">/vps/vks00000.ip-XX-XX-XX.eu/reboot</a>.</strong></p><pre>#!/usr/bin/php
<?php
require __DIR__ . '/vendor/autoload.php';
use \\Ovh\\Api;
$applicationKey = "fCj********";
$applicationSecret = "vqm**************";
$consumer_key = "Zja************************";
$endpoint = 'ovh-eu';
$conn = new Api(    $applicationKey,
                    $applicationSecret,
                    $endpoint,
                    $consumer_key);
$vps_reboot = $conn->post('/vps/vks00000.ip-XX-XX-XX.eu/reboot');
print_r($vps_reboot);
?></pre><p>Au lancement on obtient le numéro de la tâche :</p><pre>root@romeo:~# php postrebootvps.php
Array
(
    [progress] => 0
    [id] => 5119979
    [type] => rebootVm
    [state] => todo
)</pre><p>Et ça fait bien redémarrer le VPS…</p>
<h3>La finalité</h3>
<p>De temps en temps mon VPS est inaccessible. C’est très variable (1 à 2 fois par mois environ) et je ne trouve pas la cause (OVH / système  / attaque ?). La seul solution pour le faire repartir c’est un reboot via le manager OVH. En attendant de trouver la cause (je ne désespère pas) j’ai mis en place ce script sur un serveur tiers afin de déclencher un reboot si le serveur est inaccessible.</p><pre>#!/usr/bin/php
<?php

// Version 0.1 15/03/2015
// Reboot d'un VPS OVH (via l'API OVH) si celui-ci ne répond pas
// Par David Mercereau : http://david.mercereau.info
// Script sous licence BEERWARE

require __DIR__ . '/vendor/autoload.php';
use \\Ovh\\Api;
    
// Identifiant API OVH : https://api.ovh.com/createToken/
$applicationKey = "fCj********";
$applicationSecret = "vqm*************";
$consumer_key = "Zja***********************";
$endpoint = 'ovh-eu';
// Host à monitorer (IP du VPS)
$serveurMonitorIp = 'A.B.C.D';
// Port à monitorer (doivent être ouvert sur le VPS)
$serveurMonitorPorts = array(80, 22, 25);;
// Site qui permettent de vérifier la connexion internet
$hostsCheck = array('www.wordpress.com', 'fr.wikipedia.org', 'www.ovh.com');

function checkInternet($hostsCheck) {
    $return = true;
    foreach ($hostsCheck as $hostCheck) {
        if (!$sock = @fsockopen($hostCheck, 80, $num, $error, 5)) {
            echo "CheckInternet : Le serveur $hostCheck ne répond pas sur le port 80. Il n'y a pas internet ?\\n";
            $return = false;
        }
    }
    return $return;
}

function serveurMonitor($serveurMonitorIp, $serveurMonitorPorts) {
    $return = true;
    foreach ($serveurMonitorPorts as $serveurMonitorPort) {
        if (!$sock = @fsockopen($serveurMonitorIp, $serveurMonitorPort, $num, $error, 5)) {
            echo "ServeurMonitor: Le serveur $serveurMonitorIp ne répond pas sur le port $serveurMonitorPort, Il n'est H.S. ?\\n";
            $return = false;
        }
    }
    return $return;
}

if (! serveurMonitor($serveurMonitorIp, $serveurMonitorPorts)) {
    echo "...second test dans 2 minutes, c'est peut être temporaire...\\n";
    sleep(120);
    if (! serveurMonitor($serveurMonitorIp, $serveurMonitorPorts)) {
        if  (checkInternet($hostsCheck)) {
            echo "Reboot de $serveurMonitorIp\\n";
            // Conneixion à l'API
            $conn = new Api(    $applicationKey,
                                $applicationSecret,
                                $endpoint,
                                $consumer_key);
            $vps_reboot = $conn->post('/vps/vks10057.ip-37-59-126.eu/reboot');
            print_r($vps_reboot);
        } else {
            echo "Le serveur est peut être planté mais peut être pas... il ne semble pas y a voir interne, on fait rien !\\n";
        }
    }
} 
exit(0);
?></pre><p>En tâche planifiée :</p><pre>15,45 * * * *  /root/ovhphp/check-serveur.php</pre><p> </p>
<p><img src="media/daec4dc1.de43c41aa5a82aa62ed68f4d2cbc8300" data-original-source="http://cdn.libravatar.org/avatar/de43c41aa5a82aa62ed68f4d2cbc8300" alt="Gravatar de David Mercereau" class="gravatar" /><br/><i>Original post of <a href="http://david.mercereau.info/api-ovh-reboot-dun-vps-via-un-script-php/" title="Visit the source">David Mercereau</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>David Mercereau : <a href="">[Web-Dynamic-Dnsupdate] Administrer vos zones DNS sans base de donn&eacute;es</a> (03/08/2012)</li><li>David Mercereau : <a href="">emailPoubelle.php &ndash; script libre d&rsquo;email jetable</a> (07/08/2012)</li><li>David Mercereau : <a href="">Script de sauvegarde Mysql par base &laquo;&nbsp;mysql_dump.sh&nbsp;&raquo;</a> (05/12/2012)</li><li>David Mercereau : <a href="">[rkhunter] Warning  The file properties have changed</a> (09/01/2013)</li><li>David Mercereau : <a href="">pongSmtp.pl &ndash; Tester le bon fonctionnement de votre serveur mail</a> (28/02/2013)</li></ul></div></p>


feed_id: http://framablog.org/2016/03/15/un-financement-pour-pouvoir-se-liberer-de-framasphere/
title: Framablog : Un financement pour pouvoir se libérer… de Framasphère !
uri: Framablog-Un-financement-pour-pouvoir-se-libérer-de-Framasphère
url: http://framablog.org/2016/03/15/un-financement-pour-pouvoir-se-liberer-de-framasphere/
content:
<p><a href="https://diasporafoundation.org/">Diaspora*</a> est un réseau social décentralisé et respectueux de la liberté. Le terme diaspora* désigne à la fois le logiciel sous licence AGPL à installer sur un serveur pour pouvoir se connecter au réseau, et le réseau lui même, composé de toutes les différentes installations du logiciel diaspora*.</p>
<p><span></span></p>
<p><a href="https://framasphere.org/">Framasphère</a> est une de ces installations (appelées pods), et nous sommes heureux de vous fournir un accès à ce réseau depuis l’un de nos serveurs.</p>
<p>Démarré en Février 2010, le projet diaspora* est devenu communautaire en Août 2012. Depuis, le développement avance dans la bonne direction mais à un rythme lent : il n’est porté que par des bénévoles, principalement allemands et français.</p>
<h2>Essayez, installez, migrez.</h2>
<p><a href="https://framasphere.org/people/a73cb4801200013290ad00163eb64c50">Senya</a>, un développeur russe, se propose de travailler sur diaspora* à temps plein en se rémunérant grâce à une campagne de <a href="https://www.indiegogo.com/projects/account-backup-and-restore-for-diaspora--3">financement participatif</a>. La fonctionnalité principale visée pour cette campagne est la possibilité de migrer son compte diaspora* d’une installation vers une autre.</p>
<p><a href="https://www.indiegogo.com/projects/account-backup-and-restore-for-diaspora--3#/" rel="attachment wp-att-5740"><img src="media/1b7d9c45.migration-diaspora.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/migration-diaspora.png" alt="migration diaspora" width="620" height="413" srcset="http://framablog.org/wp-content/uploads/2016/03/migration-diaspora-300x200.png 300w, http://framablog.org/wp-content/uploads/2016/03/migration-diaspora.png 620w" sizes="(max-width: 620px) 100vw, 620px"></a></p>
<p>C’est une fonctionnalité qui nous tient à cœur, car elle touche un point clef de notre approche de la diffusion du logiciel libre : « cultiver son jardin », c’est à dire avoir sa propre installation du logiciel.</p>
<p>En effet, le projet Dégooglisons fonctionne en 3 étapes : vous faire découvrir le logiciel / service, vous permettre de l’essayer, puis vous permettre de l’installer chez vous, pour être le seul maître de vos données.</p>
<h2>Vous pourrez enfin changer de pod !</h2>
<p>Si pour certains services ce cheminement est facile, il devient nettement plus compliqué dès qu’il n’est pas possible d’extraire vos données de l’installation de Framasoft pour les réimporter dans votre propre installation.</p>
<p>Qui voudrait installer son propre nœud diaspora* si cela implique de perdre tous les contacts, messages, photos, etc. postés depuis des mois sur Framasphère ? Voilà pourquoi nous encourageons vivement Senya dans son crowdfunding.</p>
<p>Et bonne nouvelle ! Depuis quelques jours, les 3500 euros demandés ont été atteints, Senya va pouvoir travailler sur la migration entre les serveurs diaspora* !</p>
<h2>5 jours pour aller plus loin…</h2>
<p>Cependant, le financement se poursuit jusqu’au 20 Mars, car Senya se propose maintenant d’ajouter les mentions dans les commentaires si 4200 euros sont atteints, et la fédération des tags entre les pods si 5000 euros sont atteints (oui, les tags ne sont actuellement pas fédérés en tant que tels, voir <a href="http://geexxx.fr/2013/07/23/comment-ca-marche-la-federation-de-diaspora/">cet article de blog</a> pour les détails techniques). Ces fonctionnalités sont elles aussi très intéressantes, nous vous encourageons donc vivement à donner si vous le pouvez !</p>
<p><a href="https://www.indiegogo.com/projects/account-backup-and-restore-for-diaspora--3#/" rel="attachment wp-att-5741"><img src="media/9e21a520.diaspora.jpg" data-original-source="http://framablog.org/wp-content/uploads/2016/03/diaspora.jpg" alt="diaspora" width="620" height="412" srcset="http://framablog.org/wp-content/uploads/2016/03/diaspora-300x199.jpg 300w, http://framablog.org/wp-content/uploads/2016/03/diaspora.jpg 620w" sizes="(max-width: 620px) 100vw, 620px"></a></p>
<p>En participant à ce crowdfunding, vous ne permettez pas seulement à Framasphère et à toutes les installations de diaspora* d’être plus complètes et de mieux fonctionner, créant une alternative fiable à l’horreur qu’est Facebook. Vous montrez aussi que vivre en écrivant du code Libre est quelque chose de possible.</p>
<p>Non seulement vous aidez Senya, qui prend le risque de faire financer son travail par la communauté plutôt que de trouver un emploi stable traditionnel, mais vous incitez aussi les autres développeurs à se tourner vers le financement participatif pour faire vivre tous les beaux logiciels Libres que nous aimons tant !</p>
<p>Alors, n’hésitez plus, <a href="https://www.indiegogo.com/projects/account-backup-and-restore-for-diaspora--3#/">participez</a> !</p>
<p><img src="media/d4130779.f411e4809021b786b7eb0c8956612e76" data-original-source="http://cdn.libravatar.org/avatar/f411e4809021b786b7eb0c8956612e76" alt="Gravatar de Framablog" class="gravatar" /><br/><i>Original post of <a href="http://framablog.org/2016/03/15/un-financement-pour-pouvoir-se-liberer-de-framasphere/" title="Visit the source">Framablog</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Framablog : <a href="">Framasph&egrave;re : c&#039;est gratuit, mais ce n&#039;est pas toi le produit !</a> (07/10/2014)</li><li>Framablog : <a href="">Framasph&amp;egrave;re : c&amp;rsquo;est gratuit, mais ce n&amp;rsquo;est pas toi le produit !</a> (07/10/2014)</li><li>Framablog : <a href="">GitHub et les libristes&amp;nbsp;: un danger et un d&amp;eacute;fi&amp;nbsp;!</a> (28/01/2016)</li><li>Framablog : <a href="">Framadrive, conservez et synchronisez 2 Go sur nos serveurs</a> (05/10/2015)</li><li>Framablog : <a href="">D&amp;eacute;googlisons saison 2&amp;nbsp;: ils ne savaient pas que c&amp;rsquo;&amp;eacute;tait impossible, alors ils l&amp;rsquo;ont fait&amp;nbsp;!</a> (05/10/2015)</li></ul></div></p>


feed_id: http://postblue.info/kimsufi/
title: PostBlue : Debian Jessie sur un Kimsufi KS-2A
uri: PostBlue-Debian-Jessie-sur-un-Kimsufi-KS-2A
url: http://postblue.info/kimsufi/
content:
<p>Petite marche à suivre à peu près généraliste pour configurer un serveur dédié <a href="https://www.kimsufi.com/fr/serveurs.xml">Kimsufi</a>.</p>

<h1>Installation</h1>

<p>Le schéma d’installation que j’ai utilisé diverge de celui par défaut pour Debian Jessie proposé par OVH.</p>

<p>Est configuré par défaut dans le <em>template</em> d’installation Debian 8.3 stable (Jessie) :</p>

<ul><li>une large partition <code>/home</code> dans le schéma de partition par défaut :
<ul><li>une partition primaire <code>/</code> de 20Go ;</li>
<li>une partition primaire <code>/home</code> prenant l’espace restant, soit un peu moins de 980Go dans mon cas ;</li>
<li>une partition <code>swap</code> obligatoire de 512Mo ;</li></ul></li>
<li>un <a href="http://guide.ovh.com/KernelInstall">noyau Linux « maison »</a>.</li>
</ul><p>Inconvénients pour un serveur web comme le mien :</p>

<ul><li>j’utilise majoritairement les partitions <code>/var</code> (<code>/var/www</code> pour les sites en PHP, <code>/var/lib</code> pour le stockage de données des applications comme MariaDB, Prosody, etc.) et <code>/srv</code> (services divers balancés sur un port public)</li>
<li>avoir une partition <code>/home</code> séparée et prenant 98% de l’espace disque ne me sert à rien ;</li>
<li>le noyau maison n’est disponible dans aucun dépôt <code>apt</code> et doit être mis à jour à la main (<code>wget</code>), en allant le chercher <a href="ftp://ftp.ovh.net/made-in-ovh/bzImage/">depuis un serveur FTP</a>, ce qui est rédhibitoire pour moi.</li>
</ul><p>Donc, pour installer <em>à ma façon</em> :</p>

<ul><li><em>template</em> d’installation Debian 8.3 stable (Jessie) ;</li>
<li>cocher l’utilisation du noyau de la distribution à la place du noyau ;</li>
<li>éditer le schéma de partitionnement pour supprimer la place indue que prendrait <code>/home</code> et maximiser l’espace de la racine <code>/</code>.</li>
</ul><h1>Considérations d’installation</h1>

<ul><li>une partition <code>/boot</code> séparée de <code>/</code> ;</li>
<li>un partitionnement du disque (<code>/var</code>, <code>/src</code>) plus fin, en essayant de prévoir la place que prendraient ces partitions ;</li>
<li>utiliser le <a href="https://wiki.debian.org/grsecurity">noyau avec les patchs de sécurité <code>grsecurity</code></a>, à l’instar du noyau OVH qui les intègre ;</li>
<li>ne pas activer de compte <code>root</code> mais directement un utilisateur appartenant au groupe <code>sudo</code> pour ne pas avoir à le désactiver par la suite.</li>
</ul><h1>Première connexion</h1>

<p>Après l’installation de la distribution, OVH envoie un mail contenant le code du compte <code>root</code> permettant de se connecter au serveur. On va donc s’y connecter en forçant la demande de mot de passe (puisqu’il n’y a pas encore de clé SSH forgée est installée).</p>

<pre><code>ssh root@ip.du.serveur -o PreferredAuthentications=password
</code></pre>

<p>Une fois connecté, je conseille de changer au plus vite le mot de passe du compte <code>root</code> :</p>

<pre><code>passwd
</code></pre>

<p>Entrez le mot de passe actuel une première fois, puis entrez-en un nouveau par deux fois. Voilà, il ne devrait plus exister de copie de votre mot de passe <code>root</code>.</p>

<p>Pour désactiver complètement le login du compte <code>root</code> (après avoir créé un nouvel utilisateur appartenant au groupe <code>sudo</code>) :</p>

<pre><code>sudo passwd -dl root
</code></pre>

<p>Pour continuer, mettre à jour des dépôts.</p>

<pre><code>apt update
</code></pre>

<h1>systemd</h1>

<p>Utiliser les différents services de <code>systemd</code> renvoie l’erreur suivante :</p>

<blockquote>
  <p>Failed to create bus connection</p>
</blockquote>

<p>Pour corriger, il suffit d’installer le paquet <code>dbus</code> manquant.</p>

<pre><code>apt install dbus
</code></pre>

<h1>NTP</h1>

<p>Maintenant que <code>systemd</code> est réparé, on peut l’utiliser comme service de synchronisation du temps de la machine au lieu d’installer <a href="https://wiki.debian.org/NTP">un second paquet pour NTP</a>.</p>

<pre><code>timedatectl set-ntp 1
</code></pre>

<h1>Hostname</h1>

<p>Le nom d’hôte (<em>hostname</em>) inscrit dans le fichier <code>/etc/hostname</code> est un nom de domaine <code>hostname.ip-x-y-z.eu</code>. Pour n’avoir que le nom court :</p>

<pre><code>hostnamectl set-hostname $(hostname -a)
</code></pre>

<p>Puis éditer <code>/etc/hosts</code> pour remplacer <code>hostname.ip-x-y-z.eu</code> avec <code>hostname.sondomaine.tld</code> tel que défini dans sa zone DNS (sinon, le faire, j’utilise celle de Gandi).</p>

<p>Pour plus d’informations sur le renommage de la machine, <a href="https://wiki.debian.org/HowTo/ChangeHostname">voir le Debian Wiki HowTo/ChangeHostname</a>.</p>

<h1>Firewall et Fail2ban</h1>

<p>Pas envie de m’emmerder à maintenir un pare-feu complexe, <a href="https://wiki.debian.org/Uncomplicated%20Firewall%20%28ufw%29">je teste UFW (Uncomplicated Firewall)</a>.</p>

<pre><code>apt install ufw
ufw allow SSH # ouvre le port 22
ufw allow ’Nginx Full’ # ouvre les ports 80 et 443
ufw enable # active ufw
</code></pre>

<p>Si vous voulez utiliser <code>fail2ban</code> pour prévenir des attaques par force brute, il est possible de le faire utiliser directement <code>ufw</code> plutôt qu’<code>iptables</code>.</p>

<pre><code>apt install fail2ban
</code></pre>

<p>Pour configurer la bête, créer un fichier <code>/etc/fail2ban/jail.local</code> : chargé après le fichier de configuration principal <code>/etc/fail2ban/jail.conf</code>, les valeurs qu’il contient <em>écrasent</em> celles contenues dans le premier, inutile donc de copier intégralement le contenu du fichier de configuration (comme j’ai pu le voir par-ci par-là). Y changer l’adresse à laquelle les notifications sont envoyées, et configurer le programme pour utiliser <code>ufw</code> :</p>

<pre><code>[DEFAULT]
destemail = mail@domaine.truc
banaction = ufw
</code></pre>

<h1>Yapyt</h1>

<p>Yapyt est clone de <code>yaourt</code> (commande Arch Linux) <a href="https://yeuxdelibad.net/Programmation/yapyt-un_yaourt_pour_debian.html">développé par Thuban pour Debian</a>. Très utile pour nettoyer son système et supprimer les résidus d’applications désinstallées.</p>

<pre><code>wget http://git.yeuxdelibad.net/coolrepo/plain/yapyt/yapyt.py -O /usr/local/bin/yapyt
chmod +x /usr/local/bin/yapyt
</code></pre>

<p>Pour le nettoyage, <code>yapyt</code> nécessite <code>deborphan</code> et <code>aptitude</code> :</p>

<pre><code>apt install aptitude deborphan
</code></pre>

<h1>Certificats</h1>

<p>Installer <a href="https://letsencrypt.org/getting-started/">le client Let’s Encrypt</a> disponible dans le dépôt <code>jessie-backports</code> activé par défaut dans le <code>source.list</code> déployé par OVH (qui utilise les miroirs d’OVH également), mais aussi les <a href="https://wiki.cacert.org/FAQ/ImportRootCert?action=show&amp;redirect=ImportRootCert#Debian">certificats racine de CACert</a> qui sont à nouveau disponible dans un paquet séparé.</p>

<pre><code>apt -t jessie-backports install letsencrypt ca-cacert
</code></pre>

<h1>Dotdeb</h1>

<blockquote>
  <p><a href="https://www.dotdeb.org/">Dotdeb</a> is an extra repository providing up-to-date packages for your Debian servers : Nginx ; PHP 7.0, 5.6, 5.5, 5.4 (obsolete) and 5.3 (obsolete) ; useful PHP extensions : apcu, imagick, mongo, Pinba, xcache, Xdebug, XHprof… ; MySQL 5.5 and 5.6 ; Zabbix ; etc.</p>
</blockquote>

<p>Installer la clé du dépôt :</p>

<pre><code>wget https://www.dotdeb.org/dotdeb.gpg -O- | apt-key add -
</code></pre>

<p>Dans <code>/etc/apt/source.list.d/dotdeb.list</code> :</p>

<pre><code>deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all
</code></pre>

<p>Mettre à jour les dépôts :</p>

<pre><code>apt update
</code></pre>

<p>Installer le serveur web :</p>

<pre><code>apt install nginx-extras php5-fpm
</code></pre>

<h1>MariaDB</h1>

<blockquote>
  <p><a href="https://mariadb.org/">MariaDB</a> is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, Facebook and Google.</p>
</blockquote>

<p>Installer la clé du dépôt :</p>

<pre><code>apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
</code></pre>

<p>Dans <code>/etc/apt/source.list.d/mariadb.list</code> :</p>

<pre><code>deb [arch=amd64,i386] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main
deb-src http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.1/debian jessie main
</code></pre>

<p>Mettre à jour les dépôts :</p>

<pre><code>apt update
</code></pre>

<p>Installer :</p>

<pre><code>apt install mariadb-server
</code></pre>

<h1>Prosody</h1>

<blockquote>
  <p><a href="https://prosody.im/">Prosody</a> is a modern XMPP communication server. It aims to be easy to set up and configure, and efficient with system resources. Additionally, for developers it aims to be easy to extend and give a flexible system on which to rapidly develop added functionality, or prototype new protocols.</p>
</blockquote>

<p>Installer la clé du dépôt :</p>

<pre><code>wget https://prosody.im/files/prosody-debian-packages.key -O- | apt-key add -
</code></pre>

<p>Dans <code>/etc/apt/source.list.d/prosody.list</code> :</p>

<pre><code>deb http://packages.prosody.im/debian jessie main
</code></pre>

<p>Mettre à jour les dépôts :</p>

<pre><code>apt update
</code></pre>

<p>Installer Prosody et ses dépendances optionnelles :</p>

<pre><code>apt install prosody-trunk lua-event lua-zlib lua-dbi-sqlite3 lua-bitop
</code></pre>

<p>Je renvoie à mon article <a href="http://postblue.info/prosody-debian/">Prosody sur Debian Wheezy/Jessie</a> pour plus d’informations quant à la configuration du service.</p>

<h1>NodeJS LTS</h1>

<p>Installer <code>nodejs</code> (v0.10.29) et <code>npm</code> (v1.4.21) depuis les dépôts Debian, dans <code>/usr/bin</code>.</p>

<pre><code>apt install npm
</code></pre>

<p>Installer le gestionnaire de version <code>n</code> dans <code>/usr/local/bin</code>.</p>

<pre><code>npm install -g n
</code></pre>

<p>Utiliser <code>n</code> pour installer la dernière version LTS de nodejs (v4.3.2) dans <code>/usr/local/bin</code>.</p>

<pre><code>n lts
</code></pre>

<p>Installer la dernière version de <code>npm</code> (v2.14.12) dans <code>/usr/local/bin</code>.</p>

<pre><code>npm install -g npm node-gyp
</code></pre>

<p>Supprimer les binaires de npm et nodejs qui trainent dans <code>/usr/bin</code> pour ne plus avoir que les derniers installés.</p>

<pre><code>apt remove npm
apt-get autoremove
</code></pre>

<h1>Superutilisateur</h1>

<p>Plutôt que de continuer à utiliser le compte root, je me crée un utilisateur aux droits restreints, que j’ajoute néanmoins au groupe <code>sudo</code> pour l’utiliser à des fins de maintenance du système.</p>

<pre><code>apt install sudo
adduser username
gpasswd -a username sudo
</code></pre>

<p>Pour désactiver complètement le login du compte <code>root</code> :</p>

<pre><code>sudo passwd -dl root
</code></pre>

<h1>SSH</h1>

<p>Depuis un terminal sur mon ordinateur, je forge une clé SSH (inutilement grosse, pour tester) que j’autoriserai à servir d’authentification sur le compte utilisateur créé ci-dessus.</p>

<pre><code>ssh-keygen -b 16384
</code></pre>

<p>Je la renomme <code>$HOME/.ssh/id_rsa-nomduserver</code>, lui met un gros gros mot de passe, puis je la copie dans les clés autorisées sur mon serveur.</p>

<pre><code>ssh-copy-id -i $HOME/.ssh/id_rsa-nomduserver username@adresse.ip -o PreferredAuthentications=password
</code></pre>

<p>Je peux dorénavant me connecter à mon serveur par SSH avec une authentification par clé sur un utilisateur qui après entrée d’un (inutilement tarabiscoté) mot de passe, me confère des droits élevés.</p>

<pre><code>ssh username@adress.ip -i $HOME/.ssh/id_rsa-nomduserver
</code></pre>

<p>Je renvoie au <a href="https://wiki.debian.org/fr/SSH#S.2BAOk-curisation">Debian Wiki pour la sécurisation de SSH</a> : désactiver la connexion au compte <code>root</code> et l’authentification par mot de passe dans <code>/etc/ssh/sshd_config</code>.</p>

<pre><code>PasswordAuthentication no
PermitRootLogin no
</code></pre>

<h1>Shell ZSH et Byobu</h1>

<p>Plutôt qu’une session SSH toute moche avec seulement BASH, j’utilise le gestionnaire de multiplexeurs de terminal <a href="http://byobu.co/">Byobu</a> (backend <code>tmux</code>) et ai remplacé BASH par <a href="http://zshwiki.org/home/">ZSH</a>.</p>

<p><img src="https://camo.githubusercontent.com/612c6be742478221e06c64b66b896085f6e4af63/687474703a2f2f692e696d6775722e636f6d2f6e7247563670672e706e67" alt="ZSH, Prezto et Byobu"></p>

<pre><code>apt install zsh byobu git
byobu-enable
</code></pre>

<p>La commande <code>byobu-enable</code> active <code>byobu</code> si et seulement si le shell par défaut est <code>bash</code>. Donc plutôt que modifier le shell de l’utilisateur (<code>chsh -s /bin/zsh</code>) qui empêcherait l’activation automatique de byobu, il suffit d’ajouter les lignes suivantes à <code>$HOME/.byobu/.tmux.conf</code> pour changer l’interpréteur de commandes du programme :</p>

<pre><code>set -g default-shell /usr/bin/zsh
set -g default-command /usr/bin/zsh
</code></pre>

<p>Installation de <a href="https://github.com/sorin-ionescu/prezto">Prezto</a>, un framework de configuration de ZSH. Lancer <code>zsh</code> et ne pas créer de fichier de configuration (touche <code>q</code>)</p>

<pre><code>zsh
</code></pre>

<p>Copier le répertoire de <code>prezto</code> :</p>

<pre><code>git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
</code></pre>

<p>Activer <code>prezto</code> pour mon profil utilisateur :</p>

<pre><code>setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
</code></pre>

<h1>Etherpad Lite</h1>

<p><img src="https://camo.githubusercontent.com/9ca4b9b988b8eaf457d1f7f32cbce055140c0948/687474703a2f2f692e696d6775722e636f6d2f7a5972476b67332e676966" alt=""></p>

<p>Installation des dépendances :</p>

<pre><code>apt install gzip git curl python libssl-dev pkg-config build-essential
</code></pre>

<p>Déploiement d’<a href="https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service">Etherpad Lite comme service</a>, dans son propre dossier avec son propre <code>user</code>/<code>group</code>.</p>

<pre><code>adduser --system --home=/srv/etherpad-lite --group etherpad-lite
</code></pre>

<p>Il faut utiliser le compte adéquat pou r la suite : pour ce faire, faire précéder les commandes suivantes de :</p>

<pre><code>sudo su etherpad-lite -s /bin/bash -c "ici la commande entre guillemets"
</code></pre>

<p>Clônage du répertoire à la racine du dossier nouvellement créé.</p>

<pre><code>cd /srv/etherpad-lite;
git clone git://github.com/ether/etherpad-lite.git .
</code></pre>

<p>Copier le fichier de configuration.</p>

<pre><code>cp /srv/etherpad-lite/settings.json.template /srv/etherpad-lite/settings.json
</code></pre>

<p>Configuration du backend (j’aime bien utiliser <code>redis</code> qui me nécessite aussi peu de configuration qu’un fichier SQLite pour des performances plus hautes) :</p>

<pre><code>apt install redis-server
</code></pre>

<p>Dans <code>/srv/etherpad-lite/settings.json</code> :</p>

<pre><code>//the type of the database
"dbType" : "redis",
//the database specific settings
"dbSettings" : {
                 "host"    : "localhost",
                 "port"    : 6379,
                 "database": 1
               },
</code></pre>

<p>Dépendances optionnelles pour l’import/export :</p>

<pre><code>apt install tidy libreoffice-writer
</code></pre>

<p>Dans <code>/srv/etherpad-lite/settings.json</code> :</p>

<pre><code>/* This is the absolute path to the soffice executable. Setting it to null, disables LibreOffice exporting.
 LibreOffice can be used in lieu of Abiword to export pads */
"soffice" : "/usr/bin/soffice",

/* This is the path to the Tidy executable. Setting it to null, disables Tidy.
 Tidy is used to improve the quality of exported pads*/
"tidyHtml" : "/usr/bin/tidy",
</code></pre>

<p>Documentation :</p>

<ul><li><a href="https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy#nginx">How to put Etherpad Lite behind a reverse Proxy</a>, Nginx en l’occurence ;</li>
<li><a href="https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service">How to deploy Etherpad Lite as a service</a> ;</li>
<li><a href="https://github.com/ether/etherpad-lite/wiki/How-to-use-Etherpad-Lite-with-Redis">How to use Etherpad Lite with Redis</a>.</li>
</ul><h1>Ghost</h1>

<blockquote>
  <p><a href="https://ghost.org/">Ghost</a> is a platform dedicated to one thing: Publishing. It’s beautifully designed, completely customisable and completely Open Source. Ghost allows you to write and publish your own blog, giving you the tools to make it easy and even fun to do.</p>
</blockquote>

<p>Pareillement qu’Etherpad Lite ci-dessus, je déploie Ghost comme un service, ayant son propre utilisateur et groupe.</p>

<pre><code>adduser --system --home=/srv/ghost --group ghost
</code></pre>

<p>Comme pour <code>etherpad</code>, il faut utiliser le compte adéquat : pour ce faire, faire précédér les commandes suivantes de :</p>

<pre><code>sudo su ghost -s /bin/bash -c "ici la commande entre guillemets"
</code></pre>

<p>Dans le dossier de l’utilisateur <code>ghost</code>, je décompresse l’archive de la dernière version disponible :</p>

<pre><code>cd /srv/ghost;
wget http://ghost.org/zip/ghost-latest.zip;
unzip -uo ghost-latest.zip -d /srv/ghost;
rm ghost-latest.zip
</code></pre>

<p>Ne reste plus qu‘à installer le tout.</p>

<pre><code>npm install --production
</code></pre>

<p>Pour la configuration de Ghost, je renvoie à la documentation :</p>

<ul><li><a href="http://docs.ghost.org/fr/installation/linux/">Installation de Ghost : Installation sur Linux</a></li>
<li><a href="http://docs.ghost.org/fr/installation/deploy/#supervisor-%28http://supervisord.org/%29">Faire tourner en permanence Ghost : Supervisor</a></li>
<li><a href="http://support.ghost.org/config/">Configuring Ghost</a> </li>
<li><a href="http://support.ghost.org/how-to-upgrade">How to upgrade Ghsost</a></li>
</ul><p>Pour aller plus loin :</p>

<ul><li><a href="http://postblue.info/isso-un-serveur-de-commentaires-similaire-a-disqus/">Isso, un serveur de commentaires</a> à intégrer à Ghost</li>
<li><a href="http://postblue.info/supervisor-node/">Supervisor tes nodes</a>, liste de services pouvant être lancés avec <code>supervisor</code></li>
<li><a href="http://postblue.info/message-de-service/">Message de service</a> annonçant mon passage à Ghost en novembre 2013</li>
</ul><h1>ownCloud</h1>

<blockquote>
  <p><a href="https://owncloud.org/">ownCloud</a> gives you universal access to your files through a web interface or WebDAV. It also provides a platform to easily view &amp; sync your contacts, calendars and bookmarks across all your devices and enables basic editing right on the web. Installation has minimal server requirements, doesn’t need special permissions and is quick. ownCloud Server is extendable via a simple but powerful API for applications and plugins.</p>
</blockquote>

<p>Pour plus de facilité quant à l’installation d’ownCloud, j’utilise le dépôt. Installer la clé :</p>

<pre><code>wget https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O- | apt-key add -
</code></pre>

<p>Créer <code>/etc/apt/source.list.d/owncloud.list</code> avec le dépôt :</p>

<pre><code>sh -c "echo ’deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /’ >> /etc/apt/sources.list.d/owncloud.list"
</code></pre>

<p>Mettre à jour les dépôts et installer <code>owncloud</code> :</p>

<pre><code>apt-get update
apt-get install owncloud
</code></pre>

<p>Documentation :</p>

<ul><li><a href="https://doc.owncloud.org/server/9.0/admin_manual/installation/nginx_configuration.html">Nginx Configuration</a></li>
<li><a href="https://doc.owncloud.org/server/9.0/admin_manual/configuration_server/performance_tuning/index.html">Server Tuning &amp; Performance Tips</a></li>
<li><a href="https://doc.owncloud.org/server/9.0/admin_manual/configuration_server/caching_configuration.html">Configuring Memory Caching</a></li>
</ul><p>Pour une première salve, ça suffira je crois. N’hésitez pas à commenter si je dois préciser un élément de configuration, je verrai si j’ai le temps pour compléter.</p>
<p><img src="media/00a321c9.6e80c1e7eee37b7507d19ec8bb9afc90" data-original-source="http://cdn.libravatar.org/avatar/6e80c1e7eee37b7507d19ec8bb9afc90" alt="Gravatar de PostBlue" class="gravatar" /><br/><i>Original post of <a href="http://postblue.info/kimsufi/" title="Visit the source">PostBlue</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Tuxicoman : <a href="">Fail2ban pour Owncloud 7 sur Debian Jessie</a> (24/01/2015)</li><li>Philippe Scoffoni : <a href="">Installer Owncloud 8.1 sur Debian 8 avec Nginx et MariaDB</a> (26/07/2015)</li><li>Angristan : <a href="">Installer PHP 7 sous Debian Jessie via le d&eacute;p&ocirc;t Dotdeb</a> (19/12/2015)</li><li>PostBlue : <a href="">Supervisor tes nodes</a> (30/10/2013)</li><li>Nicolargo : <a href="">OwnCloud 3 sur un serveur Debian / Nginx</a> (07/02/2012)</li></ul></div></p>


feed_id: http://philippe.scoffoni.net/simplifier-recherches-dolibarr/
title: Philippe Scoffoni : Simplifier vos recherches dans Dolibarr
uri: Philippe-Scoffoni-Simplifier-vos-recherches-dans-Dolibarr
url: http://philippe.scoffoni.net/simplifier-recherches-dolibarr/
content:
<p>Dans l’utilisation quotidienne d’un <strong>logiciel de gestion d’entreprise</strong>, la recherche d’informations occupe une place privilégiée dans le quotidien de l’utilisateur. Ce dernier doit en permanence, et souvent le plus rapidement possible, retrouver la dernière commande pour le client X qui vient d’appeler ou vérifier si une facture fournisseur a bien été réglée. Nous allons voir comment simplifier cette activité dans le <strong>logiciel libre Dolibarr</strong>.</p>
<h2>Etat des lieux</h2>
<p><img src="media/672fd42f.SC3A9lection_226.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_226.png" alt="Zone de recherche Dolibarr 3.8" width="161" height="187">Que propose Dolibarr par défaut ? Regardons dans la version 3.8 les outils disponibles. Les plus accessibles sont des zones de recherche que l’on peut activer dans les paramètres d’affichage en fonction des modules que l’on utilise. C’est déjà un début.</p>
<p>Par contre si votre recherche porte sur un numéro de facture ou de commande, il vous faut d’abord aller sur la page du module concerné : Compta/Tréso ou Commercial selon le cas. Un ensemble de zones de recherche sont alors disponibles.</p>
<p><a href="media/8da9226b.SC3A9lection_227.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_227.png" data-rel="lightbox-0" title=""><img src="media/e7f69805.SC3A9lection_227-276x300.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_227-276x300.png" alt="Zonne de recherche commercial" width="400" height="434" srcset="http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_227-276x300.png 276w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_227.png 551w" sizes="(max-width: 400px) 100vw, 400px"></a>Vous avez ensuite la possibilité d’affiner vos recherches en utilisant les filtres disponibles dans les différentes « Listes ». D’une manière générale, c’est suffisant pour travailler, mais pas forcément idéal, car il faut enchaîner les clics et sélectionner les bons contextes. Peut-on faire mieux ?</p>
<h2>Dolibarr 3.9</h2>
<p>Cette version <a rel="nofollow" href="https://www.dolibarr.org/87-news/announces/203-dolibarr-erp-crm-3-9-has-been-released" target="_blank">vient d’être officiellement publiée</a>. Une des nouveautés de cette version est une nouvelle zone de recherche.</p>
<p><a href="media/7238bd42.SC3A9lection_228.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_228.png" data-rel="lightbox-1" title=""><img src="media/1455cacd.SC3A9lection_228-300x161.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_228-300x161.png" alt="Recherche globale Dolibarr 3.9" width="601" height="322" srcset="http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_228-300x161.png 300w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_228-768x412.png 768w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_228-600x322.png 600w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_228.png 856w" sizes="(max-width: 601px) 100vw, 601px"></a></p>
<p><a href="media/51c076ca.SC3A9lection_229.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_229.png" rel="attachment wp-att-6097" data-rel="lightbox-2" title=""><img src="media/e51c9c2d.SC3A9lection_229-142x300.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_229-142x300.png" alt="Entités dans la zone de recherch" width="142" height="300" srcset="http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_229-142x300.png 142w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_229.png 196w" sizes="(max-width: 142px) 100vw, 142px"></a>Comme vous pouvez le constater, elle est déjà idéalement positionnée et s’affiche en haut du menu latéral gauche toujours bien en vu. Deuxième point important, elle permet de rechercher dans bien plus d’entités qu’auparavant. Vous commencez à saisir quelques caractères et une liste déroulante s’affiche pour vous permettre de sélectionner l’entité sur laquelle vous souhaitez lancer la recherche.</p>
<p>Il ne vous reste plus qu’à valider par la touche « Entrée » pour lancer la recherche. Le résultat vous est affiché dans une liste. L’augmentation du périmètre de la recherche dans les entités et la profondeur au sein de ces entités permet de gagner pas mal de temps. Quand je parle de profondeur, il s’agit des informations associées à l’entité. Ainsi lorsque je sélectionne « Tiers », la recherche s’effectue sur les champs suivants du tiers : Nom du tiers, Nom alternatif, Code client, Code fournisseur, Email, URL, Numéro de TVA, Identifiant professionnel 1, Identifiant professionnel 2, Identifiant professionnel 3, Identifiant professionnel 4.</p>
<p>Bref, cette nouvelle recherche va bien optimiser l’usage de Dolibarr. Mais peut-on faire encore mieux ?</p>
<h2>Modules complémentaires</h2>
<p>J’en ai retenu deux :</p>
<ul><li><a rel="nofollow" href="https://www.dolistore.com/fr/modules/553-Recherche-Globale-3-7---3-8.html" target="_blank">Recherche globale</a></li>
<li><a rel="nofollow" href="https://www.dolistore.com/fr/modules/552-Recherche-avanc--e-en-temps-r--el.html" target="_blank">Recherche avancée en temps réel</a></li>
</ul><p>Le premier de ces modules ajoute une zone de recherche dans le menu de droite appelée « Recherche globale ». Une fois la recherche lancée celle-ci affiche un tableau avec les différentes entités pour lesquelles la valeur a été trouvée.</p>
<p><a href="media/67bff49a.SC3A9lection_232.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_232.png" rel="attachment wp-att-6098" data-rel="lightbox-3" title=""><img src="media/67bff49a.SC3A9lection_232.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_232.png" alt="Sélection_232" width="601" height="427" srcset="http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_232-300x213.png 300w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_232-600x427.png 600w, http://philippe.scoffoni.net/wp-content/uploads/2016/03/Sélection_232.png 761w" sizes="(max-width: 601px) 100vw, 601px"></a>Il vous suffit de cliquer sur l’information qui vous intéresse.</p>
<p><a href="media/4cfc05b6.SC3A9lection_235.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_235.png" rel="attachment wp-att-6099" data-rel="lightbox-4" title=""><img src="media/4cfc05b6.SC3A9lection_235.png" data-original-source="http://philippe.scoffoni.net/wp-content/uploads/2016/03/S%C3%A9lection_235.png" alt="Recherche instantanée" width="258" height="267"></a>L’approche proposée par le second module est différente. L’objectif est de vous proposer en « temps » réel une liste de résultats dans laquelle vous allez piocher celui qui vous intéresse. Une fois activée, une zone de recherche façon Dolibarr 3.9 s’affiche au sein du menu de gauche. Lorsque vous commencez à saisir les premiers caractères, le module fait immédiatement une recherche dans les entités pour vous proposer un résultat. Vous pouvez alors cliquer sur l’élément qui vous intéresse. Vous pouvez également afficher les résultats sur une page récapitulative comme le propose le module Recherche globale.</p>
<p>Personnellement, j’apprécie l’approche ergonomique proposée par le module Recherche avancé en temps réel. À noter que ce dernier présente quelques dysfonctionnements avec la version 3.8 que j’ai remontés au développeur avec les corrections à apporter.</p>
<p>Le module Recherche globale propose par contre une recherche plus étendue sur les entités Agenda, Projets et Tâches.</p>
<p>À noter que je n’ai pas pu faire fonctionner ces deux modules sur la version 3.9 de Dolibarr.</p>
<p>À vous de privilégier la solution qui répondra le mieux à votre besoin. J’aurais rêvé de la fusion des deux, mais qui sait cela viendra peut-être <img src="media/da2d029e.simple-smile.png" data-original-source="http://philippe.scoffoni.net/wp-includes/images/smilies/simple-smile.png" alt=":-)"></p>
<p> </p>
<hr><a href="http://philippe.scoffoni.net/simplifier-recherches-dolibarr/#comments">Réagir à cet article</a>
<p><small>Article original écrit par Philippe Scoffoni le 16/03/2016. | <a href="http://philippe.scoffoni.net/simplifier-recherches-dolibarr/">Lien direct vers cet article</a><br><br>Cette création est mise à disposition sous un <a rel="license" href="http://creativecommons.org/licenses/by/2.0/fr/">contrat Creative Commons BY</a>  à l'exception des images qui l'illustrent (celles-ci demeurent placées sous leur mention légale d'origine).</small></p>.

<p><img src="media/59ec0aeb.ee4bb1c08ac2d03c76f391d4b26c812a" data-original-source="http://cdn.libravatar.org/avatar/ee4bb1c08ac2d03c76f391d4b26c812a" alt="Gravatar de Philippe Scoffoni" class="gravatar" /><br/><i>Original post of <a href="http://philippe.scoffoni.net/simplifier-recherches-dolibarr/" title="Visit the source">Philippe Scoffoni</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Philippe Scoffoni : <a href="">2 th&egrave;mes pour rendre Dolibarr sexy</a> (24/02/2016)</li><li>Philippe Scoffoni : <a href="">Ajouter un export de donn&eacute;es personnalis&eacute;s dans Dolibarr</a> (12/11/2015)</li><li>Philippe Scoffoni : <a href="">Campagne de financement participative pour Dolibarr</a> (27/11/2015)</li><li>Philippe Scoffoni : <a href="">Installer OpenERP 7 sur Debian 6 squeeze</a> (26/12/2012)</li><li>Philippe Scoffoni : <a href="">Firefox : Google ne sera plus le moteur de recherche par d&eacute;faut</a> (20/11/2014)</li></ul></div></p>


feed_id: https://blog.bandinelli.net/index.php?post/2016/03/16/Fail2ban-pour-prot%C3%A9ger-Samba-de-Locky
title: Pierre-Alain Bandinelli : Fail2ban pour protéger Samba de Locky
uri: Pierre-Alain-Bandinelli-Fail2ban-pour-protéger-Samba-de-Locky
url: https://blog.bandinelli.net/index.php?post/2016/03/16/Fail2ban-pour-prot%C3%A9ger-Samba-de-Locky
content:
<p>Face à la menace du "ransomware" Locky, j'ai décidé de protéger les données de mon serveur Samba à l'aide de Fail2ban. L'idée est simple : si des mouvements pouvant correspondre à une action de Locky sont détectés, alors l'IP à l'origine de l'action est bannie du serveur Samba.</p>


<h3>Étape 1 : activer l'audit dans Samba</h3>

<p>Samba dispose de puissantes fonctions d'audit qui permettent de garder trace de toutes les opérations sur un partage. Elles s'activent à l'aide des options <em>full_audit</em> dans le fichier <em>/etc/samba/smb.conf</em>. Attention toutefois à la volumétrie que cela peut représenter : si le serveur Samba est très sollicité, la taille des logs sera fort importante (surtout si l'on suit l'événement "open" qui est déclenché régulièrement lors de toute navigation sur le partage Samba) !</p>


<p>Plaçons donc le paramétrage suivante dans la section "Global" du fichier de configuration de Samba (<em>/etc/samba/smb.conf</em> par défaut) :</p>
<pre>
full_audit:priority = notice
full_audit:facility = local5
full_audit:success = mkdir rmdir rename unlink open
full_audit:prefix = %u|%I|%S
</pre>


<p>puis redémarrons Samba :</p>
<pre>
service samba restart
</pre>


<p>et voilà le fichier <em>/var/log/samba/audit.log</em> qui se remplit et recense tous les mouvements sur le serveur Samba. Une bonne rotation des logs sera nécessaire pour ne pas se faire piéger ! Attention également à la petite perte de performance que cette écriture régulière demandera.</p>



<h3>Étape 2 : paramétrer le nouveau filtre d'exclusion pour Fail2ban</h3>

<p>Nous allons demander à Fail2ban de bannir tout ordinateur qui effectuerait une opération sur fichier *.locky ou *.xxx sur le serveur. On crée le fichier <em>/etc/fail2ban/filter.d/antilocky.conf</em> suivant :</p>
<pre>
[Definition]
failregex = \\|<HOST>\\|NomDePartage\\|.*\\|ok\\|.*\\.(locky|xxx|mp3)

ignoreregex =
</pre>

<p>en remplaçant "NomDePartage" par le nom du partage Samba concerné.</p>


<h3>Étape 3 : paramétrer une nouvelle prison dans Fail2ban</h3>

<p>On paramètre comme il se doit Fail2ban dans <em>/etc/fail2ban/jail.local</em> en ajoutant notamment la section suivante :</p>
<pre>
[antilocky]
enabled = true
filter  = antilocky
backend = auto
logpath = /var/log/samba/audit.log
maxretry  = 2
banaction = iptables-allports
port = all
</pre>


<p>On peut alors redémarrer Fail2ban par :</p>
<pre>
service fail2ban restart
</pre>


<p>et vérifier dans les logs <em>/var/log/fail2ban.log</em> que la nouvelle prison se charge correctement.</p>


<p>Et voilà Fail2ban prêt à bannir tout ordinateur qui se connecterait au serveur Samba en manipulant des fichiers *.locky ou *.xxx. Evidemment il peut y avoir des faux positifs. Il est donc recommandé d'être vigilant et d'activer peut-être la notification par courriel des bannissements de ce type pour être en mesure de débannir dans le cas d'un faux positif et d'intervenir sur le poste infecté s'il s'avère qu'une réelle infection est en cours.</p>



<h3>Étape 4 : limitations</h3>

<p>La principale limitation est l'usage de l'extension de nom de fichier comme critère de signalement. Si des variantes du virus adoptent d'autres extensions (par exemple .pdf) alors il ne sera plus possible de détecter l'action frauduleuse de la sorte. On pourra éventuellement suivre le nombre d'opérations sur le partage Samba et alerter l'administrateur lorsque de trop nombreuses opérations de suppression sont en cours...</p>
<p><img src="media/046c52ed.f0dc90a616e4df8216da2ee2b645f9c7" data-original-source="http://cdn.libravatar.org/avatar/f0dc90a616e4df8216da2ee2b645f9c7" alt="Gravatar de Pierre-Alain Bandinelli" class="gravatar" /><br/><i>Original post of <a href="https://blog.bandinelli.net/index.php?post/2016/03/16/Fail2ban-pour-prot%C3%A9ger-Samba-de-Locky" title="Visit the source">Pierre-Alain Bandinelli</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Pierre-Alain Bandinelli : <a href="">Obtenir une bonne note chez SSLLabs avec Pound</a> (10/11/2014)</li><li>Pierre-Alain Bandinelli : <a href="">Entretenir et s&eacute;curiser ownCloud avec logrotate et fail2ban</a> (02/01/2015)</li><li>Pierre-Alain Bandinelli : <a href="">Letsencrypt : renouveler intelligemment malgr&eacute; les limites de la b&ecirc;ta</a> (01/02/2016)</li><li>Pierre-Alain Bandinelli : <a href="">Entretenir et s&eacute;curiser Roundcube avec logrotate et fail2ban</a> (26/10/2013)</li><li>Pierre-Alain Bandinelli : <a href="">Installation et param&eacute;trage d&#039;un serveur avec conteneurs LXC chez Online.net/Dedibox</a> (10/11/2013)</li></ul></div></p>


feed_id: https://francois.aichelbaum.com/lenovo-t450-wireless-ac-7265-not-working-linux/
title: Francois Aichelbaum : Lenovo T450 Wireless AC 7265 not working on Linux
uri: Francois-Aichelbaum-Lenovo-T450-Wireless-AC-7265-not-working-on-Linu
url: https://francois.aichelbaum.com/lenovo-t450-wireless-ac-7265-not-working-linux/
content:
<p>Lately I discovered an issue with my WiFi adapter on my professional laptop (a Lenovo T450) : it was not working. Pretty inconvenient. After some digging, I tested and had to adapt part of things I found on Google.</p><p><span></span></p><p>So, to begging with, the symptoms :</p><ul><li>no more wireless adapter in my NetworkManager or any other tools, including ifconfig</li><li>dmesg reports issues loading the iwlwifi firmware</li></ul><p>The dmesg output looks like :</p><pre>[ 4.237444] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-12.ucode failed with error -2
[ 4.237466] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-11.ucode failed with error -2
[ 4.237479] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-10.ucode failed with error -2
[ 4.237482] iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-7265D-10.ucode' failed.
[ 4.237493] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-9.ucode failed with error -2
[ 4.237495] iwlwifi 0000:03:00.0: request for firmware file 'iwlwifi-7265D-9.ucode' failed.
[ 4.237497] iwlwifi 0000:03:00.0: no suitable firmware found!</pre><p></p><p>I tried to download the official firmware from Intel, namely iwlwifi-7265-ucode-25.30.14.0, with no luck. Though, I decided to keep the ucode files from this archive in my /lib/firmware/.</p><p>Note that, depending on your distro, this previous step might be enough. To check :</p><p></p><pre>update-initramfs -u
reboot</pre><p></p><p>Then, further dig pointed some issues with the iwlwifi package not handling properly this version of the AC 7265. From lspci :</p><p></p><pre>03:00.0 Network controller [0280]: Intel Corporation Wireless 7265 [8086:095b] (rev 59)
 Subsystem: Intel Corporation Dual Band Wireless-AC 7265 [8086:5210]</pre><p></p><p>Here, the main points are the main ID 095b and the Subsystem ID 5210.</p><p>To solve this, let’s recompile the backport package of iwlwifi with a tiny difference (the <em>sed</em> line is to adapt with your IDs) :</p><p></p><pre>sudo apt-get install build-essential linux-headers-$(uname -r)
wget https://www.dropbox.com/s/gyuvdlhzx5ho277/backports-20150731.tar.gz
tar -zxvf backports-20150731.tar.gz
cd backports-20150731/
sed -i 's/IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)/IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)/' drivers/net/wireless/iwlwifi/pcie/drv.c 
make defconfig-iwlwifi
make
sudo make install
update-initramfs -u
reboot</pre><p>Now, if you check your dmesg, you’ll see :</p><pre>[ 3.950804] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-15.ucode failed with error -2
[ 3.952513] audit: type=1400 audit(1458119598.627:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/sbin/dhclient" pid=657 comm="apparmor_parser"
[ 3.952521] audit: type=1400 audit(1458119598.627:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=657 comm="apparmor_parser"
[ 3.952525] audit: type=1400 audit(1458119598.627:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.953091] audit: type=1400 audit(1458119598.627:8): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=657 comm="apparmor_parser"
[ 3.953100] audit: type=1400 audit(1458119598.627:9): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.953362] audit: type=1400 audit(1458119598.627:10): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=657 comm="apparmor_parser"
[ 3.955605] iwlwifi 0000:03:00.0: loaded firmware version 25.30.14.0 op_mode iwlmvm
[ 3.975336] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input7
[ 4.001495] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x210
[ 4.001843] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 4.002290] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled</pre><p>And, <em>voilà</em>, your wireless adapter is back online !</p><p><span><strong>NB</strong></span>: you’ll have to redo these steps after every kernel update, except if the iwlwifi module got fixed.</p><p>The post <a rel="nofollow" href="https://francois.aichelbaum.com/lenovo-t450-wireless-ac-7265-not-working-linux/">Lenovo T450 Wireless AC 7265 not working on Linux</a> appeared first on <a rel="nofollow" href="https://francois.aichelbaum.com/">Here and Now ... Then and There</a>.</p>
<p><img src="media/fa8a9a5c.d3aee8c1dcab31df72e021766230892b" data-original-source="http://cdn.libravatar.org/avatar/d3aee8c1dcab31df72e021766230892b" alt="Gravatar de Francois Aichelbaum" class="gravatar" /><br/><i>Original post of <a href="https://francois.aichelbaum.com/lenovo-t450-wireless-ac-7265-not-working-linux/" title="Visit the source">Francois Aichelbaum</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Francois Aichelbaum : <a href="">Dupliquer une machine sous Linux en ssh (&agrave; la bourrin)</a> (23/08/2012)</li><li>Francois Aichelbaum : <a href="">Int&eacute;gration d&rsquo;un parc de machines Linux &agrave; un domaine Active Directory</a> (15/01/2013)</li></ul></div></p>


feed_id: http://genma.free.fr/?17eme-Journee-du-logiciel-libre
title: genma : 17ème Journée du logiciel libre
uri: genma-17ème-Journée-du-logiciel-libre
url: http://genma.free.fr/?17eme-Journee-du-logiciel-libre
content:
<img alt="" src="http://genma.free.fr/IMG/arton2462.jpg?1458205782" width="150" height="79"><div><p><i>Comme chaque année, l'Association Lyonnaise pour le Développement de l'informatique Libre (ALDIL) et ses partenaires : La Maison pour Tous et l'association ILLYSE organisent deux jours de rencontres sur l'informatique Libre.</i></p>
<p><strong>Les 2 et 3 avril 2016 auront lieu la 17ème édition des Journées du Logiciel Libre (JDLL) à Lyon à la Maison Pour Tous – Salle des RANCY (3ème arrondissement).</strong></p>
<p><span>
<img src="http://genma.free.fr/local/cache-vignettes/L400xH564/jddl-89918.png?1458288002" width="400" height="564" alt=""></span></p>
<p>Pour en savoir plus, il y la page Texte repris du site officiel, page <a href="http://www.jdll.org/jdll-presentation-generale/" title="Journées du logiciel libre - Présentation générale">Journées du logiciel libre - Présentation générale</a> et le site <a href="http://www.jdll.org/" title="Journées du logiciel libre">http://www.jdll.org</a> pour avoir le programme, les informations pratiques etc.</p>
<p>Le thème de cette année est : « Créativité, Citoyenneté, Diversité : Le logiciel libre, du code, mais pas que ! ».</p>
<p>Au cours des ceux jours, vous me trouvere à jongler entre les stands Mozilla, Café vie privée - Chiffrofête - Cryptoparty et Framasoft, à parler de mes sujets de prédilection, à rencontrer du monde voir, si je peux, à assister à quelques conférences (mais j'en doute).<br>
Mais surtout, je donnerai une conférence d'une 40aine de minutes.</p>
<p><strong>De l'importance de l'éducation populaire au numérique</strong></p>
<p><strong>Résumé</strong></p>
<p><i>L'Informatique et Internet sont partout dans nos vies quotidiennes. Il me semble important que le grand public, tout à chacun soit à même de s'approprier les connaissances nécessaires et suffisantes pour comprendre ces outils qui changent les fondements mêmes de notre société, dans notre accès à l'information, aux connaissances, au partage, à la communication... Comment communiquer vers ce public, comment faire de l'éducation populaire au numérique ?</i></p>
<p><strong>Détail</strong></p>
<p><i>A travers son expérience acquise via des formations, des conférences et des ateliers destinés au grand public, des libristes, des journalistes ou à des geeks hackitvistes, et des mes différents activités dans le milieu associatif libriste (Framasoft, FirefoxOS, Café vie privée etc.) je souhaite montrer l'importance de la communication et de la vulgarisation pour que l'éducation populaire se fasse et pour que l'on cesse de faire de l'entre-soi, que l'on ne pense plus "RTFM". Ainsi chacun et chacune aura les moyens de s'approprier le numérique et de comprendre les enjeux (neutralité du net, importance de la vie privée, lutte contre les GAFAM etc.).</i></p>
<p>Le support de la conférence est déjà en ligne <a href="media/b63d47da.Genma_JDLL_2016.pdf" data-original-source="https://github.com/genma/JDLL_2016/raw/master/Genma_JDLL_2016.pdf" title="Conférence De l'importance de l'éducation populaire au numérique - le PDF">et disponible ici</a>, il est succeptible encore d'évoluer. <a href="https://github.com/genma/JDLL_2016/" title="Sources en LaTEX/Beamer">Sources en LaTEX/Beamer</a>.</p>
<p><strong>Conclusion</strong></p>
<p>Ami-e-s Lyonnais et de la région, libristes ou non, je ne peux que vous inviter à venir aux JDLL et à communiquer autour de vous sur cet événement, qui a la vocation d'aller au-delà des sphères informaticiennes et libristes, en allant vers l'autre, en arrêtant de faire de l'entre-soi (la suite, ce sera lors lors de ma conférence :-)</p></div>
<p><img src="media/42493842.dd4318d0d3a7d2ffb13756f63b76d85d" data-original-source="http://cdn.libravatar.org/avatar/dd4318d0d3a7d2ffb13756f63b76d85d" alt="Gravatar de genma" class="gravatar" /><br/><i>Original post of <a href="http://genma.free.fr/?17eme-Journee-du-logiciel-libre" title="Visit the source">genma</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://www.goffi.org/blog/goffi/71eaf561-3f89-4fa5-8bc9-82af76229384
title: Goffi : Configuration avancée du conteneur Libervia
uri: Goffi-Configuration-avancée-du-conteneur-Libervia
url: http://www.goffi.org/blog/goffi/71eaf561-3f89-4fa5-8bc9-82af76229384
content:
<p>﻿Cet article fait suite à l'article de la semaine dernière indiquant <a href="http://www.goffi.org/blog/goffi/067646bd-9439-430a-98c2-c655f5a63e40">comment installer Libervia en moins de 10 min</a>. Nous allons voir aujourd'hui comment utiliser un certificat TLS existant, intégrer le conteneur dans une configuration Apache, ou lancer automatiquement le service au démarrage de la machine.</p>
<h1>Utiliser votre certificat TLS existant</h1>
<p>Au premier lancement des conteneurs, un certificat auto-signé est automatiquement créé pour pouvoir utiliser Prosody ou le serveur HTTPS de Libervia. Ce genre de certificat est très bien pour du test, mais d'une part provoquera un avertissement dans les navigateurs, et d'autre son authenticité n'est assurée par aucun organisme (les certificats TLS sont signés par des organismes que votre navigateur et/ou système connaissent, ce qui permet de le valider – principe qui n'est pas idéal, mais c'est un autre sujet –).</p>
<p>Pour utiliser votre propre certificat plutôt que celui généré par les conteneurs, il faut utiliser la variable d’environnement <strong>SAT_CONT_TLS_DIR</strong> avec un chemin absolu vers vos certificats.</p>
<p>Il faut qu'à l'intérieur de ce dossier se trouvent les fichiers « <em>libervia.key</em> » pour votre clef privée, et « <em>libervia.crt</em> » pour votre certificat public. Ces noms de fichiers sont fixés car déjà configurés dans Libervia et Prosody, si vous voulez les changer il faudra changer les 2 configurations à l'aide de <strong>./libervia_cont.sh config</strong> et <strong>./libervia_cont.sh config prosody</strong>, comme indiqué dans le dernier article.</p>
<p>Au niveau des permissions des certificats, vous pouvez les laisser accessibles uniquement au « <em>group ID</em> » <strong>9999</strong> qui correspond au groupe « tls-cert » sur les conteneurs.</p>
<h2>Let's Encrypt</h2>
<p>Comme Let's Encrypt est (à juste titre) à la mode, voyons voir de plus près ce cas particulier.</p>
<p>Le but ici est de ne pas avoir à changer la configuration à chaque renouvellement, qui ont lieu au plus tard tous les 3 mois. Let's Encrypt met ses certificats (par défaut, adaptez au besoin) dans <em><code>/etc/letsencrypt/archive/<votre_nom_de_domaine></code></em>, mais les noms de fichiers changent à chaque renouvellement, et met un lien symbolique vers les certificats en cours dans <em><code>/etc/letsencrypt/live/<votre_nom_de_domaine></code></em>.<br>
Vous ne pouvez pas utiliser directement  <em>/etc/letsencrypt/live/</em> car vous auriez des liens symboliques pointant dans le vide, il va falloir monter le dossier archive également.</p>
<p>La variable d'environement <strong>SAT_CONT_DK_EXTRA</strong> permet de spécifier des paramètres pour la commande « docker run » qui seront utilisés pour <strong>tous</strong> les conteneurs (sauf <em>sat_data</em>). Nous allons l'utiliser pour monter toute l'arborescence letsencrypt, comme suit :</p>
<pre><code>export SAT_CONT_DK_EXTRA="-v /etc/letsencrypt:/etc/letsencrypt"
</code></pre>
<p>Il va falloir éditer les configurations de Libervia et Prosody pour pointer vers les bons fichiers.<br>
Pour Libervia, utilisez <strong>./libervia_cont.sh config</strong> puis spécifiez dans la section <strong>[libervia]</strong>:</p>
<pre><code>[libervia]
tls_private_key = /etc/letsencrypt/live/<nom_domaine>/privkey.pem 
tls_certificate = /etc/letsencrypt/live/<nom_domaine>/cert.pem 
tls_chain = /etc/letsencrypt/live/<nom_domaine>/chain.pem
</code></pre>
<p>N'oubliez pas l'option <strong>tls_chain</strong> qui permet de spécifier la chaîne de validation.</p>
<p>Pour prosody, c'est <strong>./libervia_cont.sh config prosody</strong> qu'il faut utiliser, vous devez avoir modifié votre option <strong>ssl</strong> pour qu'elle ressemble à :</p>
<pre><code>ssl = {
        key = "/etc/letsencrypt/live/<nom_domaine>/privkey.pem";
        certificate = "/etc/letsencrypt/live/<nom_domaine>/fullchain.pem";
}
</code></pre>
<p>dans les 2 cas il faut bien évidemment remplacer <em><code><nom_domaine></code></em> par votre nom de domaine tel qu'il apparaît dans <code>/etc/letsencrypt/live</code>. Assurez vous aussi que les permissions sont correctes, vous verrez si Prosody ou Libervia n'arrivent pas à lire les fichiers à l'aide de <strong>docker logs -f prosody</strong> et <strong>docker logs -f libervia</strong> respectivement.</p>
<h1>Intégration à un serveur Apache</h1>
<p>Si vous avez déjà un serveur Apache qui tourne, vous préfèrez sans doute intégrer Libervia à la configuration existante plutôt que sur un port séparé.</p>
<p>Pour cela nous allons utiliser un « proxy inverse » (reverse proxy) qui va rediriger une adresse de votre domaine sur le serveur de Libervia.</p>
<p>Si vous avez une configuration HTTPS, elle sera gérée par Apache lui-même, donc commençons par désactiver le serveur HTTPS de Libervia, et par supprimer le message d'avertissement en cas de connexion HTTP. Éditez sat.conf à l'aide de <strong>./libervia_cont.sh config</strong>, et mettez ceci dans la section <em>[libervia]</em> :</p>
<pre><code>[libervia]
connection_type = http
security_warning = 0
</code></pre>
<p>Désormais seul le port HTTP sera disponible.  </p>
<p>Maintenant, nous allons configurer apache pour qu'il redirige les URL correspondant à votre instance de Libervia vers le serveur. Dans le répertoire /etc/apache2/mods-available/ créez un fichier libervia.conf qui ressemble à peu près à ça :</p>
<pre><code><VirtualHost *:80>
    ServerName www.<votre-serveur.tld>
    ServerAlias <votre-serveur.tld> libervia.<votre-serveur.tld>
    ServerAdmin webmaster@votre-server.tld
    ErrorLog /var/log/apache2/libervia-error.log
    CustomLog /var/log/apache2/libervia-access.log
    ProxyPass / http://127.0.0.1:8080/ nocanon
    ProxyPassReverse / 127.0.0.1
    AllowEncodedSlashes On
    RequestHeader set X-Forwarded-Proto "http"

    <proxy *>
        Require all granted
    </proxy>
</VirtualHost>
</code></pre>
<p>Il faut bien entendu remplacer <code><votre-serveur.tld></code> par votre nom de domaine, adapter SeverName et ServerAlias à ce que vous souhaitez utiliser, ainsi que les ports pour qu'ils correspondent à ceux que vous utilisez en pratique (si vous avez tout laissé par défaut, les ports indiqués sont valables).</p>
<p>Quelques explications sur la configuration :
Passons sur les premières lignes et VirtualHost qui sont des classiques de configuration Apache, vous trouverez les informations nécessaires facilement sur le web au besoin. Les directives qui nous intéressent ici sont à partir de ProxyPass.</p>
<ul><li><strong>ProxyPass</strong> indique à Apache de rediriger les connexions sur le serveur local au port 8080, soit l'instance en cours de Libervia. Notez bien le « <strong>nocanon</strong> » qui est très important, il indique à Apache de ne pas utiliser des adresses canoniques, soit en d'autres terme de ne pas modifier les URLs envoyées à Libervia.</li>
<li><strong>ProxyPassReverse</strong> concerne les redirections</li>
<li><strong>AllowEncodedSlashes</strong> est nécessaire pour accepter les URLs contenant des « <em>/</em> » (%2F), qui sont utilisées dans Libervia.</li>
<li><strong>RequestHeader</strong> permet d'ajouter l'en-tête « X-Forwarded-Proto » indiquant à Libervia le protocol utilisé au niveau du proxy</li>
</ul><p>Quand un proxy est utilisé, l'adresse utilisée « vue » de l'extérieur (<code>http(s)://www.<votre-serveur.tld>/[…]</code>) n'est pas la même que celle utilisée pour accéder par Libervia, qui est ici <code>http://127.0.0.1:8080</code>. Or Libervia a besoin de connaître cette adresse pour construire des chemins absolus vers les documents, par exemple dans le flux Atom.<br>
Normalement, ceci est fait automatiquement et vous n'avez besoin de toucher à rien pour que Libervia utilise les bonnes URL ; mais si jamais les URL produites n'étaient pas correctes, vous pourriez utiliser l'option « <strong>base_url_ext</strong> » pour forcer l'utilisation de la base indiquée. Ainsi pour forcer l'utilisation de <code>http://www.goffi.org</code>, je peux indiquer ceci dans ma configuration Libervia :</p>
<pre><code>base_url_ext = http://www.goffi.org
</code></pre>
<p>Ou même « <code>//www.goffi.org</code> » pour laisser Libervia gérer le schema (c.-à-d. le protocol : <em>http</em> ou <em>https</em>). Encore une fois tout ceci devrait être géré automatiquement <strong>(*)</strong>, et il est très peu probable que vous ayez à utiliser cette option. Venez me contacter sur <a href="xmpp:sat@chat.jabberfr.org?join">sat@chat.jabberfr.org</a> pour plus d'explications si nécessaire. </p>
<p>Une fois la configuration faite, il vous suffit pour activer le proxy de demander à Apache de prendre en compte la nouvelle configuration. Nous allons également nous assurer que le mode proxy_http est activé, aussi nous allons utiliser les commandes suivantes (en root) :</p>
<pre><code># a2enmod headers
# a2enmod proxy_http
# a2ensite libervia.cont
# systemctl reload apache2
</code></pre>
<p><strong>(*)</strong> si vous avez téléchargé les images la dernière fois, ce comportement a été modifié depuis, c'est l'occasion de tester « <strong>./libervia_cont.sh update</strong> ».</p>
<h2>Utilisation d'un cache</h2>
<p>Apache a des modules permettant la gestion d'un cache, qui permettra à la fois d'économiser les ressources, et de fournir la dernière page connue en cas d'indisponibilité du serveur (lors d'une maintenance par exemple). Dans le cas de Libervia, c'est principalement utile pour le blog statique.</p>
<p>Assurez-vous d'abord que le cache est activé à l'aide de :</p>
<pre><code> # a2enmod cache_disk
</code></pre>
<p>qui activera à la fois les modules cache et cache_disk. Ensuite à l'intérieur de la configuration du <em>VirtualHost</em> que nous avons faites plus haut :</p>
<pre><code><IfModule mod_cache_disk.c>
    CacheEnable disk /
    CacheRoot "/var/cache/apache2/mod_cache_disk/libervia/"
    CacheDirLevels 3
    CacheDirLength 5
    CacheIgnoreHeaders Set-Cookie
    CacheMaxFileSize 200000000
    CacheIgnoreNoLastMod On
    CacheDefaultExpire 300
</IfModule>
</code></pre>
<p>Vous pourrez vous reporter à la documentation pour la plupart des directives utilisées ici, mais il est nécessaire d’en préciser quelques-unes :</p>
<ul><li><strong>CacheIgnoreHeaders Set-Cookie</strong> évitera de mettre en cache les cookies qui sont utilisés pour la session dynamique de Libervia, cette directive est essentielle pour la sécurité</li>
<li><strong>CacheIgnoreNoLastMod On</strong> permet de mettre en cache des documents qui ne possèdent pas de date de dernière modification, ce qui est le cas actuellement des pages servies par Libervia</li>
<li><strong>CacheDefaultExpire</strong> indique un cache qui expire après 10 min. Libervia ne gère pas (encore) les indications nécessaires à une gestion automatique du cache, aussi on indique ici la durée voulue. Le cache étant essentiellement utilisé pour le blog statique, j'ai mis 10 min pour qu'une mise à jour apparaîsse suffisament vite.</li>
</ul><p>À moins d'avoir un site extrêmement populaire, il ne devrait pas y avoir de problème de performance pour le blog statique même sans cache, il est à mon sens surtout utile ici pour continuer à servir les pages pendant les maintenances.</p>
<h2>utilisation de tls</h2>
<p>L'utilisation de TLS n'est pas plus compliquée que pour un autre site Apache.<br>
Voici à quoi peut ressembler une configuration si vous activez le proxy, le chiffrement TLS, et un cache :</p>
<pre><code><IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName www.<votre_site.tld>
        ServerAlias <votre_site.tld> libervia.<votre_site.tld>
        ServerAdmin webmaster@<votre_site.tld>
        LogFormat "h %l %u %t \\"%r\\" %>s %O \\"%{Referer}i\\" \\"%{User-Agent}i\\" %{cache-status}e" with_cache
        ErrorLog /var/log/apache2/libervia-error.log
        CustomLog /var/log/apache2/libervia-access.log with_cache
        ProxyPass / http://127.0.0.1:8080/ nocanon
        ProxyPassReverse / http://127.0.0.1:8080/
        AllowEncodedSlashes On

        <proxy *>
                Require all granted
        </proxy>
        SSLCertificateFile /etc/letsencrypt/live/<votre_site.tld>/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/<votre_site.tld>/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        SSLCertificateChainFile /etc/letsencrypt/live/<votre_site.tld>/chain.pem

        <IfModule mod_cache_disk.c>
                CacheEnable disk /
                CacheRoot "/var/cache/apache2/mod_cache_disk/libervia/"
                CacheDirLevels 3
                CacheDirLength 5
                CacheIgnoreHeaders Set-Cookie
                CacheMaxFileSize 200000000
                CacheIgnoreNoLastMod On
                CacheDefaultExpire 300
        </IfModule>

</VirtualHost>
</IfModule>
</code></pre>
<p>Notez que le « <em>RequestHeader set X-Forwarded-Proto</em> » a désormais la valeur <em>"https"</em> ainsi que le « <em>with_cache</em> » dans les logs, ajoutant des informations utiles (est-ce que la page est servie par le cache ou Libervia ?).</p>
<p>Pour le reste, reportez-vous à la documentation Apache.</p>
<h1>Démarrage automatique</h1>
<p>Dernier point de cette partie sur la configuration avancée, nous allons voir comment lancer automatiquement notre instance de Libervia au démarrage de la machine. Nous allons pour cela utiliser SystemD qui est désormais le gestionnaire de démarrage par défaut de la plupart des distributions, donc probablement de la vôtre.<br>
Il vous suffit d'utiliser une configuration similaire à la suivante, dans un fichier <em>libervia.service</em> à placer dans <em><code>/etc/systemd/system</code></em> :</p>
<pre><code>[Unit]
Description=Libervia (Salut à Toi) XMPP Docker service
After=docker.service
Requires=docker.service

[Service]
User=libervia

Environment= \\
SAT_CONT_DOMAIN=votre_domain.tld \\
SAT_CONT_PORT_8080=8000

ExecStartPre=/home/goffi/dev/sat_docs/docker/libervia_cont.sh start -p
ExecStart=/usr/bin/docker wait libervia
ExecStop=/home/goffi/dev/sat_docs/docker/libervia_cont.sh stop

[Install]
WantedBy=multi-user.target
</code></pre>
<p>Ce fichier indique que le containeur doit attendre que Docker soit lancé. L'utilisateur ici est libervia, changez-le pour celui que vous avez ajouté au groupe « docker ».<br>
Environment vous permet de configurer les options comme le port ou le nom de domaine utilisé, notez bien le "\\" en fin de ligne (dernier caractère avant le retour à la ligne, sans espace) qui indique de considérer la ligne suivante comme la suite de la commande.</p>
<p>Le serveur est en fait lancé avec la directive <em>ExceStartPre</em>, afin de pouvoir connaître sont éta avec « <em>docker wait</em> ». C'est une petite astuce qui évite des complications, car les conteneurs sont lancés par le démon Docker et non le script lui-même.</p>
<h1>À suivre…</h1>
<p>Voilà pour cette seconde partie de la série sur l'installation d'un blog Libervia. Ce n'était pas la partie la plus amusante, mais vous n'avez a priori à faire cette configuration qu'une seule fois, et elle n'est pas si compliquée que cela.</p>
<p>La prochaine fois nous importerons un blog depuis Dotclear.</p>
<p><img src="media/5b1e2ea8.1e4b13af438df6baa729681700f11a05" data-original-source="http://cdn.libravatar.org/avatar/1e4b13af438df6baa729681700f11a05" alt="Gravatar de Goffi" class="gravatar" /><br/><i>Original post of <a href="http://www.goffi.org/blog/goffi/71eaf561-3f89-4fa5-8bc9-82af76229384" title="Visit the source">Goffi</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://framablog.org/2016/03/18/comment-modifier-et-personnaliser-sa-framacarte-tutos-umap-44/
title: Framablog : Comment modifier et personnaliser sa Framacarte ? (Tutos uMap 4/4)
uri: Framablog-Comment-modifier-et-personnaliser-sa-Framacarte-(Tutos
url: http://framablog.org/2016/03/18/comment-modifier-et-personnaliser-sa-framacarte-tutos-umap-44/
content:
<p>Juste avant Noël, <a href="http://framablog.org/2015/12/23/framacarte-pour-liberer-vos-maps-de-google/">nous vous présentions Framacartes</a>, un service de création de cartes personnalisées pour vos sites web, communautés, randos, chasses au trésor… Framacartes est basé sur le logiciel <a href="http://wiki.openstreetmap.org/wiki/UMap">Umap</a>, qui permet d’ajouter des points, tracés et polygones sur les fonds de cartes d’<a href="http://www.openstreetmap.fr/">OpenStreetMap</a>.</p>
<p>C’est alors qu’Antoine Riche, ingénieur informatique, <a href="http://cartocite.fr/">Contributeur et Formateur OpenStreetmap</a>, nous a contactés pour nous présenter <a href="http://wiki.cartocite.fr/doku.php?id=umap:tutoriel_umap">sa série de tutoriels</a> (libres, eux aussi) pour apprendre à maîtriser uMap (et donc Framacartes) à toute la famille Dupuis-Morizeau.</p>
<p>C’est avec son autorisation (et de chaleureux remerciements) que nous reproduirons sur le framablog les quatre premiers tutos (le niveau « débutant ») afin d’en faire profiter le plus grand nombre.</p>
<p>Nous avons commencé par nous<a href="http://framablog.org/2016/02/16/comment-consulter-une-framacarte-tutos-umap-14"> familiariser avec uMap pour profiter pleinement d’une Framacarte</a>…</p>
<p>Puis, nous avons vu <a href="http://framablog.org/2016/03/04/comment-creer-sa-premiere-framacarte-tutos-umap-24/">comment créer sa première Framacarte</a>…</p>
<p>Ensuite, nous avons <a href="http://framablog.org/2016/03/11/comment-creer-une-belle-framacarte-avec-un-compte-tutos-umap-34/">créé un compte afin de faire de bien jolies cartes</a> et de ne pas les perdre !</p>
<p>Cette semaine et pour finir cette série de tutoriels, apprenons comment personnaliser ses Framacartes.</p>
<p><span></span></p>
<h2>Je modifie et personnalise ma carte</h2>
<h3>Ce que nous allons apprendre</h3>
<div>
<ul><li>
<div>Gérer son catalogue de cartes</div>
</li>
<li>
<div>Choisir un fond de carte</div>
</li>
<li>
<div>Sélectionner les options d’interface</div>
</li>
</ul></div>
<h2>Procédons par étapes</h2>
<div></div>
<h3>1. Retrouver une carte</h3>
<div>
<p>Vous souhaitez modifier une carte pour l’améliorer ou la mettre à jour. Si vous avez redémarré votre navigateur et à fortiori votre ordinateur, la première chose à faire est de retrouver la carte ! Si vous avez créé cette carte avec votre compte comme nous l’avons vu dans le tutoriel <a title="umap:3_-_j_utilise_un_compte_et_cree_une_belle_carte" href="http://framablog.org/2016/03/11/comment-creer-une-belle-framacarte-avec-un-compte-tutos-umap-34/">J’utilise un compte et crée une belle carte</a>), afficher une de vos cartes se fait en trois opérations simples :</p>
<ol><li>
<div>connectez-vous à votre compte umap</div>
</li>
<li>
<div>affichez votre catalogue de cartes</div>
</li>
<li>
<div>cliquez sur le nom de la carte, affiché <strong>sous l’aperçu</strong> de la carte</div>
</li>
</ol><p><a href="media/57a495f2.umap_edit2.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_edit2.png" rel="attachment wp-att-5745"><img src="media/57a495f2.umap_edit2.png" data-original-source="http://framablog.org/wp-content/uploads/2016/03/umap_edit2.png" alt="umap_edit2" width="38" height="38"></a>La carte s’affiche alors en mode consultation. Cliquez sur le crayon en haut à droite de la carte pour passer en mode édition : vous pouvez dès lors modifier la carte. N’oubliez pas de sauvegarder la carte une fois les modifications terminées.</p>
<div>
<p><em>Il peut être fastidieux de passer du mode édition au mode consultation et vice-versa de façon répétée. Une astuce consiste à utiliser pour la même carte deux onglets ou deux navigateurs, l’un en mode édition l’autre en mode consultation. Vous devez tout de même <strong>enregistrer</strong> la carte dans l’onglet en mode édition avant de l’<strong>actualiser</strong> (par exemple avec la touche F5) dans l’onglet en mode consultation.</em></p>
</div>
<p><a href="media/4b96320d.umap_home.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_home.png" rel="attachment wp-att-5602"><img src="media/4b96320d.umap_home.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_home.png" alt="umap_home" width="38" height="38"></a>Vous pouvez retourner à votre catalogue de cartes à tout moment en cliquant sur le pictogramme <code>Retourner à l'accueil</code> dans le menu du bouton <code>Plus</code> à gauche de la carte.</p>
</div>
<h3>2. Changer le fond de carte</h3>
<div>
<p>Nous avons vu dans le tutoriel <a title="umap:1_-_je_consulte_une_carte_umap" href="http://framablog.org/2016/02/16/comment-consulter-une-framacarte-tutos-umap-14/">Je consulte une carte uMap</a> que plusieurs fonds de carte sont disponibles dans umap. Lorsque vous éditez une carte vous pouvez choisir le fond de carte qui sera utilisé à l’affichage de la carte.</p>
<p><a href="media/4266044f.umap_layers.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_layers.png" rel="attachment wp-att-5606"><img src="media/4266044f.umap_layers.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_layers.png" alt="umap_layers" width="38" height="38"></a>Cliquez sur le pictogramme <code>Changer le fond de carte</code> : un panneau à droite montre une vingtaine de fonds de cartes. Il vous suffit de cliquer sur l’un d’eux : faites votre choix et n’oubliez pas d’enregistrer la modification.</p>
<p>Le choix du fond de carte est une affaire de goût. Le contexte de la carte peut vous aider à en choisir un plutôt qu’un autre, par exemple :</p>
<ul><li>
<div>les fonds <strong>Outdoors</strong>, <strong>Landscape</strong> ou <strong>OpenTopoMap</strong> montrent le relief : judicieux pour une carte de randonnée</div>
</li>
<li>
<div><strong>OpenCycleMap</strong> montre les grands itinéraires cyclistes, comme les EuroVélo (Côte Atlantique, Loire à Vélo…)</div>
</li>
<li>
<div><strong>Positron</strong>, <strong>Toner</strong> et <strong>OSM-Monochrome</strong> sont en noir et blanc : vos marqueurs, lignes et polygones seront plus visibles</div>
</li>
<li>
<div>le style <strong>HOTOSM</strong>, créé par le <a title="http://wiki.openstreetmap.org/wiki/FR:Humanitarian_OSM_Team" href="http://wiki.openstreetmap.org/wiki/FR:Humanitarian_OSM_Team" rel="nofollow">groupe humanitaire</a> d’OpenStreetMap, permet d’aller jusqu’à un niveau de zoom élevé (niveau 20) : intéressant si l’étendue de votre carte couvre un quartier ou votre jardin</div>
</li>
</ul><div>
<p><em>Tous les fonds de carte utilisés par umap, à l’exception des images aériennes de l’IGN, sont réalisées à partir des données OpenStreetMap. Ils sont produits par des associations, des entreprises ou des bénévoles qui les mettent gracieusement à disposition.</em></p>
<p>Remarquez le texte affiché en bas à droite de la carte : il crédite les auteurs du fond de carte, par exemple <code>Map tiles by Stamen Design - Map Data © OpenStreetMap contributors</code>.</p>
</div>
</div>
<h3>3. Choisir les options d’interface</h3>
<div>
<p>Vous pouvez configurer les éléments de la carte mis à disposition des utilisateurs qui consulteront votre carte. Vous pouvez par exemple ajouter une mini-carte de situation ou une barre de légende.</p>
<p><a href="media/691acf47.umap_parameters.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_parameters.png" rel="attachment wp-att-5637"><img src="media/691acf47.umap_parameters.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_parameters.png" alt="umap_parameters" width="38" height="38"></a>Pour cela, ouvrez dans le menu <strong>Éditer les paramètres</strong> l’onglet <strong>Options d’interfaces</strong>. Vous pouvez activer ou désactiver une dizaine d’options dont voici la signification.</p>
<p><a href="media/025d8319.options_interface.jpg" data-original-source="http://framablog.org/wp-content/uploads/2016/03/options_interface.jpg" rel="attachment wp-att-5746"><img src="media/025d8319.options_interface.jpg" data-original-source="http://framablog.org/wp-content/uploads/2016/03/options_interface.jpg" alt="options_interface" width="1246" height="830" srcset="http://framablog.org/wp-content/uploads/2016/03/options_interface-300x200.jpg 300w, http://framablog.org/wp-content/uploads/2016/03/options_interface-768x512.jpg 768w, http://framablog.org/wp-content/uploads/2016/03/options_interface-1024x682.jpg 1024w, http://framablog.org/wp-content/uploads/2016/03/options_interface.jpg 1246w" sizes="(max-width: 1246px) 100vw, 1246px"></a></p>
<p>Quelques remarques :</p>
<ul><li>
<div>si vous cachez le bouton <code>Plus</code>, les utilisateurs de la carte ne pourrant ni la partager ni changer le fond de carte</div>
</li>
<li>
<div>si vous cachez les boutons de zoom <strong>et</strong> désactivez le zoom avec la molette de la souris, les utilisateurs ne pourront ni zoomer ni dézoomer … sauf à découvrir le menu accessible avec un clic droit sur la carte.</div>
</li>
<li>
<div>les boutons de navigation en bas des popups permettent de faire défiler les éléments de la carte</div>
</li>
</ul><div>
<p><em>Lorsque la mini-carte de situation est affichée, l’opération <strong>Changer le fond de carte</strong> modifie le fond de celle-ci. Vous devez désactiver la mini-carte pour changer le fond de la carte principale.</em></p>
</div>
<p><a href="media/451b3c48.umap_share.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_share.png" rel="attachment wp-att-5607"><img src="media/451b3c48.umap_share.png" data-original-source="http://framablog.org/wp-content/uploads/2016/02/umap_share.png" alt="umap_share" width="38" height="38"></a>Notez que ces options – et quelques autres – sont également disponibles en <strong>Options d’export de l’iframe</strong> du menu <strong>Exporter et partager carte</strong>, où elles permettent de contrôler les mêmes options d’interface lorsque la carte est intégrée dans une page Web.</p>
</div>
<h3>4. Copier ou supprimer une carte</h3>
<div>
<p>Tout en bas des <strong>Propriétés de la cartes</strong>, l’onglet <strong>Options avancées</strong> propose deux opérations peu utilisées mais qu’il est bon de connaître :</p>
<ul><li>
<div><strong>Supprimer</strong> supprime la carte du serveur umap, ainsi que les données qui y sont associées !</div>
</li>
<li>
<div><strong>Cloner cette carte</strong> effectue une copie de la carte et de ses données. La nouvelle carte est ajoutée à votre catalogue.</div>
</li>
</ul><p>Dans les deux cas un message vous demande de confirmer l’opération.</p>
</div>
<h2>Faisons le point</h2>
<div>
<p>Ce tutoriel nous mène à la fin du niveau débutant. Vous savez créer, modifier et personnaliser une carte. Vous savez styliser vos marqueurs, lignes et polygones. Enfin vous savez gérer votre catalogue de cartes.</p>
<p>Une fois ces opérations maîtrisées, les tutoriels de niveau intermédiaire vous apprendront à structurer vos cartes avec des calques et enrichir le contenu de vos popups. Vous découvrirez également comment coproduire une carte et créer un diaporama géolocalisé.</p>
<p>Ces tutoriels, en cours de rédaction par Antoine Riche, ne seront pas reproduits sur le Framablog, mais il seront disponibles sur <a href="http://wiki.cartocite.fr/doku.php?id=umap:tutoriel_umap">le wiki de Cartocité</a>.</p>
<p>L’équipe du Framablog tient encore à chaleureusement remercier Antoine pour son travail sur ces tutos et sa sympathie <img src="media/dff4a08c.1f609.png" data-original-source="https://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉"></p>
<h2>Liens utiles :</h2>
<div>
<ul><li><strong>Aller sur <a href="https://framacarte.org/">Framacarte</a></strong></li>
<li><strong>L’<a href="http://wiki.cartocite.fr/doku.php?id=umap:tutoriel_umap">ensemble des tutos uMap</a> d’Antoine Riche</strong></li>
<li><strong><a href="http://cartocite.fr/">Carto’CITÉ</a>, l’agence de Géomatique d’Antoine</strong></li>
<li><strong>Découvrir<a href="http://www.openstreetmap.fr/"> OpenStreetMap</a> et sa communauté francophone</strong></li>
<li><strong>Découvrir <a href="http://wiki.openstreetmap.org/wiki/UMap">Umap</a></strong></li>
</ul></div>
</div>
<p><img src="media/d4130779.f411e4809021b786b7eb0c8956612e76" data-original-source="http://cdn.libravatar.org/avatar/f411e4809021b786b7eb0c8956612e76" alt="Gravatar de Framablog" class="gravatar" /><br/><i>Original post of <a href="http://framablog.org/2016/03/18/comment-modifier-et-personnaliser-sa-framacarte-tutos-umap-44/" title="Visit the source">Framablog</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Framablog : <a href="">Comment consulter une Framacarte&amp;nbsp;? (Tutos uMap 1/4)</a> (16/02/2016)</li><li>Framablog : <a href="">Comment cr&amp;eacute;er sa premi&amp;egrave;re Framacarte&amp;nbsp;? (Tutos uMap 2/4)</a> (04/03/2016)</li><li>Framablog : <a href="">Comment cr&amp;eacute;er une belle Framacarte avec un compte&amp;nbsp;? (Tutos uMap 3/4)</a> (11/03/2016)</li><li>Framablog : <a href="">Framacarte, pour lib&amp;eacute;rer vos maps de Google&amp;nbsp;!</a> (23/12/2015)</li><li>Framablog : <a href="">GitHub et les libristes&amp;nbsp;: un danger et un d&amp;eacute;fi&amp;nbsp;!</a> (28/01/2016)</li></ul></div></p>


feed_id: http://www.elementaryos-fr.org/plank-saut-version-0-11/
title: elementary OS : Plank fait un saut en version 0.11
uri: elementary-OS-Plank-fait-un-saut-en-version-0-11
url: http://www.elementaryos-fr.org/plank-saut-version-0-11/
content:
<p>Plank vient de recevoir une mise à jour et passe maintenant de la version 0.10 à la version 0.11.</p>
<div><h3>Plank 0.11 ne fonctionne pas sur elementary OS freya</h3><p>Cette version n’est pas prévue pour tourner sur elementary OS Freya, ne tentez pas de l’installer : certains packages nécessaires sous Freya seront remplacés en passant par cette version.</p></div>
<p><span></span></p>
<p>Depuis ma machine actuelle, on voit que malgré la mise à jour des paquets, aucune version n’est disponible pour installation</p><pre>nikos@nikos-freya:~$ sudo apt-cache policy plank
plank:
Installé : 0.10.1-0elementary1~ubuntu14.04.2
Candidat : 0.10.1-0elementary1~ubuntu14.04.2
Table de version :
*** 0.10.1-0elementary1~ubuntu14.04.2 0
500 http://ppa.launchpad.net/elementary-os/stable/ubuntu/ trusty/main amd64 Packages
100 /var/lib/dpkg/status</pre><p>
 </p>
<p>Après quelques recherches, ce package peut-être mis à jour sur des versions d’Ubuntu type Xenial voir sur la future version d’elementary OS Loki :</p><pre>nikos@nikos-virtual-OS:~$ sudo apt-cache policy plank
plank:
Installé : 0.11.0-0ubuntu1
Candidat : 0.11.0-1elementary1~ubuntu0.4.1
Table de version :
0.11.0-1elementary1~ubuntu0.4.1 500
500 http://ppa.launchpad.net/elementary-os/daily/ubuntu xenial/main amd64 Packages
*** 0.11.0-0ubuntu1 500
500 http://fr.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages</pre><p>
 </p>
<p>Chaque version dispose de son propre nom de développement, la version 0.10 se nommait « <strong><em>Bartonschmeer</em></strong> » et cette nouvelle release se voit attribuée du nom de code « <strong><em>Eddy</em></strong> » (<em>NDLR : Est-ce que Rico Tzschichholz serait fan de la série animée <a href="https://en.wikipedia.org/wiki/List_of_Ed,_Edd_n_Eddy_characters" target="_blank">Ed, Edd et Eddy </a>?</em>).</p>
<p>Plusieurs fonctionnalités ont fait leur apparition dans cette version 0.11, les plus visibles sont le support des docklets, ce sont des petites applications et fonctionnalités permettant d’étendre les possibilités de Plank, voici ceux actuellement disponibles :</p>
<ul><li>Clippy, pour la gestion du clipboard</li>
<li>Clock, pour afficher l’horloge</li>
<li>Desktop, pour masquer/afficher les différentes fenêtres de votre bureau</li>
<li>Trash, vous permettra d’accéder directement au contenu de votre corbeille.</li>
</ul><p><img src="media/0f5b4859.20160319-plank-docklets-600x303.png" data-original-source="http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-docklets-600x303.png" alt="Plank intégre la gestion des docklets" width="600" height="303" srcset="http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-docklets-300x152.png 300w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-docklets-768x388.png 768w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-docklets-600x303.png 600w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-docklets.png 790w" sizes="(max-width: 600px) 100vw, 600px"></p>
<p> </p>
<p>Le zoom de survol des éléments du dock est maintenant intégré à cette version :</p>
<p><img src="media/543b1d2e.20160319-plank-zoom-600x63.png" data-original-source="http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-zoom-600x63.png" alt="Plank supporte le zoom sur les dockitems" width="600" height="63" srcset="http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-zoom-300x31.png 300w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-zoom-768x80.png 768w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-zoom-1024x107.png 1024w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-zoom-600x63.png 600w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-zoom-1170x123.png 1170w, http://www.elementaryos-fr.org/wp-content/uploads/2016/03/20160319-plank-zoom.png 1176w" sizes="(max-width: 600px) 100vw, 600px"></p>
<p>Cette version comporte les améliorations et corrections suivantes (issues du README) :</p>
<p>0.11.0 « Eddy » (2016-03-12) :</p>
<ul><li>Utilisation d’une transition d’entrée/sortie non linéaire lors d’un état de zoom</li>
<li>Les docklets sont maintenant supportés (Clippy, Horloge, Bureau, Corbeille) (LP: #731915)</li>
<li>La configuration du dock est maintenant sauvgeardée via GSettings (Les thèmes et les fichiers dockitem restent à leurs emplacements) (LP: #994007)</li>
<li>Consolidation de l’API publique (casse certains anciens thèmes et fichiers dockitem, ceux-ci seront convertis si cela est possible)</li>
<li>Ajout d’une option « CascadeHide » pour les thèmes.</li>
<li>Ne prend pas en compte les données d’entrées et les annules si DragItem a pour valeur null (LP: #1517897)</li>
<li>Ajout du support des runtime gtk+ 3.19.1+ (LP: #1523208)</li>
<li>Affiche les bulles d’aide pour les actions de type external-dnd (LP: #1512998)</li>
<li>Mise à jour du format de appdata vers 0.6+</li>
<li>Masque le message « Garder sur le Dock » lorsque LockItems est actif (LP: #1530963)</li>
<li>N’applique pas deux fois window-scale-factor sur foreground-icon-size</li>
<li>Lors de la mise à jour d’un élément présent sur le dock (mise à jour d’un statut de l’application trop rapide par exemple), le rafraichissement du dock se fera moins rapidement (LP: #1514201)</li>
<li>Mise à disposition de l’API pour supporter les clients DBus LauncherEntry</li>
<li>Etend le dock lors d’un drag and drop d’un fichier desktop (LP: #1007058)</li>
<li>Retrait du support de gee-1.0, gee-0.8 est obligatoire</li>
<li>Requiert glib >= 2.40 et gtk+ >= 3.10</li>
<li>Lors de la mise à jour d’une application, le raccourci de celle-ci n’est pas retirée. (LP: #1522917)</li>
<li>Ajout d’un mode « experimental » pour supporter le multi-dock</li>
<li>Suit le paramètrage de l’environnement pour afficher les notifications (LP: #1523266)</li>
<li>La fonction SurfaceCache peut être réduite si le temps de recréation de l’affichage est beaucoup trop important (LP: #1502429)</li>
<li>Ajout du paramétrage TooltipsEnabled (LP: #1553246)</li>
<li>Les périphériques de type Touchpad sont maintenant capable de faire pression sur une barrière aussi.</li>
<li>Quelques modifications sur les thèmes par défaut</li>
<li>Mise à jour des traductions</li>
</ul><p>Le billet <a rel="nofollow" href="http://www.elementaryos-fr.org/plank-saut-version-0-11/">Plank fait un saut en version 0.11</a> a été publié sur le site de la <a rel="nofollow" href="http://www.elementaryos-fr.org/">elementary OS - </a></p>
<p><img src="media/7e20f332.e363a9ed45733fa3aec7c3a0361380c6" data-original-source="http://cdn.libravatar.org/avatar/e363a9ed45733fa3aec7c3a0361380c6" alt="Gravatar de elementary OS" class="gravatar" /><br/><i>Original post of <a href="http://www.elementaryos-fr.org/plank-saut-version-0-11/" title="Visit the source">elementary OS</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Olivier Delort : <a href="">Le Debian Jessie installer en version beta 2</a> (06/10/2014)</li><li>elementary OS : <a href="">Freya en version beta 2 disponible</a> (09/02/2015)</li><li>elementary OS : <a href="">Mettre &amp;agrave; jour le Kernel d&#039;elementary OS en version 3.8 - M&amp;eacute;thode officielle</a> (18/08/2013)</li></ul></div></p>


title: wilfried caruel : Présentation de Viewnior Le logiciel libre
uri: wilfried-caruel-Présentation-de-Viewnior-Le-logiciel-libre
feed_id:
http://wilfriedcaruel.svnet.fr/2016/03/viewnior-le-logiciel-libre/?pk_campaign=feed&amp;pk_kwd=viewnior-le-logiciel-libre

url:
http://wilfriedcaruel.svnet.fr/2016/03/viewnior-le-logiciel-libre/?pk_campaign=feed&amp;pk_kwd=viewnior-le-logiciel-libre

content:
<h1>Présentation Viewnior</h1>
<p>Je vais vous présenter un logiciel pour visualiser vos images sous votre poste sous « Linux ».<br>
Ce logiciel s’appelle « <strong>Viewnior</strong> ».</p>
<p>Ce logiciel est disponible par défaut sous l’environnement de bureau « <strong>XFCE</strong> » mais est utilisable quel que soit votre « DE »,</p>
<p>Ce logiciel permet de visualiser les formats suivant :</p>
<ul><li>JPG</li>
<li>PNG</li>
<li>BMP</li>
<li>etc</li>
</ul><p>Parmi les fonctionnalités du logiciel il y a :</p>
<ul><ul><li>Le zoom</li>
<li>La rotation</li>
<li>Le miroir</li>
<li>Découper</li>
<li>Diaporamas</li>
<li>etc</li>
</ul></ul><p>Le logiciel est disponible sous la licence « <strong>GPLv3</strong> ».</p>
<h2>Les fonctionnalités :</h2>
<ul><li>Fullscreen &amp; Slideshow</li>
<li>Rotate, flip, crop, save, delete images</li>
<li>Animation support</li>
<li>Browse only selected images</li>
<li>Navigation window</li>
<li>Set image as wallpaper</li>
<li>EXIF and IPTC metadata</li>
<li>Simple interface</li>
<li>Configurable mouse action</li>
<li>etc</li>
</ul><p>Cette visionneuse d’image nous a été développée par « <a href="https://twitter.com/siyanpanayotov" target="_blank">Siyan Panayotov</a> ».</p>
<h3>La vidéo</h3>
<p><iframe width="676" height="380" src="https://www.youtube.com/embed/0ZI3U-i_KAs?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h4>Mon avis :</h4>
<p>Je ne  suis pas trop photo, ou image j’utilise plus ce genre de logiciel pour ce blog.<br>
donc j’ai des besoins « Basic » donc ce n’est que mon avis et cela comme pour tous les articles du blog n’appartient qu’à moi.<br><span>J’aime bien ce logiciel</span>, même si je le trouve <em>trop austère</em> (je ne connais pas d’autre logiciel plus intéressant ou plus beau (en opensource).<br>
Je n’utilise rien de spéciale, juste la visionneuse, aucune option (rotation, miroir etc).<br>
Je ne vous le recommanderais pas, je vous informe juste de cette possibilité car si j’aime bien ce logiciel, s’il peut suffire à la plupart des personnes, il doit bien y avoir d’autres logiciels de ce genre.</p>
<p><strong><em><span>Et vous quel logiciel « visionneuse d’image utilisez- vous ?</span></em></strong></p>
<h5>Installation :</h5>
<p><span>Archlinux</span></p>
<pre>su pacman -S viewnior

<span>Fedora</span></pre>
<pre>yum install viewnior</pre>
<h6>Liens</h6>
<p><a href="http://siyanpanayotov.com/project/viewnior/" target="_blank">Site officiel</a><br><a href="http://siyanpanayotov.com/project/viewnior/download/" target="_blank">Téléchargement</a></p>
<img src="https://stats.svnet.fr/piwik.php?idsite=2&amp;rec=1&amp;url=http%3A%2F%2Fwilfriedcaruel.svnet.fr%2F2016%2F03%2Fviewnior-le-logiciel-libre%2F%3Fpk_campaign%3Dfeed%26pk_kwd%3Dviewnior-le-logiciel-libre&amp;action_name=Pr%C3%A9sentation+de+Viewnior+Le+logiciel+libre&amp;urlref=http%3A%2F%2Fwilfriedcaruel.svnet.fr%2Ffeed%2F" width="0" height="0" alt="">
<p><img src="media/ceaa7b52.f8e0e023c0e7ee34d805b620aab6dccb" data-original-source="http://cdn.libravatar.org/avatar/f8e0e023c0e7ee34d805b620aab6dccb" alt="Gravatar de wilfried caruel" class="gravatar" /><br/><i>Original post of <a href="http://wilfriedcaruel.svnet.fr/2016/03/viewnior-le-logiciel-libre/?pk_campaign=feed&amp;pk_kwd=viewnior-le-logiciel-libre" title="Visit the source">wilfried caruel</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>wilfried caruel : <a href="">OwnCloud : Le service web opensource de la semaine</a> (08/04/2014)</li><li>wilfried caruel : <a href="">Mirage : Le logiciel opensource de la semaine</a> (27/05/2014)</li><li>wilfried caruel : <a href="">Atraci : Le logiciel libre de la semaine</a> (09/09/2014)</li><li>Effraie : <a href="">Lenny est stable :)</a> (14/02/2009)</li><li>Effraie : <a href="">FaceBook se fiche du monde</a> (17/02/2009)</li></ul></div></p>


uri: Pierre-Alain-Bandinelli-ownCloud-9-activer-le-cache-APCu-pour-amé
feed_id:
https://blog.bandinelli.net/index.php?post/2016/03/20/oC-9-%3A-activer-APCu-pour-am%C3%A9liorer-%28un-peu%29-les-performances

title:
Pierre-Alain Bandinelli : ownCloud 9 : activer le cache APCu pour améliorer (un peu) les performances

url:
https://blog.bandinelli.net/index.php?post/2016/03/20/oC-9-%3A-activer-APCu-pour-am%C3%A9liorer-%28un-peu%29-les-performances

content:
<p>Pour améliorer les performances d'ownCloud, il est très facile d'activer un memcache facilement en quelques actions seulement :</p>
<ul><li>on installe le paquet php5-apcu avec la commande (sous Debian, sinon il faudra adapter le gestionnaire de paquet et le nom du paquet) :</li>
</ul><pre>
apt install php5-apcu
</pre>
<ul><li>on redémarre Apache :</li>
</ul><pre>
service apache2 restart
</pre>
<ul><li>on ajoute alors cette ligne dans le ficheir de configuration d'ownCloud :</li>
</ul><pre>
'memcache.local' => '\\OC\\Memcache\\APCu',
</pre>


<p>Et le tour est joué !</p>
<p><img src="media/046c52ed.f0dc90a616e4df8216da2ee2b645f9c7" data-original-source="http://cdn.libravatar.org/avatar/f0dc90a616e4df8216da2ee2b645f9c7" alt="Gravatar de Pierre-Alain Bandinelli" class="gravatar" /><br/><i>Original post of <a href="https://blog.bandinelli.net/index.php?post/2016/03/20/oC-9-%3A-activer-APCu-pour-am%C3%A9liorer-%28un-peu%29-les-performances" title="Visit the source">Pierre-Alain Bandinelli</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


title: Pierre-Alain Bandinelli : ownCloud 8.2.2 à ownCloud 9.0 : attention aux applications tierces
uri: Pierre-Alain-Bandinelli-ownCloud-8-2-2-à-ownCloud-9-0-attention-a
feed_id:
https://blog.bandinelli.net/index.php?post/2016/03/20/D-ownCloud-8.2.2-%C3%A0-ownCloud-9.0-%3A-attention-aux-applications-tierces

url:
https://blog.bandinelli.net/index.php?post/2016/03/20/D-ownCloud-8.2.2-%C3%A0-ownCloud-9.0-%3A-attention-aux-applications-tierces

content:
<p>La version 9.0 d'ownCloud a été annoncée il y a quelques semaines.</p>


<h3>La base</h3>

<p>La migration de 8.2.2 vers 9.0 réalisée de manière manuelle se passe très bien pour les applications de base :</p>
<ul><li>on fait une sauvegarde de la base de données ownCloud et de l'applicatif 8.2.2</li>
<li>on télécharge la dernière version et on la déploie sur l'hébergement</li>
<li>on recopie le fichier config.php de l'ancienne version vers la nouvelle version</li>
<li>on lance la commande suivante pour mettre à jour la base de données :</li>
</ul><pre>
sudo -u www-data php occ upgrade
</pre>


<p>Un seul comportement erroné sur mes installations : le message d'erreur "There were problems with the code integrity check. More information…" s'affiche à cause d'un fichier .htaccess modifié. Il semble que la version 9.0.1 qui doit arriver bientôt corrige ce comportement toutefois non bloquant !</p>


<h3>Les applications tierces</h3>

<p>En revanche, pour les applications tierces, c'est un peu plus compliqué !</p>


<p>L'application Passwords fonctionne bien à condition d'en télécharger la dernière version : <a href="https://apps.owncloud.com/content/show.php/Passwords?content=170480">https://apps.owncloud.com/content/show.php/Passwords?content=170480</a>.</p>


<p>Pour Rainloop, il est nécessaire de modifier le fichier owncloud/apps/rainloop/lib/RainLoopHelper.php comme décrit ici :
<a href="https://github.com/RainLoop/rainloop-webmail/issues/975">https://github.com/RainLoop/rainloop-webmail/issues/975</a>.</p>


<p>Calendar-plus, Contacts-plus et Tasks-plus ne sont pour le moment pas données pour fonctionner su oC 9. Et il est probable qu'elles ne soient jamais portées pour fonctionner sur oC 9 quand on lit les commentaires <a href="https://apps.owncloud.com/content/show.php/Calendar+Plus?content=170560">ici</a>... méfiance donc !</p>
<p><img src="media/046c52ed.f0dc90a616e4df8216da2ee2b645f9c7" data-original-source="http://cdn.libravatar.org/avatar/f0dc90a616e4df8216da2ee2b645f9c7" alt="Gravatar de Pierre-Alain Bandinelli" class="gravatar" /><br/><i>Original post of <a href="https://blog.bandinelli.net/index.php?post/2016/03/20/D-ownCloud-8.2.2-%C3%A0-ownCloud-9.0-%3A-attention-aux-applications-tierces" title="Visit the source">Pierre-Alain Bandinelli</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: https://angristan.fr/installer-facilement-serveur-openvpn-debian-ubuntu-centos/
title: Angristan : Installer facilement un serveur OpenVPN sur Debian, Ubuntu et CentOS
uri: Angristan-Installer-facilement-un-serveur-OpenVPN-sur-Debian-Ubuntu
url: https://angristan.fr/installer-facilement-serveur-openvpn-debian-ubuntu-centos/
content:
<p><img width="750" height="410" src="media/1f6d12f2.openvpn_install.jpg" data-original-source="https://angristan.fr/wp-content/uploads/2016/03/openvpn_install.jpg" alt="openvpn_install" srcset="https://angristan.fr/wp-content/uploads/2016/03/openvpn_install-300x164.jpg 300w, https://angristan.fr/wp-content/uploads/2016/03/openvpn_install-648x354.jpg 648w, https://angristan.fr/wp-content/uploads/2016/03/openvpn_install.jpg 750w" sizes="(max-width: 750px) 100vw, 750px"></p><p>Plein de tutoriels sur le web expliquent comment installer OpenVPN sur votre serveur. Mais pourquoi ne pas se faciliter la vie et laisser un script le faire à votre place ? :D</p>
<p>Il y a une petite perle sur GitHub qui permet cela : <a href="https://github.com/Nyr/openvpn-install" target="_blank" rel="nofollow">OpenVPN-install</a>, développé par Nyr. C'est un script qui installe automatiquement un serveur OpenVPN et qui génère la configuration client. Il a quelques fonctionnalités sympathiques comme le choix du port ou des DNS et la détection du NAT.</p>
<p>Seulement, je trouvais qu'il lui manquait quelques fonctionnalités et qu'il était trop faible en chiffrement... Du coup j'ai fait <a href="https://github.com/Angristan/OpenVPN-install" target="_blank">un fork</a> ! C'est à dire que j'ai pris le code de Nyr, et je l'ai modifié à ma sauce. (Les 2 sont sous licence MIT)<span></span></p>

<h2>Features</h2>
<ul><li>Logs désactivés</li>
	<li>Meilleur chiffrement (voir ci-dessous + les 2 modes)</li>
	<li>TLS 1.2 uniquement au lieu de TLS 1.0</li>
	<li>AES-256-CBC et SHA-512 pour <a href="https://fr.wikipedia.org/wiki/Keyed-Hash_Message_Authentication_Code">HMAC</a> (au lieu de BF-128-CBC et SHA1)</li>
	<li>Les serveurs DNS de <a href="http://www.fdn.fr/actions/dns/">FDN</a></li>
	<li>Les serveurs DNS <a href="https://www.opennicproject.org/">OpenNIC</a> les plus proches de votre serveur (<a href="https://github.com/Angristan/OpenNIC-cli" target="_blank">comme dans ce script</a>)</li>
	<li>La dernière version de OpenVPN (2.3.10) grâce à <a href="http://fedoraproject.org/wiki/EPEL">EPEL</a> pour CentOS et <a href="https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos">swupdate.openvpn.net</a> pour Debian et Ubuntu</li>
</ul><p>Pour faire court, j'ai amélioré les paramètres de chiffrement. Le script original utilise les paramètres par défaut de OpenVPN, et c'est pas vraiment ça...</p>
<p>Il a y a 2 variantes du script que j'appelle "fast" et "slow". Il y en a une qui a un chiffrement renforcé, et qui peut donc amener à avoir un débit plus lent, mais c'est vraiment relatif à votre serveur/client/connexion. :)</p>
<p>Ce que j'ai mis plus haut concernant TLS, HMAC, etc est inclus dans les 2 variantes.</p>

<h3>Slow (chiffrement hardcore)</h3>
<ul><li>Certificat signé avec une clé privée RSA de 4096 bits (2048 par défaut)</li>
	<li>Clé Diffie-Hellman de 4096 bits (2048 par défaut)</li>
	<li>AES-GCM 256 bits pour le tunnel chiffré (Blowfish 128 bits par défaut)</li>
	<li>Certificat signé avec SHA-384 (SHA1 par défaut)</li>
</ul><h3>Fast (moins hardcore)</h3>
<p>Note : c'est moins hardcore mais ça reste tout à fait sécurisé.</p>

<ul><li>Certificat signé avec une clé privée RSA de 2048 bits (défaut)</li>
	<li>Clé Diffie-Hellman de 2048 bits (défaut)</li>
	<li>AES-GCM 128 bits pour le tunnel chiffré (Blowfish 128 bits par défaut)</li>
	<li>Certificat signé avec SHA-256 (SHA1 par défaut)</li>
</ul><p>Si vous êtes parano ou que vous utilisez votre VPN dans un endroit susceptible de surveiller la connexion, je vous conseille "slow", bien que le chiffrement utilisé dans "fast" est théoriquement incassable également.</p>
<p>Voici ce que je compte rajouter quand j'aurais le temps :</p>

<ul><li>Possibilité de choisir si on veut un mot de passe pour le client</li>
	<li>Possibilité d'installer "fast" et "slow" sur le même serveur</li>
	<li>Compatibilité IPv6</li>
</ul><h2>Compatibilité</h2>
<p>Le script est 100% compatible avec les distributions suivantes :</p>

<ul><li>Debian 7</li>
	<li>Debian 8</li>
	<li>Ubuntu 12.04 LTS</li>
	<li>Ubuntu 14.04 LTS</li>
	<li>Ubuntu 15.10</li>
	<li>CentOS 6</li>
	<li>CentOS 7</li>
</ul><h2>Installation</h2>
<p>Il suffit de télécharger le script et de l'exécuter :</p>

<pre><code>wget --no-check-certificate https://raw.githubusercontent.com/Angristan/OpenVPN-install-nyr/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh
</code></pre>
<p>Lors de la première exécution, il va installer le serveur et générer un client. Vous pouvez le relancer autant de fois que vous le voulez avec la commande suivante :</p>

<pre><code>./openvpn-install.sh</code></pre>
<p>Vous pourrez alors ajouter des clients, supprimer des clients ou encore désinstaller complètement OpenVPN.</p>

<h2>Alors, heureux ?</h2>
<p>Simple comme bonjour !</p>
<p>Vous pouvez voir tous les changements de mon fork par rapport au script original <a href="https://github.com/Nyr/openvpn-install/compare/master...Angristan:master#files_bucket" target="_blank" rel="nofollow">ici</a>.</p>
<p>N'hésitez pas à me faire parvenir vos retours, suggestions, ou éventuellement rapports de bug ! :)</p><p>L'article <a rel="nofollow" href="https://angristan.fr/installer-facilement-serveur-openvpn-debian-ubuntu-centos/">Installer facilement un serveur OpenVPN sur Debian, Ubuntu et CentOS</a> a été publié sur <a rel="nofollow" href="https://angristan.fr/">Angristan</a></p>
<p><img src="media/5c166f03.2872b7d47bfcdee98601f055441cbda2" data-original-source="http://cdn.libravatar.org/avatar/2872b7d47bfcdee98601f055441cbda2" alt="Gravatar de Angristan" class="gravatar" /><br/><i>Original post of <a href="https://angristan.fr/installer-facilement-serveur-openvpn-debian-ubuntu-centos/" title="Visit the source">Angristan</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Angristan : <a href="">Changer le fuseau horaire et mettre &agrave; l&rsquo;heure un serveur sous Debian</a> (28/04/2015)</li><li>Thomas Tourlourat : <a href="">CentOS &ndash; Installer le module h264 streaming pour Lighttpd</a> (12/06/2012)</li><li>Angristan : <a href="">Changer le fuseau horaire et mettre &agrave; l&rsquo;heure un serveur sous Debian</a> (29/01/2015)</li><li>Angristan : <a href="">Compiler et installer Nginx avec le module PageSpeed pour Debian</a> (23/08/2015)</li><li>Angristan : <a href="">Installer HHVM avec fallback PHP-FPM sous Debian 8 et Nginx</a> (17/10/2015)</li></ul></div></p>


title: Journal du hacker : Liens intéressants Journal du hacker semaine #11
uri: Journal-du-hacker-Liens-intéressants-Journal-du-hacker-semaine-11
feed_id:
https://blog.journalduhacker.net/index.php?article24/liens-interessants-journal-du-hacker-semaine-11

url:
https://blog.journalduhacker.net/index.php?article24/liens-interessants-journal-du-hacker-semaine-11

content:
<p>Pour la 11ème semaine de 2016, voici 5 liens intéressants que vous avez peut-être ratés, relayés par <a href="https://www.journalduhacker.net/">le Journal du hacker</a>, votre source d’informations pour le Logiciel Libre francophone !</p>

<a href="https://www.journalduhacker.net/"><img src="media/01f45034.logo-journal-du-hacker.png" data-original-source="https://blog.journalduhacker.net/data/medias/logo-journal-du-hacker.png"></a>

<ul><li><a href="https://www.journalduhacker.net/s/op2piz/conteneurs_tout_savoir_sur_docker_co">Conteneurs : tout savoir sur Docker &amp; Co</a></li>
<li><a href="https://www.journalduhacker.net/s/il4xsl/faire_cohabiter_openvpn_et_https_sur_le_port_443_en_ipv4_et_ipv6_avec_sslh">Faire cohabiter OpenVPN et HTTPS sur le port 443 en IPV4 et IPV6 avec SSLH</a></li>
<li><a href="https://www.journalduhacker.net/s/vdh6bo/top_8_des_bases_de_donn_es_gratuites_d_images_libres_de_droit">Top 8 des bases de données gratuites d'images libres de droit</a></li>
<li><a href="https://www.journalduhacker.net/s/5jwhxg/tox_une_alternative_libre_skype_est_bien_mais_reste_am_liorer">Tox, une alternative libre à Skype, est bien mais reste à améliorer</a></li>
<li><a href="https://www.journalduhacker.net/s/mvsoin/la_mouvance_statique">La mouvance statique</a></li>
</ul><p>Pour ne plus rater aucun article de la communauté francophone, voici :</p>

<ul><li><a href="https://www.journalduhacker.net/rss">Le flux RSS du Journal du hacker</a></li>
<li><a href="https://twitter.com/journalduhacker">Le compte Twitter du Journal du hacker</a></li>
<li><a href="https://framasphere.org/u/journalduhacker">Le compte Diaspora* du Journal du hacker</a></li>
</ul><p>De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !</p>

<p>Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. <a href="https://www.journalduhacker.net/invitations/request">Rejoignez-nous</a> pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !</p>

<p><strong>Et vous ? Qu’avez-vous pensé de ces articles ?</strong> N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)</p>
<p><img src="media/ffe97a17.7916ee3cafa0bc3e9583bedad876dcd5" data-original-source="http://cdn.libravatar.org/avatar/7916ee3cafa0bc3e9583bedad876dcd5" alt="Gravatar de Journal du hacker" class="gravatar" /><br/><i>Original post of <a href="https://blog.journalduhacker.net/index.php?article24/liens-interessants-journal-du-hacker-semaine-11" title="Visit the source">Journal du hacker</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://liens.planet-libre.org/?do=weekly&amp;week=20160321
title: Planet Libre : Brèves du Planet Libre - lundi 21, mars 2016
uri: Planet-Libre-Brèves-du-Planet-Libre-lundi-21-mars-2016
url: http://liens.planet-libre.org/?do=weekly&amp;week=20160321
content:
<h3><a href="http://www.april.org/le-tribunal-administratif-valide-lavis-de-la-cada-les-codes-sources-sont-des-documents-administratif">Le tribunal administratif valide l'avis de la CADA, les codes sources sont des documents administratifs communicables - April</a></h3>
	<small>
		
			<div>
			<span>April</span> <span>droit</span> <span>administration</span> <span>institution</span> <span>libre</span> 
			</div>
		
		
		
	</small><br><br>
	antistress : "Le tribunal administratif de Paris a confirmé que le code source d'un logiciel est bien un document administratif communicable (copie du jugement). Les juges profitent de l'occasion pour donner une leçon de droit au ministère des Finances confortant ainsi notre demande de publication de la note juridique concernant une prétendue incompatibilité juridique au sujet des amendements « priorité au logiciel libre »."
	<br><br><hr><h3><a href="http://www.silicon.fr/utilisateurs-du-navigateur-tor-mefiez-vous-des-souris-141639.html">Utilisateurs du navigateur Tor, méfiez-vous des souris ! - silicon</a></h3>
	<small>
		
			<div>
			<span>pistage</span> <span>Tor</span> 
			</div>
		
		
		
	</small><br><br>
	antistress : "Un chercheur en sécurité a élaboré des techniques basées sur le Fingerprinting pour tirer des informations du navigateur Tor."<br>
(via le Journal du Hacker)
	<br><br><hr><h3><a href="https://www.april.org/lapril-demande-la-publication-de-la-note-de-la-daj-de-bercy-sur-la-priorite-au-logiciel-libre">L'April demande la publication de la note de la DAJ de Bercy sur la priorité au logiciel libre - April</a></h3>
	<small>
		
			<div>
			<span>April</span> <span>droit</span> <span>libre</span> <span>parlement</span> <span>institution</span> 
			</div>
		
		
		
	</small><br><br>
	antistress : "L'examen du projet de loi « pour une République numérique » débutera prochainement au Sénat (à partir du 6 avril en commission des lois et du 26 avril en séance publique). Sur la question essentielle de la priorité au logiciel libre dans le secteur public, le gouvernement refuse toujours d'agir dans la transparence pourtant nécessaire à tout débat démocratique. L'April demande solennellement la publication de la note juridique de la Direction des affaires juridiques (DAJ) du Ministère des Finances et des comptes publics concernant une prétendue incompatibilité juridique au sujet des amendements « priorité au logiciel libre ». L'April encourage par ailleurs les parlementaires à soutenir sa demande."<br>
(via le Journal du Hacker)
	<br><br><hr><h3><a href="http://www.usine-digitale.fr/article/objets-connectes-pourquoi-il-faut-choisir-l-open-source.N383102">Libérez vos objets connectés avec l'open source et l'open hardware - L'usine digitale</a></h3>
	<small>
		
			<div>
			<span>IoT</span> <span>opensource</span> <span>libre</span> <span>collaboratif</span> 
			</div>
		
		
		
	</small><br><br>
	antistress : "L’open source n’est pas nouveau dans l’embarqué, mais il prend son essor. Conséquence de l’apparition de nouveaux usages et de contraintes, objets connectés en tête. Preuve que ses avantages sont bien réels." Un dossier (article, interview...) sur le sujet.<br>
(via la Revue de presse de l'April)
	<br><br><hr>
<p><img src="media/39e36007.754dc5064d6c809129010f98e0616725" data-original-source="http://cdn.libravatar.org/avatar/754dc5064d6c809129010f98e0616725" alt="Gravatar de Planet Libre" class="gravatar" /><br/><i>Original post of <a href="http://liens.planet-libre.org/?do=weekly&amp;week=20160321" title="Visit the source">Planet Libre</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 02, novembre 2015</a> (02/11/2015)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 25, janvier 2016</a> (25/01/2016)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - Monday 03, June 2013</a> (03/06/2013)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - lundi 08, juillet 2013</a> (08/07/2013)</li><li>Planet Libre : <a href="">Br&egrave;ves du Planet Libre - Monday 23, September 2013</a> (23/09/2013)</li></ul></div></p>


feed_id: http://cyrille-borne.com/article2303/bozon-2-4
title: Cyrille BORNE : BoZon 2.4
uri: Cyrille-BORNE-BoZon-2-4
url: http://cyrille-borne.com/article2303/bozon-2-4
content:
<p>La version 2.4 de <a href="https://github.com/broncowdd/BoZoN">BoZon</a> vient de paraître, elle apporte son lot de nouveautés notamment dans la gestion des profils d'administration mais aussi de corrections, beaucoup de corrections. J'ai tracké une partie des bugs de façon simple en fait, j'ai un BoZon composé de 30.000 fichiers que j'utilise de façon quotidienne, que je commence à partager avec les membres de ma famille, si bien que le tracking que je livre, je le qualifierai de naturel, sans chercher à planter le logiciel. De nombreuses optimisations ont été réalisées pour gérer cette masse, on arrive à des temps de 5 secondes maxi pour de très gros répertoires pour un serveur type E5200 avec 4 Go de RAM. Dans ces fameuses optimisations, la possibilité d'afficher les fichiers, cent par cent par exemple, Bronco a énormément travaillé sur les performances d'affichage.</p>

<p>Cette version 2.4 que nous qualifions de "stable" comporte nécessairement des bugs, comme toute application, comme toute application qui de plus grossit. Plus nous seront nombreux à l'utiliser "naturellement", plus on arrivera à quelque chose de solide, je rassure tout le monde, <strong>le logiciel est stable, testé sur un très grande quantité de fichiers, dans des conditions réelles, tout marche bien. </strong></p>

<p>A l'heure actuelle BoZon est une solution légère qui permet de remplacer une partie d'Owncloud pour le stockage de fichiers, qui permet de streamer ses mp3 avec un player audio, d'afficher des galeries photos, de gérer des profils d'utilisateurs, de nombreuses possibilités supplémentaires que vous découvrirez à l'installation du logiciel, toujours aussi simple, un drag and drop dans un ftp. </p>

<p>Il s'agira de ma dernière nouvelle sur BoZon, ici en tout cas, nous avons désormais le site officiel <a href="http://bozon.pw/">bozon.pw</a></p>

<p>J'ai commencé à documenter un peu, à ma façon bien sûr, vous reconnaîtrez le style, le site, une base pluxml sera simple, je pense que Bronco montera le thème, la partie blog sera réservée aux annonces, astuces, anecdotes, nous sommes tous les deux blogueurs et joueurs à la base. </p>

<p>N'attendez pas de voir arriver des tonnes d'évolutions pour la suite, l'idée ici c'est de stabiliser à tous les niveaux. Un logiciel propre, peu de bugs, un site qui tient la route, monter une petite communauté, poser des bases solides pour un logiciel qui mine de rien permet de dégrossir son cloud de façon simple sans avoir besoin de posséder un serveur dédié. </p>
<p><img src="media/65327678.20faece4cc1e02ca974f1d3d88e9650d" data-original-source="http://cdn.libravatar.org/avatar/20faece4cc1e02ca974f1d3d88e9650d" alt="Gravatar de Cyrille BORNE" class="gravatar" /><br/><i>Original post of <a href="http://cyrille-borne.com/article2303/bozon-2-4" title="Visit the source">Cyrille BORNE</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>


feed_id: http://feedproxy.google.com/~r/QuestCeQuonSeFaitCh/~3/B8QTpA96gS8/
title: Littlewing : Intégrer dans docker une application ANGULAR
uri: Littlewing-Intégrer-dans-docker-une-application-ANGULAR
url: http://feedproxy.google.com/~r/QuestCeQuonSeFaitCh/~3/B8QTpA96gS8/
content:
<p><a href="http://blog.touret.info/wp-content/uploads/docker.png?utm_source=rss&amp;utm_medium=rss" rel="attachment wp-att-726"><img src="http://blog.touret.info/wp-content/uploads/docker.png?utm_source=rss&amp;utm_medium=rss" alt="docker" width="291" height="70"></a><a href="http://blog.touret.info/wp-content/uploads/angularjs.png?utm_source=rss&amp;utm_medium=rss" rel="attachment wp-att-786"><img src="http://blog.touret.info/wp-content/uploads/angularjs.png?utm_source=rss&amp;utm_medium=rss" alt="angularjs" width="160" height="160" srcset="http://blog.touret.info/wp-content/uploads/angularjs-150x150.png?utm_source=rss&amp;utm_medium=rss 150w, http://blog.touret.info/wp-content/uploads/angularjs-60x60.png?utm_source=rss&amp;utm_medium=rss 60w, http://blog.touret.info/wp-content/uploads/angularjs.png?utm_source=rss&amp;utm_medium=rss 160w" sizes="(max-width: 160px) 100vw, 160px"></a></p>
<p>Dans le cadre d’un POC j’ai eu à « <a href="https://www.docker.com/?utm_source=rss&amp;utm_medium=rss">dockeriser</a> » une application <a href="https://angular.io/?utm_source=rss&amp;utm_medium=rss">ANGULARJS</a>. Cette dernière utilise les briques logicielles suivantes :</p>
<ul><li><a href="https://angular.io/?utm_source=rss&amp;utm_medium=rss">Angular JS</a></li>
<li><a href="https://github.com/typicode/json-server?utm_source=rss&amp;utm_medium=rss">Json-server</a> qui se abse sur <a href="http://www.nodejs.org/?utm_source=rss&amp;utm_medium=rss">nodeJS</a> pour bouchonner mes APIS REST.</li>
</ul><p>J’ai donc utilisé docker-compose pour orchestrer le tout. Voici la configuration</p><pre>front:
  build: ./front
  ports: 
    - "80:80"
back:
  image: clue/json-server
  ports:
    - "3000:80"
  volumes:
    -  $PWD/back/config:/data</pre><p></p>
<h2>Définition du front</h2>
<p>Dans le répertoire front, j’ai ajouté les sources (JAVASCRIPT, HTML, CSS,…). Ca donne</p><pre>FROM coreos/apache
MAINTAINER ....
EXPOSE 80
COPY resources/monsite /var/www

CMD ["/usr/sbin/apache2ctl","-D","FOREGROUND"]</pre><p></p>
<h2>Définition du back</h2>
<p>Pour le back, vu que c’est du mock, je ne me suis pas trop embêté. J’ai donc utilisé json-server et ajouté dans le répertoire config le fichier json correspondant aux bouchons.</p>
<h2>Exécution</h2>
<h3>Construction du projet</h3>
<p>A la racine</p><pre>$ docker-compose build</pre><p></p>
<h3>Exécution</h3>
<p></p><pre>$docker-compose up</pre><p></p>
<h2>Conclusion</h2>
<p>Et voila vous avez un site basé sur angular avec utilisation d’une API REST utilisable . Il manque encore certaines briques indispensables telles que ha_proxy par ex, mais ça me suffit pour une démo.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<img src="http://feeds.feedburner.com/~r/QuestCeQuonSeFaitCh/~4/B8QTpA96gS8" height="1" width="1" alt="">
<p><img src="media/1f2fb0ec.e9cfa2c2c1ea2abd510c6053457286f0" data-original-source="http://cdn.libravatar.org/avatar/e9cfa2c2c1ea2abd510c6053457286f0" alt="Gravatar de Littlewing" class="gravatar" /><br/><i>Original post of <a href="http://feedproxy.google.com/~r/QuestCeQuonSeFaitCh/~3/B8QTpA96gS8/" title="Visit the source">Littlewing</a>.Votez pour ce billet sur <a href="http://www.planet-libre.org" title="Aller sur le planet">Planet Libre</a>.</i></p>
<p><div class="similar-block"><h3>Articles similaires</h3><ul><li>Littlewing : <a href="">Docker compose</a> (27/11/2015)</li><li>Littlewing : <a href="">Comment customiser une image Docker</a> (09/09/2015)</li><li>Littlewing : <a href="">Elasticsearch avec Docker</a> (09/10/2015)</li></ul></div></p>


