Tropic Host

Karakeep sur un VPS : votre propre archive de favoris avec recherche et IA

8 min de lecture
Tropic
Karakeep sur un VPS : votre propre archive de favoris avec recherche et IA

Karakeep : installer une archive personnelle de favoris sur un VPS

Enregistrer un lien est facile. Le retrouver six mois plus tard l’est beaucoup moins, surtout si la page a changé, a disparu ou s’est perdue parmi des centaines de favoris.

Karakeep ne conserve pas seulement l’URL, mais aussi le contenu de la page, son aperçu, des notes, des images et des PDF. L’archive peut être recherchée par texte, organisée en listes et étiquetée automatiquement à l’aide de l’IA. Elle fonctionne sur votre propre VPS, et la connexion d’un modèle de langage reste facultative.

Nous allons examiner les possibilités de Karakeep, ses exigences serveur et son installation sur Ubuntu 24.04 avec Docker Compose, HTTPS et des sauvegardes.

Karakeep en sept étapes

  1. Créer un VPS Linux et faire pointer vers lui un sous-domaine tel que keep.example.com.
  2. Installer Docker Engine et Docker Compose.
  3. Télécharger le fichier officiel docker-compose.yml.
  4. Générer les secrets et démarrer Karakeep, Chrome et Meilisearch.
  5. Fermer le port interne 3000 et activer HTTPS avec Caddy.
  6. Créer le premier compte, puis désactiver les inscriptions publiques.
  7. Installer l’extension de navigateur ou l’application mobile et importer les favoris.

Aucune clé d’IA n’est nécessaire pour démarrer le service. Sans elle, l’enregistrement des pages, les listes, les notes, l’OCR et la recherche en texte intégral continuent de fonctionner. Seuls les tags automatiques et les résumés ne sont pas générés.

Qu’est-ce que Karakeep ?

Karakeep est une application open source auto-hébergée permettant de conserver des liens, des notes textuelles, des images et des PDF dans une bibliothèque unique. Le projet s’appelait auparavant Hoarder.

Son nom vient du mot arabe karakeeb, qui désigne des objets épars paraissant désordonnés, mais susceptibles d’avoir une valeur cachée. Cette image décrit bien une collection habituelle de favoris : elle contient beaucoup de ressources utiles, mais il est difficile de retrouver celle dont on a besoin.

Après l’ajout d’un lien, Karakeep récupère le titre et la description, extrait le texte lisible, crée un aperçu et peut, si nécessaire, enregistrer une copie locale de la page.

FonctionFavoris du navigateurKarakeep
Contenu conservéURL et titreTexte, aperçu, notes et pièces jointes
RecherchePar titre et adressePar contenu, tags et notes
Si la page disparaîtUne URL inactive subsisteLe texte, une capture ou une archive complète restent disponibles
OrganisationDossiersTags, listes manuelles et listes intelligentes
AccèsDans le navigateurWeb, extensions, iOS et Android
ServeurProfil du navigateur ou son cloudVotre VPS ou serveur domestique

Principales fonctions de Karakeep

Liens, notes, images et PDF

Chaque élément peut être un lien, une note textuelle ou un fichier téléversé. L’OCR extrait le texte des images et des PDF, qui deviennent eux aussi interrogeables. Il est possible de joindre une note, une citation ou un fichier supplémentaire à un contenu.

Recherche dans le contenu

Meilisearch indexe le texte enregistré, les notes et les métadonnées. Il n’est pas nécessaire de se souvenir du titre exact : une expression ou un thème suffit. Lorsque les embeddings sont configurés, une recherche sémantique fondée sur le sens devient également disponible.

Listes intelligentes et collaboratives

Un même élément peut appartenir à plusieurs listes simultanément sans être dupliqué. Une liste peut rester privée, être partagée par lien ou être modifiée avec d’autres utilisateurs.

Une liste intelligente correspond à une recherche enregistrée qui se met automatiquement à jour. Elle peut, par exemple, afficher tous les contenus portant le tag ai et ajoutés au cours de la semaine écoulée.

Archivage des pages

Par défaut, Karakeep conserve le texte extrait et une capture de la partie visible de la page. Il est également possible d’activer une capture complète, un PDF ou une archive HTML autonome. Cela protège la bibliothèque contre les liens morts, mais augmente l’utilisation du disque.

Les pages nécessitant une authentification, dotées d’une protection antibot complexe ou correspondant à des applications interactives peuvent ne pas être enregistrées entièrement. Il est préférable de téléverser séparément les contenus importants sous forme de PDF ou de fichier.

Étiquetage facultatif par IA

Karakeep peut produire des tags et de courts résumés via une API externe compatible avec OpenAI ou un modèle Ollama local. Sans IA, l’application reste un gestionnaire de favoris complet.

Un modèle local n’envoie pas les contenus à un fournisseur externe, mais nécessite nettement plus de RAM. C’est pourquoi Ollama est souvent hébergé séparément de l’instance principale de Karakeep.

Exigences serveur de Karakeep

La documentation officielle ne fixe aucun minimum précis pour le processeur et la RAM. Une installation complète comprend trois conteneurs :

  • Karakeep conserve la base de données et fournit l’interface ;
  • Chrome en mode headless ouvre les pages, exécute JavaScript et réalise des captures d’écran ;
  • Meilisearch indexe la bibliothèque.

Une configuration pratique pour un seul utilisateur sans LLM local est la suivante :

  • 2 vCPU ;
  • 2 Go de RAM ;
  • 20 à 30 Go sur SSD ou NVMe ;
  • Ubuntu 24.04 LTS ;
  • une adresse IP publique et un domaine.

Pour plusieurs utilisateurs, un import volumineux, de nombreux flux RSS et des PDF, 4 Go de RAM offrent davantage de confort. L’espace disque dépend du mode d’archivage : le texte occupe peu de place, tandis que les captures complètes, les PDF et les vidéos peuvent rapidement agrandir la bibliothèque.

Comment installer Karakeep sur un VPS

Cet exemple utilise Ubuntu 24.04 et le sous-domaine keep.example.com.

1. Configurer le DNS et le pare-feu

Créez un enregistrement DNS A pointant vers l’adresse IP du serveur, puis connectez-vous en SSH :

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

Ne fermez pas la session SSH actuelle avant d’avoir vérifié qu’une nouvelle connexion fonctionne.

2. Installer Docker

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

3. Télécharger la configuration de Karakeep

mkdir -p /opt/karakeep
cd /opt/karakeep

curl -fsSLo docker-compose.yml \
  https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml

Générez deux secrets différents :

openssl rand -base64 36
openssl rand -base64 36 | tr -dc 'A-Za-z0-9'

Créez /opt/karakeep/.env :

KARAKEEP_VERSION=release
NEXTAUTH_SECRET=INSEREZ_LE_PREMIER_SECRET
MEILI_MASTER_KEY=INSEREZ_LE_SECOND_SECRET
NEXTAUTH_URL=https://keep.example.com
DISABLE_SIGNUPS=false
DB_WAL_MODE=true
RATE_LIMITING_ENABLED=true

Ne publiez pas .env : le premier secret signe les jetons d’authentification et le second protège Meilisearch.

4. Fermer le port interne

Dans docker-compose.yml, remplacez :

ports:
  - 3000:3000

par :

ports:
  - 127.0.0.1:3000:3000

Le port 3000 ne sera ainsi plus directement accessible depuis Internet.

5. Démarrer les conteneurs

cd /opt/karakeep
docker compose up -d
docker compose ps

Les services web, chrome et meilisearch doivent être actifs. Pour afficher les journaux, utilisez :

docker compose logs --tail=200

6. Activer HTTPS

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
keep.example.com {
    reverse_proxy 127.0.0.1:3000
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Si le DNS est configuré et que les ports 80 et 443 sont ouverts, Caddy obtiendra automatiquement un certificat TLS. Ouvrez ensuite https://keep.example.com.

7. Créer un administrateur et fermer les inscriptions

Le premier utilisateur inscrit devient automatiquement administrateur. Après la création du compte, définissez dans .env :

DISABLE_SIGNUPS=true

Appliquez la modification :

cd /opt/karakeep
docker compose up -d

L’administrateur pourra toujours créer manuellement d’autres comptes.

Import, extensions et applications mobiles

Karakeep propose des extensions pour Chrome, Firefox et Safari, ainsi que des applications pour iOS et Android. Sur un téléphone, un lien peut être envoyé vers l’archive depuis le menu système de partage.

Les favoris existants peuvent être importés depuis le fichier HTML standard d’un navigateur, Pocket, Omnivore et d’autres services pris en charge. Il est préférable d’ajouter une archive volumineuse par lots : le serveur doit ouvrir les pages, extraire le texte, créer des captures et construire l’index de recherche.

Comment activer l’IA et l’archivage complet

Pour OpenAI, ajoutez dans .env :

OPENAI_API_KEY=VOTRE_CLE_API

Un autre service compatible avec OpenAI peut également nécessiter OPENAI_BASE_URL. Pour un modèle local, utilisez OLLAMA_BASE_URL avec une adresse accessible depuis le conteneur.

La copie locale complète d’une page s’active séparément :

CRAWLER_FULL_PAGE_ARCHIVE=true

Les options CRAWLER_FULL_PAGE_SCREENSHOT=true et CRAWLER_STORE_PDF=true sont également disponibles. N’activez pas tous les modes sans nécessité : ils augmentent sensiblement l’utilisation du disque. Après avoir modifié .env, exécutez docker compose up -d.

Sécurité, mises à jour et sauvegardes

Le robot d’exploration de Karakeep ouvre les adresses enregistrées par les utilisateurs depuis le réseau de votre serveur. Ne laissez donc pas les inscriptions publiques actives et n’accordez l’accès qu’à des personnes de confiance. Une protection SSRF de base existe, mais pour un service public, le projet officiel recommande d’isoler le navigateur ou de faire passer son trafic par un proxy limité.

Utilisez également HTTPS et des mots de passe robustes, n’exposez pas le port 3000 et mettez régulièrement les conteneurs à jour :

cd /opt/karakeep
docker compose up --pull always -d

La base principale et les contenus enregistrés se trouvent dans le volume Docker data. Arrêtez les conteneurs avant la copie :

mkdir -p /var/backups/karakeep
cd /opt/karakeep
docker compose stop

docker run --rm \
  -v karakeep_data:/source:ro \
  -v /var/backups/karakeep:/backup \
  alpine sh -c 'tar czf /backup/data-$(date +%F).tar.gz -C /source .'

cp .env docker-compose.yml /var/backups/karakeep/
docker compose start

Le nom karakeep_data suppose que le répertoire du projet est /opt/karakeep ; vous pouvez le vérifier avec docker volume ls. L’index de recherche Meilisearch peut être reconstruit, mais pour une grande bibliothèque, il est également utile de sauvegarder le volume karakeep_meilisearch.

Envoyez l’archive située dans /var/backups/karakeep vers un autre serveur, un NAS ou un stockage objet. Une copie conservée sur le même VPS ne protège ni contre une panne de disque ni contre la suppression de la machine virtuelle.

Quel VPS choisir pour Karakeep ?

Pour une bibliothèque personnelle sans Ollama, un VPS Linux avec 2 vCPU, 2 Go de RAM et 20 à 30 Go de NVMe convient. Pour un import volumineux, plusieurs utilisateurs et l’archivage complet, choisissez 4 Go de RAM et un disque plus grand.

Karakeep peut être exécuté sur un VPS de tropic.host : une adresse IP permanente simplifie la liaison du domaine, tandis que le NVMe est utile pour SQLite, l’index de recherche et les nombreux petits fichiers. Les ressources peuvent être augmentées à mesure que l’archive grandit.

Dimensionnez séparément les ressources d’un Ollama local : même un petit modèle de langage peut demander plus de mémoire que toute la pile principale de Karakeep.

Conclusion

Karakeep transforme des liens dispersés en bibliothèque personnelle interrogeable. Il conserve des pages, des notes, des images et des PDF, et prend en charge l’OCR, les listes, les extensions, les applications mobiles et l’étiquetage facultatif par IA.

Un petit VPS, Docker Compose, un domaine et HTTPS suffisent pour démarrer. Après l’installation, fermez les inscriptions, surveillez l’utilisation du disque et conservez une sauvegarde externe.

FAQ

Karakeep est-il gratuit ?

La version auto-hébergée est open source et n’impose aucun abonnement obligatoire. Il faut payer le VPS, le domaine, le stockage des sauvegardes et, si nécessaire, une API d’IA externe.

Une clé API est-elle nécessaire pour utiliser Karakeep ?

Non. L’enregistrement et l’indexation des contenus, les listes, les notes, l’OCR et la recherche en texte intégral fonctionnent sans IA. Un modèle est nécessaire pour les tags automatiques, les résumés et les fonctions associées.

De combien de RAM Karakeep a-t-il besoin ?

Un point de départ pratique pour un utilisateur sans Ollama est de 2 Go de RAM. Pour les imports volumineux, plusieurs utilisateurs et un traitement intensif, 4 Go sont plus confortables.

Peut-on importer des favoris depuis un navigateur ou Pocket ?

Oui. Karakeep prend en charge le fichier HTML standard de favoris du navigateur, Pocket, Omnivore et plusieurs autres formats. Après l’import, Karakeep traite les pages et les ajoute à la recherche.

L’article restera-t-il disponible si le site d’origine disparaît ?

Karakeep conserve le texte extrait et une capture d’écran et, lorsque l’archivage complet est activé, une copie locale ou un PDF. Les pages nécessitant une authentification et les applications web complexes peuvent n’être enregistrées que partiellement.