Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

GhostDesk - Un bureau Linux complet pour votre agent IA

Par : Korben ✨
27 mai 2026 à 10:49

GhostDesk , c'est un serveur MCP open source qui file à votre agent IA un bureau Linux complet tournant dans Docker. L'agent voit l'écran, clique, tape, lance des applis, comme un humain. Bref, c'est pas juste un browser à la Playwright, puisque grâce à lui, n'importe quelle interface graphique devient pilotable. Yoann Vanitou son créateur m'a pitché son projet par email, et comme j'ai trouvé ça cool, je vous emmène faire un petit tour du propriétaire.

Le principe c'est un conteneur Docker qui tourne avec un bureau Linux minimal, Firefox, un terminal, un éditeur de texte, une calculatrice, et un serveur MCP en frontal. Votre agent IA préféré se connecte alors sur http://localhost:3000/mcp, demande un screenshot, identifie ce qui est à l'écran, puis envoie des commandes souris et clavier via les douze outils exposés (click, drag, scroll, type, key press, copy/paste, launch app, etc.).

Et vous pouvez même regarder l'agent bosser en direct depuis votre navigateur sur le port 6080, via noVNC. C'est assez satisfaisant de voir l'IA cliquer toute seule dans Firefox, je dois bien le reconnaitre !

Là où Playwright et consorts sont coincés dans le browser, GhostDesk fonctionne ainsi sur n'importe quelle fenêtre. Un workflow automatisé qui mélange plusieurs applis , un ERP legacy, LibreOffice, un IDE, un client mail, peu importe.... Ça évite les bidouilles à base sélecteurs CSS ou code custom puisque l'agent interprète l'écran directement à partir des captures écran qu'il fait.

Et comme le serveur est pensé pour tourner avec des modèles locaux comme Qwen sur une workstation GPU, y'a vraiment aucune donnée qui sort de votre réseau et aucun coût API. Puis surtout, des cas d'usage sensibles (genre avec des données de santé, de la compta, du SI interne..etc) deviennent parfaitement envisageables. Claude et ChatGPT marchent aussi, mais avec les compromis habituels sur la latence et la confidentialité.

Pour tester, une seule commande Docker suffit :

docker run -d --shm-size 2g -p 3000:3000 -p 6080:6080 ghcr.io/yv17labs/ghostdesk:latest

Vous branchez ensuite votre client MCP sur localhost:3000/mcp, vous ouvrez localhost:6080 dans un onglet pour observer, et hop ! Pour la prod, y'a aussi un mode TLS plus bearer token qui chiffre le transport, parce qu'exposer un bureau Linux en clair sur le réseau, c'est pas l'idée du siècle, c'est vrai ^^.

Les applis pré-installées restent sobres, mais rien n'empêche de builder votre propre image avec d'autres logiciels.

Maintenant, le projet est très jeune et son développement repose quasi uniquement sur Yoann, donc je pense qu'il ne sera pas contre un petit coup de main. A voir avec lui.

Après côté licence, c'est une license non-concurrentielle qui interdit l'usage commercial rival pendant une période fixée avant bascule vers une licence ouverte classique.

Bref, GhostDesk c'est une idée sympa et je pense que si vous faites de l'automation d'applis desktop ou que vous voulez brancher un agent local sur un bureau virtuel sans payer d'API, ça mérite le coup d'œil !

Bravo à Yoann !

ffmpeg-over-ip - Le transcodage GPU distant pour Jellyfin

Par : Korben ✨
4 mai 2026 à 16:15

Jellyfin sans GPU, c'est la croix et la bannière dès que quelqu'un lance un film en 4K. Mais c'était sans compter sur ffmpeg-over-ip qui est capable de transformer un serveur équipé d'un GPU en endpoint de transcoding distant, accessible via un simple binaire qui se fait passer pour ffmpeg. Y'a pas de passthrough GPU, ni besoin de vous lancer dans la config de point de montage réseau exotique.

Le principe c'est que le client reçoit les commandes ffmpeg de Jellyfin (ou Emby), les sérialise et les envoie ensuite via TCP (port 5050) vers un serveur qui lui dispose d'un bon GPU. Et côté Jellyfin, rien ne change puisque le binaire répond exactement comme ffmpeg le ferait (et je vous rassure, y'a un peu d'authentification pour éviter de vous faire squatter votre serveur de transcoding à l'insu de votre plein gré).

Alors imaginons un peu dans quelle situation ça peut être utile... Par exemple, vous pourriez avoir un NUC ou mini-PC tout neuf qui fait tourner Jellyfin dans Docker, et à côté une vieille tour avec une GTX qui traîne dans un coin pour le transcodage. L'avantage c'est que plusieurs clients peuvent ainsi partager le même serveur GPU en parallèle, donc ffmpeg-over-ip peut valoir le coup si vous avez du matériel qui dort dans un coin.

L'outil est signé Anees Iqbal (steelbrain) et voici comment l'installer (pensez à vérifier le contenu du .sh avant) :

curl -fsSL https://ffmpeg-over-ip.com/install-client.sh | sh

Windows a aussi droit à son équivalent PowerShell si vous voulez.

Pour brancher ça sur Jellyfin ensuite, c'est direction Dashboard → Playback → chemin ffmpeg → et faites pointer vers ffmpeg-over-ip-client. Notez que ffprobe doit aussi être redirigé car Jellyfin l'appelle séparément pour les métadonnées. Vous pouvez faire un lien symbolique pour être tranquille :

ln -s ffmpeg-over-ip-client ffprobe

Et ensuite, pour vérifier, cette commande : ./ffmpeg-over-ip-client -version devrait vous retourner les infos de l'instance ffmpeg distante. Si ça répond, c'est que c'est bon !

Notez que la config permet de passer par des variables d'environnement du genre FFMPEG_OVER_IP_CLIENT_ADDRESS pour l'adresse du serveur, FFMPEG_OVER_IP_CLIENT_AUTH_SECRET pour la clé HMAC. Et pour tout ce qui est paramètres avancés, disons que les remappings de filtres complexes qu'on peut faire avec ffmpeg nécessitent encore un fichier .jsonc à créer et paramétrer.

Côté serveur, les accélérations supportées sont : NVENC (NVIDIA), QSV (Intel), VAAPI (Linux), AMF (AMD), VideoToolbox (macOS). Et comme c'est basé sur jellyfin-ffmpeg, du coup y'a toutes les accélérations habituelles sans avoir à recompiler.

Par contre, attention si le serveur GPU tombe, y'aura aucun fallback automatique vers le CPU local. Et si votre réseau interne est en 100Mbps et que vous transcodez du 4K HEVC, le goulot d'étranglement sera le transit réseau, pas le GPU. Donc optez pour un réseau en gigabit minimum dans ce cas.

Bref, c'est simple, propre, et très bien pensé par exemple pour les setups Docker qui n'ont pas d'accès direct au matériel.

OAuth2 Proxy - L'authentification OIDC en reverse proxy

Par : Korben ✨
4 mai 2026 à 11:32

Vous avez un service qui tourne sur le port 8080, mais aucune authentification native dessus et vous voulez ajouter OAuth2 sans avoir à toucher au code ? Vous êtes vraiment exigeant dans la vie !

Mais comme vos désirs sont des ordres, je vous présente oauth2-proxy dont c'est EXACTEMENT le boulot !

Le principe avec cet outil c'est qu'il se glisse entre l'utilisateur et votre application. Ainsi, si la personne n'est pas connectée, elle est alors redirigée vers son provider OAuth2 ou OIDC. Et une fois le token validé, popopop, la requête repart vers son point d'origine avec les infos utilisateur dans les headers HTTP. Et voilà comme votre app reçoit le nom, l'email, et les groupes associés à l'utilisateur ! Plus besoin de gérer l'auth dans votre code c'est que du bonheur !

Et la liste des providers supportés par oauth2-proxy est longue : Google (c'est celui par défaut), GitHub, GitLab, Microsoft Entra ID, Keycloak, Gitea / Forgejo, NextCloud, DigitalOcean, LinkedIn, Bitbucket, Cisco Duo... et un bon vieux client OIDC générique pour tout ce qui expose un accès standardisé. Comme ça si votre SSO interne parle OIDC, vous êtes déjà couvert !

Côté déploiement, c'est un simple binaire en Go et c'est également disponible en image Docker sur quay.io/oauth2-proxy/oauth2-proxy, pour AMD64, ARM64, ARMv6/v7, et quelques architectures plus exotiques du genre ppc64le, s390x pour les bandeurs de mainframes ^^.

Ensuite, l'outil peut fonctionner de 2 façons : Soit en proxy autonome devant votre service, ou en middleware intégré dans un reverse proxy existant comme nginx via le mécanisme auth_request. Dans ce second mode, oauth2-proxy ne fait en réalité que vérifier la session et répondre du code 202 ou 401. C'est nginx qui gère le routage et le proxy lui se contente d'authentifier les gens.

Et voilà, si vous cherchez à minimiser la surface d'attaque, c'est la config à privilégier. Tout est là : github.com/oauth2-proxy/oauth2-proxy , avec la doc complète. Et si vous cherchez quelque chose de plus intégré, avec tunnel et gestion des tunnels VPN en prime, il y a aussi Pangolin dont je vous ai parlé. Et pour du plus simple en contexte Docker, TinyAuth fera également très bien le taf.

Merci à Mathieu Passenaud pour le lien !

❌
❌