Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Shells Unix - 5 redirections que vous copiez sans comprendre

2>&1, >, >>, 2>/dev/null... Si ces symboles dans votre terminal Linux ou macOS vous font autant flipper qu'un regex, respirez un grand coup ! Quand vous aurez lu cet article, vous verrez qu'en fait c'est super simple à comprendre, et en 5 minutes vous saurez enfin ce que vous copiez-collez depuis des années depuis StackOverflow.

En fait, dans les shells Unix (bash, zsh, etc.), y'a 3 canaux de base : stdin (entrée, numéro 0), stdout (sortie normale, numéro 1) et stderr (les erreurs, numéro 2). Tout le reste, de > à 2>/dev/null, découle de ces 3 numéros.

> - Écrire dans un fichier (et tout écraser)

echo "Salut" > fichier.txt

Ça redirige stdout vers fichier.txt. Si le fichier existe déjà... c'est mort, il est écrasé sans sommation. Du coup, faites gaffe avec vos logs, une commande mal placée et ce sont des heures de données qui disparaissent.

D'ailleurs, si vous êtes du genre parano (et oui, vous avez raison !), set -o noclobber dans votre .bashrc empêchera > d'écraser un fichier existant lors d'une commande tapée à la main. Pour y arriver, il faudra utiliser >| pour forcer.

>> - Ajouter à la suite

echo "Ligne 2" >> fichier.txt

Même principe que >, sauf que ça ajoute à la fin au lieu d'écraser. C'est ce que vous voulez 99% du temps pour des logs (sauf si vous voulez repartir de zéro, là > fait le job). Une lettre de différence entre "tout va bien" et "où sont passés mes logs, boudiouuu ???".

2> - Rediriger les erreurs

commande_foireuse 2> erreurs.log

Le 2 c'est stderr, en gros (y'a pas d'espace entre le 2 et le >, sinon bash croit que 2 est un argument). Tout ce qui sort en erreur finit dans erreurs.log au lieu de polluer votre terminal. Perso, je trouve ça super pratique pour garder une trace propre quand vous lancez des scripts via crontab -e.

Et 2>> existe aussi, pour cumuler les erreurs au fil du temps au lieu d'écraser le fichier à chaque exécution.

2>&1 - Fusionner erreurs et sortie normale

commande > output.log 2>&1

Le fameux ! Le &1 dit à bash "le 1 c'est un file descriptor, pas un fichier qui s'appelle littéralement 1". Du coup stderr (2) est redirigé vers le même endroit que stdout (1), ou plutôt vers là où stdout pointe au moment où bash évalue la ligne. Ça va, vous suivez toujours ? ^^

Attention, l'ordre compte ! Bash lit les redirections de gauche à droite. > output.log 2>&1, stdout pointe vers le fichier, puis stderr suit... tout va dans le fichier. 2>&1 > output.log, stderr copie stdout qui pointe ENCORE vers le terminal, puis stdout est redirigé vers le fichier. Résultat, les erreurs restent dans votre terminal. Le piège classique.

Et &> fait la même chose en plus court :

commande &> output.log

&> est super pratique, mais spécifique à bash / zsh donc pour la portabilité, préférez quand même > fichier 2>&1.

2>/dev/null - Le trou noir

find / -name "*.conf" 2>/dev/null

/dev/null, c'est le trou noir d'Unix. Tout ce que vous envoyez là-dedans disparaît. Super pratique avec find qui vous crache 200 "Permission denied" pour un seul résultat utile.

Et si vous voulez TOUT faire disparaître (stdout + stderr) ? Un petit &>/dev/null et c'est réglé. Pratique dans vos scripts /etc/cron.d/ quand vous voulez zéro bruit (bon, j'exagère un chouïa, je sais...).

Si vous aimez les raccourcis bash , j'ai aussi ce qu'il faut.

Bref, voilà ce sont juste 5 opérateurs à retenir, et avec ça vous couvrez à peu près tout. Donc la prochaine fois que vous copierez un 2>&1, au moins vous saurez pourquoi.

Source d'inspiration

sudo-rs - 40 ans de silence cassés par des astérisques

Si vous utilisez Ubuntu 26.04, vous avez peut-être remarqué un truc bizarre dernièrement en tapant votre mot de passe sudo... Ouiiiiii, y'a des petites étoiles qui apparaissent !! Pas de panique, c'est "normal". Enfin, c'est nouveau...

En effet, sudo-rs, la réécriture en Rust de la bonne vieille commande sudo, a décidé d'activer pwfeedback par défaut. En gros, quand vous faites un sudo apt install bidule, au lieu du trou noir habituel, vous voyez maintenant des ***** défiler pendant la saisie du mot de passe. C'est un changement qui casse une convention vieille de 40 ans... et ça, forcément, ça fait du bruit !

Pour rappel, Ubuntu a basculé sur sudo-rs (le remplaçant en Rust du bon vieux sudo en C) depuis la version 25.10. Ça fait partie du même mouvement de réécriture des outils système en Rust, comme les coreutils dont je vous avais parlé. Et la 26.04 vient de "cherry-picker" comme on dit, un patch upstream qui active le feedback visuel par défaut.

Un bug report sur Launchpad ( #2142721 ) est bien sûr arrivé direct, en mode vénère genre "*ÇA FAIT DES DÉCENNIES qu'on n'affiche pas la longueur du mot de passe pour empêcher le shoulder surfing ! C'est quoi ce bordel !!?? *"

Et la réponse des devs : Won't Fix. Circulez les relous !

En fait, leur argument c'est que le bénéfice sécurité est "infinitésimal". Parce que bon, votre mot de passe sudo c'est le même que celui de votre session (celui que vous tapez à l'écran de login, devant tout le monde). Et le bruit des touches trahit déjà la longueur de toute façon. Du coup, ils ont préféré régler le problème UX qui paume les débutants depuis le début des années 80.

D'ailleurs, en 2013 je vous expliquais comment activer ces étoiles manuellement avec sudo visudo (ça date de fou !!) et maintenant c'est l'inverse, faut expliquer comment les virer ! Linux Mint avait d'ailleurs déjà sauté le pas de son côté depuis un moment.

Perso, le truc qui me gonfle c'est pour les tutos vidéo. Quand vous faites un screencast, les astérisques révèlent la longueur de votre mot de passe à tous vos spectateurs. Du coup faut aller reparamétrer chaque machine avant de filmer ou faire du masquage en post prod. C'est pas la fin du monde, mais bon, la flemme...

Alors pour désactiver ces jolies zétoiles :

sudo visudo

Et ajoutez cette ligne à la fin de /etc/sudoers :

Defaults !pwfeedback

Sauvegardez (Ctrl+X sous nano), et c'est réglé. Attention, ne touchez à rien d'autre dans ce fichier, une erreur de typo et sudo ne marchera plus. Grâce à cette manip, ce sera retour au trou noir ! Youpi !

Source

PinMe - Le web immuable en une commande

Les 404, c'est la plaie du web... J'en sais quelque chose, je fais la chasse à ça en permanence sur mon propre site. C'est vrai que c'est relou parce que vous bookmarkez un projet cool, vous y retournez trois mois après... et pouf, ça a disparu. Le dev n'a pas renouvelé son nom de domaine, l'hébergeur a fermé boutique, le contenu s'est évaporé ou que sais-je encore... En fait, sur le web, RIEN n'est permanent.

PinMe prend le problème à l'envers en collant vos fichiers directement sur IPFS . En gros, au lieu de dépendre d'un serveur unique qui peut tomber n'importe quand, vos pages sont distribuées sur un réseau décentralisé et identifiées par un hash CID unique. Du coup, tant que le réseau tourne, votre contenu existe. Pas besoin de renouveler quoi que ce soit, pas besoin de payer un hébergeur... ça fonctionne tout seul.

L'installation se fait en une ligne :

npm install -g pinme

Pour déployer votre site statique, c'est hyper simple :

pinme upload dist/

L'outil détecte le dossier de build, ou plutôt il le devine tout seul selon votre framework : dist/ pour Vite et Vue, build/ pour Create React App, out/ pour Next.js en export statique. Ça évite d'avoir à se palucher de la config.

Côté limites, on est sur 200 Mo par fichier et 1 Go au total ce qui est largement suffisant pour une landing page ou une démo ! Et c'est GRATUIT. Pour ceux qui veulent un domaine lisible plutôt qu'un hash cryptique, y'a aussi des domaines ENS (les .eth sur Ethereum) ou des sous-domaines en .pinit.eth.limo. Après pour les domaines custom faudra un compte VIP par contre.

Le truc sympa c'est que vos fichiers restent accessibles via n'importe quelle passerelle IPFS, genre dweb.link ou w3s.link. Ainsi, si votre hébergeur ferme ou que votre domaine expire comme je le disais en intro, on s'en fiche ! Le contenu est toujours là, épinglé quelque part sur le réseau. C'est du stockage immuable, basé sur le contenu lui-même... du coup personne ne peut modifier ou supprimer ce que vous avez publié. (Et en fait vous non plus, faut le savoir.)

Et y'a aussi des commandes pour exporter en fichiers CAR et réimporter ailleurs, ce qui est pratique pour archiver ou migrer entre passerelles.

Voilà c'est gratuit pour 1 Go de stockage, c'est open source (licence MIT) et c'est par là . Merci à Lorenper pour la découverte !

Snitch - Le netstat qui ne pique plus les yeux

Si vous avez déjà tapé [ss -tulnp](https://www.it-connect.fr/lister-les-ports-en-ecoute-sous-linux-avec-lsof-netstat-et-ss/) dans un terminal, vous savez que c'est moche. Genre, VRAIMENT moche. Les colonnes qui se chevauchent, les adresses tronquées, bref c'est un festival du bordel. Mais c'était sans compter sur ce dev qui a pondu Snitch , un outil en Go sous licence MIT qui vient concurrencer ss et netstat... sauf que pour une fois, c'est lisible, regardez :

L'interface de Snitch en action, sobre et lisible

En gros, c'est un ss moderne avec une interface TUI interactive. Vous lancez la commande dans votre terminal et tadaaa, vous avez un tableau propre avec toutes vos connexions réseau, les processus associés, les ports, les protocoles... le tout avec des couleurs et une navigation au clavier. Rien à voir donc avec le pavé monochrome habituel !

Le truc cool aussi ce sont les filtres. Vous pouvez taper snitch ls proto=tcp state=listen pour ne voir que les sockets TCP en écoute, ou snitch ls proc=nginx pour traquer votre serveur web. Y'a même un filtre contains= pour chercher dans les adresses... genre contains=google pour voir tout ce qui cause avec Mountain View.

D'ailleurs, côté commandes c'est en fait bien fichu. snitch ls pour un tableau statique, snitch json pour du JSON brut si vous voulez scripter, et snitch watch -i 1s pour streamer les connexions en temps réel. Du coup ça s'intègre nickel dans vos pipelines.

La TUI elle-même vaut le détour. Vous naviguez avec j/k (comme dans Vim, forcément), vous basculez TCP/UDP avec t/u, et le plus jouissif... vous pouvez killer un processus directement avec la touche K. Plus besoin de noter le PID et d'ouvrir un autre terminal ! Sauf que attention, sur Linux faut quand même lancer en root pour avoir les infos complètes sur les processus, parce que l'outil va lire dans /proc/net/*. Ça ne marche pas non plus sur Windows, c'est Linux et macOS uniquement.

Pour ceux qui aiment personnaliser leur terminal (oui, je vous connaîs...), y'a une quinzaine de thèmes, Catppuccin, Dracula, Nord, Tokyo Night, Gruvbox... la config se fait dans ~/.config/snitch/snitch.toml et l'outil peut aussi conserver vos préférences de filtres entre les sessions (faut activer remember_state dans la config).

Côté installation, c'est pas la mer à boire. brew install snitch sur macOS, go install github.com/karol-broda/snitch@latest si vous avez Go, yay -S snitch-bin sur Arch, et y'a même des images Docker pour les plus prudents !

Donc si vous êtes du genre à surveiller votre trafic réseau ou à garder un oeil sur vos outils de diagnostic Linux , c'est clairement à tester.

Perso, pour du debug réseau rapide, je trouve que c'est carrément plus agréable que de se taper un ss -tulnp.

RustFS - L'alternative Rust à MinIO

MinIO, tout le monde ou presque connaît car c'est LE truc quand on veut du stockage objet S3-compatible auto-hébergé sous Linux. Sauf que voilà... la licence AGPL, ça pique pour pas mal de boîtes qui ne veulent pas se retrouver à devoir ouvrir leur code.

Du coup, y'a un nouveau projet qui débarque dans le tiek et qui devrait en intéresser plus d'un. C'est RustFS , codé en Rust (comme le nom le laisse deviner mes petits Sherlock) et 100% compatible S3. En gros, vous prenez votre stack MinIO existante, vous remplacez par ce truc, et en fait tout continue de fonctionner pareil... Vos buckets, vos applis, vos scripts Python, boto3... tout pareil !

La licence c'est de l'Apache 2.0 comme ça y'a pas de contrainte virale, vous faites ce que vous voulez avec. Et c'est d'ailleurs sûrement la raison numéro un pour laquelle le projet cartonne.

Côté perfs, les devs annoncent 2,3x plus rapide que MinIO sur des petits objets de 4 Ko (testé sur un modeste 2 coeurs Xeon avec 4 Go de RAM). Bon, c'est un benchmark maison, à prendre avec des pincettes hein... mais finalement Rust pour du I/O intensif, ça se tient comme argument, car y'a pas de garbage collector qui vient foutre le bazar.

Pour l'installer, Docker en une ligne :

docker run -d -p 9000:9000 -p 9001:9001 -v $(pwd)/data:/data -v $(pwd)/logs:/logs rustfs/rustfs:latest

Et voilà, l'API tourne sur le port 9000 et la console web sur le 9001 (identifiants par défaut : rustfsadmin/rustfsadmin, changez-les vite fait hein). Y'a aussi du Kubernetes via Helm, un script d'install one-click, du Nix, ou un bon vieux git clone pour compiler vous-même (attention, sur macOS faut un ulimit à 4096 sinon ça ne marche pas).

Le conteneur Docker tourne en non-root (UID 10001), donc c'est plutôt propre niveau sécu. Pensez juste à faire un petit chown -R 10001:10001 data logs sur vos répertoires avant de lancer, sinon ça casse au démarrage.

Petit bonus appréciable, y'a aussi de la détection de corruption intégrée, et même du versioning de buckets pour les plus méfiants côté intégrité des données. D'ailleurs, côté monitoring, c'est déjà câblé pour envoyer vos métriques dans Grafana, vos traces dans Jaeger et le reste dans Prometheus. Un petit docker compose --profile observability up -d et c'est plié.

Par contre, on est encore en alpha et le mode distribué et le KMS sont en phase de test. Donc c'est PAS le genre de truc que vous mettrez en prod demain matin pour vos données critiques... mais pour du dev, du lab, ou des tâches pas trop sensibles... ça tourne impecc !

Bref, si l'AGPL de MinIO vous gave et que vous cherchez une alternative S3-compatible, en Rust, sous licence + permissive, allez jeter un œil à RustFS.

Merci à Lorenper pour le partage !

Firefox 148 - Un seul bouton pour virer toute l'IA

Vous voulez désactiver l'IA dans votre navigateur ? Bonne chance pour les couillons qui utilisent Chrome... faut passer par 5 réglages planqués dans chrome://settings et chrome://flags, tripatouiller des flags expérimentaux, bref, c'est un vrai parcours du combattant. Firefox 148, de son côté, a eu une idée folle : Mettre UN bouton. Hop, terminé.

Mozilla vient en effet de sortir la version 148 de Firefox et le gros morceau, c'est la section "Contrôles de l'IA" dans les paramètres (about:preferences#ai). Un seul toggle " Bloquer les améliorations IA " et paf, toutes les fonctions IA du navigateur sont coupées d'un coup. Traductions automatiques, regroupement d'onglets, previews de liens, texte alternatif des PDF, et même les chatbots de la barre latérale (ChatGPT, Claude, Gemini, Copilot, Le Chat). Tout dégage !

C'est le top pour les fragilous qui refusent le progrès ^^... Roohh ça va je blague ! Et le vrai intérêt du truc, c'est que ça verrouille les futures fonctions IA aussi. Du coup, si Mozilla ajoute de nouvelles features IA plus tard, elles seront automatiquement bloquées. Pas besoin de revenir fouiller dans les paramètres à chaque update. D'ailleurs, toutes les fonctions IA sont déjà désactivées par défaut... faut donc les activer manuellement si vous en voulez.

Et attention, ça ne bloque pas les extensions tierces qui intègrent leur propre IA, genre les "résumeurs" de page ou les assistants de rédaction. Le toggle, lui, garantit uniquement que les fonctions NATIVES restent coupées quoi qu'il arrive.

Et maintenant comparons avec la concurrence, parce que c'est là que ça pique les yeux.

Comme je vous le disais dans mon intro trollesque, chez Google, désactiver l'IA dans Chrome (et ses dérivés) relève carrément du sport extrême. Faut couper Gemini (chrome://settings/ai), désactiver le mode IA et Help Me Write (chrome://flags), bloquer la recherche IA dans l'historique, et pour les AI Overviews... ben y'a pas vraiment de bouton.

Brave fait un peu mieux heureusement ! Leur assistant Leo est opt-in par défaut, tourne dans un profil isolé qui ne peut pas accéder à vos données de navigation, et applique une politique zéro log. Même leur mode "agentic AI" en Nightly est désactivé de base. C'est propre, mais y'a pas de kill switch global comme Firefox. Du coup, si vous voulez la solution radicale plutôt que du cas par cas, Firefox gagne.

Et pour ceux qui se demandent pourquoi Firefox investit dans l'IA tout en permettant de la couper... en fait, Mozilla joue la carte de la transparence. Les modèles locaux utilisés par Firefox sont supprimés du disque quand vous désactivez les fonctions et tout est vérifiable dans about:processes si vous êtes du genre parano.

Au passage, cette version corrige également une quarantaine de failles de sécurité et embarque la Sanitizer API , ce qui est une première parmi les navigateurs. Et si vous êtes encore sur Firefox ESR, ça ne marchera pas... faudra donc attendre la prochaine ESR pour en profiter.

Voilà, si l'IA dans votre navigateur vous gave, vous savez où aller -> Firefox, tout simplement.

Source

notion-cli - Pilotez Notion depuis votre terminal

Si vous utilisez Notion au quotidien et que vous avez toujours rêvé de piloter vos bases de données depuis un terminal... y'a enfin un truc qui tient la route.

Ça s'appelle notion-cli , c'est un binaire Go qui embarque 39 commandes couvrant TOUTE l'API Notion. Il s'agit d'un seul exécutable pour macOS, Linux et Windows (amd64 et arm64) sans dépendance qui vous permet de gérer pages, bases de données, blocs et commentaires sans jamais ouvrir un navigateur.

L'installation, c'est du classique : brew install 4ier/tap/notion-cli sur macOS, go install pour les puristes, npm install -g notion-cli-go ou même Docker. Il faut juste un token d'intégration Notion (le ntn_xxxxx que vous générez sur notion.so/my-integrations), vous le collez dans ~/.config/notion-cli/config.json ou en variable NOTION_TOKEN, et c'est parti.

notion-cli en action dans le terminal

Le truc cool, ce sont les filtres humain-friendly. Au lieu de se taper du JSON pour filtrer une base, vous écrivez Status=Done et l'outil se débrouille tout seul. En fait, il détecte le type de chaque propriété (texte, date, sélection...) et adapte le filtre automatiquement. C'est carrément pas mal, je trouve.

Et côté Markdown, c'est la fête ! Vous exportez une page entière avec notion block list <page-id> --md --depth 3, et inversement, vous injectez un fichier .md dans Notion via notion block append <page-id> --file notes.md. Pour ceux qui bossent avec de la doc technique, ça simplifie sérieusement les choses. Bon, ça ne marche pas avec les blocs synchronisés ou les embeds exotiques, mais pour le reste c'est nickel.

D'ailleurs le mode "pipé" est vraiment malin. Car dans le terminal, l'outil affiche de jolies tables colorées mais dès que vous le "pipez" vers jq ou un script, il bascule en JSON automatiquement. Du coup, intégrer ça dans un pipeline shell ou un cron... c'est aucun parsing à faire. Voilà quoi.

Après des CLI pour Notion, y'en a déjà quelques-uns. Sauf que la plupart sont soit limités aux tâches (comme notion-cli-go qui gère surtout le côté todo), soit cantonnés à l'export (et souvent liés à un OS ou un langage précis).

Celui de 4ier, c'est donc le premier à couvrir l'API en entier : pages, bases, blocs, commentaires, fichiers, utilisateurs, et même un accès REST brut via notion api GET /v1/endpoint. En gros, c'est le gh de GitHub, mais pour Notion (et pour une fois, c'est pas juste du blabla marketing ^^).

Les cas d'usage qui tuent c'est par exemple un script cron qui crée une entrée hebdo avec notion page create <db-id> --db "Name=Weekly" "Status=Todo". Un backup qui exporte vos pages critiques en Markdown toutes les nuits. Ou un CI/CD qui met à jour un changelog Notion à chaque deploy. Quelques lignes de bash et c'est réglé, car l'outil gère tout le reste ! C'est hyper rare un CLI qui couvre autant de terrain.

Y'a aussi le côté agent-friendly pour ceux qui kiffent l'IA. L'outil retourne des codes de sortie propres, du JSON exploitable, et s'installe comme skill agent via npx skills add 4ier/notion-cli. Dans la lignée de Gemini CLI , on voit de plus en plus d'outils pensés terminal-first... et je trouve que c'est carrément bien.

Après comme souvent quand je vous présente des outils, le projet est tout frais (v0.3.0, licence MIT), avec une petite communauté donc attention, car comme tout ce qui dépend d'une API tierce, si Notion bouge ses endpoints... voilà quoi. Mais c'est propre, c'est testé, et ça tourne déjà très bien.

Votre navigateur va pouvoir souffler un peu.

Podman Desktop - Red Hat dégaine sa version enterprise

Hey mais on dirait bien que c'est Red Hat qui débarque sur le marché des apps desktop pour conteneurs... mais lol ! Car oui, pendant que Docker Desktop trône depuis des années et qu'OrbStack séduit de plus en plus d'utilisateurs macOS, Red Hat se réveille ENFIN avec sa propre version Enterprise de Podman Desktop .

Bah mieux vaut tard que jamais !

Pour ceux qui débarquent (bouuuuh) Podman Desktop, c'est un outil open source qui existe depuis des années pour gérer vos conteneurs, images et pods via une interface graphique. C'est dispo sous Linux, macOS, Windows et le projet a même rejoint la CNCF (rien à voir avec les trains... lool) en janvier 2025 en même temps que d'autres briques Red Hat (Buildah, Skopeo, bootc, Composefs... chacun en projet séparé).

Interface de Podman Desktop

Et donc Red Hat a décidé de lancer sa propre "build" enterprise de cette app de conteneurs. En gros, c'est la même base que Podman Desktop, mais avec une couche admin par-dessus. Les responsables IT peuvent donc verrouiller des paramètres au niveau de la flotte tels que les registry mirrors, proxies HTTP, certificats custom... On est dans une ambiance un peu plus corporate quoi.

Côté Kubernetes, c'est également plutôt bien pensé. Vous créez vos pods en local, l'outil génère le YAML correspondant, et hop, déploiement sur Kind, Minikube ou directement sur OpenShift, les doigts dans le nez.

Pour ceux qui se demandent si ça remplace Docker Desktop, bah, ça dépend en fait. Podman tourne sans daemon et en rootless, du coup c'est un vrai plus côté sécurité. Mais par contre, le support Docker Compose passe par un système d'aliasing... ça marche bien, sauf si vous avez des configs Docker très exotiques... là faudra tester avant de tout basculer comme le early adopter fifou que vous êtes.

D'ailleurs, si vous êtes sur RHEL, Podman est déjà inclus dans votre abonnement et Red Hat a aussi bossé sur des extensions pour les images bootable OCI et le mode image RHEL.

Le truc, c'est que Red Hat arrive tard. TRÈS tard. Docker Desktop, c'est le standard de facto depuis des lustres, OrbStack a conquis les devs macOS avec sa légèreté sans oublier que Rancher Desktop et Portainer Business Edition occupent aussi le terrain. Du coup, leur stratégie c'est de cibler les boîtes déjà full Red Hat plutôt que d'essayer de convertir les utilisateurs Docker. C'est une ambition plutôt réaliste, je trouve.

Ça vient donc de passer en disponibilité générale via les canaux développeurs Red Hat, c'est gratuit, open source, et plutôt bien fichu pour ceux qui bossent dans un environnement RHEL au quotidien. Après, c'est pas non plus la révolution car ça reste Podman Desktop avec un petit chapeau d'entreprise.

Je pense que pour un usage hors Red Hat, Docker Desktop ou OrbStack restent devant. Mais si vous avez l'abonnement RHEL, ça peut valoir le coup d'y jeter un oeil.

Source

Onlook - Fini les allers-retours entre Figma et le code

Bonne nouvelle pour ceux qui en ont ras la casquette de se taper des allers-retours entre Figma et VS Code ! Parce qu'avec Onlook , l'éditeur visuel open source qui vous permet de modifier le design de vos apps React directement dans le navigateur, vous allez pouvoir cliquer simplement sur un élément de design, et en changer la couleur, la typo...etc et hop, ça modifiera le code derrière.

Pas mal, non ?

Vous ouvrez votre projet Next.js dans Onlook, et vous vous retrouvez avec une interface à la Figma, sauf que c'est branché sur votre code source. Vous sélectionnez un titre, un bouton, n'importe quel composant, et vous modifiez son style visuellement... couleurs, padding, marges, polices, tout y passe.

Et en fait, le truc qui change tout par rapport à un inspecteur CSS classique, c'est que quand vous cliquez sur "Publish", les modifications atterrissent DIRECTEMENT dans vos fichiers .tsx. C'est donc du vrai code propre, pas du CSS inline dégueulasse.

Côté technique, l'outil gère nativement TailwindCSS (parce que bon, en 2026, si vous faites du React sans Tailwind, vous aimez forcément le cuir qui claque et la souffrance). Vous éditez en mode visuel, ça génère les bonnes classes Tailwind, et vous gardez un contrôle total. Y'a aussi un mode LLM intégré... "rends ce bouton bleu avec des coins arrondis" et hop, c'est fait. Comme ça, pas besoin de chercher si c'est rounded-lg ou rounded-xl dans la doc.

Pour ceux qui connaissent Bolt.DIY ou qui se souviennent d' Amplify Studio (le truc de AWS qui tentait de faire le pont Figma vers React), Onlook prend le problème dans l'autre sens. Au lieu de partir du design pour générer du code, on part du code existant et on le modifie visuellement. Du coup, pas de code généré bancal à maintenir, c'est finalement VOTRE codebase qui est éditée.

Le projet est open source sous licence Apache 2.0 sur GitHub et la version open source est gratuite et self-hostable, donc vous pouvez la faire tourner chez vous sans débourser un centime. Après pour ceux qui veulent du cloud managé avec collab temps réel, y'a des plans payants.

Après attention, c'est encore jeune et le support se limite à React et Next.js pour l'instant, donc si votre stack c'est Vue ou Svelte, ça ne marchera pas. Et l'IA mouline un peu sur les layouts complexes mais le projet avance vite, la communauté est active, et pour un outil gratos qui fait le lien entre design et code en open source, y'a pas grand-chose d'équivalent.

Bref, à tester, c'est gratos.

Et merci à Lorenper !

ESPHome - Transformez un ESP32 à 5 euros en capteur domotique sans dépendre du cloud

Aujourd'hui j'aimerais vous parler un peu de bidouille et plus particulièrement de domotique. Hé oui, si comme moi, vous en avez marre que tous vos objets connectés passent par des serveurs chinois (souvent à la sécurité douteuse) ou américains (souvent directement connecté à la NSA) pour vous dire qu'il fait 22°C dans votre salon, on va voir comment ensemble créer ses propres capteurs 100% locaux avec ESPHome .

ESPHome, c'est un framework open source qui transforme n'importe quel ESP32 ou ESP8266 en appareil connecté intelligent sans vous prendre la tête. Vous écrivez un petit fichier YAML, vous flashez la puce, et hop, vous avez un capteur qui cause directement avec Home Assistant. Comme ça y'a pas de cloud et encore moins de données qui partent on ne sait où.

Et c'est hyper accessible... Suffit de savoir remplir un fichier texte avec quelques indentations (le fameux YAML), et voilà vous savez utiliser ESPHome.

ESPHome fait partie de l'Open Home Foundation ( Source )

Ce qu'il vous faut

  • Un ESP32 (genre un Wemos D1 Mini ou un NodeMCU)
  • Un capteur DHT22 (température et humidité)
  • Quelques fils Dupont
  • Temps estimé : 30 minutes

Niveau branchement, c'est pas sorcier. Le DHT22 a 3 broches utiles : VCC sur le 3.3V de l'ESP, GND sur GND, et DATA sur un GPIO de votre choix (le GPIO4 marche nickel). Pensez aussi à ajouter une résistance de 4.7kΩ entre DATA et VCC si vous voulez des lectures béton (beaucoup de modules l'ont déjà intégrée, mais vérifiez bien).

source

Ensuite, pour installer ESPHome sur votre ordi, ça se passe avec pip :

pip install esphome

Une fois l'outil en place, vous créez votre configuration YAML. Voici un exemple tout simple pour notre capteur :

esphome:
 name: capteur_salon

esp32:
 board: esp32dev

sensor:
 - platform: dht
 pin: GPIO4
 temperature:
 name: "Température Salon"
 humidity:
 name: "Humidité Salon"
 update_interval: 60s

Hé voilà ! Ce fichier suffit à tout configurer. Ensuite, pour flasher, branchez votre ESP en USB et lancez la commande :

esphome run capteur_salon.yaml

La première fois, ça compile tout le firmware et ça flashe. Une fois que c'est fait, l'ESP apparaît automatiquement dans Home Assistant si vous avez activé l'intégration. Et le top du top, c'est que les prochaines mises à jour se feront en WiFi (OTA), ce qui est super pratique quand le truc est planqué derrière un meuble.

Et si vous voulez aller plus loin dans l'intégration domotique locale, je vous conseille aussi de voir comment utiliser le GPIO directement sur Home Assistant .

Et voilà comment, avec dix balles et un peu de curiosité, vous avez un capteur qui n'espionne plus votre vie. Youuhouuu !

Systemd-analyze - L'outil indispensable pour accélérer son boot Linux

Vous trouvez que votre Linux met 3 plombes à démarrer et vous regardez l'écran de boot défiler en vous demandant ce qui peut bien prendre autant de temps ?

Hé bien bonne nouvelle los amigos del manchos, si vous utilisez une distribution basée sur systemd (comme Debian, Ubuntu, Fedora, Arch, et compagnie), il existe un outil natif déjà installé qui permet de diagnostiquer tout ça : systemd-analyze

Ce truc c'est un peu le médecin légiste de votre démarrage système. Il dissèque chaque étape, identifie les unités qui traînent la patte, et vous permet de comprendre où part votre précieux temps. Pour ceux qui débarquent, systemd est le système d'initialisation adopté par la plupart des distributions modernes, et il permet justement de lancer plein de trucs en parallèle pour gagner du temps.

Pour commencer, la commande de base c'est tout simplement :

systemd-analyze time

Elle vous sort un récapitulatif du temps passé dans chaque phase, généralement le kernel, l'initrd (le RAM disk initial), et l'espace utilisateur. Selon votre configuration, vous pourriez aussi voir passer le firmware ou le bootloader. Ça donne un truc du genre "Startup finished in 2.5s (kernel) + 19s (initrd) + 47s (userspace)". Déjà là, vous savez si le problème vient de votre noyau ou de vos services.

Mais le truc vraiment cool pour fouiller un peu plus dans le détail, c'est :

systemd-analyze blame

Cette commande vous balance la liste des unités systemd, triées par le temps qu'elles ont mis à s'initialiser. C'est un peu comme un classement des cancres de la Ve République. Vous voyez direct qui sont les boulets qui ralentissent tout le monde. Genre ce service réseau qui attend 20 secondes une connexion qui n'arrivera jamais, ou ce truc de logs qui prend son temps pour se réveiller.

Attention quand même, y'a un petit piège car un service qui met 10 secondes à démarrer ne signifie pas forcément que votre boot est rallongé de 10 secondes. Pourquoi me diriez-vous ? Hé bien parce que systemd lance plein de trucs en parallèle. Un service peut donc prendre son temps tranquille pendant que d'autres bossent en même temps sans bloquer personne.

Pour vraiment piger ce qui coince sur le chemin critique, lancez plutôt :

systemd-analyze critical-chain

Ça, c'est le top car ça vous montre la chaîne critique, c'est-à-dire la séquence exacte d'événements qui détermine vraiment votre temps de démarrage final. Vous voyez exactement quelles unités sont sur le chemin et lesquelles attendent les autres. Le temps après le "@" indique quand l'unité est devenue active, et le temps après le "+" montre combien de temps elle a pris pour démarrer. C'est bien plus fiable que blame pour identifier les vrais goulots d'étranglement.

Et si vous êtes du genre visuel, y'a même :

systemd-analyze plot > boot.svg

Et avec ça, hop, ça génèrera un magnifique graphique SVG qui représentera la chronologie de votre séquence de boot. Vous pourrez ensuite l'ouvrir dans votre navigateur et voir en un coup d'oeil ce qui démarre quand et combien de temps ça dure. C'est super pratique pour épater la galerie ou juste visualiser l'ordre de lancement.

Maintenant, une fois que vous avez identifié les coupables, comment on fait pour accélérer tout ça ?

Déjà, vous pouvez désactiver les services dont vous n'avez pas besoin avec :

sudo systemctl disable nom-du-service

Gardez en tête que disable supprime seulement le lancement automatique au boot, mais n'empêche pas une activation indirecte via une dépendance ou un socket. Si vous voulez vraiment qu'un service ne démarre plus jamais, utilisez mask. Et surtout, ne désactivez pas n'importe quoi comme un bourrin, hein ! Je vous connais ! Non, non, avant de toucher à un service, vérifiez d'abord ce qui en dépend :

systemctl list-dependencies nom-du-service

Car si vous cassez un truc important, votre système risque de ne plus démarrer correctement. Donc si vous n'êtes pas sûr, gardez vos mimines dans vos poches. D'ailleurs, si vous bidouillez vos fichiers d'unité (comme pour automatiser Shiori par exemple), sachez que vous pouvez aussi les vérifier pour débusquer les erreurs avec :

systemd-analyze verify /chemin/vers/unite.service

C'est super pratique pour éviter les mauvaises surprises au prochain redémarrage. Voilà et si vous cherchez d'autres astuces pour optimiser votre machine Linux , n'hésitez pas à jeter un oeil à mon article sur TLP.

Ah j'oubliais, y'a aussi la commande systemd-analyze security qui permet d'analyser le niveau d'exposition sécurité de vos services. Elle attribue un score heuristique d'exposition basé sur les options de durcissement (hardening) actives. Plus le score est bas, mieux le service est protégé contre d'éventuelles failles. C'est donc un excellent point de départ pour identifier les services qui mériteraient un peu plus de love côté isolation.

Bref, cet analyseur de démarrage c'est vraiment l'outil indispensable pour qui veut comprendre et optimiser son boot Linux. C'est natif, c'est puissant, et ça vous évite de passer des heures à chercher pourquoi votre machine met autant de temps que vous à se réveiller le matin ^^.

Anytype - L'alternative à Notion qui ne vend pas vos données aux GAFAM

Je suis complètement passé à côté de ce truc jusqu'à ce que David (merci à lui !) m'envoie un petit message pour me dire : "Hé Korben, t'as vu Anytype ? C'est comme Notion mais en mieux". Du coup, j'ai testé et j'ai vraiment halluciné.

Si vous êtes du genre à noter tout ce qui vous passe par la tête dans Notion ou Evernote, vous connaissez le problème. Vos données sont hébergées on ne sait où, et le jour où la boite décide de changer ses conditions d'utilisation ou de fermer boutique, vous êtes marron.

Hé bien Anytype, c'est la réponse à cette angoisse.

C'est une application local-first et chiffrée de bout en bout qui permet de créer votre propre "internet personnel". Petite nuance importante : Anytype n'est pas "open source" au sens strict de l'OSI. Leurs protocoles (notamment AnySync) sont bien open source sous licence MIT, mais les applications elles-mêmes sont distribuées sous une licence "source available" ( Any Source Available License 1.0 ). Concrètement, le code est consultable et modifiable, mais l'utilisation commerciale est restreinte. C'est pas du tout la même chose, et c'est important de ne pas confondre pour éviter l'openwashing. Cela dit, l'équipe est transparente là-dessus , ce qui est appréciable.

En gros, tout ce que vous créez (notes, tâches, documents, tableaux) est stocké localement sur votre machine. Pas de cloud obscur, pas de tracking, c'est votre disque dur, vos règles.

Leur point fort, c'est leur protocole AnySync car ça permet de synchroniser vos données entre vos appareils (ordi, téléphone, tablette) en peer-to-peer comme ça y'a pas besoin de serveur central. Vos appareils discutent directement entre eux, un peu comme si vous aviez votre propre réseau privé.

Au niveau de l'interface, on retrouve ce système de blocs qu'on aime bien chez la concurrence, mais avec une approche "objet". Dans AnyType comme chez Ikea, tout est un objet : une tâche, une personne, une note, un livre. Et vous pouvez lier tous ces objets entre eux pour créer un véritable graphe de connaissances tel un grand architecte de la matrice du dimanche).

Ce qui est cool aussi, c'est que l'équipe a déjà ajouté une fonction de publication web (vos pages peuvent devenir des pages publiques statiques) et propose une API côté desktop qui tourne en local. Elle travaille aussi sur l'intégration d'une IA locale . Parce que oui, avoir une IA qui vous aide à trier vos notes sans envoyer vos données à l'autre bout du monde, c'est quand même plus rassurant.

Si vous voulez aller encore plus loin, vous pouvez même héberger votre propre "noeud" de sauvegarde sur un serveur à la maison. D'ailleurs si vous aimez ce genre d'outils souverains, jetez un oeil à Local Deep Research pour vos recherches. Comme ça, vous avez une copie de secours chiffrée, accessible 24/7, sans dépendre de personne.

Bref, si vous cherchez une alternative souveraine pour gérer votre vie numérique, foncez voir ça. C'est gratuit jusqu'à 100 MB de stockage, c'est beau, et ça respecte votre vie privée. Que demande le peuple ?

Merci encore à David pour la découverte et à Alexandre pour la précision sur la licence !

Source

led.run - Transformez n'importe quel écran en panneau LED

Transformer n'importe quel écran en panneau LED géant, avec juste une URL... ça vous chauffe ? C'est en tout cas ce que propose led.run , un petit outil open source sous licence MIT qui fait le taf sans avoir besoin d'installer quoi que ce soit.

En gros, vous tapez votre texte directement dans l'URL, genre led.run/KORBEN JE T'AIME et hop, votre navigateur affiche un gros panneau lumineux comme ce qu'on retrouve dans les concerts ou dans les vitrines de magasin.

Et ça tourne dans n'importe quel navigateur (même celui de votre grille-pain connecté).

led.run en action avec le thème par défaut - sobre mais efficace

Le truc sympa, c'est qu'il y a une vingtaine de thèmes disponibles. Du néon qui clignote au style rétro avec des scanlines façon vieux moniteur CRT, en passant par un mode "panneau routier", un effet feu d'artifice ou encore une ambiance Shibuya sous la pluie. Y'a même un thème "bois artisanal" pour ceux qui veulent faire chic. Attention par contre, sur un vieux smartphone certains effets un peu chargés peuvent ramer.

Et tout se paramètre via l'URL. Vous voulez du texte rouge ? Ajoutez ?c=ff0000. Un fond blanc semi-transparent ? ?bg=40ffffff. Du défilement vers la droite à vitesse turbo ? ?speed=120&dir=right. C'est super car avec ça vous pouvez automatiser plein de trucs. Par exemple je me ferais bien un panneau d'affichage au dessus de la porte du bureau pour dire aux enfants de pas débouler en plein pendant mes lives Twitch (oui c'est les vacances en ce moment...).

Vive l'éducation positive !

D'ailleurs, l'outil détecte automatiquement si votre texte est court ou long. Dix caractères ou moins, ça s'affiche en mode panneau statique. Au-delà, ça défile tout seul. En fait c'est plutôt bien foutu, sauf si vous voulez un long texte en statique... dans ce cas, forcez avec ?mode=sign ou ?mode=flow.

Voilà c'est parfait pour transformer un vieil iPad ou une tablette Android en enseigne de bar ("HAPPY HOUR JUSQU'À 21H"), brandir votre téléphone en mode pancarte à un concert pour dire à Taylor Swift que vous voulez l'épouser, ou afficher un "NE PAS DÉRANGER ON BRASSE DU VENT" sur l'écran de la salle de réunion.

Voilà voilà. Si vous avez une vieille tablette qui traîne, vous savez quoi en faire maintenant.

C'est sur GitHub !

Merci à Lorenper pour la découverte !

Lingoku - L'extension qui transforme votre navigation en cours de japonais

Vous avez déjà essayé d'apprendre le japonais ?

Moi aussi. Et comme 90% des gens, j'ai abandonné après avoir constaté que mémoriser des listes de vocabulaire sur Duolingo en mode perroquet, c'était franchement pas terrible pour progresser. Le truc, c'est que notre cerveau retient beaucoup mieux les mots qu'on rencontre en contexte réel plutôt que dans des exercices artificiels.

Hé bien c'est exactement sur ce principe que repose Lingoku , une extension pour Chrome, Edge et Firefox qui va remplacer certains mots sur les pages web que vous visitez par leur équivalent japonais. Du coup, pendant que vous scrollez Reddit, lisez le New York Times ou que vous vous perdez sur Korben.info, vous apprenez du vocabulaire sans vous en rendre compte.

Le concept s'appuie sur la théorie du i+1 de Stephen Krashen , un linguiste qui a démontré que l'acquisition d'une langue fonctionne mieux quand on est exposé à du contenu juste un peu au-dessus de son niveau actuel. Pas trop simple pour s'ennuyer, pas trop dur pour décrocher. Lingoku analyse donc votre niveau et ne remplace que les mots adaptés à votre progression, genre 10% du texte seulement pour que vous puissiez toujours comprendre le contexte global.

Grâce à cette extension, quand vous survolez un mot japonais, la traduction apparaît en 0,2 seconde. Pas de popup intrusive ni de fenêtre qui vous sort de votre lecture. L'extension utilise un "cerveau contextuel" basé sur l'IA qui comprend les nuances des kanjis selon le contexte dans lequel ils apparaissent. Parce que oui, un même kanji peut avoir plusieurs significations et c'est souvent là que ça devient galère pour les débutants.

Y'a aussi un système de répétition espacée intégré qui vous rappelle de réviser les mots aux moments optimaux pour lutter contre l'oubli. Et si vous préparez le JLPT (l'examen officiel de japonais), vous pouvez configurer l'extension pour cibler spécifiquement le vocabulaire de votre niveau.

L'installation prend 30 secondes, vous choisissez vos objectifs (JLPT, vie quotidienne ou anime si vous êtes un weeb assumé), vous indiquez votre niveau actuel, et hop, c'est parti. L'extension fonctionne sur à peu près tous les sites avec du contenu textuel.

Niveau confidentialité, le contenu est chiffré pour l'analyse IA, supprimé instantanément et jamais stocké. La version gratuite offre 500 points quotidiens, ce qui devrait suffire pour une utilisation normale et si vous voulez plus, il faudra passer à la version payante pour débloquer les fonctionnalités IA avancées, les rapports de progression détaillés et la synchronisation multi-appareils.

Bref, si vous avez toujours rêvé de pouvoir lire des mangas en VO ou de comprendre ce que racontent les personnages dans vos animes préférés sans sous-titres, cette extension peut être un bon complément à votre apprentissage. C'est pas magique et ça ne remplacera jamais un vrai cours de grammaire, mais pour enrichir son vocabulaire de manière passive pendant qu'on procrastine sur le web, y'a pire comme méthode...

VoxDrop - La dictée vocale ultra-rapide qui tourne en local sur Mac

La dictée vocale, y'a plein d'outils pour ça. Sauf que la plupart envoient votre voix dans le cloud pour la transcrire, et surtout... c'est lent. Chez Google, chez OpenAI, chez Apple... entre le moment où vous parlez et celui où le texte s'affiche, y'a toujours cette latence qui casse tout. Et ça fait des mois que ça me gonflait, surtout en bossant sur mon Mac Studio M4 et mon MacBook Air M2 qui sont quand même censés être des bêtes de course.

Du coup je me suis codé VoxDrop au départ rien que pour moi. Une app macOS qui transforme votre voix en texte, et avec laquelle TOUT se passe en local sur votre machine. Zéro cloud, zéro donnée qui fuite, et surtout c'est rapide. Vous appuyez sur un raccourci (⌥ + Espace par défaut), vous parlez, vous relâchez, et hop, le texte apparaît directement là où se trouve votre curseur. Pas de fenêtre à ouvrir, pas de copier-coller. L'app est super légère et reste discrète en tâche de fond sans bouffer votre RAM.

L'interface de VoxDrop - sobre et efficace ( Source )

Côté moteurs de transcription, y'en a 7 au choix. J'ai voulu ratisser large en mettant des modèles américains, français et chinois. Parakeet de NVIDIA (600 Mo) est le modèle par défaut. Il est super rapide, c'est mon préféré. J'ai mis aussi Whisper avec ses variantes Small, Medium, Turbo et Large v3 qui couvre tous les cas. Y'a aussi Voxtral Mini de chez Mistral, made in France, et Qwen3-ASR le modèle chinois.

Les 7 moteurs de transcription au choix ( Source )

Alors pourquoi sur architecture Silicon ? Hé bien déjà parce que c'est ce que j'utilise au quotidien et aussi parce que les puces Apple Silicon (M1, M2, M3, M4) ont un avantage énorme pour l'IA locale : la mémoire unifiée. En gros, le CPU et le GPU partagent la même RAM. Un modèle chargé en mémoire est donc directement accessible au GPU Metal pour les calculs, sans copie de données. C'est pas magique non plus hein, si votre modèle fait 3 Go et que vous avez 8 Go de RAM, ça va ramer. Mais sur un MacBook Air M2, un modèle de 400 Mo tourne en temps réel sans broncher.

Et VoxDrop ne fait pas QUE de la transcription. Y'a aussi du post-traitement local avec une traduction dans 13 langues mais aussi une reformulation (mode pro, décontracté, concis, structuré...), le tout via le modèle de langage embarqué GemmaTranslate. Et vous avez 5 raccourcis clavier indépendants, chacun avec sa propre config. Un pour dicter, un pour traduire en direct, un pour reformuler ce que vous avez sélectionné...etc. Perso, au quotidien, ceux qui l'utilisent ne peuvent s'en passer. Et moi non plus ! Sauf si vous tapez plus vite que vous ne parlez, mais bon, ça m'étonnerait ^^.

Maintenant, pourquoi c'est pas sur l'App Store ?

Parce que VoxDrop est réservé à mes abonnés Patreon . Vous me soutenez pour la veille techno et la vulgarisation, et en retour j'ai envie de vous filer des outils concrets que j'utilise moi-même tous les jours. Pas de commission, pas d'intermédiaire. Juste un truc développé pour les gens qui me suivent.

J'espère d'ailleurs que ce sera la première d'une série d'apps comme ça. En tout cas, je ne crois pas avoir vu ce modèle de licence ailleurs. J'ai même développé un petit framework exprès pour ça, que je compte bien réutiliser.

Voilà, un GROS merci à tous ceux qui ont bêta-testé l'app pour moi, vos retours ont été très précieux !

Et si vous êtes déjà sur Patreon , VoxDrop est dispo ici !

GitForms - Vos formulaires de contact stockés directement dans GitHub Issues

Intégrer un formulaire de contact sur un petit projet ou un MVP, c'est souvent la plaie. Soit on s'embête avec un backend dédié, soit on finit par payer un abonnement chez Typeform ou FormSpree parce qu'on a dépassé le quota gratuit en trois jours.

Et c'est LÀ qu'intervient GitForms .

Le concept est tout bête mais fallait y penser. En fait l'idée c'est d'utiliser les GitHub Issues comme base de données pour vos formulaires comme ça, au lieu de stocker les messages dans une DB SQL ou NoSQL obscure, chaque soumission de formulaire crée automatiquement une nouvelle issue dans le dépôt GitHub de votre choix.

Pratique, non ?

Côté technique, c'est du solide puisqu'on est sur du Next.js 14, du TypeScript et du Tailwind CSS. Et pour le mettre en place, c'est vraiment l'affaire de 5 minutes... vous clonez le repo, vous générez un token GitHub, et vous déployez ça sur Vercel, Netlify ou même via Docker. Et hop, vous avez un formulaire fonctionnel avec des notifications par email automatiques (merci le système de notifs de GitHub).

L'outil est super personnalisable, vous pouvez changer les couleurs, les textes et même ajouter des langues en bidouillant simplement des fichiers JSON, sans même avoir à toucher au code source. C'est idéal pour ceux qui veulent un truc propre et rapide sans sortir la carte bleue toutes les cinq minutes.

Attention quand même, car niveau RGPD, ne croyez pas que c'est magique. Certes, c'est auto-hébergeable, mais vos données transitent par GitHub. Il faudra donc veiller à ce que votre dépôt soit privé si vous collectez des données personnelles, histoire de ne pas afficher les emails de vos prospects à la vue de tous. Notez aussi que GitHub a des limites de taux (rate limits) pour la création d'issues, donc si vous recevez 10 000 messages par jour, ça risque de coincer.

Enfin, un petit mot sur la licence, le projet semble être sous CC BY-NC-SA 4.0 ce qui veut dire qu'il est parfait pour vos projets perso ou vos tests, mais pour un usage purement commercial, il faudra peut-être vérifier si ça colle avec vos besoins.

Bref, si vous cherchez une solution simple, propre et qui exploite intelligemment les outils que vous utilisez déjà, jetez un œil à GitForms. C'est open source et ça dépanne bien pour les petits projets qui n'ont pas besoin d'une artillerie lourde.

Source

DNS-collector - Pour comprendre enfin ce qui se passe sur votre réseau

Le DNS, c'est un peu la tuyauterie planquée d'Internet. Tout le monde l'utilise, mais personne ne regarde vraiment ce qui se passe dans les tuyaux... jusqu'à ce que ça pète ou qu'un petit con s'en serve pour exfiltrer des données. Et là, bon courage pour fouiller dans les logs en mode brutasse pour comprendre qui a fait quoi sur votre réseau.

En fait, pour ceux qui se demandent encore qu'est-ce que le DNS (Domain Name System), c'est simplement l'annuaire qui traduit les noms de domaine comme korben.info en adresses IP. Sans lui, on serait tous en train de mémoriser des suites de chiffres à la con.

Et il y a quelques jours, j'ai reçu un mail de Denis, un fidèle lecteur (qui traîne sur le blog depuis 2005, ça nous rajeunit pas !) qui m'a écrit pour me présenter son projet sur lequel il bosse depuis 5 ans : DNS-collector .

DNS-collector, c'est un outil écrit en Go qui sert de "chaînon manquant" entre vos serveurs DNS et votre pile de données. En gros, il capture le trafic DNS, le nettoie, l'enrichit et l'envoie là où vous en avez besoin. C'est l'outil parfait pour ceux qui ont la flemme de se palucher des fichiers PCAP de 4 Go à la main ou de debugger des flux DNStap illisibles.

Le point fort de DNS Collector, c'est sa flexibilité. Côté entrées, ça avale tout : du DNStap via socket Unix ou TCP (le protocole standard utilisé par BIND, Unbound ou PowerDNS), du sniffing réseau classique avec AF_PACKET ou même XDP pour la très haute performance. Attention quand même, pour XDP, apparemment le kernel Linux doit être récent (version 5.x minimum) et les drivers réseau doivent suivre, sinon ça va faire pshitt. Ensuite, par défaut, le bousin écoute pépouze sur le port UDP/6000 en attendant ses flux.

Mais là où ça devient vraiment balaise, c'est dans le traitement des données. DNS-collector embarque des "Transformers" (rien à voir avec Optimus Prime hein ^^) qui font tout le boulot ingrat à votre place dans le pipeline de traitement. Hop, ça normalise les noms de domaine en minuscules (le fameux qname-lowercase dans le fichier de config), ça ajoute la géolocalisation via GeoIP (genre MaxMind ou IP2Location), et on peut même détecter les trucs louches.

Il peut aussi détecter le tunneling DNS ou les domaines générés par algorithme (DGA) qui sont souvent les signes d'une infection sur une machine. Petit bémol cependant, pour la géolocalisation, pensez à télécharger vos bases GeoIP au préalable (fichiers .mmdb), sinon l'outil va vous faire une petite grimace au démarrage.

Vous pouvez aussi protéger la vie privée de vos utilisateurs en anonymisant les adresses IP via un hachage SHA1 ou du masquage. C'est propre, ça respecte le RGPD, et ça permet de garder des stats utiles (genre le top des ASN consultés) sans fliquer tout le monde. Les données sortent proprement en JSON ou en Protobuf, prêtes à être ingérées.

Une fois que vos données sont propres, vous les envoyez où vous voulez. J'ai choisi de vous citer ClickHouse ou InfluxDB car c'est parfait pour stocker des millions de requêtes sans mettre votre serveur à genoux, mais la liste est longue : Prometheus pour les métriques, ElasticSearch, Kafka, Redis, ou même Slack via des webhooks pour être alerté en temps réel quand un domaine louche pointe le bout de son nez.

Alors si ça vous chauffe, comment récupérer cet outil et le mettre en place ?

Hé bien c'est hyper fastoche comme d'hab puisque le projet est dispo en binaire ou via Docker. Ensuite, vous lancez la commande ./dnscollector -config config.yml, vous branchez vos sources, et roule ma poule. Taaadaaaa ! DNS-collector s'occupera du reste sans vous bouffer toute votre RAM (contrairement à certaines usines à gaz Java qui demandent un sacré paquet de mémoire vive ^^).

Voilà, perso, je trouve l'approche très saine. C'est léger, modulaire et ça répond à un vrai besoin pour les admins sys qui veulent enfin "voir" ce qui transite par leurs serveurs. Le bousin encaisse des milliers de requêtes par seconde sans broncher... enfin sauf si votre serveur est une patate de 2012, là je garantis rien.

Mortecouille, c'est quand même mieux d'avoir des logs lisibles avec un simple tail -f /var/log/syslog, non ? Et d'ailleurs, le projet est déjà adopté par pas mal d'acteurs de la sécu, donc vous pouvez y aller sereinement.

Merci Denis !

VirtualBox - Oracle adopte enfin KVM sur Linux

VirtualBox, le bon vieux logiciel de virtualisation d'Oracle, vient de franchir un cap plutôt inattendu. Le code de développement supporte désormais KVM comme backend sur Linux ! En gros, au lieu de s'appuyer uniquement sur son propre module noyau (qui, soyons honnêtes, a toujours été un poil galère à maintenir), l'outil de virtualisation peut maintenant utiliser l'hyperviseur natif de Linux.

Et c'est pas rien quand on sait que le logiciel d'Oracle et KVM se marchaient dessus depuis des années. C'était impossible de faire tourner les deux en même temps... Du coup, plutôt que de continuer à se battre, Oracle a décidé de faire copain-copain avec KVM. C'est pas bête !

L'idée vient à l'origine de Cyberus Technology qui avait pondu une implémentation open source en 2024. Et aujourd'hui, c'est Oracle qui intègre le truc directement dans le code officiel. Alors pour l'instant, c'est dispo uniquement en version de dev dans les dépôts Git et les builds de test et ça fonctionne "à peu près".

Vous pouvez dès à présent activer le backend KVM quand le module noyau classique de VirtualBox refuse de coopérer. C'est pratique mais attention par contre, si vous avez besoin du réseau NAT avancé ou du mode pont avec VLAN, ça passera pas encore via KVM... faudra rester sur le module maison.

Notez aussi que l'hyperviseur maison d'Oracle garde quand même des avantages notamment pour tout ce qui est modes réseau avancés, émulation précise pour les vieux OS, et émulation fine de périphériques.

Mais n'empêche, la tendance est claire, tout le monde converge vers l'hyperviseur du noyau Linux. Faut dire que QEMU/KVM c'est devenu tellement solide ces dernières années que ça n'a plus trop de sens de réinventer la roue dans son coin.

Voilà, donc pour ceux qui utilisent l'outil d'Oracle au quotidien sur Linux, c'est une bonne nouvelle. Moins besoin de jongler avec le module vboxdrv, moins de conflits avec d'autres solutions de virtualisation , et surtout des mises à jour noyau qui cassent moins souvent.

Bref, gardez un œil sur les prochaines releases car Oracle a l'air d'y aller sérieusement. Le support KVM final et officiel devrait atterrir pour tous dans une version stable courant 2026. J'ai hâte !

Source

Trois-Rivières - Le jeu vidéo qui sensibilise à l'écologie

On parle souvent de sobriété numérique, mais c'est assez rare de voir ça appliqué concrètement dans le monde du jeu vidéo car d'ordinaire, c'est plutôt la course aux téraflops et aux textures 4K qui font pleurer votre carte graphique. Du coup, quand un projet comme Trois-Rivières déboule, je trouve que ça mérite qu'on s'y arrête 2 minutes.

L'idée de Richard Hanna et de son équipe, c'est de proposer un jeu d'action-aventure en pixel-art qui ne se contente pas d'être joli, mais qui porte un vrai message engagé. On y suit Maï, une randonneuse qui arrive dans un village paisible où trois affluents se rejoignent. Sauf que voilà, la flotte est polluée et il va falloir remonter à la source pour comprendre ce qui cloche. Et là, on entre dans le vif du sujet : le jeu traite des impacts environnementaux et sociaux de la fabrication de nos joujoux numériques. De la mine à l'usine de recyclage, en passant par l'assemblage, tout y passe.

Ce qui est vraiment chouette avec Trois-Rivières, c'est la démarche d'écoconception derrière le projet. Le jeu est ultra léger (14,2 Mo au total, dont 10,4 Mo pour la musique et les sons) et tourne directement dans votre navigateur, que vous soyez sur PC, tablette ou même sur un vieux coucou comme un iPhone 6S de 2015. Pas besoin donc d'installer quoi que ce soit, hop, on lance et ça joue. C'est développé avec le framework Phaser et le résultat est super propre. Pour ceux qui s'intéressent à la création de jeux vidéo , c'est un bel exemple de ce qu'on peut faire avec de la contrainte technique intelligente.

D'ailleurs, le projet a reçu le soutien du Ministère de la Culture et de l'ADEME via le programme Alt Impact. C'est dire si le message est pris au sérieux. Si vous avez envie de tâter du pixel tout en réfléchissant à votre consommation de hardware, c'est vraiment sympa à expérimenter et petit bonus qui fait plaisir : le code source et les musiques sont sous licence libre (MIT pour le code, CC pour les sons).

Bref, un grand merci à Richard Hanna de m'avoir fait découvrir ça, et bravo à toute l'équipe pour le boulot. C'est gratuit, c'est libre, et ça fait réfléchir... C'est par ici que ça se passe .

❌