
Homelab 16 : garder tout ce que vous lisez, pour toujours, avec Karakeep
Un favori, c'est la promesse que la page sera toujours là. Souvent, elle ne l'est plus. Karakeep (anciennement Hoarder) garde la page elle-même : l'archive complète, lisible même quand le site d'origine a disparu, avec des étiquettes et un résumé écrits par un modèle qui tourne à la maison. Le nôtre passe aussi chaque page gardée à notre base de connaissance, pour que nos agents puissent chercher dans ce que nous lisons.
Comment ces chiffres ont été obtenus. Mesurés sur nos propres machines (voir le protocole), en général en un seul passage, vitesses relevées par le serveur lui-même ; nous ne publions pas les journaux bruts. Ce sont des ordres de grandeur sur ce matériel, pas des garanties sur le vôtre. Les chiffres extérieurs sont accompagnés de leur source.
Un peu d'histoire
Les services de favoris et de lecture différée vont et viennent ; quand l'un ferme, des années de pages gardées disparaissent avec lui. Karakeep, publié d'abord sous le nom de Hoarder et renommé en 2025, garde une copie complète de chaque page que vous enregistrez sur votre propre serveur, et laisse un modèle local la résumer et l'étiqueter. La page survit même quand le site d'origine disparaît.
1. Le lancer
Karakeep publie une installation Docker Compose : l'application, un Chrome sans écran pour récupérer les pages, et Meilisearch pour la recherche plein texte. Suivez-la, épinglez les versions, publiez par votre proxy HTTPS (Homelab 2), et installez l'extension du navigateur et l'app du téléphone.
2. Les réglages qui comptent
| Réglage | Pourquoi, mesuré |
|---|---|
CRAWLER_FULL_PAGE_ARCHIVE=true | 41 327 caractères archivés au lieu de 8 927 : la page entière, pas seulement son premier écran |
INFERENCE_ENABLE_AUTO_SUMMARIZATION=true | un résumé répond mieux à une recherche qu'une page brute pleine de menus |
INFERENCE_JOB_TIMEOUT_SEC=300 | l'étiquetage a pris 54 s sur une longue page avec un petit modèle local ; le défaut de 30 s le coupait |
OCR_LANGS=fra+eng | les documents et images en français sont lus correctement |
DB_WAL_MODE=true | un autre programme peut lire la base pendant que Karakeep écrit |
Pour les étiquettes et les résumés, reliez Karakeep à votre passerelle de modèles (Une passerelle pour tous vos modèles) par ses réglages compatibles OpenAI, et choisissez un petit modèle : étiqueter n'en demande pas un gros.
3. Le confier à vos agents
Dans les réglages de Karakeep, ajoutez un webhook vers un petit récepteur à vous, qui exporte les nouvelles pages dans votre base de connaissance. Mettez le jeton dans le champ auth token de Karakeep, pas dans l'URL : il est alors envoyé en en-tête, et les en-têtes ne finissent pas dans les journaux du proxy.
Pièges que nous avons payés
Un alias de notre passerelle annonçait « je suis le gros modèle » tout en servant en silence un repli de 3 milliards de paramètres. Demandez à la passerelle quel modèle a vraiment répondu, ne faites jamais confiance à un alias (c'est pourquoi notre passerelle n'a plus d'alias du tout).
Désactivez la recherche sémantique si votre passerelle ne sert aucun modèle d'embedding : laissée active, l'indexation échoue sans la moindre erreur visible.
NEXTAUTH_URL n'est pas qu'une redirection : la connexion vérifie les requêtes par rapport à elle. Réglez-la sur l'adresse que vous utilisez vraiment, et derrière un proxy ajoutez AUTH_TRUST_HOST=true. Une page de connexion qui s'affiche n'est pas une connexion qui marche.
Importer 500 favoris déclenche 500 webhooks. Ne réindexez pas à chacun : laissez le récepteur poser un drapeau, et lancez l'export une fois après 30 secondes de calme. Une petite VM à nous a été tuée par manque de mémoire avant ce changement.
Sources
Utile ? Dites-nous ce qu'il faut mesurer ensuite.