<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://mjules.littleboboy.net/blog/feed.xml" rel="self" type="application/atom+xml" /><link href="http://mjules.littleboboy.net/blog/" rel="alternate" type="text/html" hreflang="fr" /><updated>2026-03-22T16:53:15+01:00</updated><id>http://mjules.littleboboy.net/blog/feed.xml</id><title type="html">La vie rêvée de Jules</title><author><name>Mjules</name></author><entry><title type="html">Pense-bête, interprétation séquences ANSI dans apt</title><link href="http://mjules.littleboboy.net/blog/2026/03/22/sequence-couleur-apt-ssh.html" rel="alternate" type="text/html" title="Pense-bête, interprétation séquences ANSI dans apt" /><published>2026-03-22T00:00:00+01:00</published><updated>2026-03-22T00:00:00+01:00</updated><id>http://mjules.littleboboy.net/blog/2026/03/22/sequence-couleur-apt-ssh</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2026/03/22/sequence-couleur-apt-ssh.html"><![CDATA[<p>Depuis la mise à jour vers Debian 13 (Trixie), apt m’affiche des caractères bizarres rendant la sortie
difficilement lisible :</p>

<blockquote>
  <p><span style="font-family: Monospace;font-style:normal;color:black">ESC[32mwims-ltiESC[0m/stable 0.4.4.1-17 all</span></p>
</blockquote>

<p>Il s’agit en fait de séquences d’échappement ANSI pour colorier le texte. Pour qu’elles soient interprétées
correctement, le plus simple est de changer l’outil de pagination (<em>pager</em>) avec les bonnes
options :</p>

<p><code class="language-plaintext highlighter-rouge">export APT_PAGER="less --RAW-CONTROL-CHARS"</code> (ou less -R)</p>

<p>Ce qui donne le résultat suivant :</p>

<blockquote>
  <p><span style="font-family: Monospace;font-style:normal;color:black"><span style="color:green">wims-lti</span>/stable 0.4.4.1-17 all</span></p>
</blockquote>

<p>Plus qu’à rajouter ça dans bashrc ou le fichier de conf de votre shell.</p>]]></content><author><name>Mjules</name></author><category term="debian" /><category term="trixie" /><category term="apt" /><category term="ssh" /><category term="affichage" /><summary type="html"><![CDATA[Depuis la mise à jour vers Debian 13 (Trixie), apt m’affiche des caractères bizarres rendant la sortie difficilement lisible :]]></summary></entry><entry><title type="html">Pense-bête, autohébergement de bentopdf (bis)</title><link href="http://mjules.littleboboy.net/blog/2026/02/08/autohebergement-bentopdf-bis.html" rel="alternate" type="text/html" title="Pense-bête, autohébergement de bentopdf (bis)" /><published>2026-02-08T00:00:00+01:00</published><updated>2026-02-08T00:00:00+01:00</updated><id>http://mjules.littleboboy.net/blog/2026/02/08/autohebergement-bentopdf-bis</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2026/02/08/autohebergement-bentopdf-bis.html"><![CDATA[<p>Suite du <a href="/blog/2025/12/21/autohebergement-bentopdf.html">précédent billet sur le sujet</a></p>

<p>Rappel : <strong><a href="https://github.com/alam00000/bentopdf">Bentopdf</a></strong> est un ensemble d’outils en ligne pour manipuler des fichiers PDF qui a le mérite de 
fonctionner totalement localement (c’est le navigateur qui éxécute les opérations sur les fichiers).</p>

<p>Comme elles sont un peu éparpillées sur le wiki officiel, qui est biaisé en faveur des conteneurs (docker surtout),
voilà des instructions pour héberger statiquement (donc sans docker/podman), dans un sous dossier, en mode simple,
et sans appeler un CDN pour les outils en WASM (pymupdf, ghostcript, coherentpdf) :</p>

<p>Toutes les commandes suivantes sont à réaliser dans un shell.</p>

<p>En premier lieu, il faut cloner le dépôt et installer les dépendances npm (qui devra être installé au préalable) :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
npm install
</code></pre></div></div>
<p>Ensuite, on va télécharger les 3 outils :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm pack @bentopdf/pymupdf-wasm@0.11.14
npm pack @bentopdf/gs-wasm
npm pack coherentpdf
</code></pre></div></div>
<p>On obtient 3 fichier .tgz dont on se servira plus tard.</p>

<p>Maintenant, on configure et génère les fichiers. 
Activation du <a href="https://github.com/alam00000/bentopdf/?tab=readme-ov-file#-simple-mode-for-internal-use">mode simple</a> :</p>

<p><code class="language-plaintext highlighter-rouge">export SIMPLE_MODE=true</code></p>

<p>Le site est dans un sous dossier (ici bento) :</p>

<p><code class="language-plaintext highlighter-rouge">export BASE_URL=/bento/</code></p>

<p>Où trouver les outils en WASM (le chemin est arbitraire, vous mettez ce que vous voulez du moment que c’est
accessible) :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export VITE_WASM_PYMUPDF_URL=https://mon_site.com/bento/wasm/pymupdf/
export VITE_WASM_GS_URL=https://mon_site.com/bento/wasm/gs/
export VITE_WASM_CPDF_URL=https://mon_site.com/bento/wasm/cpdf/
</code></pre></div></div>
<p>et maintenant on génère les fichiers :</p>

<p><code class="language-plaintext highlighter-rouge">npm run build</code></p>

<p>Enfin, on créé les dossiers pour les outils et on copie tout ça (les noms des fichiers sont à adapter 
à ce que vous avez) :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkdir -p dist/wasm/pymupdf dist/wasm/gs dist/wasm/cpdf
tar xf bentopdf-pymupdf-wasm-0.11.14.tgz -C dist/wasm/pymupdf/ --strip-components=1
tar xf bentopdf-gs-wasm-0.1.1.tgz -C dist/wasm/gs/ --strip-components=1
tar xf coherentpdf-2.5.5.tgz -C dist/wasm/cpdf/ --strip-components=1
</code></pre></div></div>

<p>Il n’y a plus qu’à faire servir le contenu du dossier <code class="language-plaintext highlighter-rouge">dist</code> (généralement en le plaçant
dans quelques chose du genre <code class="language-plaintext highlighter-rouge">/var/www/mon_site.com/bento</code> )</p>]]></content><author><name>Mjules</name></author><category term="pdf" /><category term="bentopdf" /><category term="selfhosting" /><category term="autohébergement" /><summary type="html"><![CDATA[Suite du précédent billet sur le sujet]]></summary></entry><entry><title type="html">Pense-bête, autohébergement de bentopdf</title><link href="http://mjules.littleboboy.net/blog/2025/12/21/autohebergement-bentopdf.html" rel="alternate" type="text/html" title="Pense-bête, autohébergement de bentopdf" /><published>2025-12-21T00:00:00+01:00</published><updated>2025-12-21T00:00:00+01:00</updated><id>http://mjules.littleboboy.net/blog/2025/12/21/autohebergement-bentopdf</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/12/21/autohebergement-bentopdf.html"><![CDATA[<p><strong><a href="https://github.com/alam00000/bentopdf">Bentopdf</a></strong> est un ensemble d’outils en ligne pour manipuler des fichiers PDF qui a le mérite de 
fonctionner totalement localement (c’est le navigateur qui éxécute les opérations sur les fichiers).</p>

<p>Il n’est pas très compliqué à autohéberger puisqu’il suffit de dézipper les fichiers dans un dossier 
et de pointer le serveur web vers ce dossier.</p>

<p>Quelques subtilités, si vous voulez héberger dans un sous-dossier, il faut reconstruire les fichiers 
à partir des sources car par défaut ils s’attendent à être à la racine (BASE_URL=/chemin/ npm run build)</p>

<p>Idem pour le mode simple qui permet de n’afficher que les outils (SIMPLE_MODE=true).</p>

<p>Un petit bug de la version actuelle (1.11.2), le chemin vers le favicon n’est pas réécrit et il résulte 
en une erreur 404. vous pouvez éditer les fichiers assets/main-XXX.js et assets/simple-mode-footer-XXX.js
pour corriger ça.
cf : <a href="https://github.com/alam00000/bentopdf/issues/296">https://github.com/alam00000/bentopdf/issues/296</a></p>]]></content><author><name>Mjules</name></author><category term="pdf" /><category term="bentopdf" /><category term="selfhosting" /><category term="autohébergement" /><summary type="html"><![CDATA[Bentopdf est un ensemble d’outils en ligne pour manipuler des fichiers PDF qui a le mérite de fonctionner totalement localement (c’est le navigateur qui éxécute les opérations sur les fichiers).]]></summary></entry><entry><title type="html">Pense-bête, montage automatique d’un partage samba/cifs</title><link href="http://mjules.littleboboy.net/blog/2025/11/07/pense-bete-montage-automatique-partage-samba.html" rel="alternate" type="text/html" title="Pense-bête, montage automatique d’un partage samba/cifs" /><published>2025-11-07T00:00:00+01:00</published><updated>2025-11-07T00:00:00+01:00</updated><id>http://mjules.littleboboy.net/blog/2025/11/07/pense-bete-montage-automatique-partage-samba</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/11/07/pense-bete-montage-automatique-partage-samba.html"><![CDATA[<p>Le paquet cifs-utils est nécessaire pour pouvoir utiliser un fichier d’identifiants
dans un montage cifs/samba. Sans ça, vous aurez droit à une erreur 13, permission denied sans autre 
information. Il n’est pas installé par défaut ou automatiquement sous Debian.</p>

<p>Commande directe :</p>

<p><code class="language-plaintext highlighter-rouge">mount --verbose -t cifs "//192.168.1.10/freedombox" /mnt/nas_backup -o credentials=/etc/samba/credentials/nas_backup,iocharset=utf8</code></p>

<p>Ligne /etc/fstab :</p>

<p><code class="language-plaintext highlighter-rouge">//192.168.1.10/freedombox /mnt/nas_backup credentials=/etc/samba/credentials/nas_backup,iocharset=utf8 0 0</code></p>

<p>Fichier mount systemd /etc/systemd/system/mnt-nas.mount :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Unit]
Description=Mount Share at boot

[Mount]
What=//192.168.1.10/freedombox
Where=/mnt/nas_backup
Options=_netdev,credentials=/etc/samba/credentials/nas_backup,iocharset=utf8,rw
Type=cifs
TimeoutSec=30
ForceUnmount=true

[Install]
WantedBy=multi-user.target
</code></pre></div></div>]]></content><author><name>Mjules</name></author><category term="samba" /><category term="cifs" /><category term="systemd" /><category term="fstab" /><category term="credential" /><summary type="html"><![CDATA[Le paquet cifs-utils est nécessaire pour pouvoir utiliser un fichier d’identifiants dans un montage cifs/samba. Sans ça, vous aurez droit à une erreur 13, permission denied sans autre information. Il n’est pas installé par défaut ou automatiquement sous Debian.]]></summary></entry><entry><title type="html">Histoire de mes connexions Internet</title><link href="http://mjules.littleboboy.net/blog/2025/10/26/histoire-de-mes-connexions-internet.html" rel="alternate" type="text/html" title="Histoire de mes connexions Internet" /><published>2025-10-26T00:00:00+02:00</published><updated>2025-10-26T00:00:00+02:00</updated><id>http://mjules.littleboboy.net/blog/2025/10/26/histoire-de-mes-connexions-internet</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/10/26/histoire-de-mes-connexions-internet.html"><![CDATA[<p>Je lisais ce soir un communiqué de Orange (via <a href="https://lafibre.info/gpon/50g-pon/msg1136617/#msg1136617">lafibre.info</a>) sur
les premiers essais de 50-GPON (fibre optique en techno <a href="https://fr.wikipedia.org/wiki/GPON">GPON</a> à 50 Gbits/sec), 
ce qui m’a fait me souvenir du chemin parcouru depuis mon premier accès Internet.</p>

<p>Pour la postérité et ma mémoire, une liste des différentes technologies et débits au fil du temps :</p>
<ul>
  <li><strong>Vers 1996-1997</strong>, chez mes parents, RTC 56 kbits/sec, FAI Infonie, 20H pour 99 Francs par mois (~15,09€)</li>
  <li><strong>Septembre 2001</strong>, premier logement individuel, <a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_num%C3%A9rique_%C3%A0_int%C3%A9gration_de_services">RNIS</a>
  Numeris France Telecom 64 kbits/sec, FAI Free 50H pour 14,94€/mois</li>
  <li><strong>Décembre 2003</strong>, ADSL 512/64 kbits/sec, Télé2 22€/mois</li>
  <li><strong>Juillet 2004</strong>, ADSL 1024/128 kbits/sec</li>
  <li><strong>Juillet 2005</strong>, ADSL 8/1 Mbits/sec</li>
  <li><strong>Mai 2007</strong>, déménagement, ADSL 8/1 Mbits/sec, Orange 29.90€/mois</li>
  <li><strong>Novembre 2008</strong>, ADSL 8/1 Mbits/sec, Dartybox 37,89€/mois avec TV, téléphone (pour les jeunes, oui, avant ce point, 
 les communications et l’abonnement téléphonique étaient facturés en plus de la partie internet)</li>
  <li><strong>Janvier 2012</strong>, FTTH 100/50 Mbits/sec, France Citevision(1) 37.90€/mois avec TV, téléphone</li>
  <li><strong>Septembre 2016</strong>, déménagement, FTTH 1000/400 Mbits/sec, Orange 47.99€/mois avec TV, téléphone</li>
  <li><strong>Mars 2025</strong>, FTTH 1000/800 Mbits/sec, Sosh 36.99€/mois avec TV, téléphone</li>
</ul>

<p>On a ainsi multiplié le débit descendant d’une ligne de particulier par un peu plus de 17000 en 30 ans avec 
également une nette amélioration de la qualité en particulier au passage à la fibre.</p>

<p>Mon quartier étant éligible <a href="https://fr.wikipedia.org/wiki/10G-PON">XGS-PON</a>, on verra sûrement encore les
débits augmenter, mais vu que mon réseau interne est en 1Gbits/sec, je ne suis pas pressé.</p>

<p>(1) France Citévision est devenu ensuite Cityplay, puis racheté par Wibox et enfin par SFR/numéricable.</p>]]></content><author><name>Mjules</name></author><category term="vieux" /><category term="histoire" /><category term="débit" /><category term="adsl" /><category term="rnis" /><category term="numeris" /><category term="fibre" /><category term="ftth" /><summary type="html"><![CDATA[Je lisais ce soir un communiqué de Orange (via lafibre.info) sur les premiers essais de 50-GPON (fibre optique en techno GPON à 50 Gbits/sec), ce qui m’a fait me souvenir du chemin parcouru depuis mon premier accès Internet.]]></summary></entry><entry><title type="html">Raccourcis de recherche dans la base de données publique des médicaments</title><link href="http://mjules.littleboboy.net/blog/2025/08/13/raccourcis-recherche-base-donnee-publique-medicament.html" rel="alternate" type="text/html" title="Raccourcis de recherche dans la base de données publique des médicaments" /><published>2025-08-13T00:00:00+02:00</published><updated>2025-08-13T00:00:00+02:00</updated><id>http://mjules.littleboboy.net/blog/2025/08/13/raccourcis-recherche-base-donnee-publique-medicament</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/08/13/raccourcis-recherche-base-donnee-publique-medicament.html"><![CDATA[<p>La <a href="https://base-donnees-publique.medicaments.gouv.fr/">Base de Donnée Publique des Médicaments</a>
 est un site qui comme son nom l’indique recense les 
médicaments commercialisés en France avec différentes informations comme les notices patients, 
les résumés des caractéristiques des produits, les avis HAS, etc.</p>

<p>Il y a quelques années, j’avais écris un <a href="/blog/2014/11/27/plugins-de-recherche-pour-la-base-de-donn%C3%A9es-publique-des-m%C3%A9dicaments.html">plugin de recherche pour firefox</a> 
qui faisait son travail jusqu’à récemment où le site a été refondu.</p>

<p>Firefox ayant bien évolué, il est assez simple aujourd’hui de rajoute un nouveau moteur de recherche
quand on connait la bonne syntaxe. Ça se fait dans les paramètres de firefox, Section recherche/raccourcis de recherche.</p>

<p>Les URLs à utiliser sont, pour les noms commerciaux :</p>

<p><code class="language-plaintext highlighter-rouge">https://base-donnees-publique.medicaments.gouv.fr/index.php?choixRecherche=medicament&amp;txtCaracteres=%s</code></p>

<p>Pour les noms des molécules (DCI) :</p>

<p><code class="language-plaintext highlighter-rouge">https://base-donnees-publique.medicaments.gouv.fr/index.php?choixRecherche=substance&amp;txtCaracteres=%s</code></p>]]></content><author><name>Mjules</name></author><category term="médicament" /><category term="bdpm" /><category term="firefox" /><category term="raccourcis" /><summary type="html"><![CDATA[La Base de Donnée Publique des Médicaments est un site qui comme son nom l’indique recense les médicaments commercialisés en France avec différentes informations comme les notices patients, les résumés des caractéristiques des produits, les avis HAS, etc.]]></summary></entry><entry><title type="html">Ecrans multiples avec les jeux utilisant Unity</title><link href="http://mjules.littleboboy.net/blog/2025/07/04/unity-multi-ecrans.html" rel="alternate" type="text/html" title="Ecrans multiples avec les jeux utilisant Unity" /><published>2025-07-04T00:00:00+02:00</published><updated>2025-07-04T00:00:00+02:00</updated><id>http://mjules.littleboboy.net/blog/2025/07/04/unity-multi-ecrans</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/07/04/unity-multi-ecrans.html"><![CDATA[<p>Ma machine habituelle, sous GNU/linux, possède deux écrans, le principal (1080p) se trouvant à droite du secondaire (1024x768). C’est un problème avec certains jeux utilisant <a href="https://unity.com/fr">Unity</a> qui ne respectent pas la notion d’écran primaire/secondaire et démarrent systématiquement sur l’écran le plus à gauche.</p>

<p>Avec une version pas trop ancienne d’Unity, il est possible de corriger ça en ajoutant une option
au lanceur du jeu, par exemple pour Pankapu (l’option a été ajouté dans les propriétés steam du jeu) :<br />
<code class="language-plaintext highlighter-rouge">panpaku -screen-fullscreen 1 -monitor 2</code></p>

<p>qui lance en plein écran sur l’écran qu’il appelle 2 (le 1 étant le plus à gauche a priori).</p>

<p>C’est loin d’être parfait, notamment avec certains jeux qui mettent des résolutions stupides, 
mais c’est déjà un mieux.</p>]]></content><author><name>Mjules</name></author><category term="jeux" /><category term="unity" /><category term="steam" /><category term="écrans" /><category term="linux" /><summary type="html"><![CDATA[Ma machine habituelle, sous GNU/linux, possède deux écrans, le principal (1080p) se trouvant à droite du secondaire (1024x768). C’est un problème avec certains jeux utilisant Unity qui ne respectent pas la notion d’écran primaire/secondaire et démarrent systématiquement sur l’écran le plus à gauche.]]></summary></entry><entry><title type="html">IPv6, livebox et préfixes dynamiques</title><link href="http://mjules.littleboboy.net/blog/2025/05/03/ipv6-livebox-prefixe.html" rel="alternate" type="text/html" title="IPv6, livebox et préfixes dynamiques" /><published>2025-05-03T00:00:00+02:00</published><updated>2025-05-03T00:00:00+02:00</updated><id>http://mjules.littleboboy.net/blog/2025/05/03/ipv6-livebox-prefixe</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/05/03/ipv6-livebox-prefixe.html"><![CDATA[<p>Quand on héberge des services chez soi (<em>selfhosting</em>), une étape nécessaire est d’autoriser les connexions 
entrantes au niveau du routeur. Ma configuration réseau est celle d’un routeur directement en aval de
la box de mon FAI (Livebox dans mon cas) ce qui augmente un peu la difficulté notamment selon la
version du protocole IP.</p>

<p>En IPv4, c’est assez simple, une zone démilitarisée (DMZ) est paramétrée sur la livebox vers mon 
routeur perso qui s’occupe des ouvertures/redirections de ports vers les machines internes. Toutes 
les IP externes sont donc redirigées vers la seule IP du routeur qui fait son masquage et translation
d’adresse.</p>

<p>En IPv6, c’est un peu plus compliqué, chaque machine du réseau va obtenir une adresse publique parmi 
celles du préfixe délégué par la livebox à mon routeur.
Si vous avez suivi le <a href="/blog/2025/04/26/ipv6-cela-en-valait-il-la-peine.html">billet précédent</a>, 
vous savez que chez Orange, votre préfixe IPv6 est stable, c’est à dire qu’aucune garantie n’est faite sur 
la durée où il vous sera attribué.<br />
Dans mon cas, j’ai eu le même préfixe pendant un peu moins d’un an mais il a changé quand j’ai 
basculé d’offre.<br />
Les témoignages sur Internet semblent aller dans le même sens avec toutefois des 
cas où le préfixe change plus fréquemment si des travaux sont en cours au niveau de l’organisation
du réseau.</p>

<p>Ouvrir des ports pour les machines du réseau nécessite donc de le faire pour chaque adresse, sachant
qu’elles peuvent changer sans prévenir (et donc invalider la règle de pare-feu).
Tout ça serait un peu fastidieux si mon routeur ne faisait pas tourner <a href="https://openwrt.org">OpenWRT</a>
qui permet de créer des règles ciblant uniquement le <a href="https://openwrt.org/docs/guide-user/firewall/fw3_configurations/fw3_ipv6_examples#dynamic_prefix_forwarding">suffixe d’une adresse IPv6</a> !</p>

<blockquote>
  <p><em>Rappel</em> : une addresse IPv6 est composée d’un préfixe (première moitié) fourni par votre FAI
et d’un suffixe (deuxième moitié) spécifique à la machine et que l’on peut fixer.</p>
</blockquote>

<p>Une règle se présente de la façon suivante :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Forwarded IPv6 
From wan 
To lan
IP ::10:2/-64, port 80
</code></pre></div></div>
<p>La partie importante ici est le -64 qui signifie dans le vocable fw4 (le parefeu d’OpenWRT) qu’il 
faut ouvrir le port (ici 80) vers la machine donc le suffixe est ::10:2 (équivalent à :0:0:10:2)
quel que soit le préfixe. IL n’y a donc plus besoin de changer la règle quand on change de préfixe !</p>

<h3 id="et-la-livebox-dans-tout-ça-">Et la livebox dans tout ça ?</h3>

<p>La livebox est concue pour le grand public et son interface reflète ce point, elle est assez limitée
dans les options/capacités accessible depuis l’interface web.</p>

<p>Heureusement, il existe <a href="https://p-dor.github.io/LiveboxMonitor">LiveboxMonitor</a>, logiciel libre qui
utilise directement l’API de la livebox et permet beaucoup plus de choses. En particulier, alors que
l’interface web ne permet pas facilement de créer des règles vers des adresses arbitraires, LiveboxMonitor
le permet.</p>

<p>Il permet aussi, et c’est plus intéressant, de créer des règles d’ouverture de protocole vers un ensemble
d’adresse avec une syntaxe de la forme 2001:db8::/32 ; il suffit alors de trouver la plage d’ip allouée
à Orange (2a01:c000::/19) et d’autoriser les protocoles TCP, UDP, ICMP à destination de l’ensemble des
adresses de cette plage sur votre réseau et vous avez quelque chose qui ressemble à une DMZ et qui n’a pas à être 
modifiée quand vous changez de préfixe.</p>

<p><img src="/blog/assets/lbmproto.webp" alt="Fenêtre d'ouverture des protocoles de LiveboxMonitor" width="500px" height="400px" /></p>]]></content><author><name>Mjules</name></author><category term="ipv6" /><category term="préfixe" /><category term="parefeu" /><category term="orange" /><category term="livebox" /><summary type="html"><![CDATA[Quand on héberge des services chez soi (selfhosting), une étape nécessaire est d’autoriser les connexions entrantes au niveau du routeur. Ma configuration réseau est celle d’un routeur directement en aval de la box de mon FAI (Livebox dans mon cas) ce qui augmente un peu la difficulté notamment selon la version du protocole IP.]]></summary></entry><entry><title type="html">IPv6, cela en valait-il la peine ?</title><link href="http://mjules.littleboboy.net/blog/2025/04/26/ipv6-cela-en-valait-il-la-peine.html" rel="alternate" type="text/html" title="IPv6, cela en valait-il la peine ?" /><published>2025-04-26T12:45:00+02:00</published><updated>2025-04-26T12:45:00+02:00</updated><id>http://mjules.littleboboy.net/blog/2025/04/26/ipv6-cela-en-valait-il-la-peine</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/04/26/ipv6-cela-en-valait-il-la-peine.html"><![CDATA[<blockquote>
  <p><em>Ce billet a été initialement écrit comme journal sur <a href="https://linuxfr.org/users/mjules/journaux/ipv6-cela-en-valait-il-la-peine">linuxfr</a> en avril 2024, je le reprends ici pour la postérité avec quelques corrections mineures.</em></p>
</blockquote>

<p><strong>Trop long, pas lu :</strong> 
IPv6 est un excellent exemple de la différence entre la théorie et la pratique. Et le journal ne répond pas à la question du titre.</p>

<p>J’ai découvert ipv6 à la fin des années 90 dans mes cours à l’université où l’on m’a expliqué 
que ça réglerait le problème du nombre d’ip limité de ipv4 (oui, c’était une introduction au réseau, et on parlait encore de bus et d’étoile).</p>

<p>Mon premier vrai contact avec ipv6 a eu lieu au début des années 2000 quand j’ai créé un compte chez <a href="https://tunnelbroker.net/">Hurricane Electric</a> et monté un tunnel que j’ai utilisé pendant au moins 20 minutes avant de ne plus jamais le relancer.</p>

<p>Mon troisième vrai contact avec ipv6 s’est produit en mars 2020 quand j’ai commencé à avoir un comportement bizarre sur mon réseau familial.</p>

<p>Le-dit réseau comportait :</p>
<ul>
  <li>la box de l’opérateur (Livebox Orange FTTH)</li>
  <li>un serveur <a href="https://wiki.debian.org/FreedomBox/Hardware/PioneerEdition">freedombox</a> hébergeant quelques services (agenda, contacts, DNS, DHCP, partages réseaux)</li>
  <li>des machines clientes (PC sous linux, imprimantes, tablettes et téléphones android, boitier TV)</li>
</ul>

<p>Histoire de pouvoir accéder au serveur depuis l’extérieur, j’ai un nom de domaine perso qui résout mon ip externe et pour ne pas avoir à bricoler la configuration sur chaque appareil en fonction du lieu, je fais du <a href="https://www.bonfert.io/2022/01/implementing-split-dns-at-home/">split DNS</a> pour rediriger le nom de domaine vers l’IP interne du serveur quand je suis dans le réseau local.</p>

<p>Courant mars 2020, des erreurs bizarres apparaissent lors de la synchronisation des contacts ou des agendas. En cherchant un peu, on découvre que :</p>
<ul>
  <li>IPv6 est activé sur mon réseau</li>
  <li>orange envoie ses propres DNS via les <a href="https://fr.wikipedia.org/wiki/Neighbor_Discovery_Protocol">Router Advertisement</a> (RA)</li>
  <li>ceux-ci résolvent mon domaine vers l’ip publique</li>
  <li>le <a href="https://fr.wikipedia.org/wiki/Hairpinning">NAT hairpinning</a> ne marche plus (cf <a href="https://lafibre.info/orange-les-news/nat-forwarding-hairpinning/">https://lafibre.info/orange-les-news/nat-forwarding-hairpinning/</a> par ex)</li>
</ul>

<p>Résultat : suivant le DNS qu’elles interrogent mes machines ont du mal à trouver le serveur.</p>

<p>Solution initiale la plus simple : désactiver l’ipv6 et tout rentre dans l’ordre.</p>

<p>Mais ipv6, c’est le futur !(tm) Et la solution simple ne me plait qu’à moitié, j’ai donc cherché comment faire pour réactiver ipv6 et l’intégrer dans mon réseau. Et je suis tombé sur la délégation de préfixe qui permet de gérer soit même son pool d’adresse IPv6, excellent, et en plus la livebox le permet depuis 2022. Fantastique.</p>

<p>Je me dis, je vais déléguer le préfixe à mon serveur qui va alors fournir les infos aux différentes machines via dhcpv6/RA.</p>

<p>Sauf qu’en fait non,ça marche pas.</p>

<p>L’adresse du Router Advertisement est forcément celle du routeur (oui, ça parait logique dit comme ça) et si je délègue le préfixe à mon serveur c’est lui qui va être considéré comme un routeur, ce qu’il n’est pas.</p>

<p>Alors oui, ça doit peut être pouvoir se modifier en utilisant DHCPv6 mais, ce dernier <a href="https://issuetracker.google.com/issues/36949085">n’est pas pris en charge par android</a>. Celui-ci n’utilise que l’autoconfiguration (SLAAC) via les messages RA.</p>

<p>Petit retour en arrière pour ceux qui n’ont pas bien suivi le paragraphe précédent. Les adresses ipv6 sont fournies de plusieurs manières possibles :</p>
<ul>
  <li>adresse fixe manuelle</li>
  <li>adresse autoconfigurée via le protocole SLAAC à partir des infos reçues du routeur (RA) et de l’adresse locale de l’interface réseau (ou d’un paramétrage de la machine)</li>
  <li>adresse fournie par DHCPv6</li>
</ul>

<p>ex :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>2: enp2s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 state UP qlen 1000
    inet6 fdda:eeee:5546::10:200/128 scope global dynamic noprefixroute 
       valid_lft 43134sec preferred_lft 526sec
    inet6 1234:caad:526b:20ca::10:200/128 scope global dynamic noprefixroute 
       valid_lft 43134sec preferred_lft 526sec
    inet6 1234:caad:526b:20ca:2ef0:5dff:fe09:4e71/64 scope global dynamic noprefixroute 
       valid_lft 43101sec preferred_lft 227sec
    inet6 fdda:eeee:5546:0:2ef0:5dff:fe09:4e71/64 scope global dynamic noprefixroute 
       valid_lft 43101sec preferred_lft 10701sec
    inet6 fe80::2ef0:5dff:fe09:4e71/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
</code></pre></div></div>

<p>Pour les adresses autoconfigurées, la dernière partie de chacune des adresses est la même et correspond à celle du lien local (celle en fe80)</p>

<p>Conclusion : il faut une machine entre la livebox et mon réseau interne. Ce que j’ai mis en place en février 2024 (propulsée par l’excellent <a href="https://openwrt.org/">openwrt</a>), en apprenant plein de choses au passage.</p>

<p>Qu’ai-je donc appris ?</p>
<ol>
  <li>les adresses en ipv6 c’est compliqué :
    <ul>
      <li>à retenir, l’ipv4 c’est déjà pas évident, v6 c’est quasi impossible (et donc DNS quasi-nécessaire)</li>
      <li>il y a plein de type d’ip différentes et il est vital de les connaitre : <a href="https://www.ripe.net/media/documents/ipv6_reference_card.pdf">https://www.ripe.net/media/documents/ipv6_reference_card.pdf</a></li>
      <li>si vous n’êtes pas à l’aise avec la notation CIDR (xxx/32), c’est le moment de s’y mettre</li>
      <li>les raccourcis d’adresse sont pratiques mais sont à apprendre également (par exemple ::1 signifie uniquement des 0 sauf le dernier nombre)</li>
      <li>les machines ont au minimum deux adresses et souvent plus voire beaucoup plus</li>
    </ul>
  </li>
  <li>il y a des pièges partout, ex :
    <ul>
      <li>vous ne pouvez pas pinguer simplement une adresse lien locale, il faut ajouter l’interface (et la syntaxe est différente suivant les OS _o/)</li>
      <li>les adresses locales (ULA), sont censées être en fc00::/7 sauf qu’en fait, il ne faut pas utiliser la partie en fc00::/8 mais uniquement celle en fd00::/8</li>
      <li>certains services sur le grand nain ternet sont mal configurés et j’ai du forcer l’ipv4 dans certains cas (via une résolution locale sur mon DNS)</li>
    </ul>
  </li>
  <li>Il y a des limitations frustrantes (du protocole ou de l’implémentation) :
    <ul>
      <li>Les limites d’android imposent d’avoir 2 services (RA + DHCPv6) si vous voulez également fixer des adresses pour des machines peu configurable (imprimante par ex)</li>
      <li>le préfixe délégué est censé être fixe. Chez mon FAI, il est <em>stable</em>, i.e. il peut changer de temps en temps en cas de travaux sur le réseau ou de type d’abonnement.</li>
      <li>le pare feu de la livebox pour la partie v6 est quasi inutilisable via l’interface, notamment, il ne permet pas facilement de saisir des adresses, il ne propose que celle du routeur. Je vous conseille donc de passer par <a href="https://p-dor.github.io/LiveboxMonitor/">LiveboxMonitor</a>, logiciel tiers bien plus efficace.</li>
      <li>la livebox délègue un préfixe /56 mais en réalité, ne route que le premier /64 donc dans les faits, un seul /64 est disponible.</li>
      <li>un /64 représente 18446744073709551616 adresses. Mais il n’est pas possible de faire des sous-réseaux dedans sans casser les systèmes de configuration.</li>
      <li>les adresses ULA ont une priorité moindre que les adresses locales ipv4.</li>
      <li>les machines derrière mon accès VPN via wireguard ne peuvent pas avoir d’adresses globales (GUA) fixes vu que le préfixe peut changer et que de toute façon je n’ai qu’un /64 disponible, donc ULA et NAT6 pour de l’ipv6 mais qui ne sert à pas grand chose vu que les adresses ipv4 sont préférées. J’ai plus ou moins résolu la situation en attribuant des adresses GUA manuelles dans le /64 mais ça impose de changer la configuration à chaque changement de préfixe (heureusement rares).</li>
    </ul>
  </li>
</ol>

<p>Au final, l’ipv6 est maintenant fonctionnel sur mon réseau, avec des adresses GUA et ULA et un serveur accessible depuis l’extérieur.
Un grand merci à Openwrt qui m’a énormément facilité la vie ; un gros morceau, dont la gestion de la délégation de préfixe, étant automagiquement configurée par l’OS sans rien avoir à faire.</p>

<p>Dans la vie de tous les jours, ça ne m’apporte rien si ce n’est la satisfaction personnelle d’avoir appris et réussi. Et un peu de frustration devant les limites arbitraires amenées principalement par les implémentations.</p>

<p>J’ai quand même gagné une magnifique couleur verte sur <a href="https://ip.lafibre.info/">https://ip.lafibre.info/</a> ; et ça, ça en valait la peine.</p>]]></content><author><name>Mjules</name></author><category term="ipv6" /><category term="réseau" /><category term="ipv4" /><category term="orange" /><category term="freedombox" /><category term="openwrt" /><summary type="html"><![CDATA[Ce billet a été initialement écrit comme journal sur linuxfr en avril 2024, je le reprends ici pour la postérité avec quelques corrections mineures.]]></summary></entry><entry xml:lang="fr"><title type="html">Mise à jour du moteur de blog</title><link href="http://mjules.littleboboy.net/blog/2025/04/21/mise-a-jour-moteur-de-blog.html" rel="alternate" type="text/html" title="Mise à jour du moteur de blog" /><published>2025-04-21T18:35:00+02:00</published><updated>2025-04-21T18:35:00+02:00</updated><id>http://mjules.littleboboy.net/blog/2025/04/21/mise-a-jour-moteur-de-blog</id><content type="html" xml:base="http://mjules.littleboboy.net/blog/2025/04/21/mise-a-jour-moteur-de-blog.html"><![CDATA[<p>J’en avais marre d’être constamment en retard pour mettre à jour dotclear (avec les risques de
sécurité associés) et comme je n’avais pas besoin de toute ses fonctions, j’ai donc décidé de passer
 à un moteur de blog statique.</p>

<p>Après avoir testé <a href="https://getpelican.com">Pelican</a> puis <a href="https://gohugo.io">Hugo</a>, 
mon choix s’est finalement porté sur <a href="https://jekyllrb.com">Jekyll</a> dont l’importation de Dotclear 
est très simple et plutôt efficace, je n’ai eu qu’à retoucher quelques liens vers les images pour avoir
un résultat acceptable.</p>]]></content><author><name>Mjules</name></author><summary type="html"><![CDATA[J’en avais marre d’être constamment en retard pour mettre à jour dotclear (avec les risques de sécurité associés) et comme je n’avais pas besoin de toute ses fonctions, j’ai donc décidé de passer à un moteur de blog statique.]]></summary></entry></feed>