..
  Copyright (C)  2023  Jeremie Salvi.
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
  A copy of the license is included in the section entitled "GNU
  Free Documentation License".

.. toctree::
   :maxdepth: 2
   :hidden:
   :glob:

   sphinx/index.rst

.. toctree::
   :maxdepth: 2
   :hidden:
   :caption: Configuration côté utilisateur
   :glob:

   xorg/urxvt/*
   xorg/vscodium/*
   xorg/kvmwindowspartboot/*

.. toctree::
   :maxdepth: 2
   :hidden:
   :caption: Configuration côté serveur
   :glob: 

   server/*

.. toctree::
   :maxdepth: 2
   :hidden:
   :caption: Programmation
   :glob: 

   esp32/index.rst

.. toctree::
   :maxdepth: 2
   :hidden:
   :caption: Sheat Sheet
   :glob: 

   sheatsheet/*

.. toctree::
  :maxdepth: 2
  :hidden:
  :caption: Licence

  README.md
  LICENSE.md


Bienvenue sur la documentation d'UnixYourBrain !
================================================

Je vais avec ce site créer une doc pour toutes mes manip et bidouilles informatiques.

Le passage à l'ipv6 :
---------------------

Bien que de nombreux sites soient accessibles en ipv6, ce n'est pas le cas de tous. 
Un ``host qwant.com`` ou ``host startpage.com`` nous montrent que des sites suffisament populaires ou fréquentés ne sont toujours pas passés à l'ipv6. 
De plus, certains opérateurs, comme free pour sa 4g, ne le prennent pas complètement en charge, voir pas du tout.
Cela mène généralement à des configurations mixtes ipv4/ipv6 souvent mal maitrisées, complexes et brouillon.
Je vais donc m'imposer quelques règles de conduite pour configurer proprement, tout comprendre comme il faut, et l'expliquer dans cette documentation.

Ipv6 first
~~~~~~~~~~

Que ça soit pour la configuration IP, ou des services, je vais d'abbord configurer l'ipv6, en ipv6 only autant que possible.
Côté client :

* Je configurerai d'abord l'ipv6, et une fois que je me serai assuré qu'elle marche bien, j'ajouterai l'ipv4 pour les sites / serveurs qui ne la gèrent pas encore.
* Je configurerai mes bridges et mes machines virtuelles en ipv6 only.

Côté serveur :

* Pour la configuration IP, je procèderai de la même manière que pour le côté client.
* pour les services personnels et d'administration, je les configuerai uniquement en ipv6
* Pour les services publics, je les configurerai en ipv6 first

Machine virtuelles et test :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Pour tester mes différentes configurations, je vais utiliser une machine virtuelle.
Tout ce qui sera vu dans cette documentation sera testé sur une machine virtuelle locale.
Vous pourrez le reporoduire chez vous sans poséder d'IP publique, de serveur ou quoi que ce soit d'autre.

Rappels :
---------

Avant de commencer, je vais faire un rappel des points suivants :

Ipv6
~~~~

Je vais bien entendu faire un rappel de l'ipv6, de ce que j'en ai compris.
J'étofferai au fur et à mesure de mes découvertes et de mes trouvailles.
Étant abonné freebox, je vais aussi expliquer comment free gère et met en place l'ipv6.

La documentation avec Sphinx
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Cette documentation est faite à l'aide du framework `Sphinx <https://www.sphinx-doc.org/fr/master/>`_.
C'est un outil qui permet d'écrire de la documentation simplement au format 
`reStructuredText (.rst) <https://docutils.sourceforge.io/rst.html>`_.
Il dispose aussi d'un plugin pour la syntaxe `Markdown (.md) <https://daringfireball.net/projects/markdown/>`_
Je ferai donc une brève documentation de ces syntaxes, 
et je créerai peut être une documentation sur comment installer et utiliser Sphinx.

Configuration IP
~~~~~~~~~~~~~~~~

Sur un Linux récent, nous avons deux moyens de gérer la configuration IP : networking et systemd-networkd.
Pour la configuration, côté client comme serveur, je vais abandonner le service networking pour utiliser uniquement systemd-networkd.

Iptables
~~~~~~~~

Tout au long des manipulations, je vais créer les règles iptables pour sécuriser les outils que je mettrai en place.
Tout ce qu'il y a à connaitre sera reporté dans une documentation consacrée à iptables
