promo : le diaporama devient une presentation, plus un expose technique
Quinze diapositives au lieu de vingt, en langage simple : trois engagements, ce que recoit une organisation, une image du fonctionnement, 43 minutes en grand, la federation des deux sites, qui peut nous rejoindre. Le detail technique reste dans les notes. CHANGELOG 157. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
eb3ebbebfc
commit
ef472cced9
21 changed files with 206 additions and 431 deletions
17
CHANGELOG.md
17
CHANGELOG.md
|
|
@ -1,3 +1,20 @@
|
|||
## 2026-10-15 (157) — Le diaporama devient une présentation, plus un exposé technique
|
||||
|
||||
**95 preuves.** `make verifier` : 95 OK, 0 échec. Aucun changement au moteur.
|
||||
|
||||
Demande de Daniel : moins d'exposé technique, plus de présentation. Le public des Rencontres
|
||||
Linux veut comprendre ce que le projet change, pas lire un plan YAML.
|
||||
|
||||
- **Quinze diapositives au lieu de vingt.** Sortent : le plan et l'inventaire, l'adressage
|
||||
dérivé, les déclarations des rôles, les pare-feu, les étapes de restauration, les astuces
|
||||
Linux. Entre : « Comment ça marche, en une image » (un plan → le moteur → un écosystème).
|
||||
- **Le reste est réécrit en langage simple** : trois engagements (libre, reconstructible,
|
||||
transmissible), ce que reçoit une organisation, l'hébergeur qui prête l'abri, « 43 minutes »
|
||||
en grand, la fédération des deux sites, une culture de la preuve, et qui peut nous rejoindre.
|
||||
- **Une affirmation resserrée** : « chaque échange entre machines est chiffré » était trop large ;
|
||||
la diapositive nomme ce qui l'est (bases de données, métriques, journaux).
|
||||
- Le détail technique reste dans les notes, pour les questions de la salle.
|
||||
|
||||
## 2026-10-15 (156) — Le diaporama dit l'œuvre commune : Chezlepro et TechnoLibre, membres de l'Alliance Boréale
|
||||
|
||||
**95 preuves.** `make verifier` : 95 OK, 0 échec. Aucun changement au moteur.
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ Ne pas remplacer les résultats historiques par des affirmations sur la flotte a
|
|||
## `rlq-2026-10-24/` — le diaporama des Rencontres Linux du Québec
|
||||
|
||||
La présentation de Set-OPS et de son état d'avancement aux Rencontres Linux du Québec (ÉTS,
|
||||
24 octobre 2026) : vingt diapositives 16:9, notes de présentation comprises, **sans adresse
|
||||
24 octobre 2026) : quinze diapositives 16:9, notes de présentation comprises, **sans adresse
|
||||
interne, secret, prix, faiblesse de sécurité ni défaut interne**. Les chiffres et les faits sont ceux du **15 octobre 2026** (révision
|
||||
`4645e47`, 95 preuves), datés comme tels ; ne pas les rafraîchir sans les relever de nouveau.
|
||||
|
||||
|
|
@ -163,8 +163,8 @@ exporté (PDF, PowerPoint) ; ces fichiers en sont la source versionnée. Une mod
|
|||
aux deux endroits, ou se republie depuis ces fichiers.
|
||||
|
||||
Avant de présenter : remplacer `[adresse publique du dépôt]` (diapositives `libre` et
|
||||
`questions`). L'exemple d'adressage (`adressage`) est calculé par le moteur pour un index
|
||||
fictif, 42 ; le recalculer si la règle de nomenclature change.
|
||||
`questions`). C'est une présentation, pas un exposé technique : le détail (inventaire généré,
|
||||
adressage dérivé, flux) vit dans `docs/`, et les notes renvoient aux questions de la salle.
|
||||
|
||||
### Ouvrir les pages
|
||||
|
||||
|
|
|
|||
|
|
@ -12,38 +12,33 @@
|
|||
"probleme",
|
||||
"setops",
|
||||
"ecosysteme",
|
||||
"plan",
|
||||
"adressage",
|
||||
"declarations",
|
||||
"filtrage",
|
||||
"fonctionnement",
|
||||
"site",
|
||||
"chiffres",
|
||||
"reconstructions",
|
||||
"etat",
|
||||
"zeroconfiance",
|
||||
"secondsite",
|
||||
"preuves",
|
||||
"lecons",
|
||||
"reste",
|
||||
"libre",
|
||||
"questions"
|
||||
],
|
||||
"sections": {
|
||||
"s1": {
|
||||
"description": "Pourquoi Set-OPS existe et ce qu’il est.",
|
||||
"description": "D’où vient Set-OPS, et pourquoi.",
|
||||
"start": "cover"
|
||||
},
|
||||
"s2": {
|
||||
"description": "Comment le moteur est fait : du plan aux machines.",
|
||||
"description": "Comment ça marche, en langage simple.",
|
||||
"start": "ecosysteme"
|
||||
},
|
||||
"s3": {
|
||||
"description": "Où il en est au 15 octobre 2026, preuves datées à l’appui.",
|
||||
"description": "Où il en est, preuves à l’appui.",
|
||||
"start": "chiffres"
|
||||
},
|
||||
"s4": {
|
||||
"description": "Ce que la flotte a appris, ce qui reste, et comment le reprendre.",
|
||||
"start": "lecons"
|
||||
"description": "La suite, et comment s’y joindre.",
|
||||
"start": "reste"
|
||||
}
|
||||
},
|
||||
"faces": {
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
<section id="adressage" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">02 · L’adressage</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Tout l’adressage dérive d’un seul nombre.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:600px 1fr;gap:56px">
|
||||
<div style="background:#102E28;border-radius:12px;padding:40px">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;line-height:1.5;color:#CFDDD3"><span style="color:#8FA79B"># plan/nomenclature.yml</span><br><span style="color:#B9EED2">index:</span> 42<br><br><span style="color:#8FA79B"># plan/serveurs.yml</span><br><span style="color:#B9EED2">infra-dns-01:</span><br>  fonction: infra-dns<br>  etat: actif<br><span style="color:#B9EED2">idm-01:</span><br>  fonction: idm<br><span style="color:#B9EED2">collab-01:</span><br>  fonction: collab</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:32px">
|
||||
<table style="font-size:26px;color:#3E5550">
|
||||
<tr><th style="width:31%">Machine</th><th style="width:27%">Adresse</th><th style="width:15%">VLAN</th><th style="width:27%">VMID</th></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace">infra-dns-01</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">10.42.19.11</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">1424</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">142401101</td></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace">idm-01</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">10.42.17.11</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">1422</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">142201101</td></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace">collab-01</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">10.42.21.21</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">1426</td><td style="font-family:'JetBrains Mono', 'Courier New', monospace">142602101</td></tr>
|
||||
</table>
|
||||
<p style="font-size:28px;line-height:1.45;color:#152F2C">Le VMID est le miroir de l’adresse : <b>VLAN · octet d’hôte · rang</b>. On retrouve la machine depuis son adresse, et l’inverse, sans registre.</p>
|
||||
<p style="font-size:26px;line-height:1.45">Une preuve refuse un adressage écrit à la main au plan ; une autre refuse deux écosystèmes au même index. Plusieurs organisations cohabitent sur une même grappe sans collision.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026 · exemple calculé par le moteur, index fictif</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">07</p>
|
||||
<aside>Un exemple concret, calculé par le moteur lui-même pour un index fictif, 42. Le seul champ saisi est l’index ; chaque machine ne déclare que sa fonction. Le supernet, le VLAN, l’adresse, la passerelle et le VMID en dérivent. Le VMID est le miroir de l’adresse sur neuf chiffres : le VLAN, l’octet d’hôte, le rang. Quand on voit 142401101 dans Proxmox, on sait que c’est la machine 10.42.19.11, sans consulter de registre. Deux gardes protègent la règle : on ne peut pas écrire une adresse à la main dans le plan, et deux écosystèmes ne peuvent pas prendre le même index. C’est ce qui permet le multi-locataire sur une même grappe.</aside>
|
||||
</section>
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<section id="chiffres" data-section="Où il en est au 15 octobre 2026, preuves datées à l’appui." data-transition="fade" style="background:#102E28;color:#CFDDD3;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:56px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#B9EED2;font-weight:600">03 · Où il en est · 15 octobre 2026</p>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#B9EED2;font-weight:600">Où il en est · 15 octobre 2026</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#F3F6EE">Moins de quatre mois, mesurés dans le dépôt.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:48px 32px">
|
||||
|
|
@ -29,8 +29,8 @@
|
|||
<p style="font-size:24px;line-height:1.4">sites : Chezlepro, TechnoLibre</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:8px;border-top:1px solid #426056;padding:20px 0 0 0">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:96px;line-height:1.05;color:#D2B273">43</p>
|
||||
<p style="font-size:24px;line-height:1.4">groupes, ordonnés sans cycle</p>
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:96px;line-height:1.05;color:#D2B273">5 ans +</p>
|
||||
<p style="font-size:24px;line-height:1.4">de vision partagée</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:8px;border-top:1px solid #426056;padding:20px 0 0 0">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:96px;line-height:1.05;color:#D2B273">154</p>
|
||||
|
|
@ -38,6 +38,6 @@
|
|||
</div>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#8FA79B">Set-OPS · Rencontres Linux du Québec 2026 · relevés le 15 octobre 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#8FA79B">11</p>
|
||||
<aside>Où en est le projet, en chiffres, au 15 octobre. Soixante-dix rôles Ansible. Quatre-vingt-quinze preuves statiques, toutes conformes. Huit cent soixante-quatorze commits depuis le 24 juin. Quatre-vingt-cinq décisions d’architecture écrites et en vigueur. En vert pâle, le dépôt ; en or, la flotte réelle : deux écosystèmes de treize VM chacun, Chezlepro et TechnoLibre, et deux sites de neuf VM chacun, un par membre. C’est un chantier, pas encore la production : on les rase et on les reconstruit pour prouver le moteur. Quarante-trois groupes de déploiement, ordonnés par un graphe vérifié sans cycle. Et cent cinquante-quatre entrées datées dans le journal des changements. Les chiffres du dépôt, rôles et décisions, sont recomptés par une preuve qui refuse tout écart ; les autres ont été relevés le 15 octobre.</aside>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#8FA79B">08</p>
|
||||
<aside>Où en est le projet, en chiffres, au 15 octobre. Soixante-dix rôles Ansible. Quatre-vingt-quinze preuves statiques, toutes conformes. Huit cent soixante-quatorze commits depuis le 24 juin. Quatre-vingt-cinq décisions d’architecture écrites et en vigueur. En vert pâle, le dépôt ; en or, la flotte réelle : deux écosystèmes de treize VM chacun, Chezlepro et TechnoLibre, et deux sites de neuf VM chacun, un par membre. C’est un chantier, pas encore la production : on les rase et on les reconstruit pour prouver le moteur. Et derrière tout ça, plus de cinq ans de vision partagée entre Chezlepro et TechnoLibre. Et cent cinquante-quatre entrées datées dans le journal des changements. Les chiffres du dépôt, rôles et décisions, sont recomptés par une preuve qui refuse tout écart ; les autres ont été relevés le 15 octobre.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
<section id="declarations" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:44px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">02 · Ce que les rôles déclarent</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Chaque rôle déclare ; le moteur dérive.</h2>
|
||||
</div>
|
||||
<table style="font-size:26px;color:#3E5550">
|
||||
<tr><th style="width:36%">Déclaration du rôle</th><th style="width:64%">Ce que le moteur en dérive</th></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace;color:#176754">meta/flux.yml</td><td>nftables, pare-feu Proxmox, frontière OPNsense, registre d’audit</td></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace;color:#176754">meta/empreinte.yml</td><td>RAM, cœurs et disque : la somme des rôles que la VM porte</td></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace;color:#176754">meta/liens.yml</td><td>les variables de connexion d’un service à un autre</td></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace;color:#176754">meta/supervision.yml</td><td>les services Icinga ; avec metriques.yml, Prometheus et Grafana</td></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace;color:#176754">meta/authentification.yml</td><td>la portée et le mécanisme d’authentification, gardés par une preuve</td></tr>
|
||||
<tr><td style="font-family:'JetBrains Mono', 'Courier New', monospace;color:#176754">meta/acces.yml</td><td>les rôles d’accès projetés dans Keycloak</td></tr>
|
||||
</table>
|
||||
<p style="font-size:32px;line-height:1.4;color:#152F2C;border-left:4px solid #176754;padding:8px 0 8px 28px">Aucune liste n’est tenue à la main ailleurs. La leçon la plus payée du dépôt : <i>une liste qui suit une autre prend du retard.</i></p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">08</p>
|
||||
<aside>Le deuxième mécanisme central : chaque rôle porte ses déclarations dans son dossier meta. Le rôle de PostgreSQL dit de quels flux il a besoin, combien de mémoire il consomme, comment on le supervise, comment on s’y authentifie. Le moteur agrège ces déclarations : le pare-feu de chaque hôte, celui de Proxmox et la frontière OPNsense sortent du même fichier ; la taille de la VM est la somme des empreintes des rôles qu’elle porte. Aucune liste n’est maintenue à la main à côté. On a appris cette leçon plusieurs fois : dès qu’une liste en recopie une autre, elle prend du retard, et on finit par annoncer une adresse où il n’y a personne.</aside>
|
||||
</section>
|
||||
|
|
@ -1,44 +1,41 @@
|
|||
<section id="ecosysteme" data-section="Comment le moteur est fait : du plan aux machines." data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<section id="ecosysteme" data-section="Comment ça marche, en langage simple." data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:56px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">02 · Ce qu’un écosystème contient</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Huit fonctions reliées, une seule identité.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">Ce que reçoit une organisation</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Tout son numérique, sous son toit.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:24px">
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Identité</h3>
|
||||
<p style="font-size:24px;line-height:1.4">OpenLDAP · Keycloak · oauth2-proxy</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:28px">
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<x-icon name="Users" style="color:#176754;width:48px;height:48px"></x-icon>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Une identité par personne</h3>
|
||||
<p style="font-size:24px;line-height:1.4;color:#5F716B">Un seul mot de passe pour tous les services</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Confiance</h3>
|
||||
<p style="font-size:24px;line-height:1.4">step-ca, une autorité de certification interne, ACME</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<x-icon name="PaperPlane" style="color:#176754;width:48px;height:48px"></x-icon>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Son courriel</h3>
|
||||
<p style="font-size:24px;line-height:1.4;color:#5F716B">À son nom de domaine, chez elle</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Noms</h3>
|
||||
<p style="font-size:24px;line-height:1.4">PowerDNS · Unbound · DNSSEC</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<x-icon name="Book" style="color:#176754;width:48px;height:48px"></x-icon>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Ses fichiers, à plusieurs</h3>
|
||||
<p style="font-size:24px;line-height:1.4;color:#5F716B">Partage et édition de documents</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Courriel</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Postfix · Dovecot · rspamd</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<x-icon name="Globe" style="color:#176754;width:48px;height:48px"></x-icon>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Ses sites web</h3>
|
||||
<p style="font-size:24px;line-height:1.4;color:#5F716B">Publiés derrière un pare-feu applicatif</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Données</h3>
|
||||
<p style="font-size:24px;line-height:1.4">PostgreSQL · Redis · restic hors nœud</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<x-icon name="Lock" style="color:#176754;width:48px;height:48px"></x-icon>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Sa propre confiance</h3>
|
||||
<p style="font-size:24px;line-height:1.4;color:#5F716B">Ses certificats, ses noms de domaine</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Collaboration</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Nextcloud · Collabora</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Observation</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Prometheus · Loki · Grafana · Icinga</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Web et forge</h3>
|
||||
<p style="font-size:24px;line-height:1.4">nginx · pare-feu applicatif CRS · Forgejo</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<x-icon name="Activity" style="color:#176754;width:48px;height:48px"></x-icon>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Une vigie</h3>
|
||||
<p style="font-size:24px;line-height:1.4;color:#5F716B">Qui surveille tout, et prévient</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size:30px;line-height:1.4;color:#152F2C">Aujourd’hui, un écosystème de référence compte <b>13 machines virtuelles</b>, nées du même gabarit Debian 13 durci : nftables, auditd, AppArmor, fail2ban, SSH par clé seulement.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">05</p>
|
||||
<aside>Ce qu’un écosystème contient. L’identité d’abord : OpenLDAP est la source de vérité, Keycloak fait l’authentification unique, et oauth2-proxy protège les applications qui ne parlent pas OIDC. Une autorité de certification interne, step-ca, délivre les certificats par ACME. PowerDNS pour les noms, avec DNSSEC. Postfix, Dovecot et rspamd pour le courriel — la pile mature, pas la plus jeune. PostgreSQL pour les données, sauvegardées par restic hors du nœud. Nextcloud et Collabora pour travailler ensemble. Prometheus, Loki, Grafana et Icinga pour voir ce qui se passe. Chaque machine part du même gabarit durci. Un écosystème de référence compte treize VM.</aside>
|
||||
<aside>Concrètement, qu’est-ce qu’une organisation reçoit ? Une identité par personne, avec un seul mot de passe pour tous ses services : c’est OpenLDAP et Keycloak. Son courriel, à son nom de domaine : Postfix, Dovecot, rspamd. Ses fichiers et ses documents, qu’on modifie à plusieurs : Nextcloud et Collabora. Ses sites web, publiés derrière un pare-feu applicatif. Sa propre confiance : sa propre autorité de certification et ses propres serveurs de noms. Et une vigie, Icinga, Prometheus, Grafana, qui surveille tout et prévient. Tout ça, sous son toit, sur ses serveurs ou chez un hébergeur de confiance.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,41 +0,0 @@
|
|||
<section id="etat" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">03 · L’état traverse la reconstruction</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Le code reconstruit, la sauvegarde restitue.</h2>
|
||||
</div>
|
||||
<div style="display:flex;gap:16px;align-items:stretch">
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:28px">
|
||||
<p style="font-size:24px;font-weight:600;color:#176754">1 · Instantané</p>
|
||||
<p style="font-size:24px;line-height:1.4">« avant-raser », pris par chaque détenteur d’état</p>
|
||||
</div>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:28px">
|
||||
<p style="font-size:24px;font-weight:600;color:#176754">2 · Raser</p>
|
||||
<p style="font-size:24px;line-height:1.4">toutes les VM de l’écosystème</p>
|
||||
</div>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:28px">
|
||||
<p style="font-size:24px;font-weight:600;color:#176754">3 · Reconstruire</p>
|
||||
<p style="font-size:24px;line-height:1.4">cloner, armer le serveur d’exploitation, déployer</p>
|
||||
</div>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:28px">
|
||||
<p style="font-size:24px;font-weight:600;color:#176754">4 · Restaurer</p>
|
||||
<p style="font-size:24px;line-height:1.4">depuis restic, hors du nœud, chaque service à sa naissance</p>
|
||||
</div>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:10px;background:#102E28;border-radius:12px;padding:28px">
|
||||
<p style="font-size:24px;font-weight:600;color:#B9EED2">5 · Comparer</p>
|
||||
<p style="font-size:24px;line-height:1.4;color:#CFDDD3">les témoins, clé par clé, avant et après</p>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:48px">
|
||||
<div style="display:flex;flex-direction:column;gap:12px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Ce qui revient</h3>
|
||||
<p style="font-size:26px;line-height:1.5">Autorité de certification · annuaire · bases PostgreSQL · fichiers Nextcloud · boîtes de courriel · historique de supervision · métriques · journaux</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Le principe</h3>
|
||||
<p style="font-size:26px;line-height:1.5">L’infrastructure se reconstruit par le code ; on sauvegarde la <b>donnée</b>, pas la VM. Un service qui naît demande au dépôt si une incarnation précédente l’attend.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">13</p>
|
||||
<aside>Comment l’état traverse une reconstruction. Avant de raser, chaque machine qui détient de l’état prend un instantané nommé « avant-raser », dans un dépôt restic hors du nœud. On rase. On clone les VM, on arme le serveur d’exploitation de l’écosystème, on déploie. Chaque service, en naissant, demande au dépôt de sauvegarde si une incarnation précédente l’attend, et se restaure. Puis on compare des témoins, clé par clé : les empreintes avant et après doivent être identiques. Le principe est simple : l’infrastructure se reconstruit par le code, donc on ne sauvegarde pas des VM, on sauvegarde la donnée. Un détail qui a son importance : si le dépôt est illisible, le service refuse de naître neuf, parce que conclure « rien à restaurer » faute de joindre le dépôt effacerait ce qui attend ailleurs.</aside>
|
||||
</section>
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<section id="filtrage" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:44px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">02 · Le réseau</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Un flux déclaré, trois pare-feu cohérents.</h2>
|
||||
</div>
|
||||
<div style="position:relative;width:1664px;height:420px">
|
||||
<div style="position:absolute;left:572px;top:0px;width:520px;height:88px;background:#102E28;border-radius:12px;display:flex;align-items:center;justify-content:center">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;color:#B9EED2">roles/*/meta/flux.yml</p>
|
||||
</div>
|
||||
<div style="position:absolute;left:0px;top:170px;width:300px;height:250px;background:#E8EFE5;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Internet</h3>
|
||||
<p style="font-size:24px;line-height:1.4">ce qui vient de l’extérieur</p>
|
||||
</div>
|
||||
<div style="position:absolute;left:341px;top:170px;width:300px;height:250px;background:#FDFDFA;border:2px solid #176754;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Frontière OPNsense</h3>
|
||||
<p style="font-size:24px;line-height:1.4">nord-sud ; un refus se journalise</p>
|
||||
</div>
|
||||
<div style="position:absolute;left:682px;top:170px;width:300px;height:250px;background:#E8EFE5;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">SDN EVPN</h3>
|
||||
<p style="font-size:24px;line-height:1.4">une zone par écosystème, passerelles anycast</p>
|
||||
</div>
|
||||
<div style="position:absolute;left:1023px;top:170px;width:300px;height:250px;background:#FDFDFA;border:2px solid #176754;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Pare-feu Proxmox</h3>
|
||||
<p style="font-size:24px;line-height:1.4">est-ouest, par VM, refus par défaut</p>
|
||||
</div>
|
||||
<div style="position:absolute;left:1364px;top:170px;width:300px;height:250px;background:#FDFDFA;border:2px solid #176754;border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">nftables</h3>
|
||||
<p style="font-size:24px;line-height:1.4">sur chaque hôte, devant le service</p>
|
||||
</div>
|
||||
<x-connector x1="300" y1="295" x2="341" y2="295" head="end" style="color:#5F716B"></x-connector>
|
||||
<x-connector x1="641" y1="295" x2="682" y2="295" head="end" style="color:#5F716B"></x-connector>
|
||||
<x-connector x1="982" y1="295" x2="1023" y2="295" head="end" style="color:#5F716B"></x-connector>
|
||||
<x-connector x1="1323" y1="295" x2="1364" y2="295" head="end" style="color:#5F716B"></x-connector>
|
||||
<x-connector x1="760" y1="88" x2="491" y2="170" head="end" style="color:#176754;border-style:dashed"></x-connector>
|
||||
<x-connector x1="900" y1="88" x2="1173" y2="170" head="end" style="color:#176754;border-style:dashed"></x-connector>
|
||||
<x-connector x1="1000" y1="88" x2="1514" y2="170" head="end" style="color:#176754;border-style:dashed"></x-connector>
|
||||
</div>
|
||||
<p style="font-size:30px;line-height:1.4;color:#152F2C">Les trois cadres verts sortent du même fichier. Un flux <span style="color:#176754">pair: externe</span> devient la politique de bordure ; le registre des flux, généré, sert d’audit et dit le chiffrement de chacun.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">09</p>
|
||||
<aside>Le réseau, de l’Internet jusqu’au service. La frontière OPNsense tient la bordure nord-sud ; chaque écosystème a sa zone EVPN dans le SDN de Proxmox, avec des passerelles anycast ; le pare-feu de Proxmox filtre l’est-ouest, VM par VM, avec un refus par défaut ; et nftables protège chaque hôte. Les trois pare-feu — en vert — ne sont pas écrits à la main : ils sont dérivés des flux que les rôles déclarent. Un flux dont le pair est « externe » devient une règle de la frontière, posée par son API. Et le registre des flux est généré : c’est la matrice d’audit, qui dit pour chaque flux s’il est chiffré.</aside>
|
||||
</section>
|
||||
26
promo/rlq-2026-10-24/slides/fonctionnement.html
Normal file
26
promo/rlq-2026-10-24/slides/fonctionnement.html
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<section id="fonctionnement" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:64px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">Comment ça marche</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">En une image.</h2>
|
||||
</div>
|
||||
<div style="display:flex;gap:24px;align-items:stretch">
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:16px;padding:44px">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:48px;line-height:1.1;color:#176754">Un plan</p>
|
||||
<p style="font-size:30px;line-height:1.45">Quelques fichiers texte qui disent ce dont l’organisation a besoin.</p>
|
||||
</div>
|
||||
<x-shape kind="arrow-right" style="width:80px;height:44px;background:#C59C56;flex:none;align-self:center"></x-shape>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:16px;background:#102E28;border-radius:16px;padding:44px">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:48px;line-height:1.1;color:#B9EED2">Le moteur</p>
|
||||
<p style="font-size:30px;line-height:1.45;color:#CFDDD3">Déduit tout le reste : adresses, pare-feu, certificats, ordre d’installation.</p>
|
||||
</div>
|
||||
<x-shape kind="arrow-right" style="width:80px;height:44px;background:#C59C56;flex:none;align-self:center"></x-shape>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:16px;padding:44px">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:48px;line-height:1.1;color:#176754">Un écosystème</p>
|
||||
<p style="font-size:30px;line-height:1.45">Vivant, sur des serveurs Linux, prêt à servir.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size:36px;line-height:1.4;color:#152F2C;text-align:center">On modifie le plan, jamais les machines à la main.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">06</p>
|
||||
<aside>Comment ça marche, en une image. À gauche, un plan : quelques fichiers texte où l’on écrit ce dont l’organisation a besoin. Au milieu, le moteur : il en déduit tout le reste — les adresses de chaque machine, les règles de chaque pare-feu, les certificats, l’ordre dans lequel installer les services. À droite, un écosystème vivant, sur des serveurs Linux. La règle d’or : on modifie le plan, jamais les machines à la main. C’est ce qui permet de tout reconstruire, et de transmettre l’ensemble à quelqu’un d’autre. Pour ceux qui veulent les détails : l’inventaire Ansible est généré, et un seul nombre par organisation suffit à dériver tout son adressage ; j’en parle volontiers après.</aside>
|
||||
</section>
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
<section id="lecons" data-section="Ce que la flotte a appris, ce qui reste, et comment le reprendre." data-transition="fade" style="background:#E8EFE5;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:44px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">04 · Pour vos propres machines</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Six choses bonnes à savoir.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px">
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Un connect() TCP ne prouve rien</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Un pare-feu peut accepter la poignée de main sans relayer la suite. Seule la livraison compte.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Une sonde trop courte fabrique une panne</h3>
|
||||
<p style="font-size:24px;line-height:1.4">L’API de Proxmox, sans authentification, répond en 3 s par prudence ; un délai de 2 s y voit une panne.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">nginx reload ne déplace pas une écoute</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Une nouvelle adresse <span style="color:#176754">listen</span> demande un restart. Comparer <span style="color:#176754">ss</span> à la configuration.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Renouveler un certificat ne suffit pas</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Le fichier est neuf ; le service sert l’ancien tant qu’on ne le recharge pas.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Ansible veut un tube</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Une sortie non bloquante donne un échec silencieux. Remède : <span style="color:#176754">< /dev/null 2>&1 | cat</span></p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;background:#FDFDFA;border-radius:12px;padding:32px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">OPNsense : le groupe passe d’abord</h3>
|
||||
<p style="font-size:24px;line-height:1.4">Les règles du groupe wireguard s’appliquent avant celles d’une interface WireGuard assignée.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">17</p>
|
||||
<aside>Pour une salle d’administrateurs Linux, voici ce qui vous servira peut-être demain matin. Un : un connect TCP réussi ne prouve rien ; un pare-feu peut accepter la poignée de main sans relayer le trafic. Seule la livraison compte, et la destination en est le seul juge. Deux : l’API de Proxmox, quand on l’interroge sans authentification, met un peu plus de trois secondes à répondre, par protection contre la force brute ; une sonde avec un délai de deux secondes y voit une panne qui n’existe pas. Trois : nginx reload n’applique pas un changement d’adresse d’écoute ; il faut un restart, et comparer ss à la configuration. Quatre : un certificat renouvelé sur disque reste servi périmé tant qu’on ne recharge pas le service. Cinq : Ansible lancé avec une sortie non bloquante échoue en silence ; on le fait passer dans un tube. Six : dans OPNsense, les règles du groupe wireguard passent avant celles d’une interface WireGuard assignée.</aside>
|
||||
</section>
|
||||
|
|
@ -1,28 +1,27 @@
|
|||
<section id="libre" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<section id="libre" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:56px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">04 · Le reprendre</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Libre, et fait pour être repris.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">Nous rejoindre</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:72px;font-weight:400;line-height:1.1;color:#152F2C">Il y a une place pour vous.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px">
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">AGPLv3 ou ultérieure</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Le moteur est libre. Le modèle d’affaires : libre + services, héberger et accompagner.</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:28px">
|
||||
<div style="display:flex;flex-direction:column;gap:14px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<x-icon name="Home" style="color:#176754;width:52px;height:52px"></x-icon>
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Une organisation</h3>
|
||||
<p style="font-size:28px;line-height:1.45">OBNL, coopérative, PME : reprenez vos outils numériques.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Sans IA pour l’exploiter</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Un administrateur reprend l’écosystème avec la documentation, make et la console.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:14px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<x-icon name="Database" style="color:#176754;width:52px;height:52px"></x-icon>
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Un hébergeur</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Vous avez du matériel : devenez un site de la fédération.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Une remise en deux temps</h3>
|
||||
<p style="font-size:26px;line-height:1.45">L’identité au jour de la livraison, puis les clés des machines à une échéance écrite.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:14px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<x-icon name="Code" style="color:#176754;width:52px;height:52px"></x-icon>
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Un contributeur</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Le code est libre, sous AGPLv3 : lisez-le, essayez-le.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:16px;background:#102E28;border-radius:12px;padding:40px">
|
||||
<p style="font-size:26px;color:#B9EED2;font-weight:600">Essayer avec le modèle public</p>
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:28px;color:#F3F6EE">make instance-creer NOM=OPS-MonOrg MODELE=socle</p>
|
||||
<p style="font-size:26px;line-height:1.45;color:#CFDDD3">Le code : [adresse publique du dépôt] · Contact : chezlepro.ca/contact</p>
|
||||
</div>
|
||||
<p style="font-size:30px;line-height:1.45;color:#152F2C;border-left:4px solid #176754;padding:8px 0 8px 28px">Le code : [adresse publique du dépôt] · Nous écrire : chezlepro.ca/contact</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">19</p>
|
||||
<aside>Le projet est libre, sous AGPLv3 ou ultérieure. Le modèle d’affaires est simple : le logiciel est libre, et on vend des services — héberger, accompagner, former. L’outil est conçu pour qu’un administrateur le reprenne sans IA, avec la documentation, make et la console. Et un écosystème se remet à son organisation en deux temps : l’identité le jour de la livraison, puis les clés des machines à une échéance convenue, une fois les nouveaux accès vérifiés. Pour essayer : le dépôt public fournit un modèle générique, socle, et la commande instance-creer en fait un écosystème à vous. Je serai heureux d’en parler après la présentation.</aside>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">14</p>
|
||||
<aside>Et vous, dans tout ça ? Il y a une place pour vous. Si vous êtes une organisation — un OBNL, une coopérative, une PME — et que vous voulez reprendre vos outils numériques, parlons-en. Si vous avez du matériel et l’envie d’héberger, vous pouvez devenir un site de la fédération. Et si vous aimez le code, il est libre, sous AGPLv3 : lisez-le, essayez-le avec le modèle public, proposez des améliorations. Le moteur est conçu pour être repris par quelqu’un d’autre que nous : c’est sa raison d’être.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
<section id="plan" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">02 · Du plan aux machines</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">On édite le plan, jamais l’inventaire.</h2>
|
||||
</div>
|
||||
<div style="display:flex;gap:16px;align-items:stretch">
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#102E28;border-radius:12px;padding:32px">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;color:#B9EED2">plan/*.yml</p>
|
||||
<p style="font-size:24px;line-height:1.4;color:#CFDDD3">Serveurs, applications, bases, domaines, nomenclature : ce qu’on écrit.</p>
|
||||
</div>
|
||||
<x-shape kind="arrow-right" style="width:56px;height:32px;background:#176754;flex:none;align-self:center"></x-shape>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#102E28;border-radius:12px;padding:32px">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;color:#B9EED2">make instancier</p>
|
||||
<p style="font-size:24px;line-height:1.4;color:#CFDDD3">Dérive VMID, IP, VLAN, noms et groupes ; montre l’écart avant d’écrire.</p>
|
||||
</div>
|
||||
<x-shape kind="arrow-right" style="width:56px;height:32px;background:#176754;flex:none;align-self:center"></x-shape>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#102E28;border-radius:12px;padding:32px">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;color:#B9EED2">hosts.yml</p>
|
||||
<p style="font-size:24px;line-height:1.4;color:#CFDDD3">L’inventaire Ansible, généré. Personne ne l’édite à la main.</p>
|
||||
</div>
|
||||
<x-shape kind="arrow-right" style="width:56px;height:32px;background:#176754;flex:none;align-self:center"></x-shape>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:12px;background:#102E28;border-radius:12px;padding:32px">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;color:#B9EED2">make deployer</p>
|
||||
<p style="font-size:24px;line-height:1.4;color:#CFDDD3">Couche par couche, dans l’ordre d’un graphe de 43 groupes, sans cycle.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px">
|
||||
<div style="display:flex;flex-direction:column;gap:10px;border-top:3px solid #176754;padding:24px 0 0 0">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Un groupe, un playbook</h3>
|
||||
<p style="font-size:24px;line-height:1.45">Chaque groupe applique ses rôles ; le socle et le durcissement passent en premier.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;border-top:3px solid #176754;padding:24px 0 0 0">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Lire avant d’écrire</h3>
|
||||
<p style="font-size:24px;line-height:1.45">Les cibles <span style="color:#152F2C">-plan</span> comparent le réel au plan sans rien changer ; <span style="color:#152F2C">-appliquer</span> réconcilie, sur confirmation.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:10px;border-top:3px solid #176754;padding:24px 0 0 0">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Un modèle pour démarrer</h3>
|
||||
<p style="font-size:24px;line-height:1.45">Le modèle public <span style="color:#152F2C">socle</span> : PKI, DNS interne, edge TLS, magasin de courriel.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">06</p>
|
||||
<aside>La règle d’or : on édite le plan, jamais l’inventaire. Le plan, ce sont quelques fichiers YAML : les serveurs, les applications, les bases, les domaines, la nomenclature. make instancier en dérive tout le reste, et montre l’écart sémantique avant d’écrire quoi que ce soit. L’inventaire Ansible est généré. Puis make deployer applique, couche par couche, dans l’ordre d’un graphe de 43 groupes qu’on vérifie sans cycle. Toutes les commandes qui touchent au réel suivent la même convention : une cible -plan qui lit et compare, une cible -appliquer qui réconcilie, et seulement avec CONFIRMER=true. Pour démarrer, le dépôt public fournit un modèle générique, socle.</aside>
|
||||
</section>
|
||||
|
|
@ -1,25 +1,20 @@
|
|||
<section id="preuves" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<section id="preuves" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:64px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">03 · Comment on sait</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Prouver le dépôt, mesurer le système.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">Une culture de la preuve</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:72px;font-weight:400;line-height:1.1;color:#152F2C">On ne croit pas. On vérifie.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:32px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;color:#176754">make verifier · make prouver</p>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Les preuves statiques</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Lisent le dépôt seul, sans réseau : plan, rôles, flux, documentation, ordre de déploiement. 95 preuves, un rapport daté et rejouable.</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:48px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px;border-top:4px solid #176754;padding:28px 0 0 0">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:96px;line-height:1;color:#176754">95</p>
|
||||
<p style="font-size:30px;line-height:1.45">vérifications automatiques, rejouées à chaque changement du moteur.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<p style="font-family:'JetBrains Mono', 'Courier New', monospace;font-size:26px;color:#176754">make SUJET-plan</p>
|
||||
<h3 style="font-size:32px;font-weight:600;color:#152F2C">Les devis</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Lisent le système en marche, par les API de Proxmox et d’OPNsense et sur les VM, et le comparent au plan. Ils n’écrivent rien.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:16px;border-top:4px solid #176754;padding:28px 0 0 0">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:96px;line-height:1;color:#176754">Le réel</p>
|
||||
<p style="font-size:30px;line-height:1.45">comparé au plan, sans rien modifier, avant toute intervention.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#102E28;border-radius:12px;padding:40px">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:40px;line-height:1.25;color:#F3F6EE">Chaque garde a son témoin : on casse exprès, elle doit le voir.</p>
|
||||
<p style="font-size:26px;line-height:1.45;color:#CFDDD3">Et chaque sonde a son contrôle : avant de conclure, on vérifie d’où l’instrument mesure.</p>
|
||||
</div>
|
||||
<p style="font-size:32px;line-height:1.4;color:#152F2C;border-left:4px solid #C59C56;padding:8px 0 8px 28px">Chaque garde est mise à l’épreuve : on casse exprès, elle doit le voir.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">16</p>
|
||||
<aside>Comment sait-on que tout ça tient ? Deux familles d’outils, qu’on ne confond pas. Les preuves statiques lisent le dépôt seul, sans réseau : la cohérence du plan, des rôles, des flux, de la documentation. Il y en a 95 ; elles produisent un rapport daté qu’on peut rejouer. Les devis, eux, lisent le système en marche et le comparent au plan, sans rien écrire. La discipline qui compte le plus : chaque garde a un témoin. On casse exprès — une adresse faussée, un nom retiré — et la garde doit le voir. Une garde qui ne mord jamais ne prouve rien. Même chose pour les sondes : avant d’accuser une machine, on vérifie d’où l’instrument mesure.</aside>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">12</p>
|
||||
<aside>Une culture qui traverse tout le projet : on ne croit pas, on vérifie. Quatre-vingt-quinze vérifications automatiques relisent le moteur à chaque changement : la cohérence du plan, des services, de la documentation. D’autres outils comparent le système en marche au plan, sans rien modifier, avant qu’on intervienne. Et chaque garde est elle-même mise à l’épreuve : on casse quelque chose exprès, et on s’assure qu’elle le voit. Une vérification qui ne voit jamais rien ne prouve rien.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<section id="probleme" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:56px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">01 · Pourquoi</p>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">Pourquoi</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Une petite organisation loue aujourd’hui<br>ses comptes, son courriel et ses fichiers.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px">
|
||||
|
|
|
|||
|
|
@ -1,19 +1,9 @@
|
|||
<section id="reconstructions" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:44px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">03 · Raser pour prouver</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">On rase, on reconstruit, on recommence.</h2>
|
||||
</div>
|
||||
<table style="font-size:26px;color:#3E5550">
|
||||
<tr><th style="width:16%">Date</th><th style="width:64%">Ce que la reconstruction a prouvé</th><th style="width:20%">Durée</th></tr>
|
||||
<tr><td>13 août</td><td>Une flotte remontée d’un trait : 43 groupes, 0 échec</td><td>37 min</td></tr>
|
||||
<tr><td>2 sept.</td><td>Un écosystème rasé et refait depuis zéro ; recette à 0 échec</td><td>—</td></tr>
|
||||
<tr><td>10 sept.</td><td>Reconstruction de confirmation, 0 échec</td><td>34 min</td></tr>
|
||||
<tr><td>1er oct.</td><td>L’état revient : autorité, annuaire, bases, fichiers, courriel</td><td>41 puis 40 min</td></tr>
|
||||
<tr><td>4 oct.</td><td>Les deux écosystèmes avant une release étiquetée et signée</td><td>42 min chacun</td></tr>
|
||||
<tr style="background:#E8EFE5"><td><b>9 oct.</b></td><td><b>Sans PyPI, Galaxy ni app store ; supervision, métriques et journaux compris</b></td><td><b>43 min, d’une traite</b></td></tr>
|
||||
</table>
|
||||
<p style="font-size:28px;line-height:1.45;color:#152F2C">Une commande : <span style="color:#176754">make reconstruire-locataire</span>. Des épreuves datées sur des VM réelles, pas un délai de reprise garanti.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026 · journal des changements du dépôt</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">12</p>
|
||||
<aside>La meilleure preuve qu’un plan décrit vraiment un écosystème, c’est de tout raser et de tout reconstruire depuis le plan. On le fait régulièrement. Le 13 août, une flotte complète remontée d’un trait. Le 2 septembre, un écosystème rasé et refait depuis zéro. Depuis le 30 septembre, la reconstruction remet aussi l’état : l’autorité de certification, l’annuaire, les bases, les fichiers, le courriel. Le 4 octobre, les deux écosystèmes reconstruits avant d’étiqueter une release. Et le 9 octobre, les deux sur le même commit, sans rien demander à PyPI, à Ansible Galaxy ni à l’app store de Nextcloud : le site fournit tout. Quarante-trois minutes pour Chezlepro, d’une traite. Je précise : ce sont des épreuves datées, pas une promesse de délai de reprise.</aside>
|
||||
<section id="reconstructions" data-transition="fade" style="background:#102E28;color:#CFDDD3;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;justify-content:center;gap:40px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#B9EED2;font-weight:600">La preuve par l’épreuve</p>
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:220px;line-height:1;color:#F3F6EE">43 minutes</p>
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:48px;line-height:1.3;color:#B9EED2;width:1500px">pour raser une organisation entière et la reconstruire depuis son plan, intacte.</p>
|
||||
<p style="font-size:30px;line-height:1.45;width:1500px">Comptes, courriel, fichiers, bases de données, historique : identiques avant et après. Chezlepro, le 9 octobre 2026, d’une traite. Nous le refaisons régulièrement depuis août.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#8FA79B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#8FA79B">09</p>
|
||||
<aside>Voici la preuve qui compte le plus pour nous. Quarante-trois minutes : c’est le temps qu’il a fallu, le 9 octobre, pour raser entièrement l’écosystème de Chezlepro — treize machines — et le reconstruire depuis son plan, d’une seule commande. Et pas seulement les machines : les comptes, le courriel, les fichiers, les bases de données, l’historique de la supervision reviennent, identiques avant et après ; on le vérifie, empreinte par empreinte. Nous le faisons régulièrement depuis août : c’est notre façon de prouver que le plan décrit vraiment l’organisation. Une précision honnête : ce sont des épreuves datées, pas une promesse de délai de reprise.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,27 @@
|
|||
<section id="reste" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<section id="reste" data-section="La suite, et comment s’y joindre." data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:56px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">04 · La suite</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Les prochaines étapes.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">La suite</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:72px;font-weight:400;line-height:1.1;color:#152F2C">Les prochaines étapes.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:24px">
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">La délégation DNS</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Enregistrer la colle des deux serveurs de noms chez les registraires, puis déléguer les domaines.</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:28px">
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Nos domaines, chez nous</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Nos noms de domaine servis par nos propres serveurs de noms.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Le web public</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Des certificats Let’s Encrypt sur le frontal web, derrière son pare-feu applicatif.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Des sites web publics</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Ouverts au monde, chiffrés, protégés.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">La reprise entre sites</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Des sauvegardes croisées : chaque membre garde une copie de l’autre.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Une copie chez l’autre</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Chaque membre garde une sauvegarde de l’autre.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">D’autres membres</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Accueillir d’autres membres de l’Alliance, chacun avec son site, monté par le même moteur.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">D’autres membres</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Accueillir d’autres organisations dans l’Alliance.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">18</p>
|
||||
<aside>La suite. D’abord la délégation DNS : enregistrer chez les registraires la colle de nos deux serveurs de noms, puis leur déléguer nos domaines. Ensuite le web public : poser les certificats Let’s Encrypt sur le frontal web, qui a déjà son pare-feu applicatif. Puis la reprise entre les membres : des sauvegardes croisées, pour que chacun garde une copie de l’autre. Et accueillir d’autres membres de l’Alliance Boréale, chacun avec son site, monté par le même moteur.</aside>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">13</p>
|
||||
<aside>La suite. D’abord, nos domaines chez nous : nos deux serveurs de noms sont prêts, il reste à les déclarer chez les registraires. Ensuite, des sites web publics, chiffrés et protégés. Puis une copie chez l’autre : chaque membre gardera une sauvegarde de l’autre, sur l’autre site. Et surtout, accueillir d’autres organisations dans l’Alliance Boréale, chacune avec son écosystème, et pourquoi pas son site, monté par le même moteur.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,38 +1,25 @@
|
|||
<section id="secondsite" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:44px">
|
||||
<section id="secondsite" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:56px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">03 · TechnoLibre · 13 et 14 octobre</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Le site de TechnoLibre, construit depuis zéro.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">La fédération, concrètement</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Deux sites, deux membres, un filet commun.</h2>
|
||||
</div>
|
||||
<div style="position:relative;width:1664px;height:480px">
|
||||
<div style="position:absolute;left:0px;top:40px;width:330px;height:190px;background:#E8EFE5;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Internet</h3>
|
||||
<p style="font-size:24px;line-height:1.4">visiteurs, résolveurs, registraires</p>
|
||||
<div style="display:flex;gap:32px;align-items:center">
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:14px;background:#FDFDFA;border:1px solid #D5DFD7;border-top:4px solid #176754;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Site de Chezlepro</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Héberge les écosystèmes des deux membres.</p>
|
||||
</div>
|
||||
<div style="position:absolute;left:444px;top:40px;width:330px;height:190px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Relais (VPS)</h3>
|
||||
<p style="font-size:24px;line-height:1.4">3 adresses fixes louées, routées en /32</p>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;align-items:center;flex:none;width:260px">
|
||||
<x-shape kind="arrow-right" style="width:200px;height:48px;background:#C59C56"></x-shape>
|
||||
<p style="font-size:24px;color:#152F2C;text-align:center">un lien chiffré</p>
|
||||
<x-shape kind="arrow-left" style="width:200px;height:48px;background:#C59C56"></x-shape>
|
||||
</div>
|
||||
<div style="position:absolute;left:888px;top:40px;width:330px;height:190px;background:#102E28;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#F3F6EE">Frontière OPNsense</h3>
|
||||
<p style="font-size:24px;line-height:1.4;color:#CFDDD3">sans adresse fixe, elle initie le tunnel</p>
|
||||
<div style="flex:1;display:flex;flex-direction:column;gap:14px;background:#FDFDFA;border:1px solid #D5DFD7;border-top:4px solid #C59C56;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#152F2C">Site de TechnoLibre</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Assure la reprise des deux membres.</p>
|
||||
</div>
|
||||
<div style="position:absolute;left:1334px;top:40px;width:330px;height:190px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Proxmox · 9 VM</h3>
|
||||
<p style="font-size:24px;line-height:1.4">clonées en 30 secondes chacune</p>
|
||||
</div>
|
||||
<x-connector x1="330" y1="135" x2="444" y2="135" head="both" style="color:#5F716B"></x-connector>
|
||||
<x-connector x1="774" y1="135" x2="888" y2="135" head="both" style="color:#176754;border-width:4px;border-style:dashed"></x-connector>
|
||||
<p style="position:absolute;left:762px;top:0px;width:138px;font-size:24px;text-align:center;color:#176754">WireGuard</p>
|
||||
<x-connector x1="1218" y1="135" x2="1334" y2="135" head="both" style="color:#5F716B"></x-connector>
|
||||
<div style="position:absolute;left:888px;top:340px;width:330px;height:140px;background:#E8EFE5;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:8px">
|
||||
<h3 style="font-size:28px;font-weight:600;color:#152F2C">Site de Chezlepro</h3>
|
||||
<p style="font-size:24px;line-height:1.4">l’autre frontière</p>
|
||||
</div>
|
||||
<x-connector x1="1053" y1="230" x2="1053" y2="340" head="both" style="color:#176754;border-width:4px;border-style:dashed"></x-connector>
|
||||
<p style="position:absolute;left:1250px;top:300px;width:414px;font-size:24px;line-height:1.4;color:#152F2C">Lien entre les sites, WireGuard : réplication du DNS public, administration à distance.</p>
|
||||
<p style="position:absolute;left:0px;top:300px;width:820px;font-size:28px;line-height:1.45;color:#152F2C">Aucune traduction d’adresse : l’adresse du client arrive intacte. Deux serveurs de noms publics, un par site, servent les zones signées DNSSEC.</p>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026 · sur le matériel de TechnoLibre, la reprise des deux membres</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">15</p>
|
||||
<aside>Le 13 et le 14 octobre, nous avons construit le site de TechnoLibre, sur le matériel que TechnoLibre a fourni : une frontière OPNsense, un nœud Proxmox, un stockage ZFS en miroir pour les sauvegardes. C’est la fédération rendue concrète : ce site assure la reprise des deux membres. Le défi : ce site n’a qu’une adresse dynamique. La solution est un relais : trois adresses fixes louées sur un VPS, qui répond à l’ARP pour elles et les route en /32 dans un tunnel WireGuard que la frontière du site initie. Aucune traduction d’adresse : l’adresse du client arrive intacte jusqu’au service. Un second tunnel relie les deux sites : il réplique le DNS public et sert à administrer le site distant. Depuis le 14 octobre, chacune de nos zones publiques est servie par deux serveurs de noms, un par site, signés DNSSEC. Les neuf VM du site sont nées du gabarit en une trentaine de secondes chacune.</aside>
|
||||
<p style="font-size:32px;line-height:1.45;color:#152F2C;border-left:4px solid #176754;padding:8px 0 8px 28px">Construit depuis zéro par le moteur les 13 et 14 octobre, sur le matériel de TechnoLibre. Il sert déjà nos domaines publics ; il gardera bientôt une copie de chacun.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">11</p>
|
||||
<aside>Voici la fédération, concrètement. Deux sites, un par membre. Celui de Chezlepro héberge aujourd’hui les écosystèmes des deux organisations. Celui de TechnoLibre a été construit depuis zéro par le moteur, le 13 et le 14 octobre, sur le matériel que TechnoLibre a fourni. Les deux sont reliés par un lien chiffré. Le site de TechnoLibre sert déjà nos domaines publics : chacune de nos zones a désormais deux serveurs de noms, un sur chaque site. Prochaine étape : les sauvegardes croisées, pour que chaque site garde une copie de l’autre. C’est exactement l’idée de l’Alliance Boréale : mettre en commun ce qui gagne à l’être, sans que personne perde la maîtrise de ce qui est à lui. Un détail pour les curieux : ce site n’a pas d’adresse fixe ; un petit serveur loué lui prête trois adresses publiques par un tunnel WireGuard.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,34 +1,23 @@
|
|||
<section id="setops" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<section id="setops" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:64px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">01 · Ce que c’est</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Un moteur qui transforme un plan<br>en écosystème.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">Notre réponse</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:72px;font-weight:400;line-height:1.1;color:#152F2C">Vous décrivez votre organisation.<br>Set-OPS la construit.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 600px;gap:48px">
|
||||
<div style="display:flex;flex-direction:column">
|
||||
<div style="display:grid;grid-template-columns:260px 1fr;gap:24px;padding:20px 0;border-top:1px solid #C9D6CC">
|
||||
<p style="font-size:28px;font-weight:600;color:#176754">Le moteur</p>
|
||||
<p style="font-size:26px;line-height:1.4">Rôles Ansible, playbooks, scripts Python de dérivation, preuves. Un seul dépôt, générique.</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:48px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px;border-top:4px solid #176754;padding:28px 0 0 0">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:52px;line-height:1.1;color:#176754">Libre</p>
|
||||
<p style="font-size:30px;line-height:1.45">Tout le logiciel est libre, de bout en bout. Le moteur aussi.</p>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:260px 1fr;gap:24px;padding:20px 0;border-top:1px solid #C9D6CC">
|
||||
<p style="font-size:28px;font-weight:600;color:#176754">L’écosystème</p>
|
||||
<p style="font-size:26px;line-height:1.4">Un dépôt par organisation : son plan, son inventaire généré, sa voûte chiffrée.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:16px;border-top:4px solid #176754;padding:28px 0 0 0">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:52px;line-height:1.1;color:#176754">Reconstructible</p>
|
||||
<p style="font-size:30px;line-height:1.45">Tout est écrit : on peut tout raser et tout retrouver.</p>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:260px 1fr;gap:24px;padding:20px 0;border-top:1px solid #C9D6CC">
|
||||
<p style="font-size:28px;font-weight:600;color:#176754">Le site</p>
|
||||
<p style="font-size:26px;line-height:1.4">Un dépôt par hébergeur : grappe Proxmox, réseau, frontière OPNsense.</p>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:260px 1fr;gap:24px;padding:20px 0;border-top:1px solid #C9D6CC;border-bottom:1px solid #C9D6CC">
|
||||
<p style="font-size:28px;font-weight:600;color:#176754">L’exploitation</p>
|
||||
<p style="font-size:26px;line-height:1.4">La documentation, <span style="color:#152F2C">make</span> et une console web. Aucune IA requise.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;justify-content:center;gap:24px;background:#102E28;border-radius:16px;padding:48px">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:44px;line-height:1.2;color:#F3F6EE">Logiciel libre, exclusivement.</p>
|
||||
<p style="font-size:28px;line-height:1.45;color:#CFDDD3">Ni Docker, ni Podman : des services natifs, des paquets Debian et systemd, sur des VM Debian 13 clonées d’un gabarit durci.</p>
|
||||
<p style="font-size:24px;color:#B9EED2">Licence AGPLv3 ou ultérieure</p>
|
||||
<div style="display:flex;flex-direction:column;gap:16px;border-top:4px solid #176754;padding:28px 0 0 0">
|
||||
<p style="font-family:'Source Serif 4', Georgia, serif;font-size:52px;line-height:1.1;color:#176754">Transmissible</p>
|
||||
<p style="font-size:30px;line-height:1.45">Un administrateur le reprend sans nous, et sans IA.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">04</p>
|
||||
<aside>Set-OPS est un moteur : des rôles Ansible et des scripts Python qui lisent un plan déclaratif et en dérivent tout le reste. Le moteur est générique ; chaque écosystème réel vit dans son propre dépôt, avec sa voûte. L’hébergeur, lui, a son dépôt de site : la grappe Proxmox, le réseau, la frontière OPNsense. Deux principes fondateurs : tout est en logiciel libre, et pas de conteneurs — des services natifs, comme un administrateur Debian les installerait à la main. Et l’outil doit s’exploiter sans IA : la documentation, make et la console suffisent. Je le dis franchement : le mainteneur, lui, se fait assister par une IA pour écrire le moteur ; l’exploitant n’en a pas besoin.</aside>
|
||||
<aside>Notre réponse tient en une phrase : vous décrivez votre organisation, Set-OPS la construit. On écrit dans quelques fichiers ce dont l’organisation a besoin — ses services, ses machines, ses domaines — et le moteur fait le reste. Trois engagements. Libre : tout le logiciel l’est, le moteur aussi, sous licence AGPL. Reconstructible : comme tout est écrit, on peut tout raser et tout retrouver ; je vous montrerai que ce n’est pas une figure de style. Transmissible : un administrateur peut reprendre l’écosystème sans nous, avec la documentation et quelques commandes, sans IA. Pour les curieux : c’est du Ansible et du Python, sur Proxmox et Debian, sans conteneurs.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,31 +1,21 @@
|
|||
<section id="site" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<section id="site" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:56px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">02 · Héberger sans posséder</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Un site héberge, une organisation possède.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">Héberger sans posséder</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">L’hébergeur prête l’abri.<br>L’organisation garde les clés.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 300px 1fr;gap:32px;align-items:center">
|
||||
<div style="display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#7A5A1E">Le site · l’hébergeur</h3>
|
||||
<p style="font-size:26px;line-height:1.4">Grappe Proxmox, SDN, stockage, frontière OPNsense.</p>
|
||||
<p style="font-size:26px;line-height:1.4">Crée et détruit les machines, avec sa propre voûte.</p>
|
||||
<p style="font-size:26px;line-height:1.4">Prête trois services à un écosystème jeune : les paquets, la forge du moteur, la résolution de noms.</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 200px 1fr;gap:32px;align-items:center">
|
||||
<div style="display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-top:4px solid #C59C56;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#7A5A1E">L’hébergeur</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Fournit le matériel, le réseau et la porte d’entrée. Crée les machines.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:20px;align-items:center">
|
||||
<p style="font-size:24px;color:#152F2C;text-align:center">fiche du site</p>
|
||||
<x-shape kind="arrow-right" style="width:180px;height:56px;background:#C59C56"></x-shape>
|
||||
<div style="height:24px"></div>
|
||||
<x-shape kind="arrow-left" style="width:180px;height:56px;background:#176754"></x-shape>
|
||||
<p style="font-size:24px;color:#152F2C;text-align:center">face réseau</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:32px;font-weight:600;color:#176754">L’écosystème · l’organisation</h3>
|
||||
<p style="font-size:26px;line-height:1.4">Son plan, sa voûte, son annuaire, son autorité, ses journaux.</p>
|
||||
<p style="font-size:26px;line-height:1.4">Configure ses services par son propre serveur d’exploitation.</p>
|
||||
<p style="font-size:26px;line-height:1.4">Peut partir : plan, données, voûte et domaines s’emportent.</p>
|
||||
<x-shape kind="arrow-right" style="width:160px;height:52px;background:#C59C56;align-self:center"></x-shape>
|
||||
<div style="display:flex;flex-direction:column;gap:16px;background:#FDFDFA;border:1px solid #D5DFD7;border-top:4px solid #176754;border-radius:12px;padding:40px">
|
||||
<h3 style="font-size:34px;font-weight:600;color:#176754">L’organisation</h3>
|
||||
<p style="font-size:28px;line-height:1.45">Possède son plan, ses données, ses comptes et ses clés.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size:30px;line-height:1.4;color:#152F2C;border-left:4px solid #176754;padding:8px 0 8px 28px">Même entreprise ne veut pas dire même pouvoir : une voûte par dépôt, une clé par voûte, et chaque serveur d’exploitation ne lit que son propre dépôt.</p>
|
||||
<p style="font-size:32px;line-height:1.4;color:#152F2C;border-left:4px solid #176754;padding:8px 0 8px 28px">Elle peut partir quand elle veut, avec son plan, ses données et ses domaines.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">10</p>
|
||||
<aside>Deux classes d’écosystème, un contrat entre elles. Le site, c’est l’hébergeur : le matériel, le réseau, la frontière ; il crée les machines. L’écosystème, c’est l’organisation : son plan, sa voûte, son identité, ses journaux ; il configure ses propres services. Le site publie une fiche — son résolveur, son cache de paquets, sa forge, les adresses publiques qu’il attribue — que le moteur dépose chez chaque locataire. Le locataire publie sa face réseau, que le site lit pour poser ses règles. Le site prête trois services à un écosystème jeune, jusqu’à ce qu’il ait les siens : on appelle ça la filiation, puis l’émancipation. Et une organisation peut partir avec son plan, ses données, sa voûte et ses domaines. Même quand une seule entreprise tient les deux rôles, les clés restent séparées.</aside>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">07</p>
|
||||
<aside>Une idée qui nous tient à cœur : héberger, ce n’est pas posséder. L’hébergeur prête l’abri : le matériel, le réseau, la porte d’entrée ; c’est lui qui crée les machines. L’organisation garde les clés : son plan, ses données, ses comptes, ses secrets, chiffrés avec sa propre clé. Les deux rôles restent séparés, même quand la même entreprise les tient. Et surtout, l’organisation peut partir quand elle veut, avec son plan, ses données et ses domaines, vers un autre hébergeur qui fait tourner le même moteur. C’est l’inverse de l’enfermement.</aside>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,28 +1,23 @@
|
|||
<section id="zeroconfiance" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:48px">
|
||||
<section id="zeroconfiance" data-transition="fade" style="background:#F6F7F0;color:#3E5550;font-family:'IBM Plex Sans', Arial, sans-serif;padding:128px 128px 160px;display:flex;flex-direction:column;gap:64px">
|
||||
<div style="display:flex;flex-direction:column;gap:16px">
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">03 · Zéro confiance, est-ouest</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:64px;font-weight:400;line-height:1.1;color:#152F2C">Le trafic interne est chiffré aussi.</h2>
|
||||
<p style="font-size:24px;letter-spacing:3px;text-transform:uppercase;color:#176754;font-weight:600">La sécurité par défaut</p>
|
||||
<h2 style="font-family:'Source Serif 4', Georgia, serif;font-size:72px;font-weight:400;line-height:1.1;color:#152F2C">Chiffré, même à l’intérieur.</h2>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:24px">
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">PostgreSQL : TLS obligatoire</h3>
|
||||
<p style="font-size:26px;line-height:1.45"><span style="color:#176754">hostssl</span> seulement dans <span style="color:#176754">pg_hba</span> ; les clients vérifient le serveur en <span style="color:#176754">verify-full</span>.</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:48px">
|
||||
<div style="display:flex;flex-direction:column;gap:20px">
|
||||
<x-icon name="Lock" style="color:#176754;width:64px;height:64px"></x-icon>
|
||||
<p style="font-size:32px;line-height:1.4;color:#152F2C">Bases de données, métriques et journaux : chiffrés entre machines, chaque partie vérifiant l’autre.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Métriques et journaux en HTTPS</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Mesuré le 12 octobre : 15 écoutes sur 15 en TLS dans chaque écosystème, 11 sur 11 au site.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:20px">
|
||||
<x-icon name="Globe" style="color:#176754;width:64px;height:64px"></x-icon>
|
||||
<p style="font-size:32px;line-height:1.4;color:#152F2C">Rien ne sort vers Internet sans une raison écrite dans le plan.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Aucune sortie sans déclaration</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Depuis le 10 octobre, aucune machine ne sort vers Internet sans un rôle qui le dise. Le site sert les paquets.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px;background:#FDFDFA;border:1px solid #D5DFD7;border-radius:12px;padding:36px">
|
||||
<h3 style="font-size:30px;font-weight:600;color:#152F2C">Un pare-feu devant chaque VM</h3>
|
||||
<p style="font-size:26px;line-height:1.45">Le pare-feu de Proxmox est actif, VM par VM, refus par défaut, depuis le 28 septembre.</p>
|
||||
<div style="display:flex;flex-direction:column;gap:20px">
|
||||
<x-icon name="Trust" style="color:#176754;width:64px;height:64px"></x-icon>
|
||||
<p style="font-size:32px;line-height:1.4;color:#152F2C">Un pare-feu devant chaque machine, qui refuse tout ce qui n’est pas prévu.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size:28px;line-height:1.45;color:#152F2C;border-left:4px solid #176754;padding:8px 0 8px 28px">Chaque flux déclare son chiffrement ; le registre des flux, généré, en fait la synthèse.</p>
|
||||
<p style="position:absolute;left:128px;bottom:64px;width:1200px;font-size:24px;color:#5F716B">Set-OPS · Rencontres Linux du Québec 2026</p>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">14</p>
|
||||
<aside>Une directive du 12 octobre : tout transit est chiffré, l’interne comme l’externe. PostgreSQL n’accepte plus que des connexions TLS, et ses clients vérifient l’identité du serveur. Les métriques et les journaux passent en HTTPS vérifié par l’autorité de certification de l’écosystème : mesuré le 12 octobre, toutes les écoutes concernées sont en TLS. Deuxième chantier : plus aucune machine ne sort vers Internet sans qu’un rôle le déclare ; les paquets Debian, les roues Python, les collections Ansible et les applications Nextcloud viennent du site. Et le pare-feu de Proxmox filtre devant chaque VM. Chaque flux déclare s’il est chiffré, et le registre des flux, généré, en fait la synthèse.</aside>
|
||||
<p style="position:absolute;right:128px;bottom:64px;width:120px;text-align:right;font-size:24px;color:#5F716B">10</p>
|
||||
<aside>La sécurité, par défaut. On a l’habitude de chiffrer ce qui sort vers Internet ; ici, on chiffre aussi ce qui circule à l’intérieur. Les échanges entre machines — la base de données, les métriques, les journaux — sont chiffrés, et chaque partie vérifie l’identité de l’autre avec l’autorité de certification de l’organisation. Rien ne sort vers Internet sans qu’une raison soit écrite dans le plan : même les paquets viennent du site d’hébergement. Et chaque machine a son pare-feu, qui refuse tout ce qui n’est pas prévu. Comme tout cela découle du plan, les règles ne se contredisent pas d’une couche à l’autre.</aside>
|
||||
</section>
|
||||
|
|
|
|||
Loading…
Reference in a new issue