Karakeep logo

Karakeep

A self-hostable bookmark-everything app with AI-based automatic tagging and full text search

Alternative to: pocket, raindrop.io


Karakeep (formerly Hoarder) is a self-hostable bookmark-everything app for saving links, notes, images, and PDFs, with a touch of AI for the data hoarders out there. It automatically fetches titles, descriptions and images for links, and uses AI to automatically tag content so it can be found later. It also supports full-text search, browser extensions, mobile apps, and a REST API.

Karakeep Docker Compose example

Self-host Karakeep on your own server, homelab, or VPS starting from this Docker Compose example. It runs Karakeep in Docker containers using the official ghcr.io/karakeep-app/karakeep:release, zenika/alpine-chrome:latest, getmeili/meilisearch:latest images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  web:
    image: ghcr.io/karakeep-app/karakeep:release
    restart: unless-stopped
    volumes:
      - data:/data
    environment:
      # Address of the Meilisearch instance used for full-text search.
      MEILI_ADDR: "http://meilisearch:7700"
      # Master key shared with Meilisearch to authenticate search requests. Must match the value on the meilisearch service.
      MEILI_MASTER_KEY: "changeme"
      # Address of the headless Chrome instance used to fetch and archive pages.
      BROWSER_WEB_URL: "http://chrome:9222"
      # Directory where Karakeep stores its database and assets.
      DATA_DIR: "/data"
      # Public URL where Karakeep is served. Used for authentication callbacks.
      NEXTAUTH_URL: "http://localhost:3000"
      # Secret used to sign authentication tokens. Generate with: openssl rand -base64 36
      NEXTAUTH_SECRET: "changeme"

  chrome:
    image: zenika/alpine-chrome:latest
    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

  meilisearch:
    image: getmeili/meilisearch:latest
    restart: unless-stopped
    volumes:
      - meilisearch:/meili_data
    environment:
      # Disables Meilisearch anonymous analytics collection.
      MEILI_NO_ANALYTICS: "true"
      # Master key protecting the Meilisearch API. Must match the value on the web service.
      MEILI_MASTER_KEY: "changeme"

volumes:
  data:
  meilisearch:

Values set to changeme are required — replace them with your own values before starting Karakeep.

Prefer a managed setup? WinterFlow installs, configures, and updates Karakeep for you using this same Docker Compose configuration.