Un raton laveur polygonal sort d'une boîte orange portant le logo Ubuntu, sur un fond géométrique violet et orange. Parfait pour présenter Ubuntu 24.04 LTS ou pour inspirer votre prochain projet de serveur de migration.

Serveur : migration vers Ubuntu 26.04 LTS depuis Ubuntu 24.04 LTS

Ubuntu 26.04 LTS, nom de code Resolute Raccoon, est disponible depuis le 23 avril 2026. C’est une version LTS, donc une version de support longue durée, maintenue jusqu’en avril 2031 en support standard, avec une extension possible via Ubuntu Pro.

Comme toujours avec une LTS, la promesse est simple : moins de panique, plus de stabilité. Enfin, en théorie. En pratique, une migration de serveur reste une opération chirurgicale : il faut préparer, sauvegarder, lire les logs, tester les services, puis corriger les petits dragons qui sortent du bois.

Dans mon cas, la migration d’un serveur Ubuntu 24.04 LTS vers Ubuntu 26.04 LTS s’est globalement bien passée. Cependant, trois services ont demandé une intervention après redémarrage :

  • Nginx, car le support Brotli nécessite désormais d’installer explicitement les modules Brotli.
  • Dovecot, car la configuration 2.3 ne fonctionne plus telle quelle avec Dovecot 2.4.
  • Postfix, car certaines directives TLS historiques sont désormais obsolètes ou remplacées.

Rien d’insurmontable, mais assez pour transformer une mise à jour tranquille en soirée “journalctl et bière triple”.

Ce qu’apporte Ubuntu 26.04 LTS

Ubuntu 26.04 LTS consolide deux années d’évolutions depuis Ubuntu 24.04 LTS. Si vous migrez depuis 24.04, vous récupérez donc les changements introduits dans les versions intermédiaires 24.10, 25.04 et 25.10, puis ceux propres à 26.04.

Canonical met surtout l’accent sur la sécurité, la résilience, le support matériel récent, les composants mémoire-safe, les permissions applicatives, le chiffrement TPM, les optimisations serveur et le support Arm Livepatch.

Pour un serveur, les points intéressants sont les suivants.

Support long terme jusqu’en 2031

Ubuntu 26.04 LTS reçoit cinq ans de correctifs de sécurité et de maintenance critique. Cela en fait une base saine pour un serveur web, un serveur mail, une stack WordPress/WooCommerce, un serveur Nextcloud ou une machine dédiée OVH.

Avec Ubuntu Pro, le support étendu peut aller jusqu’à dix ans. C’est utile pour les environnements où l’on ne veut pas refaire une migration complète tous les cinq ans.

Kernel plus récent et meilleur support matériel

Ubuntu 26.04 LTS arrive avec un noyau plus moderne, ce qui améliore le support du matériel récent : CPU, contrôleurs réseau, stockage NVMe, cartes graphiques, pilotes et plateformes serveur plus récentes. Pour un serveur dédié, ce n’est pas forcément spectaculaire au quotidien, mais cela compte dès qu’on utilise du matériel récent ou des fonctionnalités bas niveau.

Sur une machine OVH, Hetzner, Scaleway ou un serveur maison, cela peut régler des détails pénibles : meilleure gestion d’énergie, meilleure détection matériel, pilotes réseau plus propres, ou meilleure prise en charge du stockage.

Sécurité renforcée

Ubuntu 26.04 LTS continue le gros travail de durcissement côté système. Canonical cite notamment le chiffrement complet du disque adossé au TPM, une meilleure gestion des permissions applicatives, plus de composants mémoire-safe, ainsi que Livepatch sur davantage de plateformes.

Sur un serveur web, ce n’est pas une raison pour relâcher AppArmor, SSH, UFW/nftables, Fail2ban ou les mises à jour automatiques. Mais c’est une base plus moderne.

Toolchain et paquets serveur plus récents

Comme toujours, une nouvelle LTS apporte des versions plus récentes des outils système, bibliothèques, compilateurs, runtimes et paquets serveur.

C’est une bonne nouvelle pour les stacks modernes, mais cela peut casser des configurations anciennes. Et c’est précisément ce qui m’est arrivé avec Dovecot et Postfix. Les fichiers de configuration qui vivaient leur meilleure vie depuis dix ans n’aiment pas toujours le futur.

Faut-il migrer tout de suite ?

Sur un poste de test, oui. Sur un serveur de production, cela dépend.

Canonical indique que les utilisateurs d’Ubuntu 25.10 se verront proposer la mise à niveau vers 26.04 rapidement, tandis que les utilisateurs d’Ubuntu 24.04 LTS recevront normalement la proposition de mise à niveau automatique avec Ubuntu 26.04.1 LTS, prévue pour le 4 août 2026.

Donc, pour un serveur client critique, j’aurais tendance à attendre 26.04.1, sauf besoin réel. Pour un serveur personnel, un serveur bien sauvegardé, ou une machine que l’on sait réparer en SSH, la migration est faisable maintenant.

Dans tous les cas : sauvegarde d’abord, héroïsme ensuite.

Lire la suite

Tutoriel graphique français intitulé "Comment créer un ACCORDÉON SANS JAVASCRIPT ?" utilisant la méthode moderne avec summary et details. Boutons "Afficher plus" et "Masquer le texte", coche, exemple de texte et balises HTML  /  sur fond de codage.

Comment créer un accordéon sans JavaScript : la méthode moderne avec summary et details

On cherche souvent la même chose : réduire le bruit visuel, garder la page lisible et laisser le lecteur déplier ce qui l’intéresse. En 2026, on obtient ce résultat proprement avec <details> et <summary>. Le navigateur fournit un widget natif. Ainsi, on évite les dépendances JavaScript, on simplifie le DOM et on améliore la robustesse.

Pourquoi ce pattern est la meilleure base en 2026

On gagne immédiatement sur quatre axes.

  1. Performance réelle
    On supprime l’initialisation JS, les gestionnaires d’évènements et les recalculs inutiles. Le widget se comporte nativement.
  2. Sémantique HTML correcte
    On décrit une “divulgation” de contenu, pas une mise en scène. La spec définit clairement open et le comportement attendu.
  3. Accessibilité native
    Le navigateur gère l’état ouvert/fermé et il le communique aux technologies d’assistance dans la plupart des cas. Cela réduit les erreurs d’implémentation « maison ».
  4. Maintenance facile
    On lit le HTML en une seconde. Ensuite, on itère avec CSS. Enfin, on n’ajoute du JS que si la valeur est claire.

Le modèle minimal, propre et “copier-coller”

On commence par la version la plus stable.

<details>
  <summary>Lire la suite</summary>
  <p>
    Ce contenu reste masqué par défaut. On l’affiche en cliquant sur le résumé.
  </p>
</details>
Code language: HTML, XML (xml)
  • Quand open est absent, on n’affiche que le <summary>.
  • Quand open est présent, on affiche aussi le contenu.
<details open>
  <summary>Replier</summary>
  <p>Le contenu s’affiche dès le chargement.</p>
</details>
Code language: HTML, XML (xml)

Lire la suite

L'image montre le texte "php" en minuscules avec une police moderne et audacieuse, mettant en évidence PHP 8.5. Le dégradé passe du rose à l'orange puis au bleu sur un fond bleu foncé, créant un effet vibrant et lumineux.

Installer PHP 8.5 sous Ubuntu Server

PHP 8.5 est sorti le 20 novembre 2025. Cette version continue la dynamique de PHP 8.x : plus de productivité, meilleure DX et un langage qui vous pousse vers les bonnes pratiques sans casser tout votre code.

Dans cet article, on passe en revue les nouveautés majeures, les changements subtils (mais importants) et ce que vous devez vérifier avant de passer votre stack en 8.5.

PHP 8.5 en un coup d’œil

En bref, PHP 8.5 apporte :

  • L’opérateur pipe |> pour chaîner les appels de manière lisible.
  • Une nouvelle extension URI native pour parser et manipuler les URLs proprement.
  • clone() amélioré avec un paramètre pour modifier des propriétés pendant le clonage.
  • L’attribut #[\NoDiscard] pour signaler les retours à ne pas ignorer.
  • Closures et first-class callables utilisables dans les expressions constantes.
  • Nouvelles fonctions utilitaires comme array_first(), array_last(), get_error_handler(), get_exception_handler().
  • OPcache obligatoire, intégré au binaire PHP.
  • Stack trace sur les erreurs fatales et nouvelles options de debug.
  • Une salve de dépréciations ciblées (backticks, casts non canoniques, etc.).

L’opérateur pipe |> : fini la salade d’appels imbriqués

C’est la star de PHP 8.5. L’opérateur pipe permet de chaîner des appels de fonctions en lisant le flux de gauche à droite.

Avant : du code illisible

<?php

$title = ' PHP 8.5 Released ';

$slug = strtolower(
    str_replace('.', '',
        str_replace(' ', '-',
            trim($title)
        )
    )
);Code language: PHP (php)

Maintenant : des pipelines explicites

<?php

$title = ' PHP 8.5 Released ';

$slug = $title
    |> trim(...)
    |> (fn (string $str): string => str_replace(' ', '-', $str))
    |> (fn (string $str): string => str_replace('.', '', $str))
    |> strtolower(...);Code language: HTML, XML (xml)

Quelques points clés :

  • La valeur de gauche est passée implicitement comme premier argument des callables de droite.
  • Vous pouvez utiliser des fonctions, des closures, des first-class callables ($obj->method(...), Class::staticMethod(...)).
  • Le pipe ne remplace pas tout, mais il rend les transformations successives nettement plus lisibles, surtout combiné avec les fonctions pures.

En pratique, vous allez l’adorer pour :

  • Le nettoyage de données (normalisation d’input, trimming, filtering).
  • Les pipelines sur des collections (combiner array_map, array_filter, array_values, etc.).
  • Les transformations de chaînes et les générateurs.

clone() évolue : le “clone with” version PHP

PHP 8.5 introduit un clone() amélioré, capable de cloner un objet et de modifier certaines propriétés en une seule opération.

Avant, pour un objet readonly, il fallait bricoler :

<?php

readonly class Color {
    public function __construct(
        public int $red,
        public int $green,
        public int $blue,
        public int $alpha = 255,
    ) {}

    public function withAlpha(int $alpha): self {
        $values = get_object_vars($this);
        $values['alpha'] = $alpha;

        return new self(...$values);
    }
}

$blue = new Color(79, 91, 147);
$transparentBlue = $blue->withAlpha(128);Code language: HTML, XML (xml)

Avec PHP 8.5, clone() accepte désormais un second argument $withProperties :

<?php

readonly class Color {
    public function __construct(
        public int $red,
        public int $green,
        public int $blue,
        public int $alpha = 255,
    ) {}

    public function withAlpha(int $alpha): self {
        return clone($this, [
            'alpha' => $alpha,
        ]);
    }
}

$blue            = new Color(79, 91, 147);
$transparentBlue = $blue->withAlpha(128);Code language: HTML, XML (xml)

Ce que ça change pour vous :

  • Le pattern with-er devient trivial, même avec des propriétés readonly.
  • Vous réduisez le boilerplate autour de l’immutabilité.
  • Les objets de configuration, DTO et value objects deviennent plus agréables à manipuler.

Lire la suite