Premier ajout de contenu

This commit is contained in:
Quentin 2022-05-11 17:53:45 +02:00
parent e9e2af4235
commit 7f558517f4
Signed by: quentin
GPG key ID: E9602264D639FF68
43 changed files with 2480 additions and 149 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
public

View file

@ -10,13 +10,13 @@ build_search_index = true
[markdown] [markdown]
# Whether to do syntax highlighting # Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola # Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = true #highlight_code = true
[extra] [extra]
# Put all your custom variables here # Put all your custom variables here
juice_logo_name = "man.deuxfleurs.fr" juice_logo_name = "Manuel"
juice_logo_path = "juice.svg" juice_logo_path = "deuxfleurs_white.svg"
juice_extra_menu = [ #juice_extra_menu = [
{ title = "Contribuer", link = "https://git.deuxfleurs.fr/Deuxfleurs/man.deuxfleurs.fr"} # { title = "Contribuer", link = "https://git.deuxfleurs.fr/Deuxfleurs/man.deuxfleurs.fr"}
] #]
repository_url = "https://git.deuxfleurs.fr/Deuxfleurs/man.deuxfleurs.fr" repository_url = "https://git.deuxfleurs.fr/Deuxfleurs/man.deuxfleurs.fr"

View file

@ -1,9 +1,14 @@
+++ +++
title = "Services" title = "Bienvenue !"
sort_by = "weight" sort_by = "weight"
+++ +++
# Les services bb
Ceci est un manuel # Découvrir
aa
# Contribuer
## 2222

View file

@ -1,9 +0,0 @@
+++
title = "Administration"
description = "Administration"
weight = 1
+++
# Administration
Ceci est un manuel

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 70.424515 70.300102"
version="1.1"
id="svg8"
sodipodi:docname="deuxfleurs_white.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
inkscape:export-filename="/home/quentin/Documents/dev/deuxfleurs/site/src/img/logo.png"
inkscape:export-xdpi="699.30194"
inkscape:export-ydpi="699.30194"
width="70.424515"
height="70.300102"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs12" />
<sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="24.25"
inkscape:cx="48.597938"
inkscape:cy="36.948454"
inkscape:window-width="3826"
inkscape:window-height="2116"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<path
d="m 6.265,45.670103 c -0.53,-1.489 -0.698,-2.97 -0.432,-4.2 l 2.368,0.375 0.987,0.156 0.157,-0.988 0.375,-2.368 c 1.261,0.127 2.613,0.743 3.862,1.706 0.118,-0.337 0.244,-0.663 0.382,-0.967 -1.551,-1.135 -3.223,-1.763 -4.73,-1.763 -0.123,0 -0.245,0.004 -0.366,0.013 l -0.511,3.223 -3.224,-0.511 c -0.6,1.487 -0.565,3.415 0.085,5.393 0.335,-0.037 0.684,-0.061 1.047,-0.069 z m 14.501,-5.319 c 1.248,-0.962 2.6,-1.578 3.86,-1.705 l 0.376,2.368 0.156,0.988 0.987,-0.157 2.369,-0.376 c 0.266,1.23 0.098,2.71 -0.432,4.2 0.361,0.009 0.711,0.032 1.046,0.07 0.651,-1.978 0.685,-3.906 0.085,-5.394 l -3.225,0.512 -0.511,-3.224 c -0.12,-0.008 -0.242,-0.012 -0.365,-0.012 -1.507,0 -3.179,0.628 -4.73,1.762 0.14,0.306 0.266,0.631 0.384,0.968 z m -14.225,21.641 h 0.035 c 0.067,0 0.157,-0.604 0.26,-0.947 -0.098,0.004 -0.197,0.046 -0.294,0.046 -1.496,0 -2.826,-0.303 -3.83,-0.89 l 1.089,-2.128 0.454,-0.887 -0.891,-0.452 -2.136,-1.088 c 0.508,-1.151 1.515,-2.25 2.818,-3.143 -0.287,-0.219 -0.561,-0.441 -0.81,-0.669 -1.687,1.217 -2.846,2.755 -3.235,4.31 l 2.908,1.483 -1.482,2.843 c 1.221,1.023 3.049,1.522 5.114,1.522 z m 27.806,-5.846 c -0.39,-1.555 -1.548,-3.093 -3.234,-4.311 -0.25,0.228 -0.523,0.451 -0.81,0.669 1.304,0.893 2.31,1.992 2.817,3.145 l -2.136,1.088 -0.891,0.453 0.454,0.892 1.089,2.137 c -1.004,0.587 -2.332,0.904 -3.828,0.904 -0.099,0 -0.199,-0.01 -0.299,-0.013 0.103,0.344 0.192,0.683 0.26,1.011 l 0.039,0.002 c 2.066,0 3.892,-0.563 5.112,-1.587 l -1.482,-2.908 z m -12.653,9.182 c -0.447,1.517 -1.181,2.812 -2.119,3.651 l -1.695,-1.694 -0.707,-0.707 -0.707,0.707 -1.695,1.694 c -0.938,-0.839 -1.673,-2.136 -2.12,-3.652 -0.296,0.206 -0.593,0.397 -0.886,0.563 0.636,1.98 1.741,3.559 3.1,4.409 l 2.308,-2.307 2.308,2.308 c 1.358,-0.851 2.464,-2.428 3.101,-4.408 -0.295,-0.168 -0.591,-0.359 -0.888,-0.564 z"
fill="#ea596e"
id="path4"
style="fill:#ffffff" />
<path
fill="#ea596e"
d="m 19.291,40.675103 c 0.426,1.146 0.748,2.596 0.841,4.284 l 0.2,3.683 3.564,-0.946 c 1.32,-0.351 2.655,-0.536 3.86,-0.536 0.16,0 0.318,0.003 0.474,0.01 l -1.827,2.819 3.139,1.211 c -0.958,0.759 -2.237,1.514 -3.814,2.123 l -3.441,1.328 2.001,3.099 c 0.918,1.42 1.509,2.782 1.838,3.96 l -3.244,-0.865 -0.182,3.357 c -1.019,-0.677 -2.132,-1.66 -3.198,-2.973 l -2.329,-2.863 -2.328,2.862 c -1.066,1.312 -2.179,2.295 -3.198,2.972 l -0.18,-3.354 -3.248,0.864 c 0.329,-1.178 0.921,-2.54 1.839,-3.961 l 2.004,-3.099 -3.442,-1.328 c -1.577,-0.609 -2.856,-1.363 -3.814,-2.122 l 3.135,-1.208 -1.827,-2.823 c 0.155,-0.006 0.313,-0.01 0.473,-0.01 1.206,0 2.541,0.185 3.861,0.536 l 3.564,0.947 0.202,-3.683 c 0.092,-1.688 0.415,-3.138 0.84,-4.284 l 2.119,2.609 2.118,-2.609 m 0.19,-4.991 -2.308,2.841 -2.308,-2.841 c -1.989,1.532 -3.421,4.992 -3.646,9.112 -1.617,-0.43 -3.192,-0.637 -4.632,-0.637 -2.11,0 -3.929,0.445 -5.161,1.289 l 1.989,3.073 -3.415,1.316 c 0.842,2.366 3.69,4.797 7.54,6.283 -2.241,3.465 -3.116,7.106 -2.407,9.516 l 3.537,-0.941 0.196,3.654 c 2.512,-0.07 5.703,-2.027 8.307,-5.228 2.603,3.201 5.796,5.158 8.306,5.228 l 0.198,-3.655 3.535,0.943 c 0.71,-2.411 -0.165,-6.05 -2.404,-9.517 3.849,-1.485 6.696,-3.918 7.538,-6.283 l -3.415,-1.318 1.99,-3.07 c -1.233,-0.844 -3.053,-1.29 -5.164,-1.29 -1.438,0 -3.013,0.207 -4.63,0.636 -0.225,-4.119 -1.657,-7.579 -3.646,-9.111 z"
id="path6"
style="fill:#ffffff" />
<path
d="m 42.342514,9.986 c -0.53,-1.489 -0.698,-2.97 -0.432,-4.2 l 2.368,0.375 0.987,0.156 0.157,-0.988 0.375,-2.368 c 1.261,0.127 2.613,0.743 3.862,1.706 0.118,-0.337 0.244,-0.663 0.382,-0.967 -1.551,-1.135 -3.223,-1.763 -4.73,-1.763 -0.123,0 -0.245,0.004 -0.366,0.013 l -0.511,3.223 -3.224,-0.511 c -0.6,1.487 -0.565,3.415 0.085,5.393 0.335,-0.037 0.684,-0.061 1.047,-0.069 z m 14.501,-5.319 c 1.248,-0.962 2.6,-1.578 3.86,-1.705 l 0.376,2.368 0.156,0.988 0.987,-0.157 2.369,-0.376 c 0.266,1.23 0.098,2.71 -0.432,4.2 0.361,0.009 0.711,0.032 1.046,0.07 0.651,-1.978 0.685,-3.906 0.085,-5.394 l -3.225,0.512 -0.511,-3.224 c -0.12,-0.008 -0.242,-0.012 -0.365,-0.012 -1.507,0 -3.179,0.628 -4.73,1.762 0.14,0.306 0.266,0.631 0.384,0.968 z m -14.225,21.641 h 0.035 c 0.067,0 0.157,-0.604 0.26,-0.947 -0.098,0.004 -0.197,0.046 -0.294,0.046 -1.496,0 -2.826,-0.303 -3.83,-0.89 l 1.089,-2.128 0.454,-0.887 -0.891,-0.452 -2.136,-1.088 c 0.508,-1.151 1.515,-2.25 2.818,-3.143 -0.287,-0.219 -0.561,-0.441 -0.81,-0.669 -1.687,1.217 -2.846,2.755 -3.235,4.31 l 2.908,1.483 -1.482,2.843 c 1.221,1.023 3.049,1.522 5.114,1.522 z m 27.806,-5.846 c -0.39,-1.555 -1.548,-3.093 -3.234,-4.311 -0.25,0.228 -0.523,0.451 -0.81,0.669 1.304,0.893 2.31,1.992 2.817,3.145 l -2.136,1.088 -0.891,0.453 0.454,0.892 1.089,2.137 c -1.004,0.587 -2.332,0.904 -3.828,0.904 -0.099,0 -0.199,-0.01 -0.299,-0.013 0.103,0.344 0.192,0.683 0.26,1.011 l 0.039,0.002 c 2.066,0 3.892,-0.563 5.112,-1.587 l -1.482,-2.908 z m -12.653,9.182 c -0.447,1.517 -1.181,2.812 -2.119,3.651 l -1.695,-1.694 -0.707,-0.707 -0.707,0.707 -1.695,1.694 c -0.938,-0.839 -1.673,-2.136 -2.12,-3.652 -0.296,0.206 -0.593,0.397 -0.886,0.563 0.636,1.98 1.741,3.559 3.1,4.409 l 2.308,-2.307 2.308,2.308 c 1.358,-0.851 2.464,-2.428 3.101,-4.408 -0.295,-0.168 -0.591,-0.359 -0.888,-0.564 z"
fill="#ea596e"
id="path4-3"
style="fill:#ffffff" />
<path
fill="#ea596e"
d="m 55.368514,4.991 c 0.426,1.146 0.748,2.596 0.841,4.284 l 0.2,3.683 3.564,-0.946 c 1.32,-0.351 2.655,-0.536 3.86,-0.536 0.16,0 0.318,0.003 0.474,0.01 l -1.827,2.819 3.139,1.211 c -0.958,0.759 -2.237,1.514 -3.814,2.123 l -3.441,1.328 2.001,3.099 c 0.918,1.42 1.509,2.782 1.838,3.96 l -3.244,-0.865 -0.182,3.357 c -1.019,-0.677 -2.132,-1.66 -3.198,-2.973 l -2.329,-2.863 -2.328,2.862 c -1.066,1.312 -2.179,2.295 -3.198,2.972 l -0.18,-3.354 -3.248,0.864 c 0.329,-1.178 0.921,-2.54 1.839,-3.961 l 2.004,-3.099 -3.442,-1.328 c -1.577,-0.609 -2.856,-1.363 -3.814,-2.122 l 3.135,-1.208 -1.827,-2.823 c 0.155,-0.006 0.313,-0.01 0.473,-0.01 1.206,0 2.541,0.185 3.861,0.536 l 3.564,0.947 0.202,-3.683 c 0.092,-1.688 0.415,-3.138 0.84,-4.284 l 2.119,2.609 2.118,-2.609 m 0.19,-4.991 -2.308,2.841 -2.308,-2.841 c -1.989,1.532 -3.421,4.992 -3.646,9.112 -1.617,-0.43 -3.192,-0.637 -4.632,-0.637 -2.11,0 -3.929,0.445 -5.161,1.289 l 1.989,3.073 -3.415,1.316 c 0.842,2.366 3.69,4.797 7.54,6.283 -2.241,3.465 -3.116,7.106 -2.407,9.516 l 3.537,-0.941 0.196,3.654 c 2.512,-0.07 5.703,-2.027 8.307,-5.228 2.603,3.201 5.796,5.158 8.306,5.228 l 0.198,-3.655 3.535,0.943 c 0.71,-2.411 -0.165,-6.05 -2.404,-9.517 3.849,-1.485 6.696,-3.918 7.538,-6.283 l -3.415,-1.318 1.99,-3.07 c -1.233,-0.844 -3.053,-1.29 -5.164,-1.29 -1.438,0 -3.013,0.207 -4.63,0.636 -0.225,-4.119 -1.657,-7.579 -3.646,-9.111 z"
id="path6-6"
style="fill:#ffffff" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:42.6667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none"
x="2.2188232"
y="31.430677"
id="text46212"><tspan
sodipodi:role="line"
id="tspan46210"
x="2.2188232"
y="31.430677"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.6667px;font-family:'TeX Gyre Termes';-inkscape-font-specification:'TeX Gyre Termes';fill:#ffffff">D</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:42.6667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none"
x="41.347008"
y="67.114784"
id="text46212-1"><tspan
sodipodi:role="line"
id="tspan46210-5"
x="41.347008"
y="67.114784"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.6667px;font-family:'TeX Gyre Termes';-inkscape-font-specification:'TeX Gyre Termes';fill:#ffffff">F</tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

View file

@ -1,9 +0,0 @@
+++
title = "Formations"
description = "Formations"
weight = 1
+++
# Les formations
Ceci est un manuel

View file

@ -0,0 +1,46 @@
---
title: Chiffrement à froid
description: Guide à l'installation d'une machine en chiffrant intégralement son disque dur
published: true
date: 2022-01-30T20:43:56.953Z
tags: serveur, infrastructure, sysadmin, technique, guide, tutoriel, administration, chiffrement, luks
editor: markdown
dateCreated: 2021-12-29T15:29:02.943Z
---
# Chiffrer les partitions de son futur serveur
Le chiffrement à froid, c'est le fait de n'inscrire que des données chiffrées sur un disque (plus précisément [une partition de disque](https://fr.wikipedia.org/wiki/Partitionnement_logiciel_/_mat%C3%A9riel)). C'est le standard [LUKS](https://fr.wikipedia.org/wiki/LUKS) qui permet ce chiffrement : ce dernier se place entre le support de stockage et le système d'exploitation (OS), et dé/chiffre tout ce qui est lu ou écrit sur une partition. **Cette étape doit donc être réalisée avant d'installer le système d'exploitation, mais après [le partitionnement de vos disques](/Guide/Infra/Configuration_disques).**
Une fois le chiffrement mis en place, on utilise le système d'exploitation comme d'habitude (tout a l'air déchiffré à l'usage), parce que LUKS chiffre et déchiffre - de façon transparente - toutes les informations que l'OS lit et écrit sur la mémoire morte (le disque).
L'intérêt, c'est que, si quelqu'un part avec votre disque dur - il ne pourra pas lire son contenu à moins de vous avoir extorqué la clé.
Dans le cas d'un **hébergement en centre de données**, votre hébergeur a accès à vos disques - c'est donc une bonne première ligne de défense que de **chiffrer son disque, afin que l'hébergeur ne puisse pas y lire comme dans un livre ouvert.**
Néanmoins, ne croyez pas que le chiffrement à froid soit une mesure *suffisante* pour empêcher votre hébergeur d'accéder à vos données : déterminé, il y arrivera - ça lui prendra seulement plus de travail.
**La solution, pour garantir qu'on est seul⋅e à avoir accès à ses données, c'est l'auto-hébergement.**
Les aspects négatifs, c'est que :
* Toutes ces opérations cryptographiques (dé/chiffrement) ont un coût, qui peut être non-négligeable sur un vieil ordinateur disposant d'un processeur hors d'âge.
* Avant chaque démarrage du système, il faut fournir la clé (le mot de passe) qui débloquera les partitions disque (sur lesquelles se trouvent l'OS qu'on espère démarrer et nos données).
**On se demande bien ce qu'on va faire du mot de passe - s'agirait pas de le perdre !**
Des outils comme [clevis](https://github.com/latchset/clevis) existent pour automatiser le déverouillage d'ordinateurs disants, mais c'est hors du cadre de ce tutoriel.
Pour le moment, on se contentera d'installer de quoi déverouiller manuellement le disque à distance (SSH dans initrd).
> TODO
## Chiffrement de la mémoire
Certains processeurs AMD récent disposent d'une fonctionalité de chiffrement à la volée de la mémoire. Cela permet d'éviter - en théorie du moins - les attaques physique per lecture du cotenue de la mémoire. Plus d'informations sont disponible [en anglais dans cet article](https://mricher.fr/post/amd-memory-encryption/).
# Références
* cryptsetup, [Frequently Asked Questions](https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions), Dépôt Gitlab de `cryptsetup`, anglais.
* ADRN, [Guide d'installation de Debian avec chiffrement à froid dans le centre de données Kimsufi](https://plume.deuxfleurs.fr/~/WebTrotter/installing-a-cloud-server-with-full-disk-encryption), Blog Deuxfleurs, avril 2021, anglais.

View file

@ -0,0 +1,424 @@
---
title: Configuration des disques
description: "Redondance, partitionnement, chiffrement : comment configurer ses disques durs en vue d'une installation de serveur"
published: true
date: 2022-04-02T13:38:01.527Z
tags: serveur, infrastructure, sysadmin, technique, administration, chiffrement, disque, partitionnement, redondance
editor: markdown
dateCreated: 2021-12-30T11:39:09.554Z
---
# Configurer les disques de son futur serveur
On part du principe que vous disposez d'un ordinateur, chez vous ou dans un centre de données, et vous êtes prêt⋅e à annihiler le contenu de ses disques pour en faire un beau serveur tout propre. (Il est tout à fait faisable de garder des données existantes sur les disques, mais c'est hors du cadre de cet article.)
On commencera par expliquer comment accéder aux disques pour les configurer, avant de traiter de partitionnement et de redondance (le fait d'écrire la même choses sur plusieurs disques, au cas où l'un d'entre eux casse). Un autre se focalise sur [le chiffrement des disques](/Guide/Infra/Chiffrement_froid), dont le but est que leur contenu soit incompréhensible sans la clé (si vous vous faites voler le disque, ou que votre hébergeur est trop curieux).
## Préliminaire : accéder aux disques
Pour configurer les disques, il faut y avoir accès, comme s'ils étaient des disques durs externes. Donc, pas depuis le système d'exploitation (ou OS pour *operating system*) déjà installé sur la machine : lui, il utilise activement les disques. Mais depuis *un autre OS*. Qui sera Linux, puisqu'il dispose, d'office, de tous les outils pour ce faire, en ligne de commande.
Deux possibilités :
* _Vous disposez d'un accès physique à la machine_, et pouvez donc brancher écran, clavier, et insérer un live CD/USB Linux qui vous permettra de lancer Linux *depuis le live CD/USB*.
Si vous avez déjà installé un OS sur une machine, vous savez de quoi je parle. Sinon, référez-vous au [guide d'utilisation d'un Live CD](/Guide/Infra/Live_CD).
* _Vous n'avez pas accès physiquement à la machine_ (par exemple : elle est dans un centre de données). Auquel cas, le propriétaire de la machine doit avoir prévu le coup : vous devriez pouvoir vous connecter en SSH (ligne de commande à distance) à un *mode rescue* qui vous permettra d'agir sur les disques de la machine alors qu'elle est éteinte. Comment s'y prendre dépend de l'infrastructure logicielle du propriétaire du centre de données.
À partir de maintenant, on considère que vous avez accès aux disques que vous souhaitez configurer *via* la ligne de commande en mode administrateur. Pour vous en assurer, vous pouvez lancer la commande `fdisk -l` (en tant qu'administrateur) ou `lsblk` :
```bash
# fdisk -l
[...]
Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
[...]
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 1.8T 0 disk
sdc 8:32 1 1.8T 0 disk
sda 8:0 0 1.8T 0 disk
```
Comme vous pouvez le voir, je m'apprête à installer mon serveur sur une belle machine avec 3 disques de 2 To (= 1.8 Tio). Miam !
## Préparer son partitionnement
Partitionner un disque, c'est le découper en sous-volumes logiques, appelés partitions.
Un exemple classique de partitionnement, c'est de découper son disque en deux pour disposer *et* de Linux *et* de Windows sur son ordinateur de bureau. Chaque système d'exploitation est installé sur sa partition - et c'est au démarrage qu'on décide si on lance Linux ou Windows aujourd'hui.
Nous, on s'apprète à installer un serveur sous Linux. On ne cherche pas à faire vivre plusieurs OS sur un seul disque, mais plutôt à séparer les données d'un OS dans des partitions distinctes. On va donc se payer le luxe d'expliquer d'abord quelles stockées vont dans quels dossiers sous Linux, puis on parlera de redondance, avant de revenir sur les contraintes du partitionnement. On passera ensuite à [la pratique](#partitionnement-en-pratique).
### Comment sont organisées les données sur Linux
Comprenez d'abord qu'on « montera » un dossier du système Linux dans chaque partition de stockage. Listons donc les dossiers à considérer lors du partitionnement :
* `/`, c'est le dossier qui contient tout le système.
On peut mettre tout le système dans la même partition, mais c'est sous-optimal : imaginons que vous vouliez mettre à jour ou changer votre OS. Le plus simple serait de ne supprimer que les données système en gardant par ailleurs toutes les données utilisateur. Mais avec une seule partition contenant tout `/`, je vous souhaite bon courage pour démêler et transférer toutes ces données utilisateur !
* `/var` contient beaucoup trop de trucs qui ont tendance à manger tout l'espace disque :
* **Les données utilisateur** : la plupart des services (bases de données, Docker, etc.) stockent par défaut tout leur état dans `/var`. On préfèrera configurer nos services pour qu'ils stockent leurs données ailleurs (voir `/data`) pour les démêler des données moins importantes du système.
* **Les journaux d'accès**, stockés par défaut dans `/var/log`. Ce dossier peut croître soudainement de plusieurs Go/jour en cas d'attaque ([DDoS](https://fr.wikipedia.org/wiki/Attaque_par_d%C3%A9ni_de_service), notamment).
Ces **méta-données**, essence du [capitalisme de surveillance](https://www.cairn.info/revue-esprit-2019-5-page-63.htm), décrivent précisément l'activité de vos utilisateurs. Elles sont donc presque aussi précieuses que les données à proprement parler.
On automatise généralement leur suppression périodique ([`logrotate`](https://doc.ubuntu-fr.org/logrotate)), après une **durée de conservation** à définir en fonction de la loi ([6-12 mois en France](https://doc.ubuntu-fr.org/logrotate)) et de vos besoins de journalisation.
* `/data` (ou `/srv` ou autre) : c'est un dossier de notre invention (il n'existe pas par défaut dans Linux) dans lequel on mettra toutes nos **données utilisateur** en configurant les logiciels clients (bases de données, Docker etc.) pour qu'ils stockent leur état dedans.
Ce sont les données **les plus précieuses** de votre serveur, et elles sont sous votre responsabilité : il vous revient d'en assurer la **permanence** (redondance, archivage) et la **[sécurité](https://fr.wikipedia.org/wiki/S%C3%A9curit%C3%A9_des_syst%C3%A8mes_d%27information)** (chiffrement).
Le fait de caler toutes nos données précieuses dans un seul disque facilite la sauvegarde ultérieure.
* `/home` contient les données des opérateurs de la machine. Il peut mériter sa propre partition pour que ces données survivent à une réinstallation.
* Et il y en a encore ! Tapez « partitionnement serveur Linux » dans un moteur de recherche, et vous verrez de vives discussions de tout âge justifier tout et son contraire ([exemple intéressant](https://fr.hotelarbredegel.com/895817-what-is-the-correct-way-TSKMON)).
À part cela, vous aurez sans doute besoin des partitions suivantes :
* Une partition **BIOS/EFI**, qui sert à expliquer à votre BIOS/EFI (le programme qui démarre votre ordinateur) où se situent vos systèmes d'exploitation. Nécessaire pour que le système démarre, donc.
Elle a besoin d'être sur le disque dur principal, et son format (BIOS ou EFI) dépend de l'âge de l'ordinateur (EFI est plus récent). La taille qu'elle doit faire dépend de son format, mais ça ne dépassera jamais 600 Mo.
Si vous non plus, vous n'y comprenez rien, j'ai trouvé [ce guide](https://www.easeus.fr/partition-manager-tips/difference-entre-bios-et-uefi.html) très clair et complet.
* `/boot` contient les données d'amorçage du système, et pèse le plus souvent moins de 200 Mo.
On a besoin de mettre ce dossier dans sa propre partition quand on fait du [Chiffrement à froid](/Guide/Infra/Chiffrement_froid) sur la partition système (`/`), par exemple.
* Une partition `swap`, qui sert de **RAM de secours super lente**.
Très utile si l'on n'a pas beaucoup de RAM, parce qu'elle évite que le serveur ne s'éteigne brutalement dès la limite atteinte. En lieu et place, l'ordinateur fonctionne ô-combien-lentement, mais vous laisse quand même la possibilité de tuer cette saleté de processus qui a mangé toute la RAM, sans avoir à redémarrer.
* **Si vous avez moins de 4 Go de RAM**, c'est un choix prudent que de mettre une partition *swap* de quelques Go. Si vous comptez chiffrer votre disque, assurez-vous de chiffrer la *swap* ! Beaucoup d'informations personnelles pourraient y transiter.
* **Si vous pensez avoir suffisamment de RAM pour ne jamais la remplir**, vous avez moins besoin de *swap*. Néanmoins, le noyau et certains logiciels aiment bien en avoir sous le coude. Donc, si la taille de votre disque n'est pas un problème, n'hésitez pas !
Vous l'aurez compris, il n'y a pas partitionnement parfait, et **c'est à vous de décider de votre schéma de partitionnement**.
**En résumé :**
* Les données les plus précieuses sur un serveur, ce sont les données utilisateur dont vous aurez la responsabilité.
* Les données système & de configuration sont moins importantes parce que (1) un système ça se réinstalle, et (2) vous devriez prendre l'habitude de faire des copies de toute votre configuration.
* Séparer données système & utilisateur, on se remercie de l'avoir fait le jour où on veut réinstaller le système.
* La *swap* c'est important quand on a pas beaucoup de RAM.
### Redondance des données
Parlons maintenant des stratégies qu'on peut mettre en œuvre, quand on dispose de plusieurs disques, pour diminuer le risque de perte de données grâce à la redondance (c'est à dire : le fait de copier une même information à plusieurs endroits à la fois).
**Si vous ne disposez que d'un disque sur votre ordinateur, n'êtes pas concerné⋅e. Vous pouvez passer directement au [partitionnement](#partitionnement-en-pratique).**
La redondance (entre autres) est permise par la technologie [RAID](https://fr.wikipedia.org/wiki/RAID_%28informatique%29) (pour « *Redundant Array of Independent Disks* » ou « ensemble redondant de disques indépendants »). Notez que RAID crée des volumes « logiques » à partir de partitions physiques (des bouts de disques, pas les disques entiers). RAID propose plusieurs architectures, en fonction de ses besoins ; en voici quelques unes :
* [_RAID0_](https://fr.wikipedia.org/wiki/RAID_%28informatique%29#RAID_0_:_volume_agr%C3%A9g%C3%A9_par_bandes) : Permet d'agréger des partitions, pour constituer un plus gros volume logique. Si vous avez 2 disques, disposant chacun d'une partition de 1 To en RAID0, vous disposez d'un volume logique de 2 To. Si un disque meurt, tout le volume est mort. On a donc, ici, multiplié le risque de panne par deux - ce n'est pas de la redondance.
* [_RAID1_](https://fr.wikipedia.org/wiki/RAID_%28informatique%29#RAID_1_:_Disques_en_miroir) : Un volume logique en RAID1 est constitué de partitions (une partition par disque physique) contenant à tout instant les mêmes données : les partitions sont « en miroir ».
* **Taille du volume logique** = taille de la partition la plus petite.
* **Combien tolère-t-on de disques HS avant de perdre des données ?** Tous sauf un.
Si vous avez 3 disques disposant chacun d'une partition de 1 To en RAID1, vous disposez d'un volume logique de 1 To, et vos données survivront tant qu'un des 3 disques survit.
* [_RAID5_](https://fr.wikipedia.org/wiki/RAID_%28informatique%29#RAID_5_:_volume_agr%C3%A9g%C3%A9_par_bandes_%C3%A0_parit%C3%A9_r%C3%A9partie) : Il a besoin d'au moins 3 partitions physiques sous-jacentes. Une des partitions contiendra un « bloc de parité », qui permettra de reconstituer les données si l'on perd n'importe lequel des disques. Les autres partitions contiendront des données.
Considérant un volume RAID5 sur N partitions :
* **Taille du volume logique** = taille de la partition la plus petite x (N-1).
* **Combien tolère-t-on de disques HS avant de perdre des données ?** Un seul.
* [_RAID6_](https://fr.wikipedia.org/wiki/RAID_%28informatique%29#RAID_6), c'est comme RAID5, avec 2 volumes de parité : on tolère la perte de 2 partitions, mais on a moins de stockage. RAID6 nécessite au moins 4 partitions sous-jacentes.
* **Taille du volume logique** = taille de la partition la plus petite x (N-2).
* **Combien tolère-t-on de disques HS avant de perdre des données ?** Jusqu'à deux.
* [_RAID10_](https://fr.wikipedia.org/wiki/RAID_%28informatique%29#RAID_10_(ou_RAID_1+0)) (ou RAID1+0) : on met un RAID0 sur un RAID1. Je vous laisse regarder par vous-même, il faut au moins 4-5 disques pour que ça vaille le coup : c'est pas pour tout le monde.
Que de choix ! Ici aussi, **c'est à vous de trouver un schéma de redondance adapté** à votre matériel et à vos besoins.
### Contraintes de partitionnement ou comment les éviter avec LVM
Le partitionnement c'est chiant : on est limité à un certain nombre de partitions par disque, les partitions doivent être contiguës, modifier un schéma de partitionnement une fois l'OS installé est risqué... Et enfin : **si on veut chiffrer ses données, on ne peut chiffrer qu'une partition à la fois, et ça demande une clé différente par partition !**
Heureusement qu'il y a [LVM](https://doc.ubuntu-fr.org/lvm) ! C'est un outil permettant la création de partitions logiques : donnez-lui une grosse partition (pourquoi pas redondée), et LVM vous permettra de gérer autant de sous-partitions « logiques » (virtuelles) en son sein, affranchies des contraintes listées ci-dessus.
C'est surtout pour nous permettre de chiffrer toute notre installation avec une seule clé qu'il nous est précieux, LVM : on crée une partition immense, avec de la redondance, on la chiffre, on met LVM dessus, et on découpe nos partitions systèmes là-dedans, comme on veut.
Même si vous ne souhaitez pas chiffrer vos données, LVM peut être une bonne idée, parce qu'il offre beaucoup plus de flexibilité que le partitionnement « à l'ancienne » pour pas cher.
## Partitionnement en pratique
Personnellement, aujourd'hui, j'ai deux configurations de serveur à partitionner :
* _3 disques de 2 To_ (machine Bebop) :
* Déjà, je n'ai pas vraiment besoin de *swap* (32 Go de RAM), mais on va en mettre quelques Go quand même.
* Ce serveur étant loué dans un centre de données, je compte chiffrer mes données. Je ne veux pas avoir X clés de déchiffrement (une par partition) à rentrer à chaque démarrage, donc je vais utiliser LVM pour ne créer qu'une seule grosse partition chiffrée (dont LVM gèrera le sous-partitionnement pour mon système).
* J'ai 3 disques, je vais donc pouvoir utiliser RAID5 pour la redondance de cette méga-partition LVM (RAID1 aurait toléré un *crash* de disque de plus, mais j'aurais eu moins d'espace disque).
* Dans LVM, on aura presque 4 To d'espace ! On va faire une partition `/`, une `/home`, une `/var`, une `/data` et la `swap`. Leurs tailles seront facilement adaptables avec LVM à l'usage, donc on s'en fiche à ce stade.
* Le chiffrement va nécessiter un partition `/boot`, pour que je puisse me connecter au serveur et le déchiffrer avant chaque démarrage (cf. [guide du chiffrement à froid](/Guide/Infra/Chiffrement_froid)). La partition `/boot` sera redondée en RAID1.
* Il va me falloir une petite partition d'amorçage BIOS/EFI de quelques Mo.
Graphiquement, ça ressemblera à ça :
![Partitionnement de 3 disques avec partition /boot et LVM](/partitionnement_3_disques_lvm.svg)
* _2 disques de 2 To_ (machines Swordfish & Red Tail) :
* Ici, je mettrai 8 Go de *swap* (seulement 4 Go de RAM).
* Pour le système, on va mettre une méga-partition LVM en RAID1 avec chiffrement, ne disposant que de deux disques.
* `/boot` en RAID1 et une partition BIOS/EFI. Bref, à peu près pareil que pour la configuration avec 3 disques.
En image :
![partitionnement_2_disques_lvm.svg](/partitionnement_2_disques_lvm.svg)
> L'article est en réécriture à partir de ce point !
{.is-warning}
#### BIOS ou EFI ?
Ces deux acronymes sont deux versions du système d'amorçage. Ils démarrent l'ordinateur et vont chercher l'OS à lancer sur disque. BIOS est plus vieux, donc on préfère utiliser EFI quand c'est supporté. (Pour les détails, faudra aller voir ailleurs.)
Pour savoir si votre système supporte BIOS ou EFI ou les deux, lancez la commande `dmidecode | less` en tant qu'administrateur :
```
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
61 structures occupying 2578 bytes.
Table at 0x....
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Intel Corp.
# [...]
Characteristics:
# [...]
BIOS boot specification is supported
UEFI is supported
# [...]
```
Comme vous pouvez le voir, on lit à la fois `BIOS boot specification is supported` et `UEFI is supported`. J'ai donc le choix.
#### Kibioctets (Kio ou KiB) ou Kilooctets (Ko ou KB) ?
Dans les commandes suivantes, j'utiliserai des `KiB` (kibioctets) et non des `KB` (kilooctets). [Cela n'a pas grande importance.](https://forums.commentcamarche.net/forum/affich-24162713-conversion-mo-en-mio)
La notation "kilo, méga..." du système métrique fonctionne en base 10 : « 1 Ko = 1000 (10³) octets ».
En informatique, tout tourne en base 2 : « 1 Kio = 1024 (2¹⁰) octets ».
En conséquence, on a deux notations qui veulent dire presque la même chose : 1 Mio = 1,048576 Mo.
Ça serait quand même plus simple si tout le monde comptait en base 2 !
### Création des partitions sur le Bebop (3 disques)
* On commence par créer les tables de partition de chaque disque, au format GPT :
**Attention, créer une table de partition sur un disque en supprime l'intégralité des données !**
```bash
# ATTENTION, CETTE COMMANDE EFFACE L'ENTIÈRETÉ DE CHAQUE DISQUE
parted -sa optimal /dev/sda mklabel gpt
parted -sa optimal /dev/sdb mklabel gpt
parted -sa optimal /dev/sdc mklabel gpt
```
* Partitionnement de `/dev/sda`, où réside le système :
```bash
# Création de la première partition BIOS, de 1 Mio
# syntaxe : parted -sa optimal [disque] mkpart [nom de la partition] [début] [fin]
# "-s" pour "silent", sinon parted se permet de me poser des questions (le lourd)
# "-a optimal" pour que parted aligne les partitions sur le disque de façon optimale
parted -sa optimal /dev/sda mkpart bios 0% 1MiB
# Seconde partition /boot, 512 Mio
parted -sa optimal /dev/sda mkpart boot 1MiB 513MiB
# Troisième partition /, 100 Gio
parted -sa optimal /dev/sda mkpart system 513MiB 100513MiB
# Dernière partition /home, de 1.5 Tio, alignée à la fin du disque
parted -sa optimal /dev/sda mkpart home 500GiB 100%
# Ajout du drapeau "bios_grub" à la partition BIOS :
# (Permet au BIOS de savoir que cette partition lui est dédiée.)
# syntaxe : parted [disque] set [partition] [drapeau] [état]
parted /dev/sda set 1 bios_grub on
```
Résultat :
```bash
# fdisk -l /dev/sda
Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7DE23465-3A2B-4145-99F3-0A232C2DD37D
Device Start End Sectors Size Type
/dev/sda1 34 2047 2014 1007K BIOS boot
/dev/sda2 2048 1050623 1048576 512M Linux filesystem
/dev/sda3 1050624 205850623 204800000 97.7G Linux filesystem
/dev/sda4 1048576000 3907028991 2858452992 1.3T Linux filesystem
```
* Partitionnement de `/dev/sdb` et `/dev/sdc`, et création du volume logique en RAID1 :
```bash
# Création d'une partition occupant tout l'espace, sur chaque disque
parted -sa optimal /dev/sdb mkpart primary 0% 100%
parted -sa optimal /dev/sdc mkpart primary 0% 100%
# Ajout du drapeau "raid" sur chaque partition nouvellement créée
parted /dev/sdb set 1 raid on
parted /dev/sdc set 1 raid on
# Création du volume RAID1
mdadm --verbose --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# Répondez "y" si on vous emande confirmation.
```
Résultat :
```bash
# fdisk -l
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 44D8D3D8-6EF3-4052-AFB6-850DEED66C81
Device Start End Sectors Size Type
/dev/sdb1 2048 3907028991 3907026944 1.8T Linux RAID
Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A89A5F18-5383-41F8-A8C8-3960E12D9AF2
Device Start End Sectors Size Type
/dev/sdc1 2048 3907028991 3907026944 1.8T Linux RAID
Disk /dev/md0: 1.8 TiB, 2000263577600 bytes, 3906764800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
```
Et pour tout le disque, nous obtenons :
```bash
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part
└─md0 9:0 0 1.8T 0 raid1
sdc 8:32 1 1.8T 0 disk
└─sdc1 8:33 1 1.8T 0 part
└─md0 9:0 0 1.8T 0 raid1
sda 8:0 0 1.8T 0 disk
├─sda4 8:4 0 1.3T 0 part
├─sda2 8:2 0 512M 0 part
├─sda3 8:3 0 97.7G 0 part
└─sda1 8:1 0 1007K 0 part
```
### Création des partitions sur Swordfish & Red Tail (2 disques)
* On commence par créer les tables de partition de chaque disque, au format GPT :
**Attention, créer une table de partition sur un disque en supprime l'intégralité des données !**
```bash
# ATTENTION, CETTE COMMANDE EFFACE L'ENTIÈRETÉ DE CHAQUE DISQUE
parted -sa optimal /dev/sda mklabel gpt
parted -sa optimal /dev/sdb mklabel gpt
```
* Partitionnement des volumes système :
```bash
# partition BIOS, 1 Mio, sur /dev/sda
parted -sa optimal /dev/sda mkpart bios 0% 1MiB
parted /dev/sda set 1 bios_grub on
# partition /boot, 512 Mio, sur /dev/sda
parted -sa optimal /dev/sda mkpart boot 1MiB 513MiB
# partition swap, 8 Gio, sur /dev/sda
parted -sa optimal /dev/sda mkpart swap 513MiB 8513MiB
# partition /, 100 Gio, sur /dev/sda
parted -sa optimal /dev/sda mkpart system 8513MiB 108513MiB
# partition /home, 500 Gio, sur /dev/sdb
parted -sa optimal /dev/sdb mkpart home 0% 500GiB
```
* Création des deux partitions d'1.5 Tio à la fin de chaque disque :
```bash
parted -sa optimal /dev/sda mkpart primary 500GiB 100%
parted -sa optimal /dev/sdb mkpart primary 500GiB 100%
```
* Création du volume logique en RAID1 :
Pour commencer, il ne faut pas se tromper de numéro de partition !
```bash
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 1.8T 0 disk
├─sdb2 8:18 0 1.3T 0 part # <-- futur RAID1
└─sdb1 8:17 0 500G 0 part
sda 8:0 0 1.8T 0 disk
├─sda4 8:4 0 97.7G 0 part
├─sda2 8:2 0 512M 0 part
├─sda5 8:5 0 1.3T 0 part # <-- futur RAID1
├─sda3 8:3 0 7.8G 0 part
└─sda1 8:1 0 1007K 0 part
```
On va mettre le RAID1 sur la **5e** partition du disque `sda`, et sur la **2e** partition de `sdb`.
Il reste seulement à ajouter les drapeaux `raid` sur les deux partitions, avant d'invoquer `mdadm` qui va créer le volume RAID1 :
```bash
parted /dev/sda set 5 raid on
parted /dev/sdb set 2 raid on
mdadm --verbose --create /dev/md0 --level=1 --raid-devices=2 /dev/sda5 /dev/sdb2
```
Et voilà le travail !
```bash
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 1.8T 0 disk
├─sdb2 8:18 0 1.3T 0 part
│ └─md0 9:0 0 1.3T 0 raid1
└─sdb1 8:17 0 500G 0 part
sda 8:0 0 1.8T 0 disk
├─sda4 8:4 0 97.7G 0 part
├─sda2 8:2 0 512M 0 part
├─sda5 8:5 0 1.3T 0 part
│ └─md0 9:0 0 1.3T 0 raid1
├─sda3 8:3 0 7.8G 0 part
└─sda1 8:1 0 1007K 0 part
```
## Installation des systèmes de fichier
C'est magnifique, nous avons des partitions. Mais pour l'instant, elles ne servent à rien : il leur manque un système de fichier pour être utilisables par un système d'exploitation.
Si vous comptez chiffrer les disques de votre futur serveur (ce qu'on recommande chaudement si votre serveur est dans un centre de données), il faut configurer le chiffrement *avant* d'installer un système de fichier. Rendez-vous donc sur le [guide du chiffrement à froid](/Guide/Infra/Chiffrement_froid), où on traitera aussi de l'installation du système de fichier de A à Z : vous avez donc fini ce guide, bravo !
---
Si vous êtes encore là, vous n'avez pas l'intention de chiffrer vos disques. Il ne vous reste donc plus qu'à ajouter ce satané système de fichiers à vos partitions, et vous pourrez enfin installer votre système d'exploitation préféré !
### Oui mais quel système de fichiers ? `ext4` ou `ZFS` ou autre ?
> TODO: ext4 vs. ZFS. [Un guide en anglais](https://nascompares.com/2021/07/21/zfs-vs-ext4-for-nas-what-is-the-difference-in-your-file-system/).
Le système de fi
# Références
* ADRN, [Guide d'installation de Debian avec chiffrement à froid dans le centre de données Kimsufi](https://plume.deuxfleurs.fr/~/WebTrotter/installing-a-cloud-server-with-full-disk-encryption), Blog Deuxfleurs, avril 2021, anglais.

View file

@ -0,0 +1,77 @@
---
title: Nouvelle grappe
description: Guide d'installation d'une grappe de serveurs estampillés Deuxfleurs
published: true
date: 2022-01-09T13:29:29.710Z
tags: installation, serveur, infrastructure, réseau, sysadmin, site géographique, technique, administration
editor: markdown
dateCreated: 2021-12-28T14:33:59.088Z
---
# Création d'une nouvelle grappe
Dans ce guide, nous allons expliquer comment installer une grappe de serveurs, en vue d'un hébergement pour Deuxfleurs.
## Définitions
* _Une grappe_, c'est **un ensemble d'ordinateurs, au moins trois** pour obtenir une grappe bien solide.
Une grappe est **gérée de façon cohérente** (avec le même système logiciel), **plus ou moins autonome** (elle ne dépend pas du reste du monde pour fournir des services web), **par une entité définie** (une personne physique ou un groupe de personnes).
* _L'entité administratrice_ de la grappe a **deux responsabilités** principales : **la maintenance** de la grappe, et **la protection des données hébergées**.
## Choix des ordinateurs
Héberger des services web est une tâche à la portée de la plupart des ordinateurs des 10 dernières années. Néanmoins, essayer de faire tourner correctement des applications lourdes sur une toute petite machine n'est pas une partie de plaisir. Alors, quitte à installer une nouvelle grappe, la vie sera plus agréable si ses machines disposent d'au moins :
* 4 Go de RAM
* 1 To de disque (dur ou SSD)
## Choix d'un site géographique
Dans un *site géographique*, on installe une *grappe d'ordinateurs* au sein d'un *réseau local*, qu'on connecte au cluster de Deuxfleurs.
On peut distinguer deux types de sites :
* _Dans un centre de données_ : chaque ordinateur de la grappe appartient au même centre de données, dispose d'une adresse IP fixe qui le connecte directement à Internet.
Dans ce cas-ci, **l'installation et l'administration sont assez simples** (on a moins de concepts à avaler que chez un particulier).
Par contre, **nous ne sommes pas chez nous** : le propriétaire du centre de données peut accéder aux disques, et voit ce qui passe sur le réseau. **Chiffrement du disque vivement conseillé.**
* _Chez un particulier_ : la grappe est reliée à Internet par une *box*, qui filtre le trafic réseau selon des règles variables. La grappe se partage l'adresse IP de la box (qui peut changer régulièrement, être en IPv4 ou en IPv6).
Dans ce cas de figure, **l'installation comme l'administration demandent plus de connaissances** : pour caricaturer, on doit installer et administrer la grappe **malgré le Fournisseur d'Accès Internet** (FAI), qui considère *a priori* que son abonnement ne sert pas à héberger des services web.
On aura affaire à sa box (NAT, pare-feu...), au manque de garanties concernant notre adressabilité (IPv4 dynamique, IPv6 ? ...), ce qui va nous mener à devoir faire du routage. Le nœud du problème, c'est que chaque ordinateur de la grappe n'aura pas pignon sur rue (pas d'adresse IP publique et fixe par machine).
Néanmoins, **on est chez nous !** Votre disque dur - qui contient les données personnelles de vos usagers chéris - est sous vos yeux, bien au chaud. Le seul curieux qui voit passer votre trafic réseau est votre FAI : *rien de nouveau sous le soleil*.
Dans les deux cas - grâce à [la magie des VPN](/Technique/Infra/Wireguard) - on pourra communiquer sans souci avec le reste du cluster de Deuxfleurs.
**À terme, chez Deuxfleurs, on compte héberger toute notre infrastructure chez des particuliers.** Mais [la route est encore longue](/Technique/Jalons/Interconnexion) avant que nous ayons assez de bonnes connexions et des ordinateurs suffisamment puissants, sans parler du système de gestion logiciel.
Ainsi, **pour le moment, il est tout à fait acceptable d'héberger des services Deuxfleurs en centre de données** : tant qu'on en informe nos usagers et qu'on fait attention à la sécurité.
## Installation des ordinateurs
Pour chaque ordinateur de notre future grappe, nous allons avoir besoin d'en configurer le ou les disques, de les chiffrer éventuellement, et d'installer son système d'exploitation.
### Configuration des disques
La première chose à faire, avant d'installer un système d'exploitation sur un ordinateur, c'est de configurer son ou ses disques. Souhaite-t-on de la redondance (que plusieurs disques stockent la même chose - pour ne pas tout perdre en cas de pépin), et comment veut-on partitionner ses disques ?
Référez-vous au guide [Configuration des disques](/Guide/Infra/Configuration_disques) - on vous attend ici.
### Chiffrement à froid
Une fois nos disques dûment partitionnés, on peut décider de chiffrer nos partitions (c'est même vivement conseillé en cas d'installation dans un centre de données).
Référez-vous au guide [Chiffrement à froid](/Guide/Infra/Chiffrement_froid). pour ce faire.
### Installation de NixOS
Enfin, avec les disques de notre futur serveur tout bien configurés, on peut passer à l'installation du système d'exploitation.
Dans le monde du réseau, il n'y a pas à hésiter : Linux reigne en maître. Chez Deuxfleurs, on utilise la distribution [NixOS](https://nixos.org/).
Référez-vous à notre guide d'[installation de NixOS](/Guide/Infra/Installation_NixOS) pour installer NixOS à notre sauce.

View file

@ -0,0 +1,15 @@
---
title: Installation de NixOS
description: Guide d'installation de NixOS, pour avoir des systèmes d'exploitation configurés à l'identique dans notre cluster
published: true
date: 2021-12-30T12:10:36.753Z
tags: installation, serveur, infrastructure, sysadmin, technique, guide, tutoriel, administration, nixos, linux
editor: markdown
dateCreated: 2021-12-30T12:10:34.730Z
---
# Installer NixOS sur son futur serveur
Chez Deuxfleurs, on essaye d'avoir la même configuration sur tous nos ordinateurs, pour en faciliter l'adminitration. Mission impossible ? Non, pas avec [NixOS](https://nixos.org/) ! Cette distribution Linux - complètement maniaque de la *reproductibitilité* - garantit l'identité à l'octet près de configurations système - et ce, grâce à de simples fichiers de configuration.
> TODO

View file

@ -0,0 +1,49 @@
---
title: Live CD
description: Guide à la création et à l'utilisation d'un Live CD (ou USB) Linux
published: true
date: 2021-12-30T15:23:52.320Z
tags: installation, infrastructure, sysadmin, technique, guide, tutoriel, linux, live cd, live usb
editor: markdown
dateCreated: 2021-12-30T15:23:50.137Z
---
# Création et utilisation d'un Live CD/USB
On utilise un Live CD (ou Live USB - le support de stockage important peu) pour lancer un système d'exploitation (celui présent dans le support de stockage) sur un ordinateur, sans toucher aux disques présents dans l'ordinateur.
Utiliser un Live CD, c'est la base pour configurer les disques d'une machine, installer un système d'exploitation (OS) dessus, accéder au disque quand on ne connaît pas le mot de passe administrateur. Bref, c'est la vie !
Ce guide se décompose ainsi :
* On commence par expliquer comme obtenir une *image disque* ou ISO. Elle contient le système qu'on va mettre sur le Live CD.
* On explique comment *flasher* l'ISO obtenue sur le support de stockage de notre choix (CD, USB, carte SD, disque dur externe : ce que vous avez sur la main, tant que c'est capable de contenir l'ISO et connectable à l'ordinateur cible). *Flasher*, c'est le verbe classe pour dire « copier l'image disque sur le support de stockage » (avouez que ça claque).
* On découvre les arcanes du BIOS, ce mini-OS présent sur la carte-mère de l'ordinateur et dont le rôle (entre autres) est de savoir quel système démarrer aujourd'hui. Dans notre cas, on veut démarrer sur le Live CD, ce qu'il faudra donc expliquer à notre ami le BIOS.
* Et ça démarre !
## Obtention d'une image disque
Avant toute chose, il faut choisir quelle *distribution* de Linux on va mettre sur le Live CD. Une distribution Linux, c'est une *variante* de Linux. Parce qu'en fait, Linux en lui-même n'est qu'un *noyau* (*kernel* en anglais), pas tout à fait un OS. Il y a donc [mille et unes distributions de Linux](http://distrowatch.org/?language=FR), qui ont toutes leurs avantages et inconvénients.
Vous connaissez peut-être de nom les distributions Ubuntu, Debian, Fedora, Manjaro...
Nous, chez Deuxfleurs, on utilise la distribution NixOS (parce qu'elle garantit des configurations identiques entre machines, ce qui nous est très utile). On présentera donc comment générer une ISO pour Live CD NixOS. On présentera aussi comment télécharger une ISO de Debian, parce que c'est moins farfelu, très fiable, et que ça fait un bon système de bureau (si d'aventure, vous aviez envie d'utiliser Linux comme OS principal !).
### NixOS
> TODO
### Debian
> TODO
## Installation de l'ISO sur le support de stockage
> TODO
## Démarrer l'ordinateur sur l'OS du Live CD
> TODO
## Et pour finir, on a un système d'exploitation qui marche !
> TODO (screenshots?)

View file

@ -0,0 +1,6 @@
+++
title = "Se former"
description = "Se former"
weight = 30
+++

View file

@ -0,0 +1,6 @@
+++
title = "Infrastructures"
description = "Infrastructures"
weight = 90
+++

View file

@ -0,0 +1,75 @@
---
title: Énergie
description: Consommation électrique
published: true
date: 2021-11-09T12:54:33.129Z
tags:
editor: markdown
dateCreated: 2021-11-09T12:54:30.985Z
---
# Notre avis
Aujourd'hui Google se targue d'utiliser 100% d'énergie renouvelable (EnR) dans ses datacenters, rendant toute alternative inutile ? Pas si vite, la comparaison n'est pas simple : les énergies renouvelables ne produisent pas en permanence, le nucléaire est peu carbonné, les éoliennes ont une durée de vie courte et génèrent des rejets lors de leur fabrication, etc.
Bien que l'on pourrait faire de longues comparaisons, nous pensons que les enjeux sont ailleurs : dans les usages et le renouvellement du matériel. En effet, il faut utiliser 48 ans un ordinateur pour qu'il émette autant de carbone via sa consommation électrique en France qu'il en a nécessité pour sa fabrication. Et ça vaut également pour les smartphones et les serveurs. En sachant qu'un téléphone est renouvellé en moyenne tous les deux ans, qu'un ordinateur probablement tous les 5 ans ou moins et que les serveurs sont souvent renouvellés en entreprise à l'expiration de leur garantie, dans les 5 ans donc, les appareils numériques polluent avant tout lors de leur fabrication. À celà s'ajoute de nombreux gadgets vendus par les GAFAM comme les assistants personnels, les montres connectés, etc. qui eux aussi génèrent de la pollution lors de leur fabrication et à l'usage.
**Nous choisissons donc de créer nos propres infrastructures en réponse pour agir efficacement là où ça compte : moins de matériel, renouvellé moins souvent.
Nous proposons donc des services standards et sobres et compatibles avec vos appareils existants.
De notre côté, nous utilisons longtemps nos serveurs achetés d'occasions et minimisons leur nombre**.
D'où sont tirées ces infos ? Vous voulez en savoir plus ? C'est par ici :
- [Le numérique carbure au charbon (Monde Diplomatique, mars 2020, payant)](https://www.monde-diplomatique.fr/2020/03/BROCA/61553)
- [Brochure de l'article (accès libre)](https://tarage.noblogs.org/post/2020/02/26/le-numerique-carbure-au-charbon-sebastien-broca/)
- [Miroir local de la brochure (accès libre)](/assets/infra/charbon.pdf)
- [Quelle est lempreinte carbone dun ordinateur ? (Green IT, février 2011, accès libre)](https://www.greenit.fr/2011/02/10/quelle-est-l-empreinte-carbone-d-un-ordinateur/)
# Évaluation empirique de notre consommation
(Quentin, atuin.site) Durant l'épidémie SARS-COV-2, mon appartement était vide durant un mois.
L'occasion d'estimer au plus près la consommation énergétique de mes composants à partir de la facture EDF.
Mes composants allumés durant ce mois :
* Un réfrigérateur demi taille sous le plan de travail
* Une freebox mini 4k
* Un switch netgear
* 3 Lenovo Thinkcentre M82
La facture d'avril 2020 me donne :
* 87 kWh pour 23€
On rappelle `P = E / t`
Sur un mois on a donc `P [en W] = E [en kWh] * 1000 / (30 [en jours] * 24 [en heures/jours])`
Autrement dit : `P = E * 1.388889` et `E = P / 1.38889`
On estimera également à partir d'une recherche rapide sur interne que le réfrigérateur consomme environ 120 kWh par an, donc 10 kWh par mois.
Quelques déductions :
* Prix du kWh : 0,26€
* Énergie par mois dédiée pour deuxfleurs.fr : 77 kWh
* Consommation instantanée équivalente : 106 W
* Coût en électricité : 20€
Selon Maximilien, quelques puissances indicatives :
* Un PC de bureau c'est entre 25 et 30 W
* Son serveur Dell R710 c'est environ 100 W en *idle*
* Un routeur haut de gamme c'est 13 W
Ces données sont bien cohérentes avec les résultats précédents.
On peut estimer le coût en électricité de chacun de ces appareils au passage (considérant qu'ils restent allumés le mois entier) :
* Un Dell R710 : 100W -> 19 €/mois
* Une tour type Lenovo Thinkcentre M82 : 28 W -> 5,2 €/mois
* Un routeur ou un switch : 10 W -> 1,9 €/mois
Pour continuer la réflexion, il serait intéressant d'étudier la consommation des serveurs à base ARM considérant notre charge.
Cependant, avoir des tours semble être plus pertinent que des serveurs pro qui consomment toujours beaucoup comparés à une tour (bien que les performances ne soient pas comparables, bien entendu).
Idéalement, avoir des mesures directement sur les équipement permettrait d'avoir des mesures plus solides et pouvoir mieux identifier les équipements énergivores.
**Moins cher dans un datacenter ?** - Scaleway et OVH proposent des VPS à des prix compétitifs (à partir de 3 €/mois). Mettre une vieille machine en auto-hébergement peut donc couter plus cher en électricité que louer une machine chez eux. En se focalisant seulement sur ces deux points, on pourrait identifier un point de bascule puissance/énergie à partir duquel il devient plus intéressant de s'auto-héberger que d'externaliser. Avec les Lenovo Thinkcentre M82 des machines qui ont 5 ans, on est à peine gagnant : pour 5€ d'électricité par mois, une machine équivalente en *bare metal* en location dans un datacenter coûte dans les 10€ à 15€. Mais même la, la différence de prix reste faible. Je vois deux explications :
* du matériel qui consomme moins
* de l'électricité moins chère.
**On consomme plus alors ?** - Pour avoir une approche écologique, il nous faudrait donc comparer la consommation des serveurs et non les prix finaux pratiqués par les hébergeurs. Et pour comparer le renouvellement du matériel, il faudrait comparer la consommation énergétique sur la durée de vie complète de l'appareil en y incluant **sa frabrication**.
À mon avis le bilan écologique de l'auto-hébergement n'est pas pire qu'en datacenter et pourrait même être meilleur...

View file

@ -0,0 +1,253 @@
---
title: Machines
description: Machines
---
Un site est constitué de l'ensemble du matériel à un lieu donné géré par une (ou plusieurs) personne donnée.
Le lieu géographique peut évoluer dans le temps, comme par exemple lors d'un déménagement.
Le nommage du site est donc arbitraire, nous recommandons le choix d'un corps céleste, tout aussi étrange soit-il.
Ce découpage en sites est important pour certaines de nos applications.
![inframap.jpg](/inframap.jpg)
# Production
## 🐢 atuin.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Alex et Quentin |
| Hébergement | 🏡 Erwan |
| Région | Bretagne |
| FAI | Free - 1Gbps, ✅ IPv4 publique, ✅ IPv4 fixe, ✅ IPv6 publique, ✅ IPv6 fixe, ✅ SMTP, ❌ Reverse DNS |
Liste du matériel :
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| Lenovo Thinkcentre M82 | Serveur | x3 | Intel G3420 @ 3.20GHz (2 cœurs), 8Go RAM, 128GB SSD, 1TB HDD | ![photo serveur](/img/infra/lenovo.jpg =x100)
| Freebox Mini 4k | Routeur | x1 | 4 ports @ 1Gbit/s, WAN Fibre 1 Gbit/s symétrique |![photo freebox](/img/infra/fbx.jpg =x70)
Services hébergés :
| Service | Description |
| -- | -- |
| [deuxfleurs.fr](https://deuxfleurs.fr) | Site principal de Deuxfleurs |
| [garagehq.deuxfleurs.fr](https://garagehq.deuxfleurs.fr) | Site web de Garage |
| [Synapse](https://im.deuxfleurs.fr) | Serveur Matrix |
| [Element](https://riot.deuxfleurs.fr) | Client web pour Matrix |
| [Jitsi](https://jitsi.deuxfleurs.fr) | Service de visioconférence |
| [SoGo](https://sogo.deuxfleurs.fr) | Client mail SoGo |
| [Alps](https://alps.deuxfleurs.fr) | Client mail Alps (plus léger) |
| [Plume](https://plume.deuxfleurs.fr) | Blog collaboratif et fédéré |
| [Platôo](https://platoo.deuxfleurs.fr) | Jeux de plateau en ligne |
| [Drone](https://drone.deuxfleurs.fr) | Serveur d'intégration continue |
| [Garage](https://garage.deuxfleurs.fr) | Serveur de stockage de données |
## ♆ neptune.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Alex |
| Hébergement | 🏡 Alex |
| Région | Île-de-France |
| FAI | Free - ✅ IPv4 publique, ✅ IPv4 fixe, ✅ IPv6 fixe, ✅ IPv6 publique, (✅) SMTP, ❌ Reverse DNS |
Liste du matériel ([photo](/img/infra/neptune.jpg)) :
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| ThinkCentre M73 Tiny | Serveur | x1 | 4 cœurs, 8Go RAM, SSD 120Go | ![m73tiny.jpg](/infra/m73tiny.jpg =x70) |
| ThinkCentre M73 Tiny | Serveur | x2 | 4 cœurs, 8Go RAM, SSD 240Go | ![m73tiny.jpg](/infra/m73tiny.jpg =x70) |
| ThinkCentre M73 Tiny | Serveur | x3 | 2 cœurs, 8Go RAM, HDD 500Go | ![m73tiny.jpg](/infra/m73tiny.jpg =x70) |
| D-Link DGS-108gl | Switch | x1 | 8 ports gigabit ethernet | N/A |
| Freebox Mini 4k | Routeur | x1 | N/A | ![photo freebox](/img/infra/fbx.jpg) |
Services hébergés :
| Service | Description |
| -- | -- |
| Garage | Noeuds du cluster de production |
| Wireguard, Nomad, Consul | Cluster multi-site de test |
| Garage | Noeuds du cluster de test (staging) |
| Drone (runner) | Worker pour l'intégration continue |
# Surveillance & Sauvegardes
## ✉️ mercure.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Quentin et Maximilien |
| Hébergement | 🏡 Maximilien |
| Région | Île-de-France |
| FAI | Free 10Gbps/700Mbps - ✅ IPv4 publique, ✅ IPv4 fixe, ✅ IPv6 fixe, ✅ IPv6 publique, ❌ SMTP, ❌ Reverse DNS |
Liste du matériel :
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| [Microtik RB4011iGS+RM](https://mikrotik.com/product/rb4011igs_rm) | Routeur | x1 | Routeur et pare-feu, ports 1x10G SFP+ et 10x1G | ![mikrotik.jpg](/infra/mikrotik.jpg =x100) |
| Serveur Dell R710 | Hyperviseur | x3 | 2 socket, Xeon E5520 (4c8t @ 2.26Ghz), 80Go RAM, 500GB NVMe, 1TB RAID matériel, réseau LACP 2x1G | ![dellr710.jpg](/infra/dellr710.jpg =x70) |
| metro.mercure.site | LXC | x1 | 2 CPU, 2Go RAM, 25 GB NVMe | N/A |
| bkp.mercure.site | VM | x1 | 4 vCPU, 8Go RAM, 40 GB Block Storage | N/A |
Services hébergés :
| Service | Description |
| -- | -- |
| [Grafana](https://grafana.home.mricher.fr) | Interface de monitoring de l'infrastructure |
| `ssh bkp.mercure.site` | Target de backups (Consul) |
| s3.deuxfleurs.shirokumo.net | Target de backups restic |
# Développements & Tests
## ☁️ bespin.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Quentin et Maximilien |
| Hébergement | 🏡 Maximilien |
| Région | 🇧🇪 Belgique |
| FAI | Telenet 1Gbps/40Mbps - ✅ IPv4 publique, (✅) IPv4 fixe, (✅) IPv6 fixe, ✅ IPv6 publique, ❌ SMTP, ❌ Reverse DNS |
Liste du matériel :
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| Tour recyclé en NAS | Hyperviseur Proxmox | x1 | i5-3570k (4c@4.3Ghz), 16Go RAM, 500Go SSD RAID1, HDD RAID6 14Tio | ![p280_front.jpg](/infra/p280_front.jpg =x70) |
| ThinkCentre M73 Tiny | Serveur | x1 | `df-pw5` G1840T 2c@2.50GHz, 8Go RAM, HDD 500Go | ![m73tiny.jpg](/infra/m73tiny.jpg =x70) |
| ThinkCentre M710q | Serveur | x3 | `df-ymf`, `df-ymk`, `df-ykl` G3930T 2c@2.70GHz, 8Go RAM, HDD 500Go, SSD NVMe 500Go | ![m710q.jpg](/infra/m710q_front_and_back.jpg =x90) |
| Service | Description |
| -- | -- |
| Drone (runner) | Worker pour l'intégration continue |
## ♃ jupiter.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Jill, Alex et Quentin |
| Hébergement | 🏡 Jill |
| Région | Bretagne |
| FAI | Free - (✅) IPv4 publique, (✅) IPv4 fixe, ✅ IPv6 fixe, ✅ IPv6 publique, (✅) SMTP, ❌ Reverse DNS |
Liste du matériel :
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| Tour un peu vieille | Serveur | x1 | 4 cœurs, 4Go RAM, SSD 250Go + HDD 2To | [ici](/img/infra/io.jpg) |
| Freebox | Routeur | x1 | N/A | N/A |
Services hébergés :
| Service | Description |
| -- | -- |
| Garage | Serveur de stockage de données |
## 🤖 aurora.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Quentin |
| Hébergement | 🏡 Quentin |
| Région | Rhône-Alpes |
| FAI | Free - 1Gbps, ❌ IPv4 publique, ✅ IPv4 fixe, ✅ IPv6 publique, ✅ IPv6 fixe, ✅ SMTP, ❌ Reverse DNS |
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| Packard Bell EasyNote BG46 (2007) | Serveur | x1 | Intel T5750 @ 2.00Ghz (2 cœurs), 3Go RAM, HDD 500Go | ![easynotebg46.jpg](/infra/easynotebg46.jpg =x150) |
| Freebox Mini 4k | Routeur | x1 | 4 ports @ 1Gbit/s, WAN Fibre 1 Gbit/s symétrique |![photo freebox](/img/infra/fbx.jpg =x70)
Services hébergés :
| Service | Description |
| -- | -- |
| Drone (runner) | Worker pour l'intégration continue |
## ♇ pluton.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Adrien et Alex |
| Hébergement | 🏡 Adrien |
| Région | Hauts de France |
| FAI | ???? - ADSL, ❌ IPv4 publique, ✅ IPv4 fixe, ❌ IPv6 publique, ❌ IPv6 fixe, ❌ SMTP, ❌ Reverse DNS |
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| ? | Serveur | x1 | Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz, 4Go RAM, HDD 1To | N/A |
Services hébergés :
| Service | Description |
| -- | -- |
| Wireguard, Nomad, Consul | Cluster multi-site de test |
# En datacenter
## ⚔️ mars.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Adrien (et Quentin) |
| Hébergement | 🏢 Kimsufi (filiale d'OVH) |
| Région | Hauts-de-France |
| FAI | Gandi - ✅ IPv4 publique, ✅ IPv4 fixe, ❓ IPv6 publique, ❓ IPv6 fixe, ❓ SMTP, ❓ Reverse DNS |
Liste du matériel :
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| VPS | Serveur | x1 | 1 vCPU, 3Go RAM, 70 GB Block Storage | N/A |
Services hébergés :
| Service | Description |
| -- | -- |
| [Gitea](https://git.deuxfleurs.fr) | Forge logicielle |
## 🪐 saturne.site
Informations générales :
| Caractéristiques | Détails |
| --: | :-- |
| Administration | Alex |
| Hébergement | 🏢 Kimsufi (filiale d'OVH) |
| Région | Hauts-de-France |
| FAI | OVH - ✅ IPv4 publique, ✅ IPv4 fixe, ✅ IPv6 publique, ✅ IPv6 fixe, ✅ SMTP, ✅ Reverse DNS |
Liste du matériel :
| Désignation | Rôle | Quantité | Détails | Image |
| -- | -- | -- | -- | -- |
| Kimsufi | Serveur | x1 | Intel Atom N2800 @ 1.86Ghz (4 cœurs), 4Go RAM, 2TB HDD, réseau 100Mbit/s | N/A |
Services hébergés :
| Service | Description |
| -- | -- |
| [Cryptpad](https://p.adnab.me) | Suite bureautique chiffrée de bout en bout |

View file

@ -0,0 +1,98 @@
---
title: Réseau
description: Réseau
published: true
date: 2021-11-09T12:55:03.277Z
tags:
editor: markdown
dateCreated: 2021-11-09T12:55:01.156Z
---
Cette page regroupe un résumé de tous les problèmes que vous pourriez rencontrer en voulant faire de l'auto hébergement avec "votre connexion internet".
## Côté Opérateur
### Congestion
#### Congestion sur la livraison
Entre janvier et mars, les serveurs hébergés derrière une connexion Free ont eu des problèmes en soirée.
Le problème a été résolu depuis.
Plus d'informations ici : https://www.aduf.org/viewtopic.php?t=286599&start=0
#### Congestion liée au peering
*À compléter*
### Adressage
#### Pas d'IPv4 publique
Certains FAI ne donnent pas d'IPv4 publique du tout (même pas au niveau du routeur).
À la place, ils mettent en place un NAT nommé carrier-grade NAT que vous ne pouvez pas configurer.
Parfois, il suffit de les appels.
Exemple : Ora/Viti en Polynésie française
#### Pas d'IPv6 du tout
FAI connus pour ne pas proposer d'IPv6 :
* SFR/FTTH
#### IPv6 de mauvaisee qualité
*Ajouter des explications à propos du tunneling*
#### Adresse IP publique dynamique
FAI connus pour proposer une adresse IP publique dynamique :
* Orange/ADSL (rotation quotidienne et à chaque resynchro)
* Orange/FTTH (rotation ~1 fois/mois)
### Autre
#### Blocage du port 25 en sortie (impossibilité d'héberger un serveur email)
* Débloquable chez Free/\* dans l'interface (gratuit)
* Bloqué chez Orange/\* (sauf à passer sur une offre pro et encore...)
* Débloqué chez SFR/FTTH
* Débloqué chez Numéricable/Coaxial
* Inconnu chez Bouygues/\*
#### Reverse DNS
*Expliquer pourquoi c'est utile*
* Orange : Ne propose pas de configurer le reverse
* SFR : Inconnu, probablement que non
* Numéricable : Inconnu, probablement que non
* Bouygues : Inconnu, probablement que non
* Free : Oui mais service cassé dans certains cas (récupérations d'IPv4)
## Chez vous
### Votre routeur ("box")
#### NAT hairpinning
Vous avez besoin du NAT hairpinning pour accéder aux services publics que vous proposez derrière un NAT depuis le réseau interne du serveur. Typiquement quand vous n'avez que de l'IPv4 et qu'une seule IP publique portée par votre routeur.
*Ajouter de la doc sur le NAT hairpinning*
Routeurs connus pour avoir des problèmes de NAT hairpinning :
* Orange : Probablement toutes les box
* Livebox 2 Sagem
* Livebox 4 Sagemcom
* Bouygues : Suspicions sur toutes les box
* Free : 100% OK
* Numéricable : Inconnu
* SFR : Inconnu
#### Problèmes de qualité du routeur
*À compléter*

View file

@ -1,48 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1592727113403" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1137" width="100" height="100" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css">@font-face { font-family: "Leelawadee UI Web"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Leelawadee UI Web"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Leelawadee UI Web"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Leelawadee UI Web"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Arabic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Arabic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Arabic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Arabic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-arabic/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Cyrillic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Cyrillic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Cyrillic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Cyrillic)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-cyrillic/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (East European)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (East European)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (East European)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (East European)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-easteuropean/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Greek)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Greek)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Greek)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Greek)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-greek/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Hebrew)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Hebrew)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Hebrew)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Hebrew)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-hebrew/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Vietnamese)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Vietnamese)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Vietnamese)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Vietnamese)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-vietnamese/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (West European)"; src: local("Segoe UI Light"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (West European)"; src: local("Segoe UI SemiLight"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (West European)"; src: local("Segoe UI"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (West European)"; src: local("Segoe UI SemiBold"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-westeuropean/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/selawik/selawik-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Armenian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Armenian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Armenian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Armenian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-armenian/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Georgian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-light.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-light.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Georgian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-semilight.woff") format("woff"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Georgian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-regular.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-regular.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Segoe UI Web (Georgian)"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-semibold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/segoeui-georgian/segoeui-semibold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Leelawadee UI Web"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-semilight.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-semilight.woff") format("woff"); font-weight: 100; font-style: normal; font-display: swap; }
@font-face { font-family: "Leelawadee UI Web"; src: url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-bold.woff2") format("woff2"), url("https://static2.sharepointonline.com/files/fabric/assets/fonts/leelawadeeui-thai/leelawadeeui-bold.woff") format("woff"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: FabricMDL2Icons; src: url("fabric-icons.woff") format("woff"); }
</style></defs><path d="M642.7 847.4l-79.2-31.3c-8-3.2-13.2-10.1-13.3-17.8L547 559.7h-70l-3.2 238.6c-0.1 7.7-5.3 14.7-13.3 17.8l-79.2 31.3c-18.7 7-22.7 26-7.1 37.5 34.6 25.5 85.8 33.6 137.7 33.4 51.9 0.2 103.1-7.9 137.7-33.4 15.7-11.5 11.8-30.5-6.9-37.5z" fill="#FFFFFF" p-id="1138"></path><path d="M513.9 928.3h-4c-62.1 0-109.8-11.9-141.7-35.3-10.1-7.4-15-18-13.5-28.9 1.6-11.5 10.1-21.2 22.9-26l79.1-31.3c4.2-1.7 6.9-5.1 7-8.7l3.2-238.6c0.1-5.5 4.5-9.9 10-9.9H547c5.5 0 9.9 4.4 10 9.9l3.2 238.6c0 3.6 2.8 7 7 8.7l79.1 31.3c12.7 4.8 21.3 14.5 22.9 26 1.5 10.9-3.4 21.5-13.5 28.9-31.9 23.4-79.6 35.3-141.8 35.3z m-1.9-20h1.9c57.9 0 101.6-10.6 129.9-31.4 4.1-3 6-6.6 5.5-10.1-0.6-4.1-4.4-7.9-10.2-10-0.1 0-0.1 0-0.2-0.1l-79.2-31.3c-11.8-4.6-19.5-15.2-19.6-27L537 569.7h-50.2l-3.1 228.7c-0.2 11.8-7.9 22.3-19.6 27L385 856.7c-0.1 0-0.1 0-0.2 0.1-5.8 2.2-9.6 5.9-10.2 10-0.5 3.5 1.5 7.1 5.5 10.1 28.7 21.1 73 31.7 131.9 31.4z" fill="#543630" p-id="1139"></path><path d="M521.9 675.2s-1.1 79.2-1.1 133.1c0 33 49 42.7 48.4 56.1-1.1 24.2-132 28.6-177.1 16.5-34-9.1-12.8 9.2 0.2 15 13 5.9 132 43 212.8 10.7 80.8-32.3 50.3-55.4 42.3-57.1-50.3-10.6-90.8-24.9-93.5-52.3-4.5-45-8.9-119.8-32-122z" fill="#EFE7DA" p-id="1140"></path><path d="M513.9 928.3h-4c-62.1 0-109.8-11.9-141.7-35.3-10.1-7.4-15-18-13.5-28.9 1.6-11.5 10.1-21.2 22.9-26l79.1-31.3c4.2-1.7 6.9-5.1 7-8.7l3.2-238.6c0.1-5.5 4.5-9.9 10-9.9H547c5.5 0 9.9 4.4 10 9.9l3.2 238.6c0 3.6 2.8 7 7 8.7l79.1 31.3c12.7 4.8 21.3 14.5 22.9 26 1.5 10.9-3.4 21.5-13.5 28.9-31.9 23.4-79.6 35.3-141.8 35.3z m-1.9-20h1.9c57.9 0 101.6-10.6 129.9-31.4 4.1-3 6-6.6 5.5-10.1-0.6-4.1-4.4-7.9-10.2-10-0.1 0-0.1 0-0.2-0.1l-79.2-31.3c-11.8-4.6-19.5-15.2-19.6-27L537 569.7h-50.2l-3.1 228.7c-0.2 11.8-7.9 22.3-19.6 27L385 856.7c-0.1 0-0.1 0-0.2 0.1-5.8 2.2-9.6 5.9-10.2 10-0.5 3.5 1.5 7.1 5.5 10.1 28.7 21.1 73 31.7 131.9 31.4z" fill="#543630" p-id="1141"></path><path d="M360 119.7c-21.7 0-41.4 12.8-50.3 32.7-31 69.4-84.3 221.3-84.3 289.7 0 152.2 120.5 238.2 286.6 238.2s286.6-86 286.6-238.2c0-69.3-53.3-220.2-84.3-289.7-8.9-19.8-28.5-32.7-50.3-32.7H360z" fill="#FFFFFF" p-id="1142"></path><path d="M512 690.2c-85.8 0-159.1-22.2-211.8-64.2-55.5-44.2-84.8-107.8-84.8-184 0-39.7 16.8-102 31-147.4 19-61 40.5-115.6 54.2-146.4 10.5-23.4 33.8-38.6 59.4-38.6h304c25.6 0 48.9 15.1 59.4 38.6 29.7 66.5 85.2 220.9 85.2 293.7 0 76.2-29.3 139.8-84.8 184-52.7 42.1-126 64.3-211.8 64.3zM360 129.7c-17.7 0-33.9 10.5-41.1 26.7-17 38-37.9 94.6-53.4 144.1-19.4 62.3-30.1 112.5-30.1 141.5 0 69.9 26.7 128.1 77.2 168.3 49.2 39.1 118.1 59.8 199.3 59.8s150.2-20.7 199.3-59.8c50.5-40.2 77.2-98.4 77.2-168.3 0-29.8-10.4-78.8-30.1-141.8-18.6-59.6-39.8-113.3-53.4-143.8-7.3-16.2-23.4-26.7-41.1-26.7H360z" fill="#543630" p-id="1143"></path><path d="M250.8 314.7c-14.6 49.3-25.3 96.7-25.3 127.3 0 152.2 120.5 238.2 286.6 238.2s286.6-86 286.6-238.2c0-31-10.7-78.3-25.2-127.3H250.8z" fill="#FFD527" p-id="1144"></path><path d="M512 690.2c-85.8 0-159.1-22.2-211.8-64.2-55.5-44.2-84.8-107.8-84.8-184 0-19.8 4.5-58.4 25.7-130.2 1.3-4.2 5.2-7.2 9.6-7.2h522.6c4.4 0 8.3 2.9 9.6 7.2 11.7 39.4 25.6 93.9 25.6 130.2 0 76.2-29.3 139.8-84.8 184-52.6 42-125.9 64.2-211.7 64.2zM258.3 324.7c-14.9 51.5-22.8 92-22.8 117.3 0 69.9 26.7 128.1 77.2 168.3 49.2 39.1 118.1 59.8 199.3 59.8s150.2-20.7 199.3-59.8c50.5-40.2 77.2-98.4 77.2-168.3 0-25.6-7.8-66.1-22.7-117.3H258.3z" fill="#543630" p-id="1145"></path><path d="M374 558.7c-3.1 0-6.3-1-9-3-33-24.6-50.3-60.8-50.2-104.5 0.1-32.1 9.7-57 10.2-58 3-7.7 11.7-11.5 19.4-8.5 7.7 3 11.5 11.7 8.5 19.4-0.1 0.3-8.2 21.6-8.1 48.2 0.1 33.9 12.9 60.6 38.1 79.4 6.6 5 8 14.4 3 21-2.8 3.9-7.3 6-11.9 6z" fill="#FFFFFF" p-id="1146"></path><path d="M768.3 324.4H254.6c-5.5 0-10-4.5-10-10s4.5-10 10-10h513.7c5.5 0 10 4.5 10 10s-4.5 10-10 10z" fill="#543630" p-id="1147"></path></svg>

Before

Width:  |  Height:  |  Size: 21 KiB

105
content/operations/Jitsi.md Normal file
View file

@ -0,0 +1,105 @@
---
title: Jitsi
description:
published: true
date: 2021-11-09T12:53:23.811Z
tags:
editor: markdown
dateCreated: 2021-11-09T12:46:50.731Z
---
## 2020-04-02 Campagne de debug Jitsi
Contact: Quentin
### Description du problème
Les conversations à 3+ donc relayées par le serveur ne fonctionnent pas bien.
Louison m'a rapporté que ça avait marché pour lui (3 utilisateurs avec un Webkit).
Mais moi ça a échoué hier soir (01/04/2020) avec des participants sous Firefox.
Le bug est toujours le même : on entend 2 personnes sur 3 ou on voit 2 personnes sur 3, on recharge la page et c'est quelqu'un d'autre pour qui ça ne fonctionne plus. Souvent c'est que dans un sens.
À chaque fois en passant sur Facebook Messenger, le problème est résolu instantanément.
Par contre Facebook Messenger impose Google Chrome/Chromium pour les visio de groupe (et ne supporte donc pas Firefox).
D'où mes 2 suspicions :
- Firefox a un bug quelconque dans sa pile WebRTC déclenché par le mode conversation de groupe
- Jitsi a un problème avec les déconnexions/changement de connexion/petit hoquets du réseau et n'arrive pas à se reconnecter. Ça pourrait être rendu pire à certain moment de la journée comme le soir où le réseau est plus sollicité. Et ce serait provoqué lors du reload on repasse de 3 à 2, en P2P donc puis de nouveau de 2 à 3.
### Approfondissement
Avant d'aller plus loin, nous avons voulu prendre le temps d'identifier précisément les problèmes d'expérience utilisateurs et leur corrélation avec la plateforme de l'utilisateur (navigateur, OS).
Pour celà, nous avons suivi deux approches :
1. Mener nos propres tests
2. Chercher d'autres retours
#### Mener nos propres tests
Nous avons effectué deux appels : un avec Firefox seulement et un avec Chrome/Chromium seulement.
Merci à Alex, Adrien et Maximilien pour leur participation.
Voilà les conclusions que nous avons tirées de nos tests :
- L'appel avec Firefox a déclenché le bug immédiatement, peu importe la version de Firefox ou de l'OS (firefox stable/nightly, fedora stable/beta, etc.)
- Le passage de tout le monde sous Chrome/Chromium a permis d'avoir une conversation stable.
- Adrien avait sa Livebox avec pare-feu configuré en mode "élevé" et a dû ajouter dans sa liste blanche les ports utilisés par Jitsi (`4443/tcp` et `10000/udp` au moment du test, seul un des deux a besoin d'être accessible)
Nous avons donc demandé à Adrien quels étaient les ports ouverts par défaut dans le mode élevé de sa box :
![Livebox Parefeu Personnalisé](/img/operations/livebox_parefeu_personnalise.png)
Nous avons dans un premier temps retenu le port `995/tcp` pour Jitsi, le port UDP ne pouvant être changé (limitation de Jitsi).
Cependant, pour des raisons de sécurité, les navigateurs ne peuvent pas utiliser les ports en dessous de `1024/*`, à l'exception des ports `80/tcp` et `443/tcp` comme l'indique ;'issue [#3583](https://bugs.chromium.org/p/webrtc/issues/detail?id=3583) de Chromium.
La capture n'indique pas de port TCP supérieur à 1024, nous ne pouvons donc pas résoudre ce problème de notre côté, car à l'heure actuelle, nos ports `80/tcp` et `443/tcp` sont utilisés et nous n'avons qu'une seule IP publique.
Les utilisateurs activant le parefeu en mode élevé devront ajouter une exception dans leur parefeu eux-mêmes.
#### Chercher d'autres retours
[Tedomum](https://tedomum.net/) a eu connaissance de problèmes similaires.
Ils ont également identifié Firefox et assurent qu'avec l'application Android ça marche bien.
Ils me confirment que le problème vient bien du logiciel et non pas de notre déploiement.
Ils m'ont pointé entre autres vers cette issue github [#4758](https://github.com/jitsi/jitsi-meet/issues/4758)
Apparemment une issue est dédiée en particulier au problème que nous rencontrons de déconnexion partielle d'un participant, mais nous ne l'avons pas encore retrouvée.
### Correctifs
1. Notre instance Jitsi a été reconfigurée pour refuser Firefox. Suivre l'avancée du développement de Jitsi pour Firefox
* [#4758](https://github.com/jitsi/jitsi-meet/issues/4758)
* [#5439](https://github.com/jitsi/jitsi-meet/issues/5439)
* _À compléter_
2. Pour relayer la vidéo à travers la plupart des parefeux, notre `videobridge` Jitsi devait écouter sur le port `443/tcp`. Or ce port est déjà utilisé par notre frontal HTTPS. À défaut, Jitsi est maintenant configuré avec `8080/tcp` et `10000/udp` (contre `4443/tcp` et `10000/udp` avant).
* Un déploiement en IPv6 pourrait résoudre le problème pour une partie des utilisateurs
* Avoir un cluster géo-distribué avec plusieurs IPv4 pourrait également résoudre le problème
* Avoir un frontend layer 4 (niveau TCP) qui trouve une signature pour router du DTLS vers videobridge et du TLS vers traefik
### À propos du control/data plane de Jitsi
Notre videobridge écoute donc sur les ports `8080/tcp` et `10000/udp`.
WebRTC fonctionne en deux étapes :
- Des offres doivent être échangées via un serveur de signaling quelconque
- Ensuite, ces offres servent à connecter des clients directement via un protocole TCP ou UDP avec un thin layer propre à WebRTC
#### Le control plane de Jitsi : Prosody sur HTTPS via Bosh/XMPP
Le serveur de signaling Jitsi n'est autre que le serveur de chat prosody.
Pour ça, prosody est exposé à travers HTTP grâce au protocole BOSH (XMPP overs HTTPS).
Une fois l'offre reçue ([exemple](/assets/operations/exemple_offre.txt)), elle est enregistrée dans le navigateur à l'aide de `setRemoteDescription` pour initialiser le data plane.
On peut débugger le signaling WebRTC sous Chromium avec [chrome://webrtc-internarls](chrome://webrtc-internals/).
Quand plus de deux participants sont connectés dans la conversation, Jitsi n'envoie pas les offres de chaque participant aux autres participants. À la place, elle envoie qu'une seule offre, celle de son VideoBridge.
Ainsi, le VideoBridge est une sorte de client WebRTC particulier, qui récolte et redispatche à travers WebRTC tous les flux video/audio.
#### Le data plane de Jitsi : videobridge sur DTLS/SCTP via WebRTC
WebRTC utilise deux formats de paquets selon [Mozilla Developer Network|RTCDataChannel|DataFormat](https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel#Data_format) :
- `UDP/DTLS/SCTP`
- `TCP/DTLS/SCTP`
On a donc un format de données arbitraire encapsulé dans du SCTP lui-même encapsulé dans du DTLS.
DTLS est prévu pour les datagrammes à l'origine, car WebRTC est prévu d'abord pour fonctionner sous UDP.
Le TCP est là en mode dégradé, en secours, il sert juste de tunnel pour relayer des datagrammes.

View file

@ -0,0 +1,9 @@
+++
title = "Opérations"
description = "Opérations"
weight = 100
+++
# Opérations
Ceci est un manuel

View file

@ -0,0 +1,30 @@
---
title: Emails
description: Emails
---
# Support d'un nom de domaine personnalisé
1. xxx
1. Communiquez lui votre nom de domaine pour qu'il l'ajoute dans `ou=domains,ou=groups,dc=deuxfleurs,dc=fr`
2. Communiquez lui l'adresse email que vous souhaitez pour qu'il change l'entrée `mail` dans votre profil utilisateur
3. Si vous souhaitez avoir une boite mais plusieurs alias, demandez un champs `uid` dans votre profil utilisateur
2. Vous devez ensuite rajouter les entrées pour votre nom de domaine en éditant votre zone :
1. L'entrée MX pour recevoir les emails
```bind
@ MX 10 email-in.deuxfleurs.fr
```
2. L'entrée SPF pour autoriser notre IP à délivrer des emails en votre nom :
```bind
@ TXT "v=spf1 mx:out.deuxfleurs.fr -all"
```
3. L'entrée DKIM pour autoriser notre postfix+opendkim à délivrer des emails en votre nom :
```
smtp._domainkey TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDBOCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4WfmDWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB"
```
4. L'entrée DMARC pour indiquer le comportement à adopter si les contraintes précédentes ne sont pas satisfaites :
```
_dmarc TXT "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; rua=mailto:contact@deuxfleurs.fr!10m; ruf=mailto:contact@deuxfleurs.fr!10m; rf=afrf; pct=100; ri=86400"
```
3. C'est tout ! Vous devrez probablement attendre 24/48h que les changements se propagent.

View file

@ -0,0 +1,11 @@
+++
title = "Prise en main"
description = "Prise en main"
weight = 10
+++
# Organiser une réunion en ligne
# Rester en contact
#

View file

@ -0,0 +1,29 @@
+++
title = "Emails"
description = "Emails"
+++
# Accéder à vos emails
<ul>
<li><a href='https://sogo.deuxfleurs.fr'>🌐 Accéder via le navigateur (SoGo)</a></li>
<li><a href='https://sogo.deuxfleurs.fr'>🌐 Accéder via le navigateur (alps, version allégée)</a></li>
<li><a href='https://www.thunderbird.net/fr/'>📥 Thunderbird (PC/Mac)</a></li>
<li><a href='https://k9mail.app/'>📥 K9 (Android)</a></li>
</ul>
# Configurer ses emails dans une application
| Protocole | Rôle | Hôte | Port | Chiffrement | Authentification | Certificat |
| -- | -- | -- | -- | -- | -- | -- |
| IMAP | Réception des emails | `imap.deuxfleurs.fr` | `993` | SSL/TLS | email+mdp | invalide |
| SMTP | Envoi des emails | `smtp.deuxfleurs.fr` | `465` | SSL/TLS | email+mdp | invalide |
| Exchange ActiveSync | Tous | `https://sogo.deuxfleurs.fr` | `443` | SSL/TLS | email+mdp | valide |
# Utiliser un nom de domaine personnalisé (autre que @deuxfleurs.fr)
La configuration d'un nom de domaine personnalisé (eg. @michu.fr) ne peut pas se faire directement depuis une interface.
Veuillez sollicitez un·e opérateur·ice afin de vous accompagner dans la configuration.

View file

@ -0,0 +1,22 @@
---
title: Jitsi
description: Visioconférence avec Jitsi
---
# Accéder à Jitsi
- [🌐 Accéder via le navigateur](https://jitsi.deuxfleurs.fr)
- [📥 Application Android](https://play.google.com/store/apps/details?id=org.jitsi.meet&hl=fr)
- [📥 Application iOS](https://apps.apple.com/fr/app/jitsi-meet/id1165103905)
# Bien s'entendre pendant la réunion
Quelques conseils pour bien s'entendre pendant une réunion et passer un bon moment.
**Améliorez le son :** l'idéal est d'avoir un casque avec microphone ou des écouteurs avec microphone pour capter le son au plus près de votre bouche et empêcher l'écho (que votre microphone capte ce qui sort sur les hauts parleurs). Si vous n'avez pas de casques ou d'écouteurs ou que vous êtes plusieurs, les ordinateurs portables récents captent mieux le son que les anciens, et généralement votre téléphone captera mieux le son que votre ordinateur. De plus, si vous êtes plusieurs, vous devez savoir que les microphones sont directifs : si vous êtes proches et bien en face de l'ordinateur, on vous entendra bien, sinon on ne vous entendra pas du tout ! En groupe, tournez l'ordinateur vers la personne qui parle ou mettez-vous bien en face pour parler !
**Améliorez votre connexion :** la visioconférence est très sensible à la qualité de votre connexion internet. Si vous le pouvez, connectez votre ordinateur en filaire (cable ethernet) à votre *box* (routeur internet). Si vous souhaitez rester en sans-fil (wifi), essayez de vous rapprocher de votre *box*. Le type de connexion internet influencera également la qualité de votre visioconférence : la fibre est idéale, l'ADSL ou les réseaux mobiles (4G et 3G) sont plus incertains.
**Réduisez vos usages :** Activer la vidéo peut causer des interruptions ou dégrader la qualité du son. Si vous n'avez pas besoin de la vidéo, désactivez là ou garder là seulement pour certains participants. Si vous ne parlez pas, vous pouvez également couper votre microphone. Il est possible de passer en mode "talkie walkie" sur ordinateur avec la touche espace. Vous maintenez la touche espace, votre micro est activé. Vous arrêtez d'appuyer sur la touche espace, votre micro est coupé.
Si vous appliquez ces conseils, vous devriez arriver à communiquer sans peine. Bonnes communications !

View file

@ -0,0 +1,34 @@
---
title: Matrix
description: Messagerie Instantanée avec Matrix
published: true
date: 2022-03-09T19:13:51.671Z
tags:
editor: markdown
dateCreated: 2021-11-09T12:13:36.265Z
---
Matrix est un réseau de communication instantanée que vous pouvez utiliser pour rester en contact
avec votre famille, avec vos amis ou avec votre collectif ou association.
# Accéder à Matrix
- [🌐 Accéder via le navigateur](https://riot.deuxfleurs.fr)
- [📥 Application Android](https://play.google.com/store/apps/details?id=im.vector.app&hl=fr)
- [📥 Application iOS](https://apps.apple.com/fr/app/riot-im/id1083446067)
# Guide d'inscription & d'utilisation
Adrien a écrit un [guide d'installation/utilisation du résau Matrix](https://guide.zinz.dev) qui devrait vous aider à vous lancer.
# Nos salons Deuxfleurs
Deuxfleurs a une pléthore de salons sur Matrix. C'est vraiment à cet endroit qu'on discute le plus entre nous. Le mieux pour les découvrir, c'est de rejoindre notre « espace » (un annuaire de salons et de personnes) qui s'appelle [#la-cabane:deuxfleurs.fr](https://matrix.to/#/#la-cabane:deuxfleurs.fr) et qui ressemble à ça :
![espace_matrix_3salons.png](/espace_matrix_3salons.png)
À l'intérieur de cet espace, on vous recommande notamment les 3 salons suivants :
* [deuxfleurs::asso](https://matrix.to/#/#deuxfleurs:deuxfleurs.fr) où l'on parle de l'association.
* [deuxfleurs::forum](https://matrix.to/#/#forum:deuxfleurs.fr) où l'on discute beaucoup des questions de numérique et société mais pas que.
* [deuxfleurs::infra](https://matrix.to/#/#tech:deuxfleurs.fr) où l'on parle « techniques » (informatique, notamment).

View file

@ -0,0 +1,49 @@
---
title: Site web
description: Héberger un site web
---
Vous en avez marre de faire toute votre communication associative via Facebook ? Vous voulez créer votre propre site pour raconter votre dernier road-trip ou publier vos poèmes ? Vous ne savez pas vous y prendre ?
Deuxfleurs est là pour vous, on vous fournit une plateforme d'hébergement et on se fera un plaisir de vous accompagner !
# Demander un accès
Contactez un·e opérateur·ice en lui indiquant le nom que vous souhaitez pour votre site web.
Nous vous fournirons ensuite les identifiants suivants que vous utiliserez pour la mise en ligne de votre site web :
- L'identifiant de votre clé d'accès (exemple : `GKae0f36c...`)
- Votre clé d'accès secrète (exemple : `ae6df87221edd...`)
# Sites statiques
Nous fournissons un système d'hébergement de site statique, c'est à dire de HTML, CSS et Javascript.
Il n'est pas possible d'utiliser du PHP ou Wordpress car ces derniers utilisent trop de ressources et ne sont pas compatibles avec nos choix techniques.
Si vous ne savez pas quels outils utiliser pour la création de votre site statique, nous vous proposons la sélection suivante :
- [Publii](https://getpublii.com/) - si vous êtes seul·e à gérer votre site web
- NetlifyCMS (à venir) - pour publier à plusieurs
- [Hugo](https://gohugo.io/) (avancé) - Avec un générateur de site statique
- [VSCodium](https://vscodium.com/) (avancé) - [Apprenez à créer votre site web avec HTML5 et CSS3](https://openclassrooms.com/fr/courses/1603881-apprenez-a-creer-votre-site-web-avec-html5-et-css3) sur OpenClassrooms
# Mise en ligne
Si vous avez déjà votre site web statique, voici notre suggestion d'outils pour le mettre en ligne :
- [WinSCP](/premiers_pas/web/winscp) (Windows seulement, niveau facile)
- [Rclone Browser](/premiers_pas/web/rclone) (Linux, macOS et Windows, niveau moyen)
- (à venir) notre propre outils
- (à venir, avancé) drone + git
- (à venir, avancé) awscli
# Ils nous font confiance pour leur site web
- [anneprudhomoz.fr](https://anneprudhomoz.fr) - *De la terre, du fer, de l'eau, beaucoup de feu, un peu d'huile, encore du béton et du plâtre ! ... sans oublier le crayon à papier et les carnets.*
- [colineaubert.com](https://colineaubert.com) - *D'un côté graphiste, illustratrice et conceptrice d'outils pédagogiques, je mets en images et en mots différents sujets scientifiques et culturels.*
- [estherbouquet.com](https://estherbouquet.com) - *Esther Bouquet questions how narratives—both historical and literary—are being built by creating tangible experiences ranging from the size of the sheet of paper to the volume of a space; somewhere between writing, archiving, drawing, designing, and programming.*
- [quentin.dufour.io](https://quentin.dufour.io) - *Portfolio et blog d'un ingénieur en informatique*
- [erwan.dufour.io](https://erwan.dufour.io) - *Portfolio et blog d'un passionné d'électronique*
- [rfid.deuxfleurs.fr](https://rfid.deuxfleurs.fr) - *Rencontres Francophones de l'Infonuagique Décentralisé*

View file

@ -0,0 +1,53 @@
---
title: DNS
description:
published: true
date: 2021-11-29T08:56:54.837Z
tags:
editor: markdown
dateCreated: 2021-11-29T08:46:18.021Z
---
# Nom de domaine (DNS)
*À venir*
## Tutoriel avec Gandi
*À venir*
### Louer son nom de domaine
Nous recommandons également de choisir un nom de domaine en `.fr` (géré par l'association française AFNIC), `.org` (géré par l'association américaine Public Internet Regitry) ou `.eu` (géré par l'association EURid). Ces entités ont pour historique de ne pas augmenter arbitrairement les prix tout en garantissant la disponibilité de votre nom de domaine.
Pour référence, la location d'un nom de domaine en `.fr` est d'environ 12 euros par an. Parfois, les bureaux d'enregistrement vous fournissent "des extras" en plus comme une boite email, mais par rapport à la concurrence, ces "extras" n'influent (généralement) pas sur les prix.
Gandi est un bureau d'enregistrement de nom de domaine que nous recommandons. [Voir la fiche Wikipeda](https://fr.wikipedia.org/wiki/Gandi_(entreprise)).
### Le configurer pour Deuxfleurs
Une fois loué, il faut maintenant le configurer.
#### Pour un site web
Supposons que vous avez loué camille-michu.fr chez Gandi et que vous vouliez que votre site web soit accessible à l'URL suivante : https://camille-michu.fr
D'abord, rendez-vous dans votre espace utilisateur Gandi, puis de là cliquez dans le menu à gauche sur "Nom de domaine" :
![dns1.png](/dns1.png)
Une fois sur la page "Nom de domaines", votre nom de domaine devrait apparaitre dans la liste, ici "camille-michu.fr". Cliquez dessus.
![dns2.png](/dns2.png)
Dans le menu du haut, sélectionnez "Enregistrements DNS" :
![dns3.png](/dns3.png)
Ensuite cliquez sur le bouton "Ajouter un enregistrement" :
![dns4.png](/dns4.png)
Choisissez alors "ALIAS" comme type, et `nomad1.cluster.deuxfleurs.fr` comme nom d'hôte.
![dns5.png](/dns5.png)

View file

@ -0,0 +1,103 @@
---
title: Rclone Browser
description: Rclone Browser
published: true
date: 2021-11-25T14:31:35.570Z
tags:
editor: markdown
dateCreated: 2021-11-25T14:02:30.997Z
---
rclone browser est un outil simple qui vous permet d'accéder directement à Garage.
# Installation
Si vous êtes sous macOS ou Windows, vous pouvez télécharger la dernière version depuis la page [github de rclone-browser](https://github.com/kapitainsky/RcloneBrowser/releases) (descendez un peu pour voir les liens).
Sous Ubuntu (lubuntu, kubuntu, etc.), Debian et Linux Mint, cherchez et installez "Rclone Browser" dans la logithèque ("App Store") ou lancez directement depuis un terminal :
```bash
sudo apt-get install -y rclone-browser
```
---
Le paquet existe aussi pour d'autres distributions :
```bash
sudo dnf install -y rclone-browser # fedora
sudo yay -S rclone-browser # arch linux
sudo nix-env -iA nixos.rclone-browser # nix os
```
# Premier lancement
Avant de lancer Rclone Browser, ouvrez un éditeur de texte.
Moi j'utilise "Éditeur de texte" sous Gnome aussi connu sous le nom de `gedit`. Sous Windows il s'appelle Bloc-Note Windows (ou `notepad.exe`).
![gedit.png](/gedit.png)
Entrez le texte suivant dedans, tout en remplaçant bien les lignes 5 et 6 par vos identifiants communiqués précédemment :
```toml
[garage]
type = s3
provider = Other
env_auth = false
access_key_id = <REMPLACEZ PAR VOTRE IDENTIFIANT DE CLE D'ACCESS>
secret_access_key = <REMPLACEZ PAR VOTRE CLE D'ACCES SECRETE>
region = garage
endpoint = garage.deuxfleurs.fr
bucket_acl = private
force_path_style = true
no_check_bucket = true
```
Maintenant enregistrez le à un endroit où vous ne le perdrez pas. Dans mon cas, j'ai choisi de le mettre dans Mon Dossier Personnel > Documents > Configuration et je l'ai appelé `rclone.conf`.
![rclone-conf.png](/rclone-conf.png)
Maintenant lancez "Rclone Browser" en cherchant l'application dans votre menu d'application
![capture_décran_de_2021-11-25_14-43-03.png](/capture_décran_de_2021-11-25_14-43-03.png)
L'application devrait se lancer :
![rclone_init.png](/rclone_init.png)
Cliquez sur "File" (Fichiers) en haut à gauche, puis sur "Preferences...". La fenêtre suivante s'ouvre :
![rclone-conf2.png](/rclone-conf2.png)
Repérez la deuxième ligne intitulée `rclone.conf location:`. Tout au bout de la ligne, cliquez sur le bouton avec les trois points `[...]`. Vous aurez alors la possibilité d'indiquer à Rclone Browser où se trouve le fichier de configuration créé juste avant (pour ma part, je rappelle, "Dossier personnel > Documents > Configuration > rclone.conf", on voit que le chemin complet vers le fichier apparait maintenant dans le champs texte.
Appuyez sur OK, et la fenêtre principale devrait maintenant ressembler à ça :
![rclone-s3.png](/rclone-s3.png)
Cliquez sur "S3 garage" puis cliquez sur "Open". Si vous voyez des dossiers apparaitre, c'est gagné !
![rclone-conn.png](/rclone-conn.png)
Vous pouvez maintenant naviguer dans vos dossiers, envoyer des fichiers sur Garage ou en récupérer. Attention, vous ne pouvez pas créer de "nouveaux dossiers" à la racine, mais vous pouvez créer des sous-dossiers dans les dossiers existants pré-alablement créés pour vous.
# Utiliser comme un drive
Ce n'est pas forcément très pratique de devoir passer par cette interface pour envoyer ou récupérer des fichiers. Ce qui serait génial, c'est que ces dossiers apparaissent sur votre ordinateur comme des dossiers normaux.
Pour cela, sélectionnez un dossier racine, moi j'ai choisi `quentin.bibliotheque` puis cliquez sur le bouton "Mount".
![rclone-mount.png](/rclone-mount.png)
Un sélecteur de fichier s'ouvre alors. Je vais dans "Dossier Personnel > Documents", je créer un nouveau dossier que j'appelle "Distant". Je vais dedans et clique sur "Choisir" (ou Ok).
Maintenant, quand je vais dans un explorateur de fichier, je vois les fichiers sur Garage comme si ils étaient sur mon ordinateur.
![nautilus-distant.png](/nautilus-distant.png)
Je peux aussi accéder à ces documents depuis mon logiciel préféré, comme ici "LibreOffice Calc" :
![capture_décran_de_2021-11-25_15-01-42.png](/capture_décran_de_2021-11-25_15-01-42.png)

View file

@ -0,0 +1,54 @@
---
title: WinSCP
description: WinSCP
---
# Installation
Commencez par télécharger l'outil [WinSCP](https://winscp.net/eng/download.php).
![capture_décran_de_2021-11-22_09-31-21.png](/capture_décran_de_2021-11-22_09-31-21.png)
Installez le logiciel.
# Configuration
Lancez le. La fenêtre de connexion suivante devrait apparaitre :
![frlogin.png](/frlogin.png)
Vous devez :
1. Vérifier que c'est bien "Nouveau site" qui est sélectionné
2. Dans *protocole de fichier*, vous devez choisir *Amazon S3*
3. Dans *nom d'hôte*, vous devez mettre `garage.deuxfleurs.fr`
4. Dans *numéro de port*, vous devez mettre (ou plutôt laisser) `443`
5. Dans *id de clé d'accès*, vous devez mettre l'identifiant de votre clé d'accès, exemple : `GK...`
6. Dans *clé d'accès secrète*, vous devez mettre votre clé d'accès secrète.
7. Maintenant, cliquez sur le bouton *Avancé*. (Cliquez bien sur le mot "Avancé" et non sur la flèche à droite). Une fenêtre s'ouvre :
![fravance.png](/fravance.png)
1. Dans le menu de gauche, cliquez sur *S3*
2. Dans la partie de droite, pour *Région par défaut*, inscrivez au clavier *garage*
3. Toujours à droite, dans *Style URL*, choisissez *Chemin*
4. Cliquez sur OK
Vous voilà de retour sur la fenêtre de connexion :
![frsauve.png](/frsauve.png)
1. Cliquez sur *Sauver* (cliquez bien sur le texte et non sur la flèche noire à droite)
La fenêtre suivante apparait :
![frsauve.png](/frsauver.png)
1. Dans *Enregistrer la sessions sous :*, donnez un nom qui identifie bien votre site web, c'est ce qui vous permettra de l'identifier dans la liste de connexion.
2. Pour la case *Enregistrer le mot de passe*, nous vous conseillons de la cocher sauf si vous êtes sur un ordinateur public (bibliothèque, cybercafé, etc.) ou au travail.
3. Pour la case *Créer un raccourci sur le bureau*, nous vous conseillons de la cocher, vous pourrez alors mettre votre site en ligne en un seul clic (ou presque) depuis votre bureau.
4. Cliquez sur OK
Vous pouvez maintenant cliquer sur "Connexion".
![commander.png](/commander.png)

View file

@ -0,0 +1,9 @@
+++
title = "Vie associative"
description = "Vie associative"
weight = 50
+++
Ceci est un manuel

View file

@ -0,0 +1,55 @@
---
title: AG 2020
description: Assemblée Générale Constitutive
weigth: 1
---
Le 13 janvier 2020 à 19 heures, les fondateurs de l'association
Deuxfleurs se sont réunis en assemblée générale constitutive au 24 rue
des Tanneurs à Rennes. Sont présents Adrien, Alex, Anaïs, Axelle,
Louison, Maximilien, Quentin, Rémi et Vincent.
L'assemblée générale désigne Adrien en qualité de président de
séance et Quentin en qualité de secrétaire de séance. Le
président de séance met à la disposition des présents le projet de
statuts de l'association et l'état des actes passés pour le compte de
l'association en formation.
Puis il rappelle que l'assemblée générale constitutive est appelée à
statuer sur l'ordre du jour suivant :
- présentation du projet de constitution de l'association ;
- présentation du projet de statuts ;
- adoption des statuts ;
- désignation des premiers membres du conseil ;
- pouvoirs en vue des formalités de déclaration et publication.
Enfin, le président de séance expose les motifs du projet de création de
l'association et commente le projet de statuts. Il ouvre la discussion.
Un débat s'instaure entre les membres de l'assemblée.
Après quoi, personne ne demandant plus la parole, le président met
successivement aux voix les délibérations suivantes.
# 1e délibération
L'assemblée générale adopte les statuts dont le projet lui a été soumis.
Cette délibération est adoptée à l'unanimité.
# 2e délibération
L'assemblée générale constitutive désigne en qualité de premiers membres
du conseil d'administration :
- Adrien
- Alex
- Maximilien
- Quentin
- Vincent
Conformément aux statuts, cette désignation est faite pour une durée
expirant lors de l'assemblée générale qui sera appelée à statuer sur les
comptes de l'exercice clos le 13 janvier 2021. Les membres du conseil
ainsi désignés acceptent leurs fonctions
Nom, prénom et signature du président et du secrétaire de séance

View file

@ -0,0 +1,114 @@
---
title: AG 2021
description: Seconde Assemblée Générale
weight: 2
---
Le 7 février 2021 se tenait la deuxième Assemblée Générale (AG) de Deuxfleurs.
Nous avons fêté nos un an d'existence !
Les choses étant ce qu'elles sont, l'AG s'est tenue virtuellement sur notre [Jitsi](https://jitsi.deuxfleurs.fr). Pour rendre les choses intéressantes, nous nous sommes fendus d'une présentation liminaire (*keynote* en anglais).
Au final, nous avons réélu le même bureau qu'en 2020, à savoir : Maximilien, Alex, Adrien, Vincent et Quentin.
La retransmission de l'AG, accessible sur [le PeerTube de l'association TeDomum](https://video.tedomum.net/videos/watch/1df11eb4-b9d6-4c39-bbe3-2247dc577725) (qu'on remercie de nous héberger !) :
<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" src="https://video.tedomum.net/videos/embed/1df11eb4-b9d6-4c39-bbe3-2247dc577725" frameborder="0" allowfullscreen></iframe>
Les transparents de la réunion sont accessibles ici : https://deuxfleurs.fr/_ag2021/
# Bilan moral 2020
Deuxfleurs, constitué en association loi 1901, rappelle ses valeurs :
> Défendre et promouvoir les libertés individuelles et collectives à travers la mise en place d'infrastructures numériques libres.
## Héberger des services informatiques de manière économique et responsable
Avec du matériel d'occasion :
- PC de bureau d'entreprise reclassés (5 ans+)
- Vieux serveurs de datacenter (10 ans+)
- Ancien matériel personnel (ordinateurs fixes ou portables)
Objectif : pas de matériel neuf quand on peut s'en passer.
Hébergé majoritairement chez des particuliers :
- Hébergement principal en Bretagne sur une fibre Free
- Backups en région parisienne et à Bruxelles
- Un serveur chez Gandi, et un second chez OVHCloud
Un ordinateur portable et une connexion internet classiques suffisent à la plupart des besoins.
Organisé en _sites_ géographiques (5 sites actuellement, bientôt 6 !). L'inventaire du matériel est par ailleurs public.
## Services proposées
E-mail ; discussions instantanées ; visio-conférences ; édition collaborative ; stockage de fichiers ; hébergement de code source, de blogs texte, et de sites web.
Engagement de qualité : sauvegarde automatique, surveillance des ressources.
## Développement logiciel
- Authentification unique : [bottin](https://git.deuxfleurs.fr/Deuxfleurs/bottin), [guichet](https://git.deuxfleurs.fr/Deuxfleurs/guichet)
- Stockage distribué entre ordinateurs domestiques :
- [Garage](https://git.deuxfleurs.fr/Deuxfleurs/garage) : Stockage objet distribué (_à la_ S3) et hébergement de sites statiques
- [Diplonat](https://git.deuxfleurs.fr/Deuxfleurs/diplonat) : Ouverture de ports automatique pour les services sur les box grand public
## « Think tank » : Éducation populaire, médiation, diffusion
Conversion des ami⋅e⋅s aux services libres :
- Matrix : Salons associatifs, d'amis, de familles...
- Jitsi : vocapéros, réunions de boulot, de famille...
Peu mesurable mais très satisfaits !
Réflexion en cours pour refondre le site web de deuxfleurs.fr (réflexion sur le design, mandat d'une artiste pour réaliser une illustration).
Utilisation de _Plume_ (plateforme de blogs texte distribuée) pour écrire des articles d'opinion par certains membres.
L'association a par ailleurs réalisé une prestation de service rémunérée pour le collectif [Mouton Numérique](https://mouton-numerique.org/). Il s'agit d'une opération stratégique car elle nous permet de rendre service, et de créer des liens dans l'écosystème associatif et militant tout en apportant des fonds à l'association.
Contribution à Heylo (avec TeDomum notamment) : il s'agit d'une future passerelle pour aider à rejoindre les « réseaux sociaux fédérés ». Penser à un annuaire.
## Programme moral 2021
- Hébergement et développements
- mise en pratique de l'hébergement décentralisé basé sur Garage, avec un déploiement facilité
- travailler sur la labélisation CHATON et une ouverture plus large au public
- Diffusion
- Avancer sur le nouveau site web (design et ensuite contenu)
- Accueillir les nouveaux bénévoles qui souhaitent s'impliquer
- Présence dans les lieux de rencontre militants
# Bilan financier 2020
La comptabilité de l'association est gérée sous forme de fichier plat dans un dépôt Git interne.
Il n'y a pas de compte en banque pour le moment, en raison du coût récurrent associé.
Les fonds sont gérés par Alex et Quentin, deux membres du bureau.
> État initial en janvier 2020 : 0€
> État final au 31 décembre 2020 : 130€ (+345€,-215€)
## Détails des opérations
- Cotisations des membres : +90€
- Prestations facturées : +100€
- Contributions cagnotte illustration : +155€
- Commande illustration pour le site web : -215€ (dont 60€ pris sur fonds de l'asso, le reste issu de la cagnotte)
Le bilan de l'année 2020 est donc positif.
# Élection du bureau 2021
Conformément aux statuts, le scrutin est un Condorcet randomisé.
Il y a 6 sièges à pourvoir, et il y a actuellement 10 électeurs.
Les candidats se présentent oralement : Adrien, Alex, Maximilien, Quentin, Vincent. Le scrutin à bulletin secret se déroule. Son résultat est disponible [ici](https://civs.cs.cornell.edu/cgi-bin/results.pl?id=E_ce46d726de6c615a).
Tous les membres du bureau sortant sont donc réélus pour 2021.
Merci à l'ensemble des membres du bureau, ainsi qu'à toutes celles et ceux ayant donné un coup de main à l'association en cette première année d'existence !

View file

@ -0,0 +1,430 @@
---
title: AG 2022
description: Troisième Assemblée Générale
weight: 3
---
Le dimanche 27 février 2022, se tenait sur [Jitsi](https://jitsi.deuxfleurs.fr/) la troisième Assemblée Générale (AG) de Deuxfleurs : nous fêtions nos deux ans d'existence !
La retransmission de l'AG sera bientôt disponible en ligne. [Notre support de présentation est d'ores et déjà accessible.](https://p.adnab.me/slide/#/2/slide/view/ag3WVp8g4RrwRK5QgnLR2MyacoX4XBPnnRiJ+mX9d1I/embed/present/)
# En deux mots
* 11 membres étaient présents : Adrien, Alain, Alex, Axelle, Éric, Jill, Louison, Maximilien, Quentin, Trinity & Vincent.
* Nous avons mis à jour l'article 8 des statuts : nous élirons désormais le conseil d'administration (CA) au [jugement majoritaire](http://fr.wikipedia.org/wiki/Jugement_majoritaire), plutôt qu'au [scrutin de Condorcet randomisé](http://fr.wikipedia.org/wiki/Scrutin_de_Condorcet_randomis%C3%A9).
* Le bureau d'administration 2022 est composé d'Adrien, Maximilien & Vincent (le bureau sortant, reconduit), et d'Alain, nouvellement élu.
Nous nous réjouissons d'accueillir un membre non-fondateur dans notre organe de décision. Alain dispose d'une grande expérience en « entrepreneuriat », ayant manœuvré nombre d'associations et entreprises au long de sa vie. Nul doute que sa précense à nos côtés nous fera grand bien !
# Présentation de l'association
Nous avons rappelé la *raison d'être* de Deuxfleurs : la **démocratisation** du web. Ce terme porte les valeurs d'inclusivité, de convivialité et d'humanisme qui nous sont chères. La frugalité et l'autonomie sont aussi importantes à nos yeux.
Deuxfleurs porte 3 actions principales : la **conception** de nos outils numériques, la **construction** de notre infrastructure web (utilisant notamment nos outils), et l'**essaimage** de nos connaissances et idées.
# Changement du mode de scrutin
> ## Modification de l'article 8 de nos [statuts](/Association/Statuts)
>
> [...] Elle [L'Assemblée Générale] pourvoit, au scrutin secret, à la nomination ou au renouvellement des membres du conseil d'administration via un scrutin **au jugement majoritaire**. Elle fixe le montant de la cotisation annuelle. Les décisions de l'assemblée sont prises à la majorité des membres présents ou représentés. Chaque membre présent ne peut détenir plus d'une procuration.
Vote organisé via sondage Jitsi, unanimité pour (7 votes exprimés).
# Bilan moral 2021
En 2021, nous avons suivi 3 principaux objectifs :
1. ☂️ devenir résilient
2. 🍃 promouvoir des outils sobres
3. 🧠 avoir une approche critique
## 1. ☂️ devenir résilient
Les pannes sont la norme en hébergement informatique : alimentation, réseaux, matériel, logiciel, erreurs humaines... Nous en avons déjà fait les frais, et nous aimerions dormir la nuit. C'est pourquoi nous souhaitons construire un écosystème résilient. Nous visons deux propriétés :
1. disperser géographiquement nos données
2. assurer la disponibilité des services
Hélas, personne n'a jamais réalisé de géodistribution telle que nous l'entendons, si bien qu'aucun logiciel ne sait assurer de bonne qualité de service dans ces conditions. C'est pourquoi il nous revient de créer ce savoir-faire, et de développer des logiciels adaptés.
Sur la voie de la résilience, **certains chantiers ont bien avancé**. Nous avons remplacé quelques services défectueux (GlusterFS → Garage, Traefik → Tricot). Nous faisons davantage de sauvegardes automatiques, nous visualisons mieux l'état de santé du cluster, et nous écrivons progressivement des guides & procédés d'administration.
**D'autres chantiers démarrent**, et principalement l'élimination du point critique de Rennes, où la majeure partie de nos services est hébergée. Pour ce faire, nous devons proposer un modèle de sécurité nous permettant d'interconnecter notre cluster sur Internet. Il nous faut par ailleurs nous préparer à accueillir d'autres hébergeureuses, en assurant notamment leur formation technique.
Rappelons nos outils activement développés :
* [Garage](https://garagehq.deuxfleurs.fr), stockage objet distribué (on en reparle).
* [Diplonat](/Technique/Developpement/Diplonat), le diplomate des serveurs hébergés dans un réseau dynamique (comme un domicile).
* [Bottin](/Technique/Developpement/Bottin), notre annuaire LDAP.
* [Guichet](/Technique/Developpement/Guichet), l'interface web de gestion et d'administration du Bottin.
* [Tricot](/Technique/Developpement/Tricot), le petit dernier. C'est un serveur web/reverse proxy, remplaçant direct de Traefik.
### NGI POINTER subventionne le développement de Garage
Cette année, Deuxfleurs a reçu une subvention du fonds européen [NGI POINTER](https://www.ngi.eu/ngi-projects/ngi-pointer/), comme nous vous le racontions en septembre [sur notre blog](https://plume.deuxfleurs.fr/~/Deuxfleurs/NGI%20Pointer%20subventionne%20Deuxfleurs). Cette subvention de 193k€ nous permet principalement de salarier Quentin, Alex, et Jill, afin qu'iels travaillent au développement de Garage, d'octobre 2021 à septembre 2022.
La subvention est subdivisée en cinq lots, chacun étant versé après réalisation d'un jalon par Deuxfleurs. À ce jour, nous avons réalisé 3 jalons sur 5. Notre impressionnant rythme de travail nous donne confiance en notre stabilité économique. Comme prévu dans le budget, nous avons commencé à investir une partie de la subvention dans la communication visuelle (voir [le nouveau site de Garage](https://garagehq.deuxfleurs.fr)), et dans des achats matériels (voir [nos nouveaux vieux ordinateurs](https://plume.deuxfleurs.fr/~/Deuxfleurs/Nos%20nouveaux%20vieux%20ordinateurs)).
**Temps forts** :
- Dès septembre, Garage a été repéré par SUNET (service internet Suédois pour la recherche).
- En février 2021, nous avons simultanément sorti la première béta publique de Garage (v0.6.0), et [présenté Garage au FOSDEM](https://plume.deuxfleurs.fr/~/Deuxfleurs/Garage%20sera%20%C3%A0%20la%20conf%C3%A9rence%20du%20logiciel%20libre%20%22FOSDEM%202022%22).
- Le même mois, nous communiquions publiquement sur Garage dans [Hacker News](https://news.ycombinator.com/item?id=30256753), [Reddit](https://www.reddit.com/r/selfhosted/comments/snh0ed/introducing_garage_our_selfhosted_distributed/) ([deux fois](https://www.reddit.com/r/rust/comments/snnlf2/garage_an_opensource_distributed_storage_service/)), et sur Lobster. Les retours nombreux et globalement très positifs furent très encourageants.
## 2. 🍃 promouvoir des outils sobres
Tout d'abord, nous sommes très fiers d'avoir mis la main sur 35 [nouveaux vieux ordinateurs](https://plume.deuxfleurs.fr/~/Deuxfleurs/Nos%20nouveaux%20vieux%20ordinateurs), dont se séparait l'INSEE de Bordeaux, pour environ 40€/pièce ! De quoi quoi construire de beaux clusters de seconde main.
Deuxfleurs a sa propre vision des outils numériques qu'elle souhaite promouvoir et supporter (sites statiques, par exemple). Pour ceux-là, l'association souhaite contribuer à l'accompagnement de ses utilisateur⋅ices (le [guide d'usage de Matrix écrit par Adrien](https://guide.zinz.dev), par exemple).
Nous promouvons par exemple les **sites statiques** : en comparaison des réseaux sociaux et des CMS traditionnels (Wordpress, Joomla, Drupal...), les sites statiques sont une solution de publication sur Internet qu'on trouve plus rapide, économe et simple. (Pour plus de détails, il fallait y être, ou il faudra attendre qu'on vous en reparle !)
Les **e-mails** sont une autre technologie que nous défendons, bien que parfois considérée obsolète par les professionnels.
## 🧠 avoir une approche critique
Notre quête de pensée critique est d'abord tournée vers nous-même : la réflexivité. Cette année, l'association [Anciela](https://www.anciela.info/) nous a aidés à réfléchir à nos pratiques.
D'autre part, nous sommes friands d'avis contradictoires, et souhaitons donc confronter nos idées au public. Pour ce faire, nous publions régulièrement sur notre blog, [Plume](https://plume.deuxfleurs.fr). Nous sommes aussi engagés dans la candidature d'Esther à [la résidence artistique de la Villa Libertine](https://villa-albertine.org/fr/professionals/appel-candidatures-de-la-villa-albertine-saison-2) - ce qui serait une occasion de confronter nos idées outre-Atlantique.
# Bilan financier 2021
En 2021 :
* Revenus : **+72 660€**
* Cotisations 2021 (+2022) : 190€
* Dons adhérent⋅es : 95€
* Subvention NGI POINTER pour Garage : 72 375€
* Dépenses : **-21 586,46€**
* Frais bancaires : -137,94€
* Projet Garage : -21 448,52€
* Solde au 31 décembre 2021 : **+53 122,70€**
Depuis le début de l'année 2022 (à date du 26 février 2022) :
* Revenus : **0 €**
* Dépenses : **-25 384,02€**
* Cotisations 2022 : +70€
* Dons adhérent⋅es : +95€
* Projet Garage : -25 529,02€
* Solde au 26 février 2022 : **+27 758,68€**
Détail financier du projet NGI (à date du 26 février 2022) :
<table border="0" cellspacing="0" cellpadding="0" style="border-spacing:0;">
<colgroup>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<tr style="font-weight:bold;background-color:#bdbdbd;">
<td style="text-align:left;">
<p>Catégorie:Sous-catégorie
</p>
</td>
<td style="text-align:right;">
<p>Dépenses (€)
</p>
</td>
<td style="text-align:right;">
<p>Revenus (€)
</p>
</td>
<td style="text-align:right;">
<p>Total (€)
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Achats:Matériel:PC
</p>
</td>
<td style="text-align:right;">
<p>-1387
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-1387
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Cotisations sociales:AST
</p>
</td>
<td style="text-align:right;">
<p>-367
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-367
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Cotisations sociales:OPCO
</p>
</td>
<td style="text-align:right;">
<p>-606
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-606
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Cotisations sociales:URSSAF
</p>
</td>
<td style="text-align:right;">
<p>-14408
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-14408
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Frais
</p>
</td>
<td style="text-align:right;">
<p>-45
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-45
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Funding:NGI
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>72375
</p>
</td>
<td style="text-align:right;">
<p>72375
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Prestations:Webdesign
</p>
</td>
<td style="text-align:right;">
<p>-1000
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-1000
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Salariat:Comptable
</p>
</td>
<td style="text-align:right;">
<p>-972
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-972
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Salariat:Impôts
</p>
</td>
<td style="text-align:right;">
<p>-914
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-914
</p>
</td>
</tr>
<tr>
<td style="text-align:left;">
<p>Salariat:Salaire brut
</p>
</td>
<td style="text-align:right;">
<p>-25357
</p>
</td>
<td style="text-align:right;">
<p>0
</p>
</td>
<td style="text-align:right;">
<p>-25357
</p>
</td>
</tr>
<tr style="background-color:#fffaaa; font-weight:bold;">
<td style="text-align:left;">
<p>Total au 26 Février 2022
</p>
</td>
<td style="text-align:right;">
<p>-46977
</p>
</td>
<td style="text-align:right;">
<p>72375
</p>
</td>
<td style="text-align:right;">
<p>27316
</p>
</td>
</tr>
</table>
# Perspectives 2022
Poursuivre les objectifs de l'an passé :
1. ☂️ devenir résilient
2. 🍃 promouvoir des outils sobres
3. 🧠 avoir une approche critique
En adaptant notre approche : de l'exploration, à la **focalisation** vers les chantiers où nous pourrons au mieux employer nos forces.
## Des « cercles » pour nous focaliser
Pour focaliser notre action, nous souhaiterions créer des « cercles » (ou groupes de travail) au sein de l'association.
Créer un cercle ne demande que quelques étapes :
1. 👤 désigner un·e référent·e (qui centralise la info, ce n'est pas un⋅e chef⋅fe)
2. 🗓️ définir des réunions récurrentes
3. 📣 créer des espaces de communication
4. 📌 se rendre visible
Quelques suggestions de cercles :
* Usages : faciliter prise en main des outils
* Recherche & Développement : conception logiciels
* Infrastructure : matériel et services
* Financement : trouver de l'argent & des partenaires
* Essaimage : partager nos idées, en découvrir de nouvelles
* Loin du clavier : créer des occasions de se rencontrer en physique
Vos propositions sont les bienvenues !
## ⛺ Se voir loin du clavier ?
On aimerait créer des occasions de nous rencontrer. Il suffit de cette association qui ne vit que sur Internet ! Que ça soit pour un week-end sans feuille de route, ou pour un camp d'une semaine dans un châlet alpin avec un programme défini et musclé.
D'autres le font : on pense au [Camp CHATONS](https://video.colibris-outilslibres.org/videos/watch/e320c9f7-e1d4-4e47-bc92-eacb1280e282), et au [Camp Indie Hosters](https://indiehosters.net/blog/2021/09/17/c-est-la-rentree-chez-indiehosters.html).
Si vous êtes intéressé⋅es, ya plus qu'à créer un cercle !
## 🏁 La prochaine étape
Mettons en place ces cercles ! On peut commencer par en discuter sur <a href="https://matrix.to/#/#forum:deuxfleurs.fr">deuxfleurs::forum</a>.
Individuellement, vous n'avez qu'à penser aux cercles que vous voudriez rejoindre, si vous souhaitez être référent⋅e, et à vos contraintes de planning pour les réunions récurrentes.
# Élection du bureau 2022
> [mieuxvoter.fr](https://mieuxvoter.fr/) est un site proposant de créer des scrutins au Jugement Majoritaire, qui envoie un e-mail personnalisé par votant, son « bulletin de vote ». **L'envoi de mails est prohibitivement long pour nous (supérieur à 1h pour certains destinataires).** Si vous comptez l'utiliser, prévoyez d'envoyer le scrutin la veille.
>
> L'an prochain : on crée notre propre solution de vote. --'
{.is-warning}
Candidats : Adrien, Alain, Maximilien & Vincent.
9 votes exprimés.
![ag2022_resultats_vote.png](/ag2022_resultats_vote.png)
Tous les candidats sont élus : le conseil d'administration 2022 est constitué de : Adrien, Alain, Maximilien & Vincent.
# Questions
* Quentin : Alors, ça vous branche le camp ?
Adrien : Oui, mais j'ai toujours peur de mon emploi du temps. En tout cas, j'ai très envie de toutes et tous vous voir !
* Maximilien : prévoir des réunions mensuelles récurrentes, dont on fixe la date en avance. Logistique plus simple que de demander les dispos de toute le monde à chaque réunion ponctuelle.
Oui carrément.
* Vincent : Profiter de Pas Sages en Seine pour faire une rencontre Deuxfleurs.
---
Allez, emballé jusqu'à l'année prochaine !
Deuxfleuristement vôtre,
Adrien

View file

@ -0,0 +1,8 @@
+++
title = "Assemblées Générales"
description = "Assemblées Générales"
weight = 50
+++

View file

@ -0,0 +1,7 @@
+++
title = "Base de connaissance"
description = "Base de connaissance"
+++
Une base de connaissance contient des recettes en vrac, des procédés, des retours d'expériences, etc.
Son objectif est d'éviter d'avoir à passé deux fois par une phase d'apprentissage.

View file

@ -0,0 +1,21 @@
---
title: Ergonomie
description: Comment travailler durablement et en toute sécurité
published: true
date: 2022-04-06T12:36:35.582Z
tags:
editor: markdown
dateCreated: 2022-04-06T12:34:35.012Z
---
# Ergonomie
L'association emploie désormais plusieurs salarié.e.s qui travaillent à la maison sur poste informatique pour les beoins de Deuxfleurs. Offrons-leurs les meilleurs conditions de travail possible!
Pour être correctement installé pour travailler, suivre par exemple les recommandations de l'AST, ils ont toute une série de brochures ici: <https://www.ast35.fr/ergonomie>
Pour acheter du matériel (chaises, bureaux) reconditionnés, donc de qualité et pas cher, ici:
- <https://www.adopteunbureau.fr/>
- <https://bureaufute.fr/>
- <https://www.ecosiege.fr/>

View file

@ -0,0 +1,22 @@
---
title: Quand une personne rejoint le CA
description: Que faut-il faire pour l'accueillir ?
published: true
date: 2022-03-02T09:00:00.009Z
tags: administration, association, procédure, conseil d'administration (ca)
editor: markdown
dateCreated: 2022-03-02T08:58:55.011Z
---
# Comment accueillir une nouvelle personne au CA
* L'ajouter au salon Matrix `deuxfleurs::bureau`.
* L'ajouter à la liste de diffusion `ca@deuxfleurs.fr` (*via* [Guichet](https://guichet.deuxfleurs.fr/)).
* Lui donner accès au compte en banque (contacter la banque).
> TODO: Quels documents doit-elle fournir ?
* La former à l'utilisation de [HomeBank](http://homebank.free.fr/fr/) pour la comptabilité.
Notre fichier de sauvegarde HomeBank étant stocké dans `git`, former l'administrateur⋅ice à `git`.
* S'assurer qu'elle dispose de comptes admin sur les services qui ne sont pas gérés par le [Bottin](/Technique/Developpement/Bottin).

View file

@ -0,0 +1,126 @@
---
title: Statuts
description: Status de l'association
---
# Article 1. Constitution et dénomination
Il est fondé entre les adhérents aux présents statuts une association
régie par la loi 1901, ayant pour titre Deuxfleurs.
# Article 2. Buts
Cette association a pour but de défendre et promouvoir les libertés
individuelles et collectives à travers la mise en place d'infrastuctures
numériques libres.
# Article 3. Siège social
Le siège social est fixé au 10A, Allée de Lanvaux, 35700 Rennes. Il
pourra être transféré suite à un vote par l'assemblée générale.
# Article 4. Durée de l'association
L'association perdure tant qu'elle possède au moins un membre, ou
jusqu'à sa dissolution décidée en assemblée générale.
# Article 5. Admission et adhésion
Pour faire partie de l'association, il faut être coopté par un membre de
l'association, adhérer aux présents statuts et s'acquitter de la
cotisation annuelle dont le montant est de 10 euros.
# Article 6. Composition de l'association
L'association se compose exclusivement de membres admis selon les dispositions
de l'Article 5 et à jour de leur cotisation. Tout membre
actif possède une voix lors des votes en assemblée générale. Est considéré
actif tout membre présent à l'assemblée générale (physiquement, par
visioconférence ou par procuration écrite donnée à un autre membre de
l'association).
# Article 7. Perte de la qualité de membre
La qualité de membre se perd par :
- la démission,
- le non-renouvelement de la cotisation dans un délai de deux mois
après le 1er Janvier de l'année courante,
- le décès,
- la radiation prononcée aux deux tiers des votes exprimés, lors d'un
vote extraordinaire ou de l'assemblée générale.
# Article 8. L'assemblée générale
L'assemblée générale ordinaire se réunit au moins une fois par an, convoquée
par le conseil d'administration. L'assemblée générale extraordinaire est
convoquée par le conseil d'administration, à la demande de celui-ci ou à la
demande du quart au moins des membres de l'association.
L'assemblée générale (ordinaire ou extraordinaire) comprend tous les
membres de l'association à jour de leur cotisation. Quinze jours au
moins avant la date fixée, les membres de l'association sont convoqués
via la liste de diffusion de l'association et l'ordre du jour est
inscrit sur les convocations.
Le conseil d'administration anime l'assemblée générale. L'assemblée
générale, après avoir délibéré, se prononce sur le rapport moral et/ou
d'activités. Le conseil d'administration rend compte de l'exercice
financier clos et soumet le bilan de l'exercice clos à l'approbation de
l'assemblée dans un délai de six mois après la clôture des comptes.
L'assemblée générale délibère sur les orientations à venir et se
prononce sur le budget prévisionnel de l'année en cours.
Elle pourvoit, au scrutin secret, à la nomination ou au renouvellement
des membres du conseil d'administration via un scrutin au jugement majoritaire. Elle fixe le montant de la cotisation annuelle. Les décisions
de l'assemblée sont prises à la majorité des membres présents ou
représentés. Chaque membre présent ne peut détenir plus d'une
procuration.
# Article 9. Membres mineurs
Les mineurs peuvent adhérer à l'association sous réserve d'un accord
tacite ou d'une autorisation écrite de leurs parents ou tuteurs légaux.
Ils sont membres à part entière de l'association. Seuls les membres âgés
de 16 ans au moins au jour d'une élection sont autorisés à y voter,
notamment au cours d'une assemblée générale. Pour les autres, leur droit
de vote est transmis à leur représentant légal.
# Article 10. Le conseil d'administration
L'association est administrée par un conseil d'administration composé de
3 à 6 membres, élus pour 1 an dans les conditions fixées à
l'Article 8. Tous les membres de l'association à jour de
leur cotisation sont éligibles. En cas de vacance de poste, le conseil
d'administration peut pourvoir provisoirement au remplacement de ses
membres. Ce remplacement est obligatoire quand le conseil
d'administration compte moins de 3 membres. Il est procédé à leur
remplacement définitif à la plus prochaine assemblée générale. Les
pouvoirs des membres ainsi élus prennent fin à l'époque où devrait
normalement expirer le mandat des membres remplacés.
Le conseil d'administration met en œuvre les décisions de l'assemblée
générale, organise et anime la vie de l'association, dans le cadre fixé
par les statuts. Chacun de ses membres peut être habilité par le conseil
à remplir toutes les formalités de déclaration et de publication
prescrites par la législation et tout autre acte nécessaire au
fonctionnement de l'association et décidé par le conseil
d'administration. Tous les membres du conseil d'administration sont
responsables des engagements contractés par l'association. Tout contrat
ou convention passé entre l'association d'une part, et un membre du
conseil d'administration, son conjoint ou un proche, d'autre part, est
soumis pour autorisation au conseil d'administration et présenté pour
information à la plus prochaine assemblée générale. Le conseil
d'administration se réunit au moins 4 fois par an et toutes les fois
qu'il est convoqué par le tiers de ses membres. La présence de la moitié
au moins des membres du conseil est nécessaire pour que le conseil
d'administration puisse délibérer valablement. Les décisions sont prises
au consensus et, à défaut, à la majorité des voix des présents. Le vote
par procuration n'est pas autorisé.
# Article 11. Modification des statuts de l'association
Sur demande d'un tiers des membres actifs, ou sur demande du conseil
d'administration, des amendements aux statuts de l'association peuvent
être discutés et soumis au vote lors d'une assemblée générale, selon les
modalités de l'Article 8.

View file

@ -3,14 +3,14 @@
font-size: 32px; font-size: 32px;
font-weight: 600; font-weight: 600;
padding: 10px 0 25px 0; padding: 10px 0 25px 0;
color: var(--primary-text-color); color: var(--secondary-text-color);
} }
h1, .title-text { h1, .title-text {
font-family: "Fira Sans", sans-serif; font-family: "Fira Sans", sans-serif;
font-size: 25px; font-size: 25px;
font-weight: 500; font-weight: 500;
color: var(--primary-text-color); color: var(--secondary-text-color);
border-left: var(--primary-color) 8px solid; border-left: var(--primary-color) 8px solid;
padding-left: 10px; padding-left: 10px;
} }
@ -19,7 +19,7 @@ h2, .subtitle-text {
font-family: "Fira Sans", sans-serif; font-family: "Fira Sans", sans-serif;
font-size: 20px; font-size: 20px;
font-weight: 500; font-weight: 500;
color: var(--primary-text-color); color: var(--secondary-text-color);
} }
.text { .text {
@ -28,7 +28,7 @@ h2, .subtitle-text {
font-weight: 400; font-weight: 400;
line-height: 26px; line-height: 26px;
letter-spacing: 0.2px; letter-spacing: 0.2px;
color: var(--primary-text-color); color: var(--secondary-text-color);
} }
.subtext { .subtext {

View file

@ -39,9 +39,10 @@ header {
} }
.logo { .logo {
font-family: "Alfa Slab One", serif; font-family: Georgia, DejaVu Serif, Norasi, serif;
font-size: 32px; font-size: 32px;
color: var(--primary-text-color); color: var(--primary-text-color);
font-weight: 500;
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 40px; margin: 0 40px;
@ -58,8 +59,10 @@ header {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: var(--primary-text-color);
&:hover { &:hover {
color: #000; color: #fff;
text-decoration: underline; text-decoration: underline;
} }
} }
@ -95,6 +98,10 @@ main {
color: #424242; color: #424242;
} }
.toc-section a {
font-weight: bold;
}
.toc-item a, .toc-item-child a { .toc-item a, .toc-item-child a {
color: var(--secondary-text-color); color: var(--secondary-text-color);

View file

@ -8,8 +8,9 @@
</a> </a>
<nav> <nav>
{% for page in section.pages %} {% for subpath in section.subsections %}
<a class="nav-item subtitle-text" href="{{ page.permalink }}">{{ page.title }}</a> {% set sub = get_section(path=subpath) %}
<a class="nav-item subtitle-text" href="{{ sub.permalink }}">{{ sub.title }}</a>
{% endfor %} {% endfor %}
{% if config.extra.juice_extra_menu %} {% if config.extra.juice_extra_menu %}
{% for menu in config.extra.juice_extra_menu %} {% for menu in config.extra.juice_extra_menu %}

View file

@ -3,7 +3,7 @@
/* Primary theme color */ /* Primary theme color */
--primary-color: #ea596e; --primary-color: #ea596e;
/* Primary theme text color */ /* Primary theme text color */
--primary-text-color: #543631; --primary-text-color: #fafafa;
/* Primary theme link color */ /* Primary theme link color */
--primary-link-color: #d45063; --primary-link-color: #d45063;
/* Secondary color: the background body color */ /* Secondary color: the background body color */

View file

@ -10,8 +10,6 @@
<link rel="icon" type="image/png" href="/favicon.ico"> <link rel="icon" type="image/png" href="/favicon.ico">
{% endblock favicon %} {% endblock favicon %}
{% include "_variables.html" %} {% include "_variables.html" %}
<link href="https://fonts.googleapis.com/css?family=Alfa+Slab+One&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Fira+Sans:400,500,600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/normalize.css"> <link rel="stylesheet" href="/normalize.css">
<link rel="stylesheet" href="{{ get_url(path="juice.css") }}"> <link rel="stylesheet" href="{{ get_url(path="juice.css") }}">
{% block head %} {% block head %}
@ -23,83 +21,49 @@
<header class="box-shadow"> <header class="box-shadow">
{{ macros::render_header() }} {{ macros::render_header() }}
</header> </header>
{#<header class="pos-absolute" style="background-color: transparent">
{{ macros::render_header() }}
</header>#}
{#<div class="hero">
{% block hero %}
<script async defer src="https://buttons.github.io/buttons.js"></script>
<section class="text-center">
<h1 class="heading-text" style="font-size: 50px">
Build your static website
</h1>
<h3 class="title-text">
<b>Juice</b> is an intuitive, elegant, and lightweight Zola theme for product websites.
</h3>
<div>
<a class="github-button" href="https://github.com/huhu/juice" data-size="large" data-show-count="true"
aria-label="Star huhu/juice on GitHub">Star</a>
<a class="github-button" href="https://github.com/huhu/juice/fork" data-size="large"
data-show-count="true" aria-label="Fork huhu/juice on GitHub">Fork</a>
</div>
</section>
<img class="hero-image" style="width: 50%" src="{{ get_url(path="juice.svg") }}">
<div class="explore-more text"
onclick="document.getElementById('features').scrollIntoView({behavior: 'smooth'})">
Explore More ⇩
</div>
<style>
.hero section {
padding: 0 5rem;
}
@media screen and (max-width: 768px) {
.hero section {
padding: 0 2rem;
}
.hero-image {
display: none
}
}
</style>
{% endblock hero %}
</div>
#}
{% endblock header %} {% endblock header %}
<main> <main>
{% block toc %} {% block toc %}
{% if section.toc %} {% if page.ancestors %}
{% set toc = section.toc %} {% set section = get_section(path=page.ancestors | last) %}
{% elif page.toc %} {% endif %}
{% set toc = page.toc %} {% if section.ancestors %}
{% set parent = get_section(path=section.ancestors | last) %}
{% endif %} {% endif %}
{% if toc %}
<div class="toc"> <div class="toc">
<div class="toc-sticky"> <div class="toc-sticky">
{% for h in toc %} <div class="toc-item toc-section">
<a class="subtext" href="{{section.permalink | safe}}">{{ section.title }}</a>
</div>
{% if section.subsections %}
{% for s in section.subsections %}
{% set p = get_section(path=s) %}
<div class="toc-item"> <div class="toc-item">
<a class="subtext" href="{{h.permalink | safe}}">{{ h.title }}</a> <a class="subtext" href="{{ p.permalink | safe}}">{{ p.title }}</a>
</div>
{% if h.children %}
{% for h2 in h.children %}
<div class="toc-item-child">
<a class="subtext" href="{{h2.permalink | safe}}"><small>- {{ h2.title }}</small></a>
</div> </div>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% endfor %}
{% if section.pages %}
{% for p in section.pages %}
<div class="toc-item">
<a class="subtext" href="{{p.permalink | safe}}">{{ p.title }}</a>
</div> </div>
{% endfor %}
{% endif %}
{% if parent %}
<div class="toc-item">
<a class="subtext" href="{{parent.permalink | safe}}">← Retour</a>
</div> </div>
{% endif %} {% endif %}
</div>
</div>
{% endblock toc %} {% endblock toc %}
<div class="content text"> <div class="content text">
{% block content %} {% block content %}
<div id="features" class="heading-text">Overview</div> <div id="features" class="heading-text">{{ section.title }} </div>
{{ section.content | safe }} {{ section.content | safe }}
{% endblock content %} {% endblock content %}
</div> </div>