John Rhea explique comment il a recréé l’animation du bouton Google Gemini de Gmail en utilisant uniquement du CSS, notamment la fonction shape()
et des animations. L’animation originale montre une étoile à quatre branches qui tourne et une forme extérieure se transformant entre plusieurs formes (fleur, cylindre, hexagone, cercle) tout en tournant. Rhea détaille sa méthode : il a dessiné les cinq formes dans un logiciel vectoriel, veillant à ce qu’elles aient le même nombre de points d’ancrage pour permettre une interpolation fluide entre elles. Il a ensuite converti ces formes en syntaxe CSS shape()
, défini des variables CSS pour chaque forme, et utilisé des transitions et des @keyframes
pour animer la rotation, le changement de couleur et la morphose entre les formes. Le résultat final reproduit fidèlement l’effet visuel du bouton Gmail, avec une approche purement CSS et sans JavaScript. Un projet ludique qui met en lumière les possibilités créatives des nouvelles fonctionnalités CSS.
Cet article explique comment configurer WordPress avec MariaDB et Traefik en utilisant des réseaux Docker séparés pour améliorer la sécurité et faciliter la duplication de sites. L’article détaille la création d’une architecture où chaque site WordPress et sa base de données sont isolés dans leur propre réseau privé, inaccessible depuis internet, tandis que Traefik gère le routage et les certificats SSL automatiquement via Let’s Encrypt. Le tutoriel propose une configuration étape par étape : installation de Traefik avec SSL, création de réseaux Docker dédiés, déploiement d’un premier site WordPress, puis duplication aisée pour ajouter d’autres sites. Les avantages soulignés sont la sécurité renforcée, la simplicité de gestion et la possibilité d’ajouter facilement de nouveaux sites. L’auteur évoque aussi des pistes d’amélioration, comme l’automatisation des sauvegardes des bases de données. Idéal pour qui veut héberger plusieurs sites WordPress de manière sécurisée et scalable.
Flozz partage ses premières impressions et l’installation d’Ubuntu 25.04 sur le GPD MicroPC 2, un mini-PC portable ultra-compact (7", 800 g) équipé d’un Intel N250, 16 Go de RAM et un SSD NVMe de 512 Go. L’auteur, nostalgique des netbooks, apprécie sa polyvalence (mode PC/tablette, écran tactile 1080p, connectique complète : 2x USB-A, 2x USB-C, HDMI, Ethernet, Wi-Fi 6, Bluetooth 5.2) et son format nomade, idéal pour le dépannage ou les déplacements. L’installation d’Ubuntu se passe sans encombre, mais nécessite quelques ajustements : correction des boutons du trackpad via une configuration libinput, réactivation du tactile après veille avec un script systemd, et activation de la rotation automatique de l’écran via une extension GNOME. Le clavier QWERTY, compact et optimisé pour une utilisation à deux mains, est surprenant d’agrément, tandis que l’écran offre une bonne qualité. Seuls bémols : le chargeur fourni (format US + adaptateur encombrant) et l’absence de pilote pour le lecteur d’empreintes. Malgré un prix élevé (425 € + taxes) et quelques réglages logiciels, la machine séduit par sa solidité et sa praticité, notamment en mode tablette.
Ce guide explique comment monter une partition Windows chiffrée avec BitLocker sous Linux, en utilisant Dislocker ou Cryptsetup. Idéal pour les dual-boot ou la récupération de données.
🔹 Outils : dislocker
, cryptsetup
, ntfs-3g
🔹 Astuce : Désactiver le Fast Startup de Windows pour éviter les problèmes.
🔹 Alternative : Utiliser cryptsetup
(depuis la v2.3.0) si Dislocker pose problème.
L’article explique comment l’auteur a remplacé Apache par Traefik comme reverse proxy, principalement pour intégrer Crowdsec (notamment son module AppSec, compatible uniquement avec Nginx, OpenResty ou Traefik) et bloquer efficacement les scans malveillants (comme les requêtes vers .env
ou X11
). Traefik centralise le routage, simplifie la gestion des certificats Let’s Encrypt, et permet d’appliquer des middlewares de sécurité (HSTS, CSP, rate limiting, etc.). L’installation se fait en binaire (hors Docker), avec une configuration modulaire (fichiers YAML pour les sites, middlewares, et le dashboard). L’intégration de Crowdsec se fait via un bouncer Traefik et le module AppSec, qui analyse les requêtes en temps réel et bannit les IP suspectes (ex : accès à .env
). Malgré quelques péripéties (notamment avec les versions de Crowdsec et des conseils erronés de ChatGPT), le résultat est un système sécurisé, évolutif, et facile à surveiller via les logs et métriques. L’auteur souligne la satisfaction d’avoir un WAF performant et open source, tout en partageant ses fichiers de configuration et astuces pour reproduire la solution.
Ce guide complet explique comment installer et configurer un VPN WireGuard sur un VPS Ubuntu pour naviguer de manière sécurisée et anonyme. WireGuard, léger et intégré au noyau Linux, utilise des algorithmes modernes comme ChaCha20 et Curve25519. Le processus inclut : l’installation de WireGuard, la génération des clés de chiffrement, la configuration du serveur et du client, l’activation du forwarding IP et du NAT, ainsi que la gestion des règles pare-feu. Une fois configuré, le VPN permet de rediriger tout le trafic internet via le serveur, avec des options pour exclure le réseau local si besoin. Le guide propose aussi des astuces pour ajouter plusieurs clients, dépanner les connexions et optimiser la sécurité (changement de port, surveillance des connexions). Idéal pour protéger sa vie privée, WireGuard offre une alternative simple et performante à OpenVPN
L’article explique comment implémenter une architecture multi-tenant dans Symfony à l’aide du bundle Hakam Multi Tenancy Bundle. L’objectif est de créer une application SaaS où chaque client (tenant) dispose de sa propre base de données isolée, tout en partageant une infrastructure commune. L’architecture repose sur une base principale (pour les utilisateurs et les configurations) et des bases dédiées par tenant (pour les données métiers, comme les patients dans l’exemple d’une application médicale). Le tutoriel détaille la configuration du bundle, la séparation des entités (Main/Tenant), la création des fixtures, et l’automatisation de la commutation de contexte en fonction de l’utilisateur connecté. L’approche permet une isolation totale des données, une scalabilité optimisée et une maintenance simplifiée. Idéal pour les applications nécessitant une sécurité et une personnalisation par client.
Cet article explique comment optimiser un agent IA en utilisant le composant Symfony Messenger pour gérer les tâches longues (comme les appels à des API externes ou des modèles LLM) de manière asynchrone. Grâce à cette approche, l’agent devient plus performant et résilient : les opérations bloquantes (récupération d’emails, traitement par LLM, envoi de notifications) sont découplées et exécutées en arrière-plan via des files de messages (Redis, AMQP, etc.). L’auteur détaille la configuration des bus de commandes, requêtes et événements (CQRS), illustre la création de messages et de handlers dédiés, et montre comment lancer un consommateur Symfony pour traiter les tâches sans bloquer l’application principale. Résultat : un système scalable, tolérant aux pannes et prêt pour la production.
Ce tutoriel montre comment créer un agent IA personnalisé avec Symfony en seulement 11 minutes, en utilisant des modèles comme OpenAI, Gemini ou Llama. L’exemple concret consiste à récupérer des emails via IMAP, à les résumer automatiquement avec une IA, puis à envoyer le résumé par email ou messagerie. L’article détaille l’installation du composant Symfony AiAgent (sorti en juillet 2025), la configuration de l’API OpenAI, la gestion des emails (stripping HTML, utilisation de Symfony Mime et Notifier), et l’intégration du tout dans une commande console. Une base flexible pour automatiser des workflows avec Symfony et l’IA, adaptable à d’autres sources de données ou canaux de notification.
Symfony AI est un nouvel ensemble de composants PHP conçu pour faciliter l’intégration de l’intelligence artificielle dans les applications Symfony. Il propose notamment Platform, une interface unifiée pour interagir avec des plateformes d’IA (OpenAI, Mistral, Gemini, etc.) afin de vectoriser des textes (transformation en vecteurs numériques pour mesurer leur similarité), et Store, un système de stockage et de recherche optimisé pour les données vectorielles, compatible avec des bases comme Postgres, Redis ou Meilisearch. L’article illustre comment vectoriser des documents, les stocker, puis retrouver ceux qui sont sémantiquement proches grâce à des mesures comme la cosine similarity. Symfony AI permet ainsi de créer facilement des fonctionnalités avancées comme la recherche sémantique ou le RAG (Retrieval-Augmented Generation), tout en offrant la flexibilité de changer de fournisseur d’IA ou de base de données selon ses besoins. Une solution performante et modulaire pour exploiter l’IA en maîtrisant ses données.
Créer une machine virtuelle Windows 11 avec VirtualBox – Ce guide explique comment installer Windows 11 dans une VM, en utilisant une licence d’évaluation gratuite (90 jours) ou une version non activée, suffisante pour un usage ponctuel. L’auteur détaille les étapes pour contourner l’obligation de compte Microsoft lors de l’installation (via la commande OOBE\BYPASSNRO
), optimiser la VM avec les VirtualBox Guest Additions, désinstaller les applications et services indésirables (Edge, OneDrive, Copilot, etc.), et configurer un environnement propre et respectueux de la vie privée. Il aborde aussi l’installation d’un navigateur alternatif comme LibreWolf, le nettoyage des paramètres de confidentialité, et propose des astuces pour personnaliser l’interface. Un bonus est consacré à la configuration de Rust pour la compilation. L’article souligne la complexité de "dépolluer" Windows 11, tout en reconnaissant les améliorations ergonomiques par rapport à Windows 10.
L’article raconte l’expérience de Kate, une designer UX fictive dans une FinTech, qui intègre l’IA dans son processus de design sprint sur une semaine. Chaque jour, elle explore comment l’IA peut l’aider à comprendre les besoins des utilisateurs, générer des idées, critiquer des concepts, prototyper et tester, tout en restant centrée sur l’humain. L’IA accélère certaines tâches (synthèse de données, génération d’idées, création de prototypes), mais Kate réalise qu’elle doit constamment superviser, vérifier et adapter les résultats pour éviter les erreurs ou les biais. Elle souligne l’importance de conserver des compétences purement humaines comme l’empathie, la pensée critique et la curiosité, car l’IA reste un outil complémentaire, pas un remplaçant. L’article montre que l’IA peut être un collaborateur créatif, à condition de l’utiliser avec discernement et de ne pas lui déléguer le jugement ou la compréhension fine des utilisateurs. Une réflexion utile pour les designers souhaitant adopter l’IA sans perdre leur touche humaine.
L’auteur raconte sa migration de services auto-hébergés depuis un VPS vers un mini-PC à domicile (un Minisforum UM880 Plus), en profitant de l’occasion pour mettre en place une infrastructure plus flexible et robuste avec Proxmox VE. L’objectif est de pouvoir expérimenter (notamment avec Kubernetes) sans risquer de casser sa production, tout en sécurisant ses données via le chiffrement disque et des sauvegardes solides. Après avoir installé Debian avec chiffrement LUKS, il automatise la configuration de Proxmox et du réseau (pont bridge) via Ansible, afin de pouvoir recréer rapidement son infrastructure en cas de vol ou de panne matérielle. Il prévoit d’utiliser OpenTofu et cloud-init pour déployer et configurer des machines virtuelles de manière reproductible, et Ansible pour gérer la configuration des services. Le billet détaille aussi les écueils rencontrés (comme le blocage au démarrage après l’installation de Proxmox, résolu en configurant une IP statique) et explique comment son playbook Ansible permet de tout réinstaller automatiquement. Une suite est annoncée pour aborder le déploiement de VM et la gestion des services avec Kubernetes.
Ce tutoriel détaillé explique comment mettre en place une solution de supervision complète de vos serveurs avec Prometheus (pour la collecte et le stockage des métriques système) et Grafana (pour leur visualisation sous forme de tableaux de bord interactifs).
Il couvre l’installation et la configuration de Prometheus et Grafana via Docker sur un serveur dédié, ainsi que le déploiement d’exporters comme node_exporter (métriques système), cAdvisor (métriques containers Docker), process_exporter (métriques processus), et blackbox_exporter (tests de disponibilité des services). Le guide aborde aussi la sécurisation des interfaces, la création d’alertes, et l’intégration d’Alert Manager pour la gestion des notifications. Idéal pour surveiller en temps réel l’état de votre infrastructure et recevoir des alertes en cas de dépassement de seuils, avec des exemples concrets et des tableaux de bord Grafana prêts à l’emploi.
Ce tutoriel explique comment déployer Longhorn, une solution de stockage distribué, sur un cluster K3s (Kubernetes léger).
Il détaille les prérequis (Kubernetes 1.28+, 2 Go de RAM, open-iscsi
installé), la préparation d’un dossier dédié (/opt/longhorn
), puis l’installation via un manifest YAML personnalisé pour spécifier le chemin de stockage. Après déploiement, il montre comment vérifier l’état des pods, corriger une mauvaise configuration via un patch, et tester le stockage avec un PVC de 1 Go. Des astuces pour la mise à jour, la vérification de l’état du service et le redimensionnement des volumes sont aussi partagées. Idéal pour ajouter du stockage persistant et résilient à un cluster K3s avec peu de ressources.
Ajouter la GeoIP à Nginx Proxy Manager (NPM 2.12+) permet de bloquer ou logger les visiteurs par pays. Il suffit d’activer les modules GeoIP via root_top.conf
, de télécharger les bases GeoLite2 de Maxmind (gratuites, après inscription), et de configurer les règles de blocage dans http_top.conf
. Les logs peuvent aussi être enrichis avec les infos géographiques.
L'auteur analyse et améliore la section "hero" du site Time.com, critiquant notamment le passage trop précoce à un affichage mobile (1 colonne) qui gaspille l’espace disponible sur les écrans intermédiaires. Il propose une approche plus flexible et progressive, en utilisant des techniques CSS modernes : CSS Grid, container queries, display: contents, style queries, grid areas, et le sélecteur :has()
pour créer un layout adaptatif et dynamique. L’objectif est de laisser le contenu guider la mise en page, avec des transitions fluides entre 1, 2 et 3 colonnes, tout en optimisant l’espace et la lisibilité. L’article illustre aussi l’utilisation des query units (cqw
) pour des tailles de police fluides et des astuces comme text-wrap: pretty
pour équilibrer les titres. Une démonstration concrète de comment construire des layouts robustes et modulaires avec du CSS avancé.
Le tutoriel présente BunkerWeb, une solution open-source combinant reverse proxy et Web Application Firewall (WAF) pour sécuriser les services web. Elle intègre des fonctionnalités comme le filtrage ModSecurity avec les règles OWASP CRS, le renforcement TLS, et la limitation de requêtes. Le tutoriel guide à travers le déploiement de BunkerWeb via Docker Compose, depuis la préparation de l'environnement jusqu'à la configuration d'un service web. Il explique comment créer un fichier compose.yaml
, lancer les conteneurs, et configurer BunkerWeb via une interface web d'administration. Le tutoriel montre également comment déployer un service web interne, comme IT-Tools, derrière BunkerWeb, en détaillant les étapes de configuration pour sécuriser et publier le service. Enfin, il conclut en soulignant la facilité d'utilisation et les options avancées de BunkerWeb pour renforcer la sécurité des applications web.
L'article explique comment déployer un serveur Counter-Strike 2 sur Kubernetes en utilisant une image conteneur existante. Il guide à travers plusieurs étapes clés : la création d'un Namespace pour isoler les ressources, la configuration d'un Deployment basique, la mise en place d'un PersistentVolumeClaim pour le stockage persistant, et l'injection d'une ConfigMap pour la configuration du serveur. Il expose également les ports nécessaires et crée un Service de type NodePort pour rendre le serveur accessible publiquement. L'article suppose que le lecteur a déjà un cluster Kubernetes fonctionnel et utilise des commandes kubectl pour appliquer les configurations. Enfin, il propose des pistes pour aller plus loin, comme l'utilisation de l'outil k9s pour naviguer dans le cluster.
L'article explique comment compiler des programmes en C à l'aide de make. Il détaille les étapes essentielles : installer un compilateur C, gérer les dépendances, exécuter ./configure si nécessaire, et utiliser make pour construire le programme. L'autrice partage des astuces pour résoudre les erreurs de compilation, souvent liées aux dépendances, et explique comment utiliser des variables d'environnement comme CPPFLAGS et LDLIBS pour configurer le compilateur et l'éditeur de liens. L'article souligne également l'importance de comprendre les bases de la compilation C, même si on ne développe pas en C, et propose des conseils pour installer les binaires compilés.