Taming Your Bookmarks: Why I Chose Self-Hosted KaraKeep

Dec 29, 2025·
Benjamin Rabiller
Benjamin Rabiller
· 3 min read
KaraKeep + Docker + OpenAI

We all know the struggle: hundreds of bookmarks piled up in Chrome or Firefox, tucked away in folders we never open. Let’s be honest, default browser management is insufficient. It lacks efficient full-text search, smart categorization, and most importantly, it offers zero visibility into the actual content of the link.

This is where KaraKeep comes in. I decided to self-host it to take back control of my bookmarks while adding a layer of artificial intelligence.


Why KaraKeep?

Unlike traditional solutions, KaraKeep does more than just store a URL. It captures the content, enables ultra-fast searching thanks to Meilisearch, and, best of all, integrates with OpenAI to automatically tag and summarize your readings.


Architecture and Docker Compose Installation

The setup relies on three pillars:

  1. KaraKeep (Web): The user interface.
  2. Meilisearch: The search engine.
  3. Alpine Chrome: A headless browser that allows KaraKeep to “read” pages for indexing.

Here is the docker-compose.yml file I use for my deployment (configured to run behind a Traefik reverse proxy):

services:
  web:
    image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
    restart: unless-stopped
    volumes:
      - data:/data
    env_file:
      - .env
    networks:
      - web
      - back
    labels:
      - traefik.enable=true
      - traefik.docker.network=web
      - traefik.http.routers.books.entrypoints=websecure
      - traefik.http.routers.books.tls.certresolver=myresolver
      - traefik.http.routers.books.rule=Host(`bookmarks.bracloud.fr`)
      - traefik.http.services.books.loadbalancer.server.port=3000

  chrome:
    image: gcr.io/zenika-hub/alpine-chrome:124
    restart: unless-stopped
    command:
      - --no-sandbox
      - --disable-gpu
      - --disable-dev-shm-usage
      - --remote-debugging-address=0.0.0.0
      - --remote-debugging-port=9222
      - --hide-scrollbars
    networks:
      - back

  meilisearch:
    image: getmeili/meilisearch:v1.13.3
    restart: unless-stopped
    env_file:
      - .env
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - meilisearch:/meili_data
    networks:
      - back

networks:
  web:
    external: true
  back:
    external: true

volumes:
  meilisearch:
  data:

.env File Configuration

The .env file is the heart of the configuration. This is where you link the services and activate the AI features.

🔑 Core Variables

These variables allow the web container to communicate with the search engine and the browser.

  • KARAKEEP_VERSION: Defines the image version (e.g., release).
  • MEILI_MASTER_KEY: A complex key to secure your search engine.
  • SECRET_KEY: Used to secure sessions (generate one via openssl rand -hex 32).

🤖 OpenAI: Turbocharging Your Bookmarks

This is where the AI magic happens. Once enabled, OpenAI will analyze every link to create relevant summaries and tags.

  • OPENAI_API_KEY: Your secret key retrieved from platform.openai.com.
  • OPENAI_MODEL: Use gpt-4o-mini for the best price/performance ratio (OpenAI pricing).
  • AUTO_AI_SUMMARY: Set to true for automation.
  • AUTO_AI_TAGS: Set to true for automatic keyword extraction.

Full .env Example:

# --- GENERAL ---
KARAKEEP_VERSION=release
SECRET_KEY=your_random_key
DATA_DIR=/data

# --- MEILISEARCH ---
MEILI_ADDR=http://meilisearch:7700
MEILI_MASTER_KEY=SuperSecureKey123!

# --- BROWSER (SCRAPING) ---
BROWSER_WEB_URL=http://chrome:9222

# --- ARTIFICIAL INTELLIGENCE ---
OPENAI_API_KEY=sk-proj-XXXX...
OPENAI_MODEL=gpt-4o-mini
AUTO_AI_SUMMARY=true
AUTO_AI_TAGS=true

Conclusion

Moving from “browser-based” management to a self-hosted KaraKeep instance radically changes how you consume information. Thanks to Meilisearch’s full-text indexing and OpenAI’s intelligence, your bookmarks are no longer a dead list, but a true knowledge base.

Benjamin Rabiller
Authors
DevOps/Cloud Architect

Actuellement ingénieur DevOps/Architecte Cloud, j’étais initialement interessé par l’administration système et grâce aux entreprises dans lesquelles j’ai pu travailler Oxalide et maintenant Claranet j’ai eu la chance de découvrir l’univers du Cloud et de l’automatisation.

Je me suis décidé a publier ce blog pour vous faire partager ma passion mais également pour enrichir avec modestie tout ce que l’on peut trouver sur internet. Bonne lecture !