Vue normale

Bichon - L'archiveur Rust pour garder une trace de vos emails

Par : Korben
21 janvier 2026 à 09:00

Vous avez 15 ans d'emails répartis sur 4 comptes différents et vous aimeriez bien pouvoir chercher dedans sans devenir complétement fou ? Bichon est fait pour vous . C'est un archiveur d'emails open source écrit en Rust qui synchronise vos boîtes mail et vous permet de tout fouiller via une interface web ultra léchée.

Le truc c'est que Bichon n'est pas un client mail. Vous ne pouvez pas envoyer ou recevoir de messages avec. C'est vraiment un outil d'archivage pur qui se connecte à vos serveurs IMAP, aspire tous vos emails, les compresse, les déduplique et les indexe pour que vous puissiez faire des recherches full-text dessus pour par exemple retrouver ce mail de 2012 où votre ex vous expliquait sa recette secrète du tiramisu.

L'interface web est plutôt propre, codée en React avec ShadCN UI. Vous pouvez filtrer par compte, par dossier, par expéditeur, par nom de pièce jointe, par taille, par date... Y'a même un dashboard avec des stats sur vos emails si vous aimez les graphiques. Et bonne nouvelle, le WebUI est disponible en 18 langues, donc le français est de la partie !

Côté authentification, ça gère le mot de passe IMAP classique mais aussi OAuth2 avec refresh automatique du token. C'est hyper pratique pour Gmail ou Outlook qui aiment bien compliquer les choses. Y'a aussi un support proxy si vous êtes derrière un firewall capricieux et une découverte automatique des serveurs IMAP. Hop, on branche et ça synchronise !

La stack technique envoie du bois également puisque le backend est en Rust basé sur le framework Poem, et le moteur de recherche/stockage utilise Tantivy. C'est un moteur de recherche full-text codé lui aussi en Rust, l'équivalent de Lucene mais sans la lourdeur de la JVM. Pour les métadonnées et la config, le projet utilise Native_DB et le tout est packagé en binaires pour Linux, macOS et Windows, ou en image Docker si vous préférez le self-hosted sans prise de tête.

Un truc important depuis la version 0.2.0 c'est que le modèle d'authentification a changé. L'ancien compte "root/root" a sauté au profit d'un compte admin par défaut (identifiants : "admin" / "admin@bichon"). Pensez donc à changer le mot de passe immédiatement, sinon ce sera la fête du slip dans vos archives. Et notez bien que le mot de passe de chiffrement que vous définissez au premier lancement ne peut pas être changé ensuite, donc choisissez-le bien, genre "KorbenCestLePlusBeau123".

Et si vous avez déjà des tonnes de vieux mails qui traînent en local, sachez que depuis la v0.3.0, y'a également un outil en ligne de commande qui s'appelle bichonctl. Ça permet d'importer vos archives au format EML ou MBOX directement dans le bouzin. C'est nickel pour centraliser tout votre passé exporté par ailleurs.

Bref, si vous cherchez un moyen propre d'archiver vos mails sans que ça bouffe toute votre RAM comme un client Java des années 2000, Bichon fait grave le taff. C'est léger, c'est rapide, et c'est en Rust. Ensuite, vous pourrez dormir tranquille !

Merci à Lorenper pour l'info et si vous cherchez d'autres outils cools pour vos mails, jetez aussi un œil à Mailspring ou si vous kiffez le stockage en Rust, Garage est une pépite.

Raspberry Pi AI HAT+ 2 : installer Hailo-10H et lancer un LLM local (Partie 1)

Avec la Raspberry Pi AI HAT+ 2, Raspberry Pi propose une carte intégrant directement un accélérateur Hailo-10H et 8 Go de mémoire dédiée, conçue pour le Raspberry Pi 5. Cette carte permet d’exécuter localement des modèles d’IA générative, des LLM et des Vision-Language Models, sans recours au cloud. L’AI HAT+ 2 délivre jusqu’à 40 TOPS […]

Cet article Raspberry Pi AI HAT+ 2 : installer Hailo-10H et lancer un LLM local (Partie 1) a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

DockHand, un sérieux concurrent à Portainer pour vos environnements Docker (edit du 13/01)

Par : Cédric
8 janvier 2026 à 18:36
Je continue mes pérégrinations et, ce faisant, mes nombreuses découvertes sur la gestion et l’administration de conteneur rien que pour vous ! Mais pourquoi donc me direz-vous ? Pour vous préparer en douceur à la future aventure DevOps et, surtout, à la grande odyssée Kubernetes qui va suivre ... Vous connaissez Portainer ? Eh bien, vous allez kiffer DockHand.

C’est Noël : deux outils géniaux et un nouveau Wiki !

Par : Cédric
26 décembre 2025 à 11:07
Joyeux Noël ! L’occasion pour vous d’ouvrir plein de cadeaux et pour moi de vous souhaiter de joyeuses fêtes, ainsi qu’à l’avance mes meilleurs vœux professionnels — qui arrivent décidément très tôt désormais… On n’a jamais été aussi près, finalement :)

Les conteneurs indispensables en Lab : Uptime Kuma, Dozzle, IT Tools, ConvertX et surtout Traefik

Par : Cédric
10 décembre 2025 à 09:39
Vous en avez assez de perdre du temps à fouiller dans des logs Docker ; vous voulez un outil de supervision simple et efficace de votre vLab ; vous ne vous rappelez jamais de la cli base64 ou comment créer une paire de clefs rsa ?

Ackify CE : preuve de lecture cryptographique en Go + Vue3

Ackify CE est une plateforme open-source (AGPL v3) permettant de générer des preuves de lecture cryptographiquement vérifiables pour des documents internes.

Le problème

Les organisations doivent souvent prouver qu'un collaborateur a lu un document (politique RGPD, charte de sécurité, formation obligatoire). Les solutions existantes sont soit trop lourdes (signature électronique qualifiée comme DocuSign à 10-30€/utilisateur/mois), soit non sécurisées (simple email).

La solution

Ackify génère des preuves de lecture cryptographiques avec :

  • Signatures Ed25519 (même algo que SSH)
  • Horodatage immutable (PostgreSQL triggers)
  • Hash chain blockchain-like
  • Vérification offline possible

Cas d'usage

  • Validation de politiques internes (sécurité, RGPD)
  • Attestations de formation obligatoire
  • Prise de connaissance de procédures
  • Accusés de réception contractuels

Différence avec DocuSign

Ackify n'est pas une alternative à DocuSign pour des contrats juridiques. C'est une solution simple pour des besoins internes où la signature qualifiée est overkill.

N'hésitez pas si vous avez des questions techniques !

Installation

curl -fsSL https://raw.githubusercontent.com/btouchard/ackify-ce/main/install/install.sh | bash
cd ackify-ce
nano .env  # Configurer OAuth2
docker compose up -d

Installation complète en ~5 minutes.

Stack technique

Backend

  • Go 1.24 (Clean Architecture / DDD)
  • PostgreSQL 16
  • Chi Router
  • OAuth2 (Google, GitHub, GitLab, custom) ou Magic Link (passwordless)

Frontend

  • Vue 3 + TypeScript
  • Tailwind CSS
  • i18n (FR, EN, ES, DE, IT)

DevOps

  • Docker distroless < 30 MB
  • CI/CD GitHub Actions
  • Tests : 72,6% couverture (180 tests unitaires + 33 intégration)

Commentaires : voir le flux Atom ouvrir dans le navigateur

Production-Grade Container Deployment with Podman Quadlets | Larvitz Blog

16 novembre 2025 à 22:15

Une approche intéressante pour héberger des containers (Podman en l'occurrence) : les gérer avec systemd, le gestionnaire de service de nombreuses distributions Linux.

C'est moins standard qu'un Docker Compose mais ça peut avoir un intérêt pour les admins sys pure souche qui retrouveront ainsi des outils familiers.


Permalink

Production-Grade Container Deployment with Podman Quadlets | Larvitz Blog

16 novembre 2025 à 22:15

Une approche intéressante pour héberger des containers (Podman en l'occurrence) : les gérer avec systemd, le gestionnaire de service de nombreuses distributions Linux.

C'est moins standard qu'un Docker Compose mais ça peut avoir un intérêt pour les admins sys pure souche qui retrouveront ainsi des outils familiers.


Permalink

Proxmox, Prometheus et Grafana, les 3 mousquetaires (avec Traefik ça fait 4 …)

Par : Cédric
16 novembre 2025 à 17:57
Allez, hop, je me sens d’humeur superviseuse ce dimanche ! Installons donc un node exporter pour notre serveur Proxmox, histoire de pouvoir envisager une supervision à long terme et du capacity planning sur ce petit vLab Proxmox !

Arcane : alternative à Portainer + agents

Par : Aerya
14 novembre 2025 à 09:01

Je cherchais à découvrir une alternative à Portainer, qui me permette de gérer très simplement des Dockers (MàJ, add, remove, prune) sur un hôte comme des machines distantes (j’en ai déjà 3 au garage).

J’ai le plaisir d’être tombé sur Arcane de Kyle Mendell : open source, beau, complet sans tomber dans l’excès d’options, traduit en plusieurs langues, permet de visualiser les containers, images, volumes, réseaux, de les créer/retirer/mettre à jour (avec notifications), créer des stacks etc. On peut accéder à des templates de la communauté ou autres, parcourir les registres DockerHub, GitHub et compagnie. Et ça s’installe/configure très facilement en prime.

En bref : ça claque !

arcane

Suivre la documentation pour installer Arcane et celle pour ses agents. Pour ces derniers, le AGENT_BOOTSTRAP_TOKEN est juste un mot de passe de son choix (qui ne sert qu’au 1er lancement).

Exemples chez moi où je place le serveur sur un NAS Synology.

services:
  arcane:
    image: ghcr.io/getarcaneapp/arcane:latest
    container_name: arcane
    restart: always
    ports:
      - 3552:3552
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /volume1/docker/arcane/data:/app/data
      - /volume1/docker/arcane/projects:/app/data/projects
    environment:
      - APP_URL=http://localhost:3552
      - PUID=1000
      - PGID=1000
      - ENCRYPTION_KEY=o2XKBfUGHw76fN89Ipr8CGqzO75HllzZ9iebkxMo3Aw=
      - JWT_SECRET=2OfmGSZa3Bfef1lzgeFI3SiEJCoK15TZ3F4UiCCWsk4=
    labels:
      - com.centurylinklabs.watchtower.enable=true


Et les agents (en changeant de mot de passe à chaque fois)

services:
  arcane-agent:
    image: ghcr.io/getarcaneapp/arcane-headless:latest
    container_name: arcane-agent
    restart: always
    ports:
      - 3553:3553
    environment:
      - AGENT_MODE=true
      - AGENT_BOOTSTRAP_TOKEN=sXtNKgdWb93KSykAr
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/aerya/docker/agent-data:/app/data
    labels:
      - com.centurylinklabs.watchtower.enable=true

Il suffit ensuite d’ajouter les agents pour pouvoir les gérer

arcane1

Seul bémol, y’a de la statistique d’envoyée, ici bloquée par mon serveur AdGuardHome, et j’ai pas trouvé d’option pour désactiver ça.

arcane2

C’est peut-être pas votre cas mais moi j’ai mis du temps à trouver comment accéder à mes agents distants ^^’

arcane3

Voici un aperçu de l’outil

arcane4
arcane5
arcane6
arcane7
arcane8
arcane9
arcane10

Loading

Upgrader une instance PostgreSQL docker

Par : Cédric
10 novembre 2025 à 09:25
Cela fait quelques que temps que je n'utilise plus Nginx Proxy Manager comme reverse proxy, mais uniquement pour le renouvellement automatique de quelques certificats Let's Encrypt isolés. Malgré tout, il y a quelques temps j'ai dû réaliser un upgrade de la base PostgreSQL17 vers PostgreSQL18 reliée à cette instance via docker. Voila comment je m'y suis pris (la méthode est applicable potentiellement à toutes vos petites instances PostgreSQL mono container que ce soit sur docker ou sur kube).

Du commit GitHub au container à jour : workflow Docker simplifié

Par : Aerya
4 novembre 2025 à 08:28

Il arrive que des gens publient un code sur GitHub avec un Dockerfile mais sans package. Le container est donc à construire soi-même, localement.

Ça peut se faire directement depuis un compose

services:
  applicationABC:
    build:
      context: https://github.com/user/applicationABC.git
      dockerfile: Dockerfile
    container_name: applicationABC
    restart: always
    ports:
      - 8080:8080

Mais dans ce cas la mise à jour automatisée via WatchTower ne fonctionne pas puisqu’il n’y a pas d’image à aller chercher.

    labels:
      - com.centurylinklabs.watchtower.enable=true

Du coup voici une solution de contournement, simple et surtout qui n’implique pas d’outil tiers ou de cloner un dépôt GitHub et faire/tenir à jour un package moi-même.

Ce bout de code va checker les commits d’un dépôt GitHub à intervalles réguliers et, au besoin, construire un container à jour localement et relancer le tout.
Avec notification Discord, parce que j’aime ça.

  applicationABC-autoupdate:
    image: alpine:latest
    container_name: applicationABC-autoupdate
    restart: always
    environment:
      GITHUB_REPO: https://github.com/user/applicationABC.git
      DISCORD_WEBHOOK: https://canary.discord.com/api/webhooks/xxx/xxx
      POLL_INTERVAL: 172800 # secondes
      SERVICE_NAME: applicationABC
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /tmp:/repo
    command: >
      sh -c "
        apk add --no-cache git bash curl docker-cli jq &&
        mkdir -p /repo &&
        cd /repo &&
        git clone --depth 1 \$GITHUB_REPO . || true &&
        REPO_NAME=\$(basename -s .git \$GITHUB_REPO) &&
        DEFAULT_BRANCH=\$(curl -s https://api.github.com/repos/\$(echo \$GITHUB_REPO | sed 's|.*/||;s|.git||') | jq -r .default_branch) &&
        git fetch origin \$DEFAULT_BRANCH &&
        git checkout \$DEFAULT_BRANCH &&
        LAST_COMMIT=\$(git rev-parse HEAD) &&
        while true; do
          git fetch origin \$DEFAULT_BRANCH &&
          NEW_COMMIT=\$(git rev-parse origin/\$DEFAULT_BRANCH) &&
          if [ \"\$NEW_COMMIT\" != \"\$LAST_COMMIT\" ]; then
            echo \"[$(date)] Nouveau commit détecté sur \$DEFAULT_BRANCH, rebuild...\"
            git reset --hard origin/\$DEFAULT_BRANCH &&
            docker compose -f /repo/docker-compose.yml build \$SERVICE_NAME &&
            docker compose -f /repo/docker-compose.yml up -d \$SERVICE_NAME &&
            REPO_LINK=\$GITHUB_REPO &&
            COMMIT_LINK=\"\$GITHUB_REPO/commit/\$NEW_COMMIT\" &&
            curl -H 'Content-Type: application/json' -X POST -d '{\"content\": \"\$REPO_NAME mis à jour automatiquement !\nBranche : \$DEFAULT_BRANCH\nCommit : \$NEW_COMMIT\nDépôt : <\$REPO_LINK|\$REPO_NAME>\nLien du commit : <\$COMMIT_LINK|voir commit>\"}' \$DISCORD_WEBHOOK &&
            LAST_COMMIT=\$NEW_COMMIT
          else
            echo \"[$(date)] Aucun changement sur \$DEFAULT_BRANCH.\"
          fi
          sleep \$POLL_INTERVAL
        done
      "

Le travail est effectué dans le dossier temporaire.

Il suffit d’éditer les variables voire le nom du container, histoire de faire propre

  applicationABC-autoupdate:
    image: alpine:latest
    container_name: applicationABC-autoupdate
    restart: always
    environment:
      GITHUB_REPO: https://github.com/user/applicationABC.git
      DISCORD_WEBHOOK: https://canary.discord.com/api/webhooks/xxx/xxx
      POLL_INTERVAL: 172800 # secondes
      SERVICE_NAME: applicationABC

Attention, la variable SERVICE_NAME doit être le nom exact du service à reconstruire/relancer

services:
  applicationABC:
    build:
      context: https://github.com/user/applicationABC.git
      dockerfile: Dockerfile
    container_name: applicationABC
    restart: always
    ports:
      - 8080:8080

Loading

❌