Si vous avez déjà envoyé un lien à usage unique qui est arrivé mort chez votre collègue, c'est probablement la prévisualisation de la messagerie qui a ouvert le lien en premier et qui a cramé le secret accompagnant le lien.
La bonne nouvelle c'est que Oğuzhan Karacabay vient de publier une grosse mise à jour d'
OTI
, son service open source auto-hébergeable qui génère des liens de partage consultables une seule fois, avec chiffrement dans le navigateur.
Si vous avez déjà envoyé un lien à usage unique qui est arrivé mort chez votre collègue, c'est probablement la prévisualisation de la messagerie qui a ouvert le lien en premier et qui a cramé le secret accompagnant le lien.
La bonne nouvelle c'est que Oğuzhan Karacabay vient de publier une grosse mise à jour d'
OTI
, son service open source auto-hébergeable qui génère des liens de partage consultables une seule fois, avec chiffrement dans le navigateur.
Vous collez un mot de passe, une clé d'API ou un bout de config dans OTI, le navigateur chiffre, le serveur lui ne stocke que du charabia, et le destinataire reçoit une jolie URL qui ne fonctionnera bien qu'une fois.
Ce qui change, c'est que le lien ne meurt plus tout seul. En chargeant la page, votre destinataire voit un compte à rebours et un bouton "Decrypt Message", rien d'autre. Du coup, tant que personne ne clique, le message continue son roupillon.
Comme ça, un bot qui déroule les URLs pour fabriquer une jolie vignette repart bredouille. Après si c'est un vrai scanner de sécurité qui charge vraiment la page dans un navigateur automatisé, vous ne pourrez pas éviter le problème.
L'autre nouveauté dans OTI c'est à la création d'un nouveau lien. Le service vous génère en fait 2 liens. Il y a celui que vous envoyez et un second que vous gardez pour vous. Ce dernier vous permettra de consulter l'état du message sans jamais afficher son contenu.
Côté crypto, le contenu est chiffré en AES-256-GCM via WebCrypto, et cette clé AES est elle-même emballée dans une paire RSA-2048 générée dans votre navigateur. La clé privée voyage dans le fragment de l'URL, la partie après le #, que les navigateurs n'envoient jamais au serveur.
Le principe zero-knowledge utilisé par OTI est quasi le même que celui de
PrivateBin
ou d'
Enclosed
où la clé ne quitte jamais le navigateur.
Par contre, ça donne des liens obèses puisque le mien faisait 1825 caractères, dont 1728 rien que pour le fragment, et c'est déjà compressé en zlib. Bon courage donc pour le dicter au téléphone ^^ (il y a un QR code, heureusement !)
Le reste, c'est du confort... Fichiers .txt jusqu'à 100 Ko validés dans le navigateur avant chiffrement, mot de passe optionnel par-dessus, expiration au choix entre 5 minutes et 7 jours, limitation de débit via Redis et une tâche planifiée qui balaie les secrets périmés toutes les 30 minutes.
Pour l'héberger, c'est de l'AdonisJS 6 en TypeScript avec Dockerfile, docker-compose et migrations fournis, en licence MIT. Redis peut céder sa place au limiteur en mémoire si vous montez juste un petit truc perso.
Notez quand même que pour le moment, le projet n'a pas été audité et est maintenu par un gars tout seul, donc évitez de l'utiliser pour des secrets d'État.
Un import qui affiche "terminé" et qui a mangé une partie de vos mails au passage, c'est le genre de bug qu'on ne voit jamais venir... Hé bien
Open Archiver
vient d'en corriger quatre d'un coup.
Open Archiver c'est une plateforme d'archivage d'emails auto-hébergée développée par Weishest, dont la seule et unique mission est d'aspirer vos boîtes et de les stocker en .eml sur votre serveur.
Mais attention, le mot "archivage" a son importance, parce que ce n'est pas un backup. Je m'
Un import qui affiche "terminé" et qui a mangé une partie de vos mails au passage, c'est le genre de bug qu'on ne voit jamais venir... Hé bien
Open Archiver
vient d'en corriger quatre d'un coup.
Open Archiver c'est une plateforme d'archivage d'emails auto-hébergée développée par Weishest, dont la seule et unique mission est d'aspirer vos boîtes et de les stocker en .eml sur votre serveur.
Mais attention, le mot "archivage" a son importance, parce que ce n'est pas un backup. Je m'explique... l'idée c'est de garder un dépôt consultable et inaltérable de tout ce qui est passé par vos boîtes, ce qui intéresse surtout les structures ou les personnes comme moi qui doivent pouvoir retrouver un échange trois ans plus tard parce qu'on leur demande tout un tas de trucs tout le temps ^^.
Côté sources, il avale de l'IMAP, du Google Workspace, du Microsoft 365, des fichiers PST, des .eml zippés et du mbox. Ensuite, vos mails archivés finissent chez vous, sur votre disque ou dans un bucket S3, chacun accompagné de son empreinte SHA256 pour repérer une altération.
La grosse news de cette nouvelle release, c'est la recherche avancée. En effet, un panneau de filtres est apparu à côté du champ de mots-clés. Vous restreignez à une source d'ingestion, à une boîte précise, à une fenêtre de dates, aux mails qui ont une pièce jointe ou à ceux qui n'en ont pas et expéditeurs et destinataires s'excluent autant qu'ils s'incluent.
Le panneau de filtres de la recherche avancée, ajouté en v0.5.2
Le mot-clé, lui, peut viser une partie précise du message. Chercher "facture" dans les noms de pièces jointes ne remonte plus tous les mails qui prononcent le mot, juste ceux qui transportent un fichier facture.pdf. Et comme la recherche entière vit dans l'URL, une requête se met en favori et se rejoue à l'identique. L'API suit, avec un GET /v1/search qui accepte les mêmes paramètres que l'interface.
Attention quand même si vous faites la MAJ, faudra
relancer un reindex
. Et comme les mails existants sont marqués "déjà indexés" à la montée de version, c'est une reconstruction complète qu'il vous faut, pas le simple rattrapage des trous.
Puis surtout,
ces notes de version
annoncent que plusieurs correctifs "ferment des chemins où un import pouvait sauter ou dupliquer des messages tout en signalant un succès". Le cas le plus vicieux vient d'un composant qui découpe le fichier en messages et qui rendait la main trop tôt. Node recollait alors les morceaux et plusieurs mails arrivaient soudés et finissaient archivés comme un seul. Les imports PST, eux, fabriquaient des messages malformés que les lecteurs affichaient de travers, et une simple re-synchronisation ré-archivait le fichier entier en doublons.
Le plus spectaculaire reste quand même le nom de pièce jointe trop long. Au-delà de 255 octets, l'écriture sur le disque échouait et emportait l'email complet avec elle. Bref, beaucoup de soucis quoi...
Donc si vous tournez déjà dessus, la question à se poser, c'est de savoir si votre archive est déjà foireuse ou pas car un reindex ne la réparera pas. Comme il reconstruit l'index de recherche à partir de ce qui est sur le disque, un message jamais écrit ne réapparaîtra pas. Mais bon, voilà, le découpeur de mbox journalise maintenant son nombre de messages, ce qui rend l'écart visible entre le fichier source et l'archive. Pour le reste, il faudra réimporter ce qui manque
Pour le faire fonctionner, comptez 4 Go de RAM, ou 2 Go si vous branchez PostgreSQL, Valkey et Meilisearch en externe. Le cœur est en AGPL, ça se lance avec un docker compose up, et une
démo publique
tourne en ligne si vous voulez tâter le truc avant. Pour ma part, je pense que c'est intéressant en entreprise, mais clairement, une usine à gaz, si vous avez juste un compte Gmail à archiver. A la place, je vous avais déjà montré
Eonvelope
et
Bichon
, qui sont deux archiveurs autrement plus légers !
Et si c'est pour faire de la recherche, ce que je vous conseille, c'est de faire comme moi, c'est-à-dire un RAG qui indexe tous vos emails en local et qui vous permet de chercher dedans facilement avec n'importe quel LLM qui supporte les outils MCP.
Moi je fais ça avec LEANN et ça marche très bien
.
Gérer un serveur à la main, c'est nginx à configurer, les certificats à renouveler, les sauvegardes à planifier et les conteneurs à surveiller... C'est beaucoup de travail. Mais vous allez avoir de l'aide grâce à DockPanel, d'Ovidiu Drobotă, qui met tout ça derrière une jolie interface web tenant dans 19 Mo de RAM.
L'installation se colle en une ligne sur un VPS frais et vous récupérez un panneau d'admin sur le port 8443. Ubuntu, Debian, Rocky, Fedora ou Amazon Linux, en x86_64 comme en ARM64.
Gérer un serveur à la main, c'est nginx à configurer, les certificats à renouveler, les sauvegardes à planifier et les conteneurs à surveiller... C'est beaucoup de travail. Mais vous allez avoir de l'aide grâce à DockPanel, d'Ovidiu Drobotă, qui met tout ça derrière une jolie interface web tenant dans 19 Mo de RAM.
L'installation se colle en une ligne sur un VPS frais et vous récupérez un panneau d'admin sur le port 8443. Ubuntu, Debian, Rocky, Fedora ou Amazon Linux, en x86_64 comme en ARM64.
À partir de là vous créez des sites en PHP, Node ou Python, avec nginx configuré tout seul et les certificats Let's Encrypt qui se renouvellent sans y penser. Les bases MySQL et PostgreSQL vont avec, navigateur SQL intégré et restauration à un instant T via les journaux binaires.
Ensuite, c'est surtout le catalogue Docker qui fait le gros du travail. Environ 150 modèles en un clic répartis sur 14 catégories, WordPress, Postgres, Grafana, n8n ou Immich, et le reverse proxy, le SSL et le réseau se câblent automatiquement derrière. Les conteneurs inactifs peuvent même se mettre en veille tout seuls pour libérer la machine.
Côté déploiement, vous poussez votre code et ça part en production, avec bascule atomique par lien symbolique et retour arrière en un clic quand le déploiement du vendredi tourne mal. Nixpacks reconnaît plus de 30 langages, donc pas de Dockerfile à écrire, et chaque branche peut avoir son environnement de préversion.
Il y a aussi un serveur mail complet, Postfix, Dovecot et DKIM, avec Roundcube en webmail et Rspamd contre le spam. La partie DNS pilote Cloudflare et PowerDNS, avec vérification de propagation, DNSSEC et les tunnels Cloudflare. Un module CDN gère BunnyCDN et Cloudflare, purge du cache comprise.
Pour la surveillance, des sondes HTTP, TCP et ping, une gestion d'incidents avec chronologie et post-mortem, une page de statut publique à laquelle vos utilisateurs peuvent s'abonner, et des alertes qui partent sur Slack, Discord ou PagerDuty. Un point de collecte Prometheus est dispo, avec un tableau Grafana prêt à importer.
La sécurité est activée par défaut avec pare-feu applicatif ModSecurity par site, Fail2Ban, durcissement SSH en un clic, connexion par passkey ou 2FA, et chaque image Docker déployée peut être scannée à la recherche de CVE avec grype, avec refus de déploiement au-dessus du seuil que vous fixez. Les sauvegardes passent par Restic, chiffrées et dédupliquées, vers S3, SFTP, B2 ou GCS, avec vérification de restauration.
Le reste ensuite, c'est que du confort. Terminal web avec enregistrement de session, gestionnaire de fichiers, palette de commandes en Ctrl+K, 6 thèmes, boîte à secrets chiffrée, passerelle à webhooks et une ligne de commande. La configuration complète s'exporte en YAML pour être rejouée ailleurs. Si vous gérez plusieurs machines, un seul panneau les pilote toutes, avec des comptes revendeur en marque blanche pour ceux que ça intéresse.
Deux choses à savoir avant de lancer l'installation quand même... En mars, une injection de commande dans le formulaire de création de site a permis à un visiteur de passer root sur la machine de l'auteur. C'est corrigé depuis, mais l'agent tourne en root par conception puisque c'est lui qui touche à Docker, à nginx et aux certificats.
L'autre point, c'est la licence. DockPanel est en Business Source License 1.1, ce qui n'est pas de l'open source même si la page d'accueil le présente comme ça. L'usage est libre et gratuit sur vos propres serveurs, mais la revente en service hébergé est interdite. Une bascule en MIT est quand même programmée pour mars 2030.
Voilà, je me suis dit que ça pourrait vous intéresser.
Un site sans cookie de mesure d'audience et sans bandeau de consentement, c'est reposant je trouve... Sauf qu'à cause de ça, bah je ne savais plus trop combien de gens venaient me lire tous les jours. Relou hein ?
C'était ma situation depuis un moment déjà, vu que tout ce qui servait à mesurer l'audience a dégagé de korben.info il y a un bon bout de temps. Alors faute de mieux, je me suis rabattu sur AWStats, qui lit bêtement les logs Apache du serveur mais bon, c'est pas terrible, parce qu'avec
Un site sans cookie de mesure d'audience et sans bandeau de consentement, c'est reposant je trouve... Sauf qu'à cause de ça, bah je ne savais plus trop combien de gens venaient me lire tous les jours. Relou hein ?
C'était ma situation depuis un moment déjà, vu que tout ce qui servait à mesurer l'audience a dégagé de korben.info il y a un bon bout de temps. Alors faute de mieux, je me suis rabattu sur AWStats, qui lit bêtement les logs Apache du serveur mais bon, c'est pas terrible, parce qu'avec le cache de Cloudflare, il y a une grosse partie de mon trafic qui n'est pas pris en compte.
En effet, quand Cloudflare possède une copie valide de la page dans son cache, il peut la renvoyer directement sans contacter le serveur d'origine. Vous êtes donc bien un visiteur réel, mais Apache ne voit aucune requête et AWStats ne vous comptabilise pas. Du coup, tous les outils fondés exclusivement sur les logs d'origine sous-estiment la part du trafic absorbée par le cache.
Après il y a bien le classique Google Analytics, mais bon même configuré en mode full RGPD, ça reste Google et ça appelle quand même un service tiers aux US... Vous connaissez aussi déjà des alternatives propres, puisque je vous ai parlé de Matomo,
Plausible
et de
Vince Analytics
, mais elles ajoutent toutes une mesure côté navigateur, avec un script, un pixel ou un stockage local (le localstorage) et moi, je ne voulais aucun outil d'audience de plus dans vos pages !
De son côté, Cloudflare lui, voit chaque requête HTTP qui atteint son réseau, y compris celles auxquelles son cache répond. Ses chiffres couvrent donc beaucoup mieux le trafic HTTP que mes logs d'origine. Le souci, c'est que son dashboard, je ne l'aime pas. Je le trouve incomplet, mal foutu, chiant à utiliser, et il ne montre pas ce que j'ai envie de voir.
Donc, histoire d'avoir ce que je voulais, j'ai fini par coder le mien. Enfin, entièrement vibe codé et ça tourne aussi bien sur un serveur qu'en local sur une machine de bureau.
Petite parenthèse pendant que j'y suis, vous ne le savez peut-être pas mais depuis que ChatGPT a débarqué dans nos vies fin 2022, tout ce que je développe moi-même sur ce site et l'ensemble de mes outils internes sont vibes codés avec des LLMs comme ceux d'OpenAI et d'Anthropic. C'était une purge au tout début et maintenant ça s'est tellement amélioré et je me suis tellement spécialisé là-dedans, que le code n'est devenu qu'une formalité. Ne hurlez pas, mon site est statique et j'envoie pas de fusée dans l'espace !
Mon collecteur s'exécute en local, cause à une API, et il n'envoie pas une seule ligne de mesure dans votre navigateur. Bref, que mon backend soit écrit avec un LLM, à la main ou en Brainfuck, vous chargez exactement la même chose de mon outil de stats, c'est-à-dire rien du tout. La garantie est donc architecturale et pas une question de talent.
Et surtout, mon outil de stats n'ajoute aucune mesure dans votre navigateur. Aucun JavaScript ni cookie supplémentaire n'est posé par mon outil. À la place, il lit l'API GraphQL Analytics de Cloudflare, en lecture seule et récupère des compteurs déjà agrégés par jour et par dimension. Cela veut dire par exemple, que quand je récupère le nombre "nombre d'IP distinctes par jour", je ne récupère pas les IPs en tant que telles mais juste un total que Cloudflare me communique et qu'il a déjà traité en amont.
Et vous n'êtes pas obligés de me croire sur parole, parce que c'est vérifiable en 10 secondes... Ouvrez l'inspecteur de votre navigateur, onglet Réseau, et rechargez cette page. Vous ne verrez aucun script de mesure d'audience, aucun appel vers un domaine tiers et aucune iframe. Même les vidéos YouTube ne se chargent qu'au moment où vous cliquez sur la vignette. Le seul truc qui bouge, c'est le compteur du footer qui télécharge un nombre, sans rien renvoyer derrière.
Attention, ce n'est pas à confondre avec Cloudflare Web Analytics et ses mesures RUM (Real User Monitoring) puisque cette fonctionnalité injecte un bout de JavaScript pour mesurer les performances ressenties dans le navigateur. Chez moi, c'est désactivé tout ça.
Maintenant soyons clairs sur un point, parce que c'est l'objection évidente et qu'elle est parfaitement légitime... Cloudflare, lui, voit bien votre adresse IP. Pas à cause de mon outil de stats, mais parce que c'est un reverse proxy et que c'est mécaniquement ce qui se passe dès qu'un site est derrière un CDN. Votre requête arrive chez eux avant d'arriver chez moi, sinon ils ne pourraient ni router, ni mettre en cache, ni bloquer une attaque. Mon outil ne change rien à ça, il se contente de lire des totaux déjà calculés et je ne récupère jamais la moindre IP. Tout est détaillé dans mes CGU, avec les bases légales, les durées et la liste des cookies de sécurité, si vous voulez le détail complet.
Mon outil et le compteur que vous pouvez retrouver dans le footer de mon site reposent sur les requêtes collectées côté serveur chez Cloudflare et sans l'analyse web, je ne peux juste pas suivre par exemple un parcours utilisateur, connaitre un taux de rebond ou évaluer les temps de chargement mesurés chez les lecteurs. Rien de grave donc...
Maintenant, il y a un souci chez Cloudflare, c'est que selon le jeu de données et le forfait que vous payez ou non, le détail ne reste interrogeable que durant une fenêtre limitée de temps. Mon outil doit donc passer chaque jour récupérer les agrégats encore disponibles et les stocker dans une base SQLite sur mon serveur ou en local, selon la façon dont on l'a déployé.
Ça me permet de garder mon propre historique agrégé. J'ai aussi activé le Super Bot Fight Mode de Cloudflare, qui réduit une large partie du trafic automatisé, mais attention, ça ne me donne pas pour autant des stats sans aucun bot. Les crawlers autorisés comme Googlebot et ceux qui passent entre les mailles du filet restent comptabilisés dans mes chiffres, exactement comme avec tous les autres outils de mesure web. Et je préfère le dire clairement plutôt que de vous vendre des chiffres "propres" qui ne le sont jamais totalement, vu qu'un filtre anti-bot ne peut retirer que les bots qu'il a détectés.
À côté de ça, j'ai aussi branché ma Google Search Console, et là non plus sans installer la moindre bibliothèque tierce... Je signe moi-même un JWT en RS256 avec le module crypto natif de Node, je l'échange contre un jeton d'accès chez Google, et le compte de service que j'utilise est restreint au scope lecture seule. Ça m'apporte des statistiques agrégées sur les impressions, les positions, les requêtes de recherche et surtout Discover !!
Si je devais résumer ça, je dirais que Cloudflare estime le volume de trafic et que Search Console montre quelles recherches produisent des impressions et des clics, même si sans aucun tracking en place, ça n'explique évidemment pas la motivation de chaque lecteur. Mais osef ! Et comme Cloudflare embarque aussi son pare-feu, j'en profite pour rapatrier des statistiques sur les événements de sécurité et les routes attaquées, comme ça, je peux tout voir au même endroit.
Maintenant, le vrai plaisir, c'est de pouvoir afficher ce que je veux dans mon propre dashboard. Par exemple, la répartition par langue, les navigateurs, d'où provient le trafic avec un joli petit camembert, les pays, l'état de mon cache, la bande passante, etc. Et quand j'ai un nouveau besoin qui me pête dans le cerveau, je peux ajouter une vue rapidement et je ne m'encombre pas de ce qui ne me sert pas.
Sans traceur placé chez vous, je ne connais donc pas les sessions, le taux de rebond, le parcours de lecture, les entonnoirs de conversion, donc impossible de savoir si vous êtes revenu hier, ni dans quel ordre vous avez lu 3 articles. Mais je m'en tape complètement puisque ces métriques ne m'ont jamais servi à rien.
Ce que je veux connaitre, c'est surtout l'ordre de grandeur de l'audience et le nombre de pages demandées. Le parcours individuel et les entonnoirs de conversion, c'est surtout un besoin de régie publicitaire ou de site e-commerce, et pas d'un site comme le mien. Quand on sait que les bandeaux de cookies nous coûtent
575 millions d'heures perdues
collectivement, et que
l'Europe réfléchit enfin à les alléger
, s'en passer n'est pas vraiment une punition.
Bref, mes stats sont maintenant plus digestes que celles d'AWStats, sans avoir à vous tracker ou vous faire charger quoi que ce soit. Ça me va donc très bien. Et si vous voulez un avant-goût de la technique derrière l'outil,
j'ai montré récemment comment vous faire un compteur de fréquentation gratuit
, donc n'hésitez pas à y jeter un œil...
NVIDIA a débranché GameStream, son système maison pour envoyer les jeux de votre PC vers une Shield ou un laptop. Sauf que le protocole, lui, n'est pas mort :
Moonlight
, le client open source qui le réimplémente, tourne toujours sur Windows, macOS, Linux, Steam Link, Raspberry Pi 4, Apple TV et Xbox, et même sur des Switch et des Vita en homebrew.
Et surtout, Hans Gaiser bricole depuis début 2024 une pièce qui manquait côté serveur,
Moonshine
, qui commence à être sé
NVIDIA a débranché GameStream, son système maison pour envoyer les jeux de votre PC vers une Shield ou un laptop. Sauf que le protocole, lui, n'est pas mort :
Moonlight
, le client open source qui le réimplémente, tourne toujours sur Windows, macOS, Linux, Steam Link, Raspberry Pi 4, Apple TV et Xbox, et même sur des Switch et des Vita en homebrew.
Et surtout, Hans Gaiser bricole depuis début 2024 une pièce qui manquait côté serveur,
Moonshine
, qui commence à être sérieusement utilisable.
Moonlight n'étant qu'un client, il affiche l'image et renvoie votre clavier, votre souris et votre manette. Derrière, il faut donc forcément une machine qui capture le jeu et qui encode la vidéo en temps réel.
Bref, comme je vous le disais, depuis que NVIDIA a rangé GameStream au placard début 2023, ce rôle revient à des serveurs communautaires. Le seul que la FAQ Moonlight recommande, c'est
Sunshine
, du collectif LizardByte. C'est codé en C++ sous licence GPL-3 et ça tourne sous Windows, Linux, macOS et FreeBSD. Sauf que Sunshine capture une session de bureau existante ce qui veut dire que sur une machine sans écran, il faut composer avec ça, et c'est de là que vient toute la littérature sur les dongles HDMI factices et autres écrans virtuels...
Alors que Moonshine, lui, est codé en Rust et prend un autre chemin. En fait, chaque session de streaming tourne dans son propre environnement isolé, qui est totalement séparé de votre bureau. Du coup, vous n'avez plus besoin de session active du tout... Une simple tour sans écran fera parfaitement le boulot.
Voilà, si vous avez une machine Linux qui dort dans votre placard avec un GPU dedans, ça peut vous permettre de lancer Moonlight depuis votre canapé à distance, et c'est le serveur qui gérera la session rien que pour vous.
Après, c'est du Linux uniquement, testé sur Arch même si ça remonte que ça tourne aussi sur d'autres distribs, avec systemd obligatoire pour lancer et gérer tout ce qui est processus. Et du côté du GPU, il vous faudra de l'encodage vidéo Vulkan, donc, vous l'aurez compris, une Nvidia RTX ou une AMD RDNA2 ou plus récente, voire une Intel Arc pour les plus motivés.
Voilà, toutes vos vieilles GTX resteront sur le banc de touches... Sans oublier que vous aurez besoin du client Moonlight en version 6.0.0 minimum et que la compatibilité avec les portages non officiels n'est pas garantie.
Les codecs supportés, c'est du H.264, H.265 et AV1, avec du HDR en 10 bits. L'AV1 est marqué expérimental et Hans Gaiser prévient lui-même qu'il fait gonfler la taille des images au fil du temps sur les cartes NVIDIA. Sauf que c'est réglé depuis : NVIDIA a sorti le correctif dans son pilote Vulkan beta 595.44.3.0 et Hans Gaiser a confirmé début avril, mesures à l'appui, que la qualité était revenue à la normale. Son README, lui, n'a pas suivi et vous conseille encore de rester en H.264 ou H.265. Donc si l'AV1 vous tente, prévoyez le pilote Vulkan beta, pas celui de votre distrib.
Notez aussi que Moonshine n'est pas conçu pour être utilisé sur des réseaux publics puisque le protocole GameStream sous-jacent a des limites qui font que le trafic n'est pas entièrement chiffré au niveau applicatif. Donc, si vous vous y mettez, n'exposez jamais les ports de Moonshine directement sur internet. Préférez passer par
Tailscale
ou un WireGuard par exemple.
Bref, Moonlight, Sunshine, Moonshine... si comme moi, vous vous emmêlez dans les noms, c'est parfaitement normal. N'empêche que c'est un super truc, encore en dev, certes, mais ça promet pour le futur...
Si vous avez déjà branché un stockage externe sur votre
Nextcloud
et regardé occ files:scan ramper en mode larve durant des plombes lors d'une indexation, vous connaissez le coupable.
C'est évidemment un dossier node_modules qui contient des dizaines de milliers de tout petits fichiers, qui se fait indexer dans la base de Nextcloud, faisant tout ramer jusqu'à l'infini (ou presque...).
Heureusement, Marc Palaus a repris le vieux plugin
files_excludedirs
(lancé à l'origine par Roeland Jago Douma,
Si vous avez déjà branché un stockage externe sur votre
Nextcloud
et regardé occ files:scan ramper en mode larve durant des plombes lors d'une indexation, vous connaissez le coupable.
C'est évidemment un dossier node_modules qui contient des dizaines de milliers de tout petits fichiers, qui se fait indexer dans la base de Nextcloud, faisant tout ramer jusqu'à l'infini (ou presque...).
Heureusement, Marc Palaus a repris le vieux plugin
files_excludedirs
(lancé à l'origine par Roeland Jago Douma, puis passé de fork en fork) et l'a remis d'aplomb pour Nextcloud 32 à 34. Le taf de ce plugin c'est tout simplement d'ordonner à Nextcloud d'ignorer purement et simplement les dossiers que vous lui indiquez.
Donc si vous lui donnez ce pattern, il esquivera tout ce qui correspond :
Un tableau JSON, un pattern par entrée, et vous pouvez glisser des wildcards comme cache/*/tmp pour taper plusieurs sous-dossiers d'un coup.
Ensuite, pour voir ce qui tourne, occ config:app:get files_excludedirs exclude. Ou si vous préférez cliquer, l'app propose aussi un menu Exclude Directories dans les réglages admin, avec un bouton Preview Changes pour voir ce que vous allez virer avant de valider.
Pour les fichiers qui n'ont pas encore été indexés, c'est nickel donc. Mais pour ceux qui sont déjà dans la base, cette exclusion les rendra inaccessibles mais ils seront toujours là à traîner dans les résultats de recherche.
Alors pour les dégager pour de bon, voici quelle ligne de commande vous devez lancer :
occ files_excludedirs:clean-cache --dry-run
J'ai mis un dry-run en paramètre, parce que ça permet de faire tourner ça à blanc sur quelques résultats, sans flinger la mauvaise arborescence. Mais une fois que vous êtes chaud patate et sûr de vous, vous devrez relancer la même commande sans le --dry-run.
Notez que si vous montez par exemple un partage genre "Shared/Holiday" directement à la racine d'un utilisateur, vos fichiers ont un chemin du style photo.jpg, et pas Shared/Holiday/photo.jpg. C'est le chemin complet qu'il faudra viser donc...
En tout cas, j'ai été surprise d'apprendre qu'exclure des dossiers du scan, c'est une demande qui traîne sur le tracker Nextcloud depuis l'
issue #6888
publiée en 2017... Ça existait pourtant côté ownCloud. Dommage quoi.
Pour installer ce plugin, vous récupérez l'archive sur la page Releases, vous décompressez dans nextcloud/apps, vous activez depuis l'admin. Ou alors un petit git clone + un composer install pour la version source et le tour est joué !
Et si la lourdeur de Nextcloud vous gonfle plus globalement, il y a des alternatives plus légères comme
OpenCloud
.
Monter une vraie IA à la maison, c'est vite une galère. Vous achetez une super machine puis vous collez dessus toute votre liste au père Noël (Chat local, reco vocale, génération d'image, RAG et compagnie) et vous voilà à empiler des dockers à n'en plus finir. Eh bien Light Heart Labs en a eu marre de ces bricolages et nous a pondu Dream Server, un outil qui câble tout ce petit monde à votre place !
Une seule commande et c'est parti mon kiki (Linux et macOS) :
curl -fsSL https://raw.githubuserco
Monter une vraie IA à la maison, c'est vite une galère. Vous achetez une super machine puis vous collez dessus toute votre liste au père Noël (Chat local, reco vocale, génération d'image, RAG et compagnie) et vous voilà à empiler des dockers à n'en plus finir. Eh bien Light Heart Labs en a eu marre de ces bricolages et nous a pondu Dream Server, un outil qui câble tout ce petit monde à votre place !
Une seule commande et c'est parti mon kiki (Linux et macOS) :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
git clone https://github.com/Light-Heart-Labs/DreamServer.git
cd DreamServer
.\install.ps1
Ça va lancer le script qui va ensuite tout paramétrer tout seul et choisir le modèle d'IA qui collera le plus à votre matériel, et cela que vous ayez une RTX 4090, un Mac M4 avec mémoire unifiée ou encore une puce AMD Strix Halo voire un vieux PC sans GPU.
Edit : un lecteur m'a remonté un piège si vous êtes sous Linux configuré en français (ou n'importe quelle locale qui écrit les décimales avec une virgule). Le script génère tout seul les valeurs de votre fichier .env en suivant le format de nombres de votre système, et il vous colle des 16,0 au lieu de 16.0. Du coup l'install se vautre avec une erreur dans le genre COMFYUI_CPU_LIMIT: expected number, got '16,0'. La parade, confirmée par un des auteurs, c'est de relancer l'installeur en forçant la locale C (celle qui met des points à la place des virgules) :
LC_ALL=C ./install.sh
Ensuite, pendant que le LLM se télécharge à fond les ballons, un autre petit modèle de 1,5 milliards de paramètres en backup afin que vous puissiez quand même "discuter" avec votre Dreamserver.
Le rôle de Dreamserver c'est donc juste de prendre toutes les briques de l'IA pour vous en faire un truc clé en main.
Open WebUI
pour le chat, llama-server pour l'inférence, Whisper et Kokoro pour la voix, ComfyUI pour les images, Qdrant pour le RAG, SearXNG pour la recherche web sans mouchard, et bien sûr
n8n
pour brancher tout ça à vos automatisations.
Et une fois que c'est en route, suffit de lancer la commande dream et là vous pourrez tout faire.
Par exemple dream status pour visualiser l'état des services et du GPU, dream model swap T3 pour changer de "palier" sur votre matos, dream enable n8n pour activer une extension ou encore dream mode hybrid pour avoir de l'inférence en local avec possibilité de basculer sur une IA dans le cloud via une API.
Dreamserver reste un orchestrateur, et pas un moteur IA magique, donc si vous adorez tout assembler vous-même, vous n'avez clairement pas besoin de ça. Par contre, si vous vous en foutez, et que vous voulez juste votre IA qui tourne ce soir, ça vous fera gagner des heures de bidouille.
Faut dire qu'à mesure que l'IA devient une infrastructure de base, dépendre à 100% d'un abonnement cloud qui peut tripler ses tarifs ou couper votre accès du jour au lendemain, ça craint un peu. Donc je pense qu'on est tous bien contents d'avoir des solutions clé en main comme celle-ci.
Votre vieux Galaxy S5 qui prend fort la poussière dans un tiroir, mérite mieux je crois !
Un dev, Capcom6 a mis en ligne
SMS Gateway for Android
, une app Kotlin sous licence Apache 2.0 qui transforme n'importe quel smartphone (Android 5.0+) en passerelle SMS programmable. Cela vous permet de récupérer une API REST pour ensuite envoyer et recevoir vos SMS avec votre propre téléphone et votre propre SIM et ainsi vous passer de services payants équivalents.
Il y a 3 modes au choix. Le mode local q
Votre vieux Galaxy S5 qui prend fort la poussière dans un tiroir, mérite mieux je crois !
Un dev, Capcom6 a mis en ligne
SMS Gateway for Android
, une app Kotlin sous licence Apache 2.0 qui transforme n'importe quel smartphone (Android 5.0+) en passerelle SMS programmable. Cela vous permet de récupérer une API REST pour ensuite envoyer et recevoir vos SMS avec votre propre téléphone et votre propre SIM et ainsi vous passer de services payants équivalents.
Il y a 3 modes au choix. Le mode local quand l'app lance un serveur HTTP sur le port 8080, accessible depuis votre réseau. Le mode cloud où l'app se connecte au service tiers api.sms-gate.app, ce qui est pratique pour ceux qui ont une IP dynamique ou plusieurs appareils. Et le mode "private server" qui permet d'héberger le backend chez vous, en totale autonomie.
Mais dans tous les cas, les requêtes restent les mêmes à savoir du bon vieux POST JSON avec basic auth.
Et côté fonctionnalités, y'a tout ce qu'il faut. Multi-SIM si votre téléphone est compatible, messages multipart automatiquement découpés pour les SMS longs, suivi de statut en temps réel (sent, delivered, failed), webhooks pour 8 événements différents (sms:received, sms:sent, sms:delivered, sms:data-received, mms:downloaded, system:ping...). Et puis du chiffrement bout-en-bout activé sur le mode cloud, comme ça personne ne peut lire vos messages en clair.
Maintenant vous vous demandez peut-être à quoi ça peut servir ??
Bah je pense à de l'envoi SMS 2FA pour vos applications, tout ce qui est messages transactionnels (confirmations de commande, rappels de RDV), des notifications push via SMS, et même du data SMS binaire pour piloter des périphériques IoT à distance. Pourquoi pas ? Y'a plus de limites après... Ah et y'a aussi une intégration n8n officielle (ici sur le repo
example-webhooks-n8n
) pour brancher l'API à vos workflows, plus une bibliothèque PHP sur Packagist. Bref, y'a un petit écosystème qui commence à se développer autour.
Pour l'installer, oubliez le Play Store. capcom6 distribue uniquement des APK sur les GitHub Releases. Faut donc activer les sources inconnues, télécharger le .apk, et installer manuellement.
Après quand on fait le calcul côté pognon c'est vite vu. Twilio par exemple facture $0.0083 par SMS aux US, plus 1,15 $ / mois par numéro, plus les frais. Donc pour 1000 SMS par mois c'est vite entre 50 à 80 $. Avec SMS Gateway for Android et votre forfait perso, vous ne payez rien d'autre que votre forfait...
Après y'a quelques limites à connaître... Par exemple, si vous pensiez faire de l'envoi massif pour du marketing (comprenez du spam), votre opérateur va évidemment bloquer rapidement votre SIM. Et puis évidemment, faut que le téléphone soit allumé h24 avec sa connexion data activée. Donc pour du transactionnel léger c'est nickel mais pour du mass-mailing, oubliez ! De toute façon, n'oubliez pas, y'a une place pour vous en enfer, les spammeurs.
Voilà, donc si vous avez un vieux smartphone Android qui fait dodo dans un tiroir et que vous avez besoin d'
une API SMS
pour vos automations perso ou votre stack interne, c'est une alternative à Twilio très sympa !
Bon, maintenant que vous avez vos chaînes IPTV qui tournent via
Tunarr
ou xTeVe, votre flux XMLTV est super propre. Mais il vous manque un seul truc : Un guide de programme potable.
Hé bien
GridTV
développé par l'ami JohnnyBeGood est là pour ça !
GridTV c'est une interface web en PHP/JS/CSS qui transforme toute source XMLTV compatible en guide TV façon grille horizontale, avec l'indicateur "maintenant" visible en permanence, un barre de progression du programme en cours, et les émissions passées
Bon, maintenant que vous avez vos chaînes IPTV qui tournent via
Tunarr
ou xTeVe, votre flux XMLTV est super propre. Mais il vous manque un seul truc : Un guide de programme potable.
Hé bien
GridTV
développé par l'ami JohnnyBeGood est là pour ça !
GridTV c'est une interface web en PHP/JS/CSS qui transforme toute source XMLTV compatible en guide TV façon grille horizontale, avec l'indicateur "maintenant" visible en permanence, un barre de progression du programme en cours, et les émissions passées qui se retrouvent automatiquement grisées. C'est exactement ce à quoi ressemble le guide TV de votre box opérateur, mais en mieux, et pour votre propre contenu !
Pour le déploiement, Docker est le chemin recommandé plutôt que de tout configurer à la main : git clone, cd GridTV, docker compose up -d, et hop, vous ouvrez localhost:8080.
Un assistant de setup vous demandera alors votre source EPG obligatoire et une playlist M3U si notamment vous voulez utiliser le player intégré, et une fois validé, vous retombez directement sur la grille.
Ça se met en place en moins de 5 min mais si vous préférez installer sans Docker, ou plutôt sans la couche conteneur, il y a également sur le Github des exemples de config pour Apache et Nginx dans la doc. Caddy fonctionnera aussi et la doc concernant Traefik, c'est pour le cas où GridTV tourne en Docker mais derrière un reverse proxy.
Côté fonctionnalités, le player HLS s'ouvre en PiP (Picture in Picture) dans un coin en cliquant sur une chaîne et le multi-EPG vous permettra de configurer plusieurs sources avec un petit switch. GridTV propose aussi des rappels de programme via notifications navigateur, 15 minutes avant la diffusion. Mais pour en profiter, l'onglet du browser doit rester ouvert et les notifs autorisées.
Et il y a aussi possibilité de générer un export PDF/PNG du guide sur 24h. C'est pas indispensable mais ça permet pour ceux qui veulent d'imprimer le programme de la soirée.
Chaque visiteur de l'instance peut aussi utiliser / paramétrer ses propres URLs XMLTV/M3U, car rien n'est stocké côté serveur. Hé oui, tout passe par le localStorage du navigateur donc vous pouvez partager votre instance avec autant de monde que vous voulez, ça n'a pas d'impact.
La version Steampunk
Et il y a même des thèmes genre cyberpunk, steampunk, magazine ou le thème par défaut. Et la page de monitoring admin expose également une sonde accessible via un endpoint compatible Uptime Kuma qui renvoie le code HTTP 200 si tout va bien. Sinon, ce sera du code 503. Bref, ça vous connaissez...
Bref, l'outil est jeune mais bien construit et une démo live tourne ici
guide.demo.johnnybegood.fr
. A suvire donc....
L'interface web de Proxmox (l'outil de virtualisation que tout bon homelabber connaît), c'est bien... pour UN serveur. Dès que vous commencez à empiler les nodes et les clusters, ça devient vite le bazar avec 15 onglets ouverts.
PegaProx
, c'est tout simplement un dashboard open source qui unifie tout ça dans un seul écran. Et vous allez voir, le truc cool, c'est que ça gère aussi les clusters XCP-ng !
L'interface de PegaProx - une vue unifiée de tous vos clusters Proxmox et XCP-ng
Concrètement
L'interface web de Proxmox (l'outil de virtualisation que tout bon homelabber connaît), c'est bien... pour UN serveur. Dès que vous commencez à empiler les nodes et les clusters, ça devient vite le bazar avec 15 onglets ouverts.
PegaProx
, c'est tout simplement un dashboard open source qui unifie tout ça dans un seul écran. Et vous allez voir, le truc cool, c'est que ça gère aussi les clusters XCP-ng !
L'interface de PegaProx - une vue unifiée de tous vos clusters Proxmox et XCP-ng
Concrètement, vous branchez tous vos hyperviseurs sur cette interface web (port 5000) et hop, vous avez la vue complète. VMs, conteneurs, métriques de perf... tout remonte en temps réel via Server-Sent Events. Du coup, plus besoin de jongler entre les interfaces de chaque node pour savoir quel serveur rame.
Côté fonctionnalités, accrochez-vous les amis parce que pour une beta, c'est déjà bien garni ! Migration live de VMs entre nodes, gestion du stockage Ceph, consoles navigateur via noVNC et xterm.js, et même de la migration cross-hypervisor entre ESXi, Proxmox VE 8.0 et
XCP-ng
(encore expérimental côté ESXi, mais ça avance). Y'a aussi des règles d'affinité pour placer vos VMs, du rolling update avec évacuation automatique, et des alertes sur les seuils CPU/RAM/disque. Pour une beta, c'est assez dingue ce qu'ils ont déjà mis dedans.
Côté sécurité, c'est pas en reste non plus. Y'a du RBAC avec 3 rôles (Admin, Operator, Viewer, pas plus pas moins), du TOTP pour le 2FA, de l'intégration LDAP et OIDC compatible Active Directory, Entra ID, Keycloak ou Google Workspace, du chiffrement AES-256-GCM pour stocker les credentials en base, et même du scan de CVE via debsecan. Autrement dit, ils ont pensé aux admins sérieux. Pour ceux qui ont déjà
configuré un provider OIDC sur leur homelab
, ça se branche directement.
Pour l'installer, le plus simple c'est Docker. Un docker compose up -d, 30 secondes d'attente, et c'est plié.
Mais y'a aussi un script de déploiement automatique, un repo APT communautaire maintenu par gyptazy, ou le classique git clone + pip pour les puristes. Une fois lancé, vous pointez votre navigateur sur https://votre-ip:5000, et un assistant vous accueille avec les identifiants par défaut (pegaprox/admin, à changer immédiatement bien sûr). L'interface est dispo en 5 langues : français, anglais, allemand, espagnol et portugais.
D'ailleurs, si vous utilisez déjà
ProxMenux
pour administrer votre Proxmox en terminal, les deux sont en fait complémentaires. Disons que ProxMenux couvre l'admin système en ligne de commande, alors que le dashboard apporte la vue unifiée multi-clusters en web. Initialement j'aurais dit que c'était redondant, mais non, ça se marie plutôt bien. Et y'a même un système de plugins avec un portail client pour vos utilisateurs et une page de statut publique à la StatusGator.
Attention c'est comme je vous le disais, encore une beta. L'OIDC avec Authentik par exemple, ça fonctionne pour le login mais les groupes ne remontent pas encore correctement (retour d'un lecteur qui l'utilise au quotidien).
Par contre si vous n'avez qu'un seul serveur Proxmox, honnêtement c'est un peu overkill, l'interface native suffit largement. Quelques glitchs traînent ici ou là, et l'API Token pour se connecter à la place de root n'est pas super bien documenté. Mais le projet avance vite donc c'est plutôt bon signe !
Bref, ça promet pas mal. Merci à Maxime pour la découverte !
Quand on fait du self-hosting, y'a toujours ce moment où on se dit "tiens, y'aurait pas un truc open source pour ça". Tenez par exemple, là je suis en train de chercher un machin open source pour un mariage qui permet aux invités de balancer leurs photos sur un serveur en scannant un QR Code. Et donc je me retrouve à scroller awesome-selfhosted sur GitHub, qui est une liste fleuve de +1500 projets, en essayant de deviner lesquels sont encore vivants.
Et c'est exactement ce problème qu'a voulu ré
Quand on fait du self-hosting, y'a toujours ce moment où on se dit "tiens, y'aurait pas un truc open source pour ça". Tenez par exemple, là je suis en train de chercher un machin open source pour un mariage qui permet aux invités de balancer leurs photos sur un serveur en scannant un QR Code. Et donc je me retrouve à scroller awesome-selfhosted sur GitHub, qui est une liste fleuve de +1500 projets, en essayant de deviner lesquels sont encore vivants.
Et c'est exactement ce problème qu'a voulu résoudre Ethan Sholly en lançant
selfh.st/apps
en 2024. En gros, c'est un annuaire d'applications auto-hébergées avec des vrais filtres, du tri, et surtout des indicateurs d'activité. Le mec est aussi derrière la newsletter Self-Host Weekly.
L'interface de selfh.st/apps, avec fiches, filtres et indicateurs d'activité
Comme ça, au lieu de vous taper une liste brute, vous avez des fiches pour chaque app avec le nombre d'étoiles GitHub, la licence, le langage, les tags, et surtout un code couleur sur la date de dernière activité. Vert si le projet a reçu un commit dans les 6 derniers mois, jaune entre 6 et 12 mois, rouge au-delà d'un an. Pratique pour éviter d'installer un truc que plus personne ne maintient, genre un serveur Plex alternatif mort depuis 2022 !
Et le tri par défaut, c'est pas juste les étoiles GitHub sinon les gros projets à 50 000 étoiles écraseraient tout. L'algo prend en compte l'âge du repo, la date du dernier commit, et même l'intérêt Google Trends pour les projets non-GitHub. Du coup un outil avec 200 stars mais hyper actif peut remonter devant un dinosaure à 30k stars qui dort depuis 18 mois. J'ai trouvé ça pas bête comme filtrage.
D'ailleurs, chaque projet a son propre flux RSS filtré qui ne remonte que les releases stables. Pas de bêtas, pas de RC... juste les versions prêtes pour la prod. Comme ça, vous branchez ça dans votre FreshRSS ou Miniflux et vous êtes au courant des mises à jour sans checker chaque repo GitHub à la main ! Par contre, si vous aimez vivre dangereusement sur les nightly, là faudra passer par les flux officiels GitHub.
Le site va également plus loin que la simple liste d'apps puisqu'il propose aussi une section "companions", contenant des apps compagnons qui étendent d'autres logiciels auto-hébergés (genre les extensions navigateur pour Linkedin ou les clients tiers pour Immich...etc).
La collection d'icônes pour personnaliser votre Homarr ou Dashy
Et surtout, y'a
selfh.st/icons
avec des milliers d'icônes de dashboard en SVG, PNG et WebP, toutes en 512x512 ratio 1:1, indispensable pour personnaliser votre page d'accueil sur Homarr ou Dashy !
Le catalogue d'apps est sous licence CC0-1.0 (domaine public) et mis à jour tous les matins à 5h du mat' heure de New York (les icônes, elles, sont en CC-BY-4.0, donc pensez à créditer si vous les réutilisez). En 2 minutes de fouille j'y ai trouvé trois projets que je connaissais pas. Et si vous voulez ajouter le vôtre, le repo est ouvert sur
https://github.com/selfhst
.
Et si vous connaissez un outil pour mon projet de QR Code d'upload de photo de mariage, n'hésitez pas à me contacter.
Voilà, pour ceux qui font de
l'auto-hébergement
au quotidien, c'est clairement un bookmark à garder sous le coude. Que vous cherchiez une alternative à Notion, un dashboard pour votre homelab, ou juste un truc pour remplacer un service cloud qui vous gonfle, y'a de quoi fouiller ! Et si vous cherchez des pistes pour commencer,
OpenCloud
ou
Pocket ID
sont de bons points de départ.
Apple Intelligence, c'est super cool... sauf que c'est verrouillé et dispo sur les appareils Apple uniquement. Du coup, pas moyen d'en profiter depuis votre PC Windows, votre Chromebook ou votre téléphone Android. C'est pour cela qu'un dev a eu une idée plutôt pas con qui consiste à transformer votre Mac en serveur IA accessible depuis n'importe quel navigateur.
Le projet s'appelle
Perspective Intelligence Web
et le principe c'est que vous installez
Perspective Server
, ou plutôt une petite app
Apple Intelligence, c'est super cool... sauf que c'est verrouillé et dispo sur les appareils Apple uniquement. Du coup, pas moyen d'en profiter depuis votre PC Windows, votre Chromebook ou votre téléphone Android. C'est pour cela qu'un dev a eu une idée plutôt pas con qui consiste à transformer votre Mac en serveur IA accessible depuis n'importe quel navigateur.
Le projet s'appelle
Perspective Intelligence Web
et le principe c'est que vous installez
Perspective Server
, ou plutôt une petite app dans la barre de menus de macOS. Et ensuite celle-ci expose les Foundation Models d'Apple (les modèles de langage intégrés à macOS, ceux qui tournent en local sur votre puce M1, M2, M3 ou M4) sous forme d'API compatible OpenAI sur le port 11435. Et voilà comment votre Mac devient un vrai serveur d'inférence IA !
Le client web, c'est du Next.js 16 avec un look à la iMessage, thème sombre, bulles de chat, streaming en temps réel via SSE. Vous vous connectez depuis Chrome sur Windows, Firefox sur Linux, Safari sur iPad... peu importe. Tant que ça affiche une page web, c'est que ça marche !
Et cela vous met à dispo 8 agents spécialisés : code, écriture, traduction, résumés, créativité, tutorat... et même un mode accessibilité. Les conversations sont classées automatiquement et l'historique est stocké dans PostgreSQL (compatible avec le tier gratuit de Neon, donc zéro coût côté BDD).
D'ailleurs l'API de Perspective Server est compatible OpenAI ET Ollama comme ça, vous pouvez aussi brancher Cursor IDE, Continue.dev, ou même Xcode 26 dessus. En gros, tout ce qui sait causer à une API OpenAI peut utiliser l'IA locale de votre Mac. C'est gratos, c'est local, et ça respecte votre vie privée ! Que demande le peuple ?
Si vous avez déjà bidouillé avec
Ollama et les modèles locaux
, c'est le même genre d'approche... sauf que là ce sont les modèles d'Apple qui font le boulot.
Et côté Apple, faut savoir qu'avec
OpenELM
en 2024, Apple a commencé à publier certains de ses modèles IA en open source. La différence ici, c'est que les Foundation Models de macOS 26 sont bien plus costauds... et surtout intégrés nativement au système. Ce que fait Perspective Server c'est de les rendre accessibles via une API standard, ce qu'Apple ne propose pas, comme vous pouvez vous douter.
Côté sécurité, le serveur gère les sessions multi-turn avec un TTL de 30 minutes et un système de "guardrail recovery" qui vire les sessions problématiques pour éviter que l'IA parte en vrille. 50 sessions max en parallèle, 3 inférences simultanées... sauf si vous invitez tout le quartier sur l'API, vous serez plutôt à l'aise.
Et éditez ensuite next-app/.env.local avec l'URL de votre base Postgres (DATABASE_URL), puis faites :
cd perspective-intelligence-web-community/next-app && npm install && npx drizzle-kit push && npm run dev
Ouvrez ensuite l'URL
http://localhost:3000
, créez vous un compte et vous pouvez commencer à chatter avec l'IA d'Apple.
Voilà, c'est encore jeune mais l'idée est carrément bonne donc à garder dans un coin si vous avez un Mac qui s'ennuie parce que vous avez investi dans un Mac Mini avant de vous rendre compte qu'OpenClaw ça ne servait pas à grand chose ^^ !
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
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 open source, local-first et chiffrée de bout en bout qui permet de créer votre propre "internet personnel". 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 ?
Vous avez déjà fait transcrire une interview ou un podcast par un service en ligne ? Vous savez, ces trucs qui vous demandent de créer un compte, de filer votre carte bleue, et d'accepter que vos fichiers audio soient envoyés sur des serveurs quelque part dans le cloud américain pour être analysés par des IA qu'on ne connaît pas. Le tout pour 100 balles par an si vous avez de la chance, et beaucoup plus si vous dépassez le quota ridicule de 20 heures par mois...
Hé bien y'a une alternative qui v
Vous avez déjà fait transcrire une interview ou un podcast par un service en ligne ? Vous savez, ces trucs qui vous demandent de créer un compte, de filer votre carte bleue, et d'accepter que vos fichiers audio soient envoyés sur des serveurs quelque part dans le cloud américain pour être analysés par des IA qu'on ne connaît pas. Le tout pour 100 balles par an si vous avez de la chance, et beaucoup plus si vous dépassez le quota ridicule de 20 heures par mois...
Hé bien y'a une alternative qui va vous plaire :
Scriberr
! C'est une app de transcription audio complètement open source et surtout, qui tourne 100% en local sur votre machine. Pas de cloud, pas de données qui se baladent, pas d'abonnement mais juste vous, avec votre serveur (ou votre laptop si vous avez un GPU correct), et vos fichiers audio qui restent bien au chaud chez vous.
Scriberr utilise des modèles de reconnaissance vocale de pointe comme NVIDIA Parakeet, Canary ou les fameux modèles Whisper. Du coup la qualité de transcription est vraiment au niveau des services payants, voire meilleure sur certains accents ou langues moins courantes. Et cerise sur le gâteau, vous avez l'alignement temporel au niveau du mot, ce qui veut dire que vous pouvez savoir exactement à quelle seconde chaque mot a été prononcé.
Mais le truc qui m'a vraiment tapé dans l’œil avec cet outil, c'est la détection automatique des locuteurs. Vous savez, cette fonctionnalité qu'on appelle "diarization" dans le jargon et qui permet d'identifier qui dit quoi dans une conversation. Comme ça, fini les transcriptions où tout le monde parle mais on ne sait pas qui c'est. Là, Scriberr vous découpe tout proprement avec des étiquettes pour chaque intervenant.
Et comme si ça suffisait pas, y'a aussi l'intégration avec Ollama ou n'importe quelle API compatible OpenAI. Du coup vous pouvez non seulement transcrire vos enregistrements, mais aussi leur poser des questions, générer des résumés, ou carrément avoir une conversation avec le contenu de vos transcriptions. Genre vous demandez "c'est quoi les points clés de cette réunion ?" et hop, l'IA vous fait un résumé. Pratique pour les feignasses comme moi qui détestent se retaper 2 heures de réunion pour retrouver une info.
Côté installation, c'est du Docker classique ou alors Homebrew si vous êtes sur Mac. Un petit
`brew tap rishikanthc/scriberr && brew install scriberr`
et c'est parti mon kiki. Pour Docker, y'a des images pour CPU et GPU (CUDA), et ça supporte toutes les générations de cartes NVIDIA depuis les GTX 1000 jusqu'aux RTX 50 series toutes récentes.
Le premier lancement peut prendre quelques minutes parce que ça télécharge les modèles de reconnaissance vocale, mais une fois que c'est fait, les relances suivantes sont quasi instantanées. Y'a même un Folder Watcher qui surveille un dossier et transcrit automatiquement tout ce qui arrive dedans, parfait si vous voulez brancher ça sur un workflow automatisé avec n8n ou autre.
Bref, si vous êtes podcaster, journaliste, chercheur, ou juste quelqu'un qui a régulièrement besoin de transcrire des trucs sans vouloir filer ses données à Google ou payer un abonnement, Scriberr c'est exactement ce qu'il vous faut. C'est du self-hosting comme on l'aime, c'est à dire open source, respectueux de la vie privée, et qui fait le taf sans chichi.
Vous en êtes encore à utiliser des sites tout pourris de conversion en ligne qui vous bombardent de pubs et qui font on ne sait quoi avec vos fichiers ?
Bouuuuh ! Allez, on va jeter un oeil à cette alternative auto-hébergeable qui s'appelle
ConvertX
et qui supporte plus de 1000 formats différents !!
Vous l'hébergez chez vous via Docker et vous avez accès à une interface web propre pour convertir à peu près tout ce qui existe. Images, vidéos, audio, documents, ebooks, modèles 3D... Le truc gère
Vous en êtes encore à utiliser des sites tout pourris de conversion en ligne qui vous bombardent de pubs et qui font on ne sait quoi avec vos fichiers ?
Bouuuuh ! Allez, on va jeter un oeil à cette alternative auto-hébergeable qui s'appelle ConvertX et qui supporte plus de 1000 formats différents !!
Vous l'hébergez chez vous via Docker et vous avez accès à une interface web propre pour convertir à peu près tout ce qui existe. Images, vidéos, audio, documents, ebooks, modèles 3D... Le truc gère vraiment un paquet de formats différents.
En back, ConvertX utilise ImageMagick pour les images, FFmpeg pour le multimedia, et une tripotée d'autres outils (Pandoc, LibreOffice, Calibre, Inkscape...) pour gérer le reste. Au total, ça donne plus de 1000 combinaisons possibles entre formats d'entrée et de sortie.
Pour l'installer, c'est hyper fastoche, vous lancez :
docker run -p 3000:3000 -v ./data:/app/data ghcr.io/c4illin/convertx
et vous avez l'interface accessible sur localhost:3000. Vous pouvez aussi passer par Docker Compose si vous préférez avoir un truc plus propre à maintenir.
Y'a aussi pas mal d'options pratiques. Vous pouvez par exemple convertir plusieurs fichiers en même temps (batch processing), protéger l'accès par mot de passe, gérer plusieurs comptes utilisateurs, et garder un historique de vos conversions. Y'a aussi un mode sans authentification si vous voulez l'utiliser juste pour vous sur votre réseau local.
Côté config, vous pouvez régler pas mal de trucs via les variables d'environnement, notamment la durée de rétention des fichiers (par défaut 24h avant suppression auto), le nombre de conversions simultanées autorisées, ou encore désactiver HTTPS si vous êtes en local.
Ce projet est développé en TypeScript avec Bun comme runtime et Elysia comme framework web. C'est sous licence AGPL-3.0, donc si vous modifiez le code et que vous l'utilisez en production, faudra publier vos modifs. Mais pour un usage perso, ça change rien.
Bref, si vous en avez marre de filer vos fichiers à des services louches pour les convertir, testez
ConvertX
, ça permet de garder le contrôle !
Vous en avez marre des services de partage de code tout pourris qui vous demandent de vous créer un compte, ou de lier votre GitHub, et qui ensuite vous bombarde de bannières pubs ?
Hé bien y’a une alternative plutôt cool qui va vous plaire.
Ça s’appelle
pbnj
(oui, comme le sandwich au beurre de cacahuète - Peanut Butter aNd Jelly), et c’est un pastebin auto-hébergé qui vous permet de partager du code en tout simplicité. Pas de prise de chou avec de la gestion de users ou ce genre de choses… Vou
Vous en avez marre des services de partage de code tout pourris qui vous demandent de vous créer un compte, ou de lier votre GitHub, et qui ensuite vous bombarde de bannières pubs ?
Hé bien y’a une alternative plutôt cool qui va vous plaire.
Ça s’appelle
pbnj
(oui, comme le sandwich au beurre de cacahuète - Peanut Butter aNd Jelly), et c’est un pastebin auto-hébergé qui vous permet de partager du code en tout simplicité. Pas de prise de chou avec de la gestion de users ou ce genre de choses… Vous y balancez du code et vous récupérez une URL à envoyer à vos amis.
Le truc sympa, c’est que ça génère des URLs faciles à retenir au lieu des classiques suites de caractères aléatoires. Comme ça vous avez des trucs du genre “coucou-tu-veux-mon-blog” plutôt que “x7f9k2m8”. Bon ok c’est un peu plus long, mais au moins vous pouvez le retenir ou le donner par téléphone sans épeler chaque lettre. Vous pouvez tester
ce que ça donne en cliquant ici
.
Côté fonctionnalités, on a de quoi faire avec de la coloration syntaxique dans plus de 100 langages différents avec 12 thèmes . Y’a aussi un outil en ligne de commande qui s’installe via npm et qui permet de balancer un fichier en une commande comme ceci :
`pbnj monfichier.py`
Et si vous voulez garder vos snippets en privés, vous pouvez ajouter une clé secrète optionnelle. Après pour le déploiement de pbnj, vous pouvez faire ça sur Cloudflare Workers si vous n’avez pas de serveur à vous. Et ce sera gratuit car Cloudflare propre dans son offre D1, 500 Mo de stockage, soit environ 100 000 pastes de 5 Ko chacun donc pour un usage perso ou en petite équipe, c’est largement suffisant.
Maintenant, pour installer tout ça, c’est vraiment fastoche. Suffit de cliquer 1 fois sur le bouton de déploiement Cloudflare puis installer le CLI comme ceci :
`npm install -g @pbnjs/cli`
Et :
`pbnj --init`
pour configurer l’URL de votre worker et votre clé d’authentification.
Voilà, si vous cherchez un truc qui fait le café, avec versioning Git, collaboration en temps réel et tout le toutim, passez votre chemin mais si vous voulez juste un endroit pour coller du code et le partager sans prise de tête,
pbnj
remplit parfaitement le contrat !
Si vous n’utilisez pas encore
n8n
pour automatiser vos tâches, c’est le moment de vous y mettre parce que c’est open source et c’est la meilleure alternative que vous pourrez trouver à Zapier et ce genre de services payants.
La boîte a levé 180 millions de dollars
récemment avec une valorisation à 2,5 milliards, et contrairement à Zapier qui facture à la tâche (et ça devient vite très cher), n8n facture à l’exécution ! Mais bien sûr, si vous aimez mettre les mains dans le cambouis c’est totalem
Si vous n’utilisez pas encore
n8n
pour automatiser vos tâches, c’est le moment de vous y mettre parce que c’est open source et c’est la meilleure alternative que vous pourrez trouver à Zapier et ce genre de services payants.
La boîte a levé 180 millions de dollars
récemment avec une valorisation à 2,5 milliards, et contrairement à Zapier qui facture à la tâche (et ça devient vite très cher), n8n facture à l’exécution ! Mais bien sûr, si vous aimez mettre les mains dans le cambouis c’est totalement gratuit !
Si vous connaissez pas encore n8n, c’est vraiment le genre d’outil qui peut vous changer la vie car ça vous permet de connecter vos apps entre elles avec une interface visuelle (genre des blocs qu’on relie), et vous pouvez automatiser à peu près n’importe quoi : synchroniser des données entre outils, envoyer des notifications, créer des pipelines de traitement… Et comme c’est open source et que vous pouvez l’héberger sur votre propre serveur, ce qui règle tous les problèmes de confidentialité des données.
Après, j’avoue que créer des workflows from scratch, c’est parfois un peu relou. Heureusement, y’a
ce super dépôt GitHub
qui contient plus de 4 300 workflows prêts à l’emploi que vous allez pouvoir utiliser pour vous !
La collection est organisée en 15 catégories : Marketing, Sales, DevOps, et tout ce que vous voulez ! Y’a même un système de recherche full-text qui répond en moins de 100ms, des filtres par niveau de complexité (Low, Medium, High), par type de trigger, par service… Bref, vous trouverez ce que vous cherchez en quelques secondes.
Pour l’utiliser, vous avez plusieurs options. Soit vous passez par
l’interface web
hébergée sur GitHub Pages, soit vous installez ça en local avec Python :
docker run -p 8000:8000 zie619/n8n-workflows:latest
Une fois lancé, vous avez accès à une API REST pour chercher et récupérer les workflows. Le endpoint /api/search pour les requêtes, /api/workflow/{id} pour récupérer le JSON d’un workflow spécifique, /api/categories pour la liste des catégories… Tout est documenté évidemment.
Ce truc utilise SQLite avec FTS5 (Full-Text Search) pour les recherches rapides, FastAPI pour le backend, et Tailwind CSS pour le frontend.
Bref, si vous cherchez de l’inspiration pour vos automatisations ou si vous ne voulez pas réinventer la roue à chaque fois, cette collection vaut vraiment le détour.
Bon, si vous me lisez depuis loooongtemps, vous connaissez forcément le risque que représentent les métadonnées contenues dans les images que vous partagez en ligne. Oui, je parle bien des fameux EXIFs qui contiennent aussi bien le modèle d’appareil photo utilisé, l’heure précise à la seconde près où vous avez pris le cliché, les réglages de l’objectif, parfois même l’altitude, et surtout les coordonnées GPS exactes de l’endroit où vous étiez.
Et toutes ces données, si vous mettez vos photos
Bon, si vous me lisez depuis loooongtemps, vous connaissez forcément le risque que représentent les métadonnées contenues dans les images que vous partagez en ligne. Oui, je parle bien des fameux EXIFs qui contiennent aussi bien le modèle d’appareil photo utilisé, l’heure précise à la seconde près où vous avez pris le cliché, les réglages de l’objectif, parfois même l’altitude, et surtout les coordonnées GPS exactes de l’endroit où vous étiez.
Et toutes ces données, si vous mettez vos photos en ligne par exemple, chez Google ou Apple, et bien eux les récupèrent et les utilisent. C’est dommage, surtout que ce sont des données qui sont quand même utiles pour peu qu’on garde ça en local sur sa machine.
Alors que faire ?
Hé bien, il existe un logiciel open source sous licence MIT qui s’appelle
ChronoFrame
. C’est une galerie photo que vous pouvez héberger vous-même, qui va parser automatiquement toutes les données exif de vos clichés, extraire la géolocalisation, faire du reverse géocoding pour identifier le lieu exact et afficher tout ça sur une espèce de carte interactive sur laquelle vous pouvez naviguer pour revoir vos souvenirs de voyage.
En gros c’est comme Google Photo sauf que c’est vous qui gérez vos données et vous contrôlez qui accède à quoi.
L’intérêt de ChronoFrame, c’est qu’il rend visible l’invisible. Vous uploadez une image, ChronoFrame lit les métadonnées, extrait les coordonnées GPS si elles existent, et lance un appel à l’API
Mapbox
ou
MapLibre
pour faire du reverse geocoding. Ça, ça veut dire transformer des coordonnées GPS (48.8584, 2.2945) en adresse lisible (“Tour Eiffel, Paris, France”).
Et surtout, ChronoFrame supporte les Live Photos d’Apple ET les Motion Photos de Google. La génération de miniatures, quand à elle, utilise
ThumbHash
, un algorithme de placeholder ultra-compact créé par Evan Wallace (cofondateur de Figma). Ainsi au lieu de générer plusieurs tailles de miniatures (100x100, 200x200, 400x400…etc), ThumbHash encode une version floue de l’image dans moins de 100 bytes et comme ça, les vignettes se chargent instantanément, et l’affichage est ensuite progressif (flou -> net) jusqu’à ce que l’image full résolution arrive.
L’interface est bien sûr responsive, supporte le touch et la navigation par gestes, et donne une expérience proche d’une app native. Pour la déployer, vous devez créer un fichier .env avec vos variables d’environnement (email admin, mot de passe, provider de stockage, token Mapbox…etc), vous lancez docker pull ghcr.io/hoshinosuzumi/chronoframe:latest, et hop, ça tourne direct.
Le
guide de démarrage
détaille tout le process et ça vous prendra 5 minutes chrono.
Une fois lancé, vous accédez à l’interface web, vous vous loggez avec votre email/password (ou via GitHub OAuth si configuré), vous allez dans /dashboard, et vous uploadez vos photos.
Voilà, j’ai trouvé ça cool parce que reprendre le contrôle de ses photos, ça veut pas forcément dire supprimer les métadonnées comme je l’ai souvent conseillé. Ça peut aussi vouloir dire décider de qui a accès à ces métadonnées. Car ça reste des informations précieuses et c’est quand même dommage de s’en priver donc autant héberger soi-même ses photos, comme ça vous pouvez les exploiter comme bon vous semble.
Notez que ChronoFrame ne vous aidera pas à supprimer vos EXIFs, mais il existe des outils pour faire ça comme
ExifTool
ou
mat2
. Vous pouvez aussi scripter ça avant d’uploader quoique ce soit sur les réseaux sociaux mais la plupart des gens ne le font pas parce qu’ils ne savent même pas que les données sont là. Je sais aussi que des sites comme X.com retirent certaines des méta données avant de diffuser votre photo publiquement mais ça ne veut pas dire qu’eux ne les exploitent pas en amont pour vous balancer de la pub par exemple…
Voilà, si vous voulez voir ce que ça donne, il y a un
site de démo
où vous pouvez voir l’interface en action !
En ce magnifique mardi matin, moi et mon mal de crâne, nous avons découvert un truc assez cool qui est un genre de wiki personnel en markdown, comme Obsidian ou Notion, mais avec un super pouvoir qui est que vous pouvez y écrire du code qui s’exécute directement dans vos notes !! Hé oui, du vrai code ! Pas des plugins, pas des extensions, mais du code Lua intégré dans votre texte comme si vos notes étaient devenues un environnement de dev à part entière.
Ça s’appelle
SilverBullet
, c’est open so
En ce magnifique mardi matin, moi et mon mal de crâne, nous avons découvert un truc assez cool qui est un genre de wiki personnel en markdown, comme Obsidian ou Notion, mais avec un super pouvoir qui est que vous pouvez y écrire du code qui s’exécute directement dans vos notes !! Hé oui, du vrai code ! Pas des plugins, pas des extensions, mais du code Lua intégré dans votre texte comme si vos notes étaient devenues un environnement de dev à part entière.
Ça s’appelle
SilverBullet
, c’est open source (licence MIT), et franchement, si vous avez déjà bidouillé des configs Neovim ou des scripts Redis, vous allez kiffer car c’est beaucoup plus simple ^^.
Ça ressemble à n’importe quel wiki markdown moderne. Vous écrivez vos notes en local, elles sont stockées en fichiers statiques .md, vous avez des liens bidirectionnels pour connecter vos idées, et l’interface est optimisée avec des raccourcis clavier. C’est évidemment une Progressive Web App qui fonctionne 100% hors ligne (
comme expliqué sur leur site
), et vous gardez le contrôle total sur vos données, puisque tout est auto-hébergé sur votre machine ou votre serveur.
Ainsi, avec le scripting Lua intégré, vous pouvez littéralement taper ${10 + 2} dans une note et le résultat s’affichera en temps réel : 12 (vous l’aviez les matheux ?? ^^). Et si vous voulez une liste de vos 5 dernières pages modifiées qui se met à jour automatiquement, suffit d’écrire un petit bout de Lua, et hop, votre wiki devient “vivant”.
Alors oui, je sais ce que vous allez me dire, Obsidian a Dataview, Logseq a ses requêtes en Datalog…etc donc c’est pareil non ?
Et bien pas vraiment parce que Dataview ça vous demande quand même d’apprendre un DSL (Domain Specific Language) avec une syntaxe bizarroïde et de vous palucher les 50 pages de doc. Logseq quand à lui vous balance du Datalog sans trop d’explications. Alors que SilverBullet, lui, vous laisse écrire du Lua. Et le Lua, c’est simple, c’est dispo partout (Neovim, Redis, les addons World of Warcraft, OSB, etc.), c’est documenté, et c’est fait pour être embarqué dans des applications.
Si vous êtes data scientist, vous connaissez sûrement les Jupyter Notebooks qui sont markdown avec du code Python exécutable dedans. Hé bien SilverBullet fait exactement la même chose, mais pour vos notes personnelles. Vos notes ne sont plus des fichiers inertes, mais deviennent des mini-programmes qui peuvent calculer, générer du contenu, réagir à des événements…etc
Tenez par exemple, vous pouvez définir une fonction custom directement dans une page :
-- Additionner deux nombres
function adder(a, b)
return a + b
end
Et ensuite l’utiliser n’importe où dans votre wiki avec la syntaxe ${adder(5, 7)}. Vous pouvez créer des commandes personnalisées qui apparaissent aussi dans la palette de commandes (Ctrl+K ou Cmd+K) :
command.define {
name = "Insérer signature",
run = function()
local date = os.date("%Y-%m-%d")
editor.insertAtCursor("---\nÉcrit le " .. date, false, true)
end
}
Ou même des slash commands comme dans Notion, mais que vous codez vous-même :
slashCommand.define {
name = "todo",
run = function()
editor.insertAtCursor("- [ ] |^|", false, true)
end
}
Tapez /todo dans votre éditeur, et boum, ça insère une checkbox markdown avec le curseur au bon endroit. Vous voulez un compteur de mots qui s’affiche à chaque sauvegarde ? Un event listener comme ceci suffit :
event.listen {
name = "page:save",
run = function(e)
local content = editor.getText()
local word_count = select(2, content:gsub("%S+", ""))
editor.flashNotification("Nombre de mots : " .. word_count)
end
}
Même si ça fait bientôt 3 ans que c’est en dev, c’est encore un peu jeune et il y a d’ailleurs quelques limitations à connaître. Par exemple, y’a pas de gestion d’upload d’images pour l’instant (vous devez linker des images externes ou les placer manuellement dans le dossier), et comme c’est récent, l’écosystème de plugins n’est pas aussi fourni qu’Obsidian. Mais bon, quand vous pouvez coder vos propres fonctionnalités en Lua directement dans vos notes, la notion de “plugin” devient un peu inutile.
Alors plutôt que de vous expliquer encore pendant 10 paragraphes comment ça fonctionne, voici comment l’installer et tester vous-même.
Téléchargez d’abord le binaire qui correspond à votre OS (macOS, Linux, Windows)
en cliquant ici
.
Pour macOS et
Linux
, ouvrez votre terminal et tapez :
Pour Windows, créez un dossier mes-notes, puis lancez dans PowerShell :
.\silverbullet.exe mes-notes
Le serveur démarre alors sur le port 3000 par défaut. Ouvrez votre navigateur sur http://localhost:3000 et vous y êtes. Vous pouvez aussi l’installer en Progressive Web App (PWA) pour l’utiliser comme une vraie application desktop, même hors ligne.
Et si vous préférez Docker, c’est encore plus simple :
docker run -p 3000:3000 -v ~/mes-notes:/space ghcr.io/silverbulletmd/silverbullet
Ça fonctionne sur Intel et ARM (Raspberry Pi, Apple Silicon), donc vous pouvez l’héberger sur à peu près n’importe quoi.
Voilà, donc si vous voulez une note qui génère automatiquement un journal de vos tâches incomplètes, une page d’accueil qui affiche vos stats d’écriture du mois ou encore un système de tags auto-généré avec des filtres dynamiques, tout est possible ! Et tout ça en écrivant du Lua directement dans le navigateur, sans plugins chelous.
Une fois que vous aurez goûté à ça, vous verrez que revenir à des notes statiques sera trèèèès compliqué.
Merci à friendly_0day pour m’avoir fait découvrir
SilverBullet
!
Si vous faites partie des anciens qui continuent à collectionner les liens sympa que vous trouvez sur le net, j’sais pas comment vous les gérez, mais j’ai peut-être un truc pour vous. Ça s’appelle
Linkding
(rien à voir avec le site rempli de teubés en costard qui parlent comme des IA nulles) et c’est un gestionnaire de bookmarks qu’on installe chez soi !
Hé oui, les champions de l’auto-hébergement, Linkding ne cherche pas à réinventer la roue… Il stocke juste vos liens, vos tags, vos notes en Ma
Si vous faites partie des anciens qui continuent à collectionner les liens sympa que vous trouvez sur le net, j’sais pas comment vous les gérez, mais j’ai peut-être un truc pour vous. Ça s’appelle
Linkding
(rien à voir avec le site rempli de teubés en costard qui parlent comme des IA nulles) et c’est un gestionnaire de bookmarks qu’on installe chez soi !
Hé oui, les champions de l’auto-hébergement, Linkding ne cherche pas à réinventer la roue… Il stocke juste vos liens, vos tags, vos notes en Markdown, et basta ! L’interface est sobre, lisible, et surtout elle ne vous balance pas des suggestions sponso à la con entre deux articles que vous vouliez lire plus tard.
Ce projet est open source sous licence MIT, et repose sur Django et SQLite. Donc c’est du solide ! SQLite pour la base de données, ça veut dire zéro configuration serveur et pas de grosse maintenance.
Vous installez le truc dans un container Docker, et ça tourne sur n’importe quoi. Ensuite, vous ajoutez un bookmark, et Linkding va automatiquement chercher le titre de la page, sa description, son icône, même une image de preview.
Autre truc cool prévu dans l’outil, c’est la possibilité de faire de l’archivage web car oui, Linkding peut créer des snapshots de chaque page que vous bookmarkez, soit en local sous forme de fichier HTML, soit via Internet Archive.
Parce que oui, il arrive parfois que les liens meurent dans d’atroces souffrances. Les sites ferment, les articles disparaissent, et dans 5 ans vous vous retrouvez avec une liste bourrée d’erreurs 404.
Alors que là, au moins, avec cet outil, vous avez une copie.
L’extension navigateur est aussi indispensable pour ajouter des bookmarks vite fait ! Elle est disponible pour Firefox et Chrome, et elle vous permet de les tagger à la volée, et même de chercher dans votre collection directement depuis la barre du navigateur. Ça ressemble un peu à ce qu’on avait avec Del.ici.ous à l’époque, en mieux.
Linkding gère aussi le multi-utilisateurs donc vous pouvez partager certains bookmarks avec d’autres personnes, ou les garder privés. C’est super pratique si vous l’installez pour toute la famille ou une petite équipe. Il y a même une API REST, donc si vous voulez automatiser des trucs ou créer vos propres outils autour, c’est possible !!
Y’a aussi une version PWA installable aussi donc vous pouvez l’ajouter à votre écran d’accueil sur mobile et l’utiliser comme une app native !
Une fois que vous y aurez goûté, difficile de revenir en arrière !
Pour tester, y’a une
démo en ligne
et l’installation prend moins de 10 minutes ! Ce serait dommage de s’en priver
Voici un truc vraiment cool qui va plaire aux fans d’auto-hébergement. Vous le savez, moi j’adore les petits outils pratiques, mais j’en ai marre de devoir uploader mes fichiers sur des services tiers qui vont ensuite les analyser, les stocker et probablement entraîner une IA dessus. Et bien figurez-vous que j’ai trouvé LA solution : Omni Tools.
En gros, c’est une collection d’outils web que vous hébergez vous-même et qui fait tout le traitement directement dans votre navigateur. Mais genre vrai
Voici un truc vraiment cool qui va plaire aux fans d’auto-hébergement. Vous le savez, moi j’adore les petits outils pratiques, mais j’en ai marre de devoir uploader mes fichiers sur des services tiers qui vont ensuite les analyser, les stocker et probablement entraîner une IA dessus. Et bien figurez-vous que j’ai trouvé LA solution : Omni Tools.
En gros, c’est une collection d’outils web que vous hébergez vous-même et qui fait tout le traitement directement dans votre navigateur. Mais genre vraiment tout sans que vos fichiers ne quittent jamais votre machine. En plus, c’est léger puisque l’image Docker ne pèse que 28 MB !
– Article en partenariat avec Zextras –
Marre de laisser Google fouiller dans vos mails comme un chat de gouttière dans une poubelle ? Envie de claquer la porte au nez de Microsoft 365 tout en gardant des outils collaboratifs cools ? Alors c’est l’heure d’installer Carbonio CE, votre serveur de mail badass et open source qui fait tout ce que les géants du web font, mais chez vous et sans vous stalker!
Marre de laisser Google fouiller dans vos mails comme un chat de gouttière dans une poubelle ? Envie de claquer la porte au nez de Microsoft 365 tout en gardant des outils collaboratifs cools ? Alors c’est l’heure d’installer Carbonio CE, votre serveur de mail badass et open source qui fait tout ce que les géants du web font, mais chez vous et sans vous stalker!