{"id":7,"date":"2026-09-11T14:03:30","date_gmt":"2026-09-11T14:03:30","guid":{"rendered":"https:\/\/noteback.chabod.eu\/?p=7"},"modified":"2026-09-11T14:03:30","modified_gmt":"2026-09-11T14:03:30","slug":"doc-02-planning","status":"publish","type":"post","link":"https:\/\/noteback.chabod.eu\/?p=7","title":{"rendered":"Planning des phases"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Document g\u00e9n\u00e9r\u00e9 automatiquement depuis <code>\/home\/jerome\/pub\/docs\/02-planning.md<\/code> sur kimsufi3, le 11 September 2026 \u00e0 14:03. Toute modification faite ici sera \u00e9cras\u00e9e \u00e0 la prochaine r\u00e9g\u00e9n\u00e9ration : \u00e9diter le fichier source.<\/em><\/p>\n\n\n<p>\u00c9tabli le 9 septembre 2026. Les dur\u00e9es de transfert sont <strong>mesur\u00e9es<\/strong>, pas estim\u00e9es.<\/p>\n<h2 id=\"la-machine\">La machine<\/h2>\n<p><strong>Kimsufi KS-3<\/strong> \u2014 Atom N2800, 4 Go DDR3, 2 To SATA, RBX4 (rack 50C18, ID 229830). Reconduction <strong>automatique de mois en mois<\/strong> : pas d&#8217;\u00e9ch\u00e9ance \u00e0 surveiller.<\/p>\n<p>Les 100 Mbit\/s sont la <strong>sp\u00e9cification vendue<\/strong> de cette offre, pas une panne : aucun ticket \u00e0 ouvrir (cf. <code>03-ticket-ovh-debit.md<\/code>).<\/p>\n<h2 id=\"la-contrainte-qui-structure-tout--100-mbits\">La contrainte qui structure tout : 100 Mbit\/s<\/h2>\n<p>k3 est raccord\u00e9 \u00e0 <strong>100 Mbit\/s<\/strong>, contre 1 Gbit\/s pour k4. Mesure r\u00e9elle d&#8217;un transfert k4 \u2192 k3 : <strong>10 Mo\/s<\/strong>, soit 80 % du lien \u2014 un bon rendement pour du SSH. Le r\u00e9seau est satur\u00e9, pas le CPU : aucun r\u00e9glage de chiffrement n&#8217;y changera rien.<\/p>\n<table>\n<thead>\n<tr>\n<th>Transfert<\/th>\n<th>Volume<\/th>\n<th>Dur\u00e9e mesur\u00e9e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>nextcloud_NCData<\/code><\/td>\n<td>725 Go<\/td>\n<td><strong>19 h 30<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Cercle 1 (mailcow + configs)<\/td>\n<td>13 Go<\/td>\n<td>~22 min<\/td>\n<\/tr>\n<tr>\n<td><code>\/var\/www<\/code><\/td>\n<td>4,9 Go<\/td>\n<td>~8 min<\/td>\n<\/tr>\n<tr>\n<td>Delta horaire mailcow<\/td>\n<td>quelques Mo<\/td>\n<td>quelques secondes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>La carte supporte et annonce le gigabit, mais le port est brid\u00e9 par l&#8217;offre. C&#8217;est un plafond d\u00e9finitif : le planning ci-dessous est calcul\u00e9 dessus.<\/p>\n<p><strong>Cons\u00e9quence \u00e0 assumer<\/strong> : en mode d\u00e9grad\u00e9, k3 servira Nextcloud sur un lien 10 fois plus \u00e9troit. Pour le mail et Home Assistant c&#8217;est indolore ; pour le t\u00e9l\u00e9chargement de gros fichiers, ce sera lent mais utilisable.<\/p>\n<h2 id=\"vue-densemble\">Vue d&#8217;ensemble<\/h2>\n<pre><code>sept.        S37          S38          S39          S40      S41       S42+\n         09 \u2500\u2500\u2500 15    16 \u2500\u2500\u2500 22    23 \u2500\u2500\u2500 29    30 \u2500\u2500\u2500 06  07 \u2500\u2500 12  20 \u2500\u2500\u2500\n         \u2502            \u2502            \u2502            \u2502          \u2502        \u2502\n  P0 \u2500\u2500\u2500\u2500\u2524            \u2502            \u2502            \u2502          \u2502        \u2502\n  r\u00e9install + 19h30   \u2502            \u2502            \u2502          \u2502        \u2502\n         \u2502            \u2502            \u2502            \u2502          \u2502        \u2502\n         P1 \u2500 P2 \u2500\u2500\u2500\u2500\u2500\u2524            \u2502            \u2502          \u2502        \u2502\n         r\u00f4le, r\u00e9plication         \u2502            \u2502          \u2502        \u2502\n                      \u2502            \u2502            \u2502          \u2502        \u2502\n                      P3 \u2500 P4 \u2500\u2500\u2500\u2500\u2500\u2524            \u2502          \u2502        \u2502\n                      dumps, pr\u00e9pa k3           \u2502          \u2502        \u2502\n                                   \u2502            \u2502          \u2502        \u2502\n                                   P5 \u2500 P6 \u2500\u2500\u2500\u2500\u2500\u2524          \u2502        \u2502\n                                   noteback, bascule       \u2502        \u2502\n                                                \u2502          \u2502        \u2502\n                                                P7 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524        \u2502\n                                                aller-retour        \u2502\n                                                           \u25b2        \u2502\n                                                    13 oct : ACME   P8\n                                                    NE RIEN FAIRE   upgrade k4<\/code><\/pre>\n<h2 id=\"d\u00e9tail\">D\u00e9tail<\/h2>\n<h3 id=\"phase-0--r\u00e9installation-de-k3--s37-1-jour--1-nuit\">Phase 0 \u2014 R\u00e9installation de k3 \u00b7 <strong>S37, 1 jour + 1 nuit<\/strong><\/h3>\n<table>\n<thead>\n<tr>\n<th>\u00c9tape<\/th>\n<th>Dur\u00e9e<\/th>\n<th>Nature<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><del>Audit avant effacement<\/del><\/td>\n<td>\u2014<\/td>\n<td><strong>fait le 09\/09<\/strong><\/td>\n<\/tr>\n<tr>\n<td><del>Sauvegarde sonde + identit\u00e9 SSH<\/del><\/td>\n<td>\u2014<\/td>\n<td><strong>fait le 09\/09<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Abaisser les TTL DNS (900 s chez LWS)<\/td>\n<td>15 min<\/td>\n<td>\u00e0 ta main, <strong>\u00e0 faire tout de suite<\/strong><\/td>\n<\/tr>\n<tr>\n<td>R\u00e9installation OVH<\/td>\n<td>20-40 min<\/td>\n<td>machine<\/td>\n<\/tr>\n<tr>\n<td><code>--restaurer-identite<\/code> puis post-install<\/td>\n<td>15 min<\/td>\n<td>\u00e0 ta main<\/td>\n<\/tr>\n<tr>\n<td><strong>Transfert de NCData<\/strong><\/td>\n<td><strong>19 h 30<\/strong><\/td>\n<td>machine, \u00e0 lancer le soir<\/td>\n<\/tr>\n<tr>\n<td>Transfert du cercle 1 + <code>\/var\/www<\/code><\/td>\n<td>30 min<\/td>\n<td>machine<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote>\n<p>Le transfert de NCData est le point de non-retour du calendrier : 19 h 30 pendant lesquelles <code>NCData<\/code> n&#8217;existe qu&#8217;en un exemplaire, sur k4. Le lancer un soir, le v\u00e9rifier le lendemain.<\/p>\n<\/blockquote>\n<blockquote>\n<p><strong>Les TTL sont \u00e0 traiter en premier, et pas seulement pour gagner du temps.<\/strong> <code>kimsufi4.chabod.eu<\/code> est \u00e0 <strong>86 400 s (24 h)<\/strong>, et abaisser un TTL ne prend effet qu&#8217;apr\u00e8s expiration de l&#8217;ancien : tant qu&#8217;ils ne sont pas abaiss\u00e9s depuis plus de 24 h, aucune bascule \u2014 test compris \u2014 ne peut aboutir en moins d&#8217;une journ\u00e9e. D\u00e9tail dans <code>04-dns-bascule.md<\/code>.<\/p>\n<\/blockquote>\n<h3 id=\"phase-1--m\u00e9canisme-de-r\u00f4le--s38-3-h\">Phase 1 \u2014 M\u00e9canisme de r\u00f4le \u00b7 <strong>S38, ~3 h<\/strong><\/h3>\n<p>R\u00f4le <code>actif<\/code>\/<code>veille<\/code>, <code>dockersync-guard.service<\/code>, liste blanche. Test : red\u00e9marrer k3 et v\u00e9rifier que rien ne monte tout seul. <strong>Rien ne doit \u00eatre r\u00e9pliqu\u00e9 avant que cette phase soit finie<\/strong> \u2014 c&#8217;est elle qui emp\u00eache un k4 r\u00e9par\u00e9 d&#8217;\u00e9craser des donn\u00e9es fra\u00eeches.<\/p>\n<h3 id=\"phase-2--script-de-r\u00e9plication--s38-5-h--observation\">Phase 2 \u2014 Script de r\u00e9plication \u00b7 <strong>S38, ~5 h + observation<\/strong><\/h3>\n<p>Le plus gros morceau de code. Premier passage en <code>--dry-run<\/code>, <strong>sortie relue ensemble<\/strong> avant d&#8217;armer <code>--delete<\/code>. Puis quelques jours d&#8217;observation : k3 doit cesser de cro\u00eetre, ce qui n&#8217;a jamais \u00e9t\u00e9 le cas jusqu&#8217;ici.<\/p>\n<h3 id=\"phase-3--dumps-coh\u00e9rents--s39-3-h\">Phase 3 \u2014 Dumps coh\u00e9rents \u00b7 <strong>S39, ~3 h<\/strong><\/h3>\n<p>R\u00e9utilise la logique de <code>\/opt\/backup\/backup.bash<\/code>, en ajoutant la cadence horaire pour mailcow. V\u00e9rification : restaurer le dump dans un conteneur jetable et compter les bo\u00eetes.<\/p>\n<h3 id=\"phase-4--pr\u00e9parer-k3-\u00e0-la-charge--s39-3-h\">Phase 4 \u2014 Pr\u00e9parer k3 \u00e0 la charge \u00b7 <strong>S39, ~3 h<\/strong><\/h3>\n<p>Profil mailcow d\u00e9grad\u00e9, HELO postfix, <code>docker compose pull<\/code> p\u00e9riodique.<\/p>\n<h3 id=\"phase-5--noteback-et-documentation--s40-4-h\">Phase 5 \u2014 <code>noteback<\/code> et documentation \u00b7 <strong>S40, ~4 h<\/strong><\/h3>\n<p>Instance WordPress d\u00e9di\u00e9e sur k3, g\u00e9n\u00e9ralisation de <code>publier-docs-note.sh<\/code> et extension de son garde-fou anti-fuite.<\/p>\n<h3 id=\"phase-6--scripts-de-bascule--s40-6-h\">Phase 6 \u2014 Scripts de bascule \u00b7 <strong>S40, ~6 h<\/strong><\/h3>\n<p><code>bascule.sh --planifie<\/code> et <code>--urgence<\/code>, fusion du store ACME, checklist DNS.<\/p>\n<h3 id=\"phase-7--tests--s41-1-journ\u00e9e\">Phase 7 \u2014 Tests \u00b7 <strong>S41, 1 journ\u00e9e<\/strong><\/h3>\n<p>Test \u00e0 blanc sans toucher au DNS, puis <strong>aller-retour complet chronom\u00e9tr\u00e9<\/strong>. C&#8217;est le seul test qui valide le cas d&#8217;usage dist-upgrade.<\/p>\n<blockquote>\n<p><strong>Pr\u00e9requis : les TTL doivent avoir \u00e9t\u00e9 abaiss\u00e9s depuis plus de 24 h.<\/strong><\/p>\n<p><strong>\u00c0 terminer avant le 10 octobre.<\/strong> Le 13 octobre tombe le premier renouvellement ACME automatique (cf. <code>HERITAGE.md<\/code>) : il doit se d\u00e9rouler sur k4 en conditions normales, pas au milieu d&#8217;une bascule.<\/p>\n<\/blockquote>\n<h3 id=\"warning-13-octobre-2026--renouvellement-acme\">\u26a0\ufe0f 13 octobre 2026 \u2014 renouvellement ACME<\/h3>\n<p>Ne rien faire ce jour-l\u00e0. Rejouer <code>~\/claude\/scripts\/inspect-acme-store-2026-09-01.sh<\/code> pour v\u00e9rifier que les 19 certificats se sont renouvel\u00e9s proprement.<\/p>\n<h3 id=\"phase-8--dist-upgrade-de-k4-vers-2604--s42-ou-apr\u00e8s-1-journ\u00e9e\">Phase 8 \u2014 Dist-upgrade de k4 vers 26.04 \u00b7 <strong>S42 ou apr\u00e8s, 1 journ\u00e9e<\/strong><\/h3>\n<p>L&#8217;aboutissement : basculer sur k3, migrer k4, revenir. \u00c0 ne lancer qu&#8217;une fois l&#8217;ACME du 13 octobre dig\u00e9r\u00e9, et l&#8217;aller-retour de la phase 7 r\u00e9ussi.<\/p>\n<h2 id=\"r\u00e9capitulatif\">R\u00e9capitulatif<\/h2>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>Travail actif<\/th>\n<th>Temps machine<\/th>\n<th>Calendrier<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Phase 0<\/td>\n<td>~1 h<\/td>\n<td><strong>20 h<\/strong><\/td>\n<td>S37<\/td>\n<\/tr>\n<tr>\n<td>Phases 1-2<\/td>\n<td>~8 h<\/td>\n<td>\u2014<\/td>\n<td>S38<\/td>\n<\/tr>\n<tr>\n<td>Phases 3-4<\/td>\n<td>~6 h<\/td>\n<td>\u2014<\/td>\n<td>S39<\/td>\n<\/tr>\n<tr>\n<td>Phases 5-6<\/td>\n<td>~10 h<\/td>\n<td>\u2014<\/td>\n<td>S40<\/td>\n<\/tr>\n<tr>\n<td>Phase 7<\/td>\n<td>~6 h<\/td>\n<td>\u2014<\/td>\n<td>S41<\/td>\n<\/tr>\n<tr>\n<td>Phase 8<\/td>\n<td>~6 h<\/td>\n<td>\u2014<\/td>\n<td>S42+<\/td>\n<\/tr>\n<tr>\n<td><strong>Total<\/strong><\/td>\n<td><strong>~37 h<\/strong><\/td>\n<td><strong>20 h<\/strong><\/td>\n<td><strong>~6 semaines<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Les six semaines sont une cadence confortable, pas un chemin critique : \u00e0 part les 19 h 30 de transfert initial, rien n&#8217;est incompressible. L&#8217;ordre, en revanche, ne se n\u00e9gocie pas \u2014 la phase 1 avant toute r\u00e9plication, et la phase 7 avant la 8.<\/p>","protected":false},"excerpt":{"rendered":"<p>Document g\u00e9n\u00e9r\u00e9 automatiquement depuis \/home\/jerome\/pub\/docs\/02-planning.md sur kimsufi3, le 11 September 2026 \u00e0 14:03. Toute modification faite ici sera \u00e9cras\u00e9e \u00e0 la prochaine r\u00e9g\u00e9n\u00e9ration : \u00e9diter le fichier source. \u00c9tabli le 9 septembre 2026. Les dur\u00e9es de transfert sont mesur\u00e9es, pas estim\u00e9es. La machine Kimsufi KS-3 \u2014 Atom N2800, 4 Go DDR3, 2 To SATA, RBX4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-exploitation-dockersync"],"_links":{"self":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":0,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/posts\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}