Vue lecture

TriliumNext Notes - Vos notes, votre serveur, zéro cloud

Entre Notion qui vous enferme dans son cloud, Obsidian qui facture la synchro dans son cloud 48 dollars par an et Evernote qui est devenu l'ombre de lui-même... trouver un outil de notes qui tourne chez vous sans dépendre de personne, c'est devenu la quête du Graal. Mais heureusement, TriliumNext Notes coche à peu près toutes les cases.

C'est une appli de prise de notes hiérarchique, open source (AGPL-3.0), qui tourne en local ou sur votre serveur. Imaginez une arborescence de dossiers, sauf qu'au lieu de copier un fichier dans 3 endroits différents, vous le clonez. C'est juste un lien ce qui fait que votre doc "Setup Proxmox" existe à la fois dans "Homelab" et dans "Tutos Linux" sans bouffer un octet de plus.

L'interface de TriliumNext Notes avec son arborescence de notes

Côté fonctionnalités, accrochez-vous puisque ça embarque un éditeur WYSIWYG avec support Markdown, des notes de code avec coloration syntaxique, un canvas Excalidraw pour griffonner des schémas, des diagrammes Mermaid, mind maps, et même des cartes géo avec traces GPX ! Y'a aussi un calendrier, un Kanban, des tableaux, un Web Clipper pour capturer des pages web d'un clic, et un moteur de recherche full-text qui fouille dans toutes vos notes. Franchement, pour un truc gratuit, vous en avez pour votre argent (euuh ?).

Le premier réflexe, ce serait de se dire "encore un clone de Notion". Sauf que que nenni les rabats joie ! Car LE truc qui fait vraiment la diff par rapport à un Anytype ou un Notion, c'est la synchronisation maison. Vous posez une instance serveur sur votre NAS, votre Proxmox, ou même un Raspberry Pi (ça tourne dessus sans broncher), et hop, toutes vos machines se synchronisent via votre réseau.

Pour l'installer, vous avez l'embarras du choix. En desktop classique, un brew install --cask trilium-notes sur Mac, un winget install TriliumNext.Notes sur Windows, ou un Flatpak / .deb / .rpm sur Linux et c'est plié.

Mais le vrai kif, c'est de le poser sur un serveur pour synchroniser toutes vos machines. Avec Docker, ça donne :

docker run -d -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/trilium

Le -v c'est important : ça persiste vos notes en dehors du conteneur. Sans ça, un docker rm et tout disparaît. Une fois lancé, vous allez sur http://votre-ip:8080, vous créez votre mot de passe, et c'est parti. Sur le desktop, vous ajoutez l'adresse du serveur dans les réglages de synchro et toutes vos notes se retrouvent partout. Et si vous voulez y accéder depuis l'extérieur, un petit Tailscale par-dessus et c'est réglé.

Sous le capot, une base SQLite, soit un seul fichier document.db dans ~/.local/share/trilium-data/, qu'on peut copier sur une clé USB en 2 secondes. Pas de PostgreSQL à configurer, pas de Redis à maintenir. La doc officielle annonce 100 000 notes sans problème de perf (ils utilisent better-sqlite3, le driver synchrone le plus rapide de Node.js).

Par contre, attention : les pièces jointes en synchro sont limitées à 1 Go par fichier. Au-delà, ça passe pas. Les notes sensibles, elles, peuvent être chiffrées individuellement en AES-128 avec une session protégée par mot de passe.

Et pour les bidouilleurs, y'a aussi une API REST sur le port 37740 et un système de scripting côté serveur. Vous pouvez créer des widgets custom, automatiser des exports, ou même vous bricoler un mini-dashboard de démarrage. Par contre, faut pas avoir peur de mettre les mains dans le JavaScript.

Et si vous comptez migrer depuis Joplin ou Evernote, y'a également un import natif ENEX + Markdown, donc pas besoin de convertisseur tiers.

Voilà et j'en profite pour vous raconter un peu l'histoire de ce logiciel... Pour votre confiture générale ^^. En fait Trilium a été créé en 2017 par un dev solo et quand il a décidé de raccrocher les gants, la communauté a repris le flambeau sous le nom TriliumNext en publiant des releases régulières mais aussi une traduction dans une dizaine de langues dont le français, et du support OpenID + TOTP pour sécuriser les accès. C'est beau le pouvoir de la communauté !!

Côté mobile par contre, pas d'app officielle. C'est dommage mais TriliumDroid fait bien le job sur Android (dispo sur IzzyOnDroid) et l'interface web passe aussi en PWA (Progressive Web App, tu connais...). Attention quand même, la synchro entre TriliumDroid et le serveur impose que les deux soient sur la même version. Si vous mettez à jour l'un sans l'autre, ça coince comme mon dos en ce moment.

Non, vraiment le seul vrai bémol, comme souvent avec les logiciels libres, c'est que l'interface a un petit côté 2015. C'est pas Notion niveau polish, je ne vais pas vous mentir. Donc si vous êtes du genre à juger un outil à sa typo et ses animations, passez votre chemin. Mais pour un truc gratuit qui gère aussi bien les notes que les mind maps, les Kanban et le scripting... ça se pardonne vite. D'ailleurs si vous aimez les applis de notes self-hosted, je vous avais aussi parlé de Blinko à l'époque qui rajoute de l'IA par-dessus vos notes. Pensez-y !

Bref, allez voir ça, c'est le genre de projet qui mérite le détour.

Et big merci à Rudy pour le lien !

  •  

Cooklang - Le Git de vos recettes de cuisine

Si vous en avez marre de perdre vos recettes de cuisine dans des apps comme Whisk ou Paprika qui ferment tous les 6 mois, ou de devoir scroller 14 pages de storytelling avant d'arriver aux ingrédients... y'a un truc qui devrait vous plaire. Ça s'appelle Cooklang , et c'est un langage de markup pour écrire vos recettes en texte brut et les garder à vie !

En gros, vous créez un fichier .cook avec Notepad, Sublime Text ou votre terminal favori, vous écrivez votre recette en français normal et vous ajoutez quelques marqueurs type : @farine{200%g} pour un ingrédient avec sa quantité, #fouet{} pour un ustensile, ~{25%minutes} pour un minuteur.

Du coup, à partir de ce petit fichier texte, l'outil génère alors automatiquement la liste de courses, les minuteurs et un joli rendu lisible. Y'a pas de compte à créer, ni de serveur Notion à monter... C'est juste vos recette chez vous !

Et le truc vraiment sympa, c'est que la syntaxe reste parfaitement lisible même sans l'outil... en fait votre recette de carbonara reste une recette de carbonara, et pas un fichier XML avec 47 balises imbriquées. D'ailleurs si vous versionnez vos fichiers avec un Git, vous pouvez tracer l'évolution de vos recettes au fil du temps, pour voir par exemple quand vous avez décidé de mettre plus d'ail dans la marinade et pourquoi votre tarte aux pommes de 2024 était meilleure que celle de 2023.

La syntaxe Cooklang : lisible par un humain, exploitable par la machine

Côté écosystème, c'est très complet pour un projet open source et complètement gratuit ! Y'a un CLI écrit en Rust qui fait serveur web intégré ( la démo est ici ), des apps iOS et Android avec synchronisation, des plugins pour VS Code, Vim et Emacs (pour les puristes), un plugin Obsidian pour afficher vos recettes directement dans votre vault, et même un mode Raspberry Pi Zero pour héberger votre précieux livre de recettes familial sur le réseau WiFi local.

Comme ça, un petit cookcli server et tout le monde à la maison peut consulter les recettes depuis son téléphone. Par contre, attention, y'a pas de mode collaboratif en temps réel, c'est chacun son fichier... c'est pas Google Docs non plus.

Le système de mise à l'échelle est pas mal non plus. Quand vous triplez les quantités de votre blanquette pour le repas du dimanche, le sel et le poivre restent fixes (parce que non, on ne triple pas la quantité de pincées de sel quand on passe à 6 personnes). Sauf que ça marche pas pour tout : les temps de cuisson, faut quand même les ajuster vous-mêmes et si une recette dépend d'une autre, genre votre sauce hollandaise maison, vous pouvez la référencer directement dans votre préparation avec @./sauces/Hollandaise{150%g}.

D'ailleurs, y'a une astuce que je trouve carrément cool, c'est que si vous trouvez une recette en ligne qui vous plaît, vous pouvez coller cook.md/ devant l'URL et ça la convertit automatiquement au format Cooklang, prête à être intégrée dans votre collection de recette. Comme ça, pas besoin de tout retaper à la main comme un scribe du Moyen Âge !

Le projet existe depuis janvier 2021 et c'est sous licence MIT. Dans un monde (prenez une grosse voix grave) où chaque app de cuisine veut votre email, vos données et 5 euros par mois, la vraie résistance s'organise avec des fichiers texte de cuisine de 2 Ko qu'on peut ouvrir dans n'importe quel éditeur de texte , synchroniser via Syncthing ou balancer sur une clé USB.

Et si tout ce qui vous intéresse c'est uniquement la bouffe, il y a des recettes ici et des recettes là .

Bref, créez un fichier boeufbourguignon.cook, balancez-y votre recette avec les marqueurs et lancez cookcli server pour voir le résultat... il manque plus qu'un git blame pour savoir qui a mis trop d'oignons !

Merci à Fabien pour la découverte !

  •  

Pangolin - Proxy, VPN et auth enfin réunis

Si vous auto-hébergez vos propres services parce que VOUS AVEZ DU TEMPS GRÂCE A VOTRE BULLSHIT JOB SURPAYÉ, vous connaissez la chanson... il vous faut un reverse proxy type Nginx Proxy Manager pour router le trafic, un tunnel Cloudflare ou WireGuard pour exposer vos services sans ouvrir de ports, et un truc genre Authentik pour l'auth. Donc 3 outils, 3 configs différentes, et surtout 3 trucs qui peuvent vous péter à la gueule à tout moment, surtout quand vous êtes en vacances ou en train de jouer avec vos enfants.

Mais heureusement, j'arrive à la rescousse avec Pangolin , un projet open source qui colle tout ça dans un seul paquet : Proxy inversé, tunnels WireGuard chiffrés, authentification zero-trust, le tout orchestré par Docker. Une commande de grosse feignasse dans le terminal et c'est installé !!

curl -fsSL https://static.pangolin.net/get-installer.sh | bash

Le truc peut tourner sur n'importe quel VPS avec une IP publique (Ubuntu 20.04+ ou Debian 11+, AMD64 ou ARM64). L'installeur pose Docker, Traefik et les conteneurs en 2-3 minutes chrono et ensuite vos services à la maison se connectent via des tunnels WireGuard... sans ouvrir le moindre port sur votre box ! Comme ça, que ce soit votre Jellyfin de cyberpirate, votre Nextcloud ou votre Gitea... tous deviennent accessibles depuis n'importe où, avec les certificats Let's Encrypt automatiques derrière qui vont bien.

Sous le capot, c'est du NAT traversal intelligent. Même derrière un CGNAT Orange ou un firewall restrictif de chez Free, les tunnels WireGuard trouvent, comme la vie dans Jurassic Park, toujours leur chemin via UDP. Pas besoin de DDNS, pas besoin de supplier votre FAI pour une IP fixe. Par contre, si vous avez déjà galéré avec du port forwarding sur une Livebox 5, vous savez à quel point c'est appréciable !

D'ailleurs, côté sécurité c'est carrément différent d'un VPN mesh classique type Tailscale . Au lieu de filer l'accès à tout un réseau (et prier pour que personne ne fasse n'importe quoi), Pangolin fonctionne en zero-trust : Chaque utilisateur n'accède qu'aux ressources que vous avez explicitement définies. SSH, RDP, bases de données, apps web... vous choisissez qui voit quoi et y'a même du MFA, du geo-blocking, voire du blocage par ASN si le cœur vous en dit.

Côté architecture, c'est un petit zoo : Pangolin (le serveur en TypeScript), Gerbil (le tunneling WireGuard), Newt (le connecteur réseau local) et Traefik comme reverse proxy. Oui, y'a un genre de thème "animaux fouisseurs"... à vrai dire c'est assez mignon tant que ça trimballe pas des virus. Et des clients natifs existent pour Mac, Windows, Linux, iOS et Android, pas forcément courant pour un projet de cette taille.

Pour l'auth, ça supporte Azure AD, Google, ou n'importe quel provider OAuth2/OIDC. Du coup, si vous utilisez déjà Pocket ID pour votre SSO passkey, ça s'emboîte bien (qui a dit "comme papa" ??). Pangolin c'est donc le top pour disposer d'un accès public à vos services (là où Tailscale gère le mesh privé).

Attention quand même, y'a 4 ports à ouvrir sur votre VPS : 80 et 443 en TCP (classique), plus 51820 et 21820 en UDP pour les tunnels WireGuard. Oubliez pas le 21820 sinon les clients ne se connecteront pas. La licence est dual : AGPL-3 pour la Community Edition (gratuite), et une licence commerciale pour l'Enterprise (gratuite aussi pour un usage perso et les boîtes sous 100K$ de CA). Si vous ne voulez pas gérer l'infra, y'a aussi une offre cloud managée et un installer one-click sur DigitalOcean.

CrowdSec , que j'adore, est même intégrable en option pour ajouter une couche de sécurité collaborative, et si vous utilisiez Nginx Proxy Manager avant, la migration vaut le coup d'être envisagée.

Bref, si votre stack self-hosted ressemble à un millefeuille de conteneurs, Pangolin mérite clairement un essai poussé. Et un grand merci à Tom Nook pour le partage !

  •  

Eonvelope - Vos emails méritent aussi un backup local

On archive nos photos avec Immich , nos documents avec Readur , nos mots de passe avec Vaultwarden ... mais nos emails ? Ah bah non, ça on les laisse chez Google en croisant les doigts pour que tout se passe bien jusqu'à la fin de nos jours. C'est quand même un peu dinguo quand on y réfléchit sérieusement.

Et pourtant, y'a des années de conversations là-dedans ! Des factures en pièce jointe, des confirmations de commande, des échanges pro avec votre comptable, des mots de passe envoyés en clair (oui, hélas, ça arrive encore). Du coup, quand un hébergeur mail décide de changer ses conditions générales ou de fermer boutique, tout part à la poubelle si vous n'y faites pas attention.

Eonvelope , c'est un outil open source en Python qui permet de sauvegarder automatiquement tout ça sur votre propre serveur et qui se lance avec un simple docker compose up.

Le truc, c'est que des outils comme Gmvault font déjà le boulot via cron, mais uniquement pour Gmail et en ligne de commande alors qu'Eonvelope, lui, un peu à la manière de Bichon , tourne en arrière-plan avec une interface web et archive en continu tous vos comptes. Franchement, c'est pas le même délire. Vous branchez vos comptes IMAP, POP3, Exchange, et même JMAP (le protocole poussé par Fastmail qui commence tout juste à se démocratiser), vous réglez la fréquence, et hop, vos mails atterrissent dans votre instance sans que vous ayez à y penser.

Attention par contre, c'est de l'archivage, pas un client mail... vous ne répondrez pas à vos mails depuis l'interface.

Côté installation, c'est du Docker avec seulement 2 conteneurs, le serveur web et la base de données. En fait, comptez 5 minutes chrono si vous avez déjà un serveur dédié ou un VPS, le fichier docker-compose.yml est fourni et les variables d'environnement sont bien documentées sur ReadTheDocs . Y'a même un mode basse consommation pour ceux qui font tourner ça sur un Raspberry Pi 4 avec 2 Go de RAM ou un petit Synology ! SSL et HTTPS sont inclus par défaut, et l'authentification multifacteur aussi.

Mais le vrai point fort, c'est les intégrations avec le reste de l'écosystème self-hosted. Concrètement, vous pouvez envoyer vos pièces jointes PDF vers Paperless-ngx pour l'OCR, les photos vers Immich, et exporter vos contacts vers votre carnet d'adresses Nextcloud. Y'a aussi un endpoint Prometheus pour brancher Grafana et suivre vos stats d'archivage. En gros, si vous avez déjà un homelab qui tourne, ça vient se brancher dessus comme une pièce de Lego.

L'interface web est en PWA (donc utilisable sur votre téléphone), avec un moteur de recherche, du filtrage par date et par expéditeur, des fils de conversation reconstitués et de l'import/export en EML et MBOX. Franchement, c'est propre. Y'a aussi une API REST pour ceux qui préfèrent scripter par-dessus plutôt que de passer par l'interface.

Le projet est sous licence AGPLv3 et son dev déclare l'utiliser lui-même au quotidien, ce qui est souvent bon signe. Notez que la migration depuis un backup existant n'est pas forcément fluide mais qui ne tente rien n'a rien !

Bref, ça comble un vrai manque dans la stack de nos machins auto-hébergés mais je trouve que l'approche est clairement plus intégrée que ce qui existe (genre MailPiler ou un combo fetchmail+dovecot). À surveiller donc !

Source

  •  

Scanopy - Quand votre réseau se documente tout seul

Faut le reconnaître, la doc et qui plus est, la doc réseau, c'est un peu le parent pauvre du homelab. Tout le monde sait qu'il faudrait la tenir à jour sur un petit wiki tout mignon mais personne le fait parce qu'on n'est pas cinglé et qu'on aime trop la vie pour ça. Heureusement, pour nous aider, y'a maintenant Scanopy qui est un outil open source qui scanne automatiquement votre réseau pour générer une topologie interactive incroyable qui se met à jour toute seule !

Pour l'installer, deux lignes suffisent :

curl -O https://raw.githubusercontent.com/scanopy/scanopy/refs/heads/main/docker-compose.yml
docker compose up -d

Et hop, l'interface est dispo sur le port 60072 de votre serveur ! Pas de config.

Concrètement, le truc balance du scan ARP pour trouver tous les hôtes (même ceux qui n'ont aucun port ouvert), puis il enchaîne avec un scan des 65 000 ports sur chaque machine qui répond. Comme ça, en quelques minutes sur un /24 classique, vous avez la cartographie complète de votre sous-réseau avec les services qui tournent dessus. Et quand je dis services, c'est pas juste "port 80 ouvert" puisque cet outil de zinzin reconnaît plus de 200 applis self-hosted comme Home Assistant, Plex, Jellyfin, PostgreSQL ou nginx. Par contre, attention, un scan de 65 000 ports sur tout un sous-réseau, ça peut chatouiller un peu votre IDS (système de détection d'intrusion) si vous en avez un.

D'ailleurs, si vous avez des équipements réseau un peu sérieux (switches manageables, routeurs), Scanopy sait aussi causer SNMP v2c et récupérer les données LLDP/CDP pour reconstituer les liens physiques entre vos appareils.

Et pour ceux qui font tourner pas mal de containers, il se branche directement sur le socket Docker pour détecter tout ce qui tourne là-dedans. En fait, c'est surtout cette combo "scan réseau + détection Docker" qui le rend utile, parce que la plupart des outils du genre font l'un ou l'autre mais jamais les deux.

L'interface de visualisation est plutôt classe comme vous pouvez le voir. Vous avez une vue topologique interactive où chaque hôte est cliquable, avec un système de branches et de versioning pour suivre l'évolution de votre réseau dans le temps (un peu comme Git, mais pour votre infra). Et y'a même de l'export en CSV, PNG et SVG. Et surtout la possibilité de partager des liens publics vers vos schémas... C'est franchement pratique quand vous bossez en équipe ou que vous devez montrer à votre boss pourquoi le NAS de votre PME rame sa mère.

Côté tambouille technique, c'est du Rust pour le moteur de scan et du Svelte pour l'interface, le tout sous licence AGPL-3.0. En gros, vous avez un serveur qui héberge l'UI et stocke les données, et des daemons qui font le boulot de scan à proprement parler. Tout est containerisé, comme ça pas besoin d'installer un agent sur vos machines côté réseau... c'est complètement agentless quoi. D'ailleurs, si vous aviez l'habitude de balancer des scans nmap à la main pour savoir ce qui traîne sur votre réseau, Scanopy automatise tout ça et rajoute la couche visu par-dessus.

Le projet est hébergé sur GitHub et y'a aussi un déploiement possible via Proxmox ou Unraid pour ceux qui préfèrent. Seul prérequis, il vous faudra Docker et Docker Compose sur votre machine. Et n'oubliez pas que le projet est encore jeune, du coup ça bouge pas mal d'une version à l'autre. Et ça casse parfois. Mais c'est plutôt bon signe parce que ça veut dire que ça progresse !

Bref, si vous en avez marre de dessiner vos schémas réseau à la main, c'est par là !

Source

  •