Karakeep is a self-hosted bookmark and read-later manager. You save a URL, and Karakeep fetches the page content, takes a screenshot via headless Chrome, and stores everything locally — no third-party sync service involved. It supports full-text search (powered by Meilisearch), AI-assisted automatic tagging (optional, via OpenAI), lists, highlights, and a browser extension for one-click saving.
When to use it: You want a private alternative to Pocket, Instapaper, or Raindrop.io where your reading list and saved content never leave your own infrastructure.
Browser / Extension
│
▼
Traefik (HTTPS, lan-only)
│
▼
karakeep :3000 ← Next.js web app + API
│
├──► meilisearch :7700 ← full-text search index
└──► chrome.localhost :9222 ← headless Chromium for screenshots & content fetch
All three containers share an internal karakeep bridge network. Only karakeep is attached to the traefik network — chrome and meilisearch have no external exposure.
The Chrome sidecar is reachable through the chrome.localhost network alias. Chrome's DevTools endpoint rejects some requests whose Host header is a plain Docker service name such as chrome; using a *.localhost alias keeps the endpoint internal while satisfying Chrome's host validation.
Data is persisted to two bind-mounted directories on the host:
/mnt/SSD/Containers/karakeep/data— bookmarks, attachments, user data/mnt/SSD/Containers/karakeep/meilisearch— search index
Create the host directories before first run:
mkdir -p /mnt/SSD/Containers/karakeep/data
mkdir -p /mnt/SSD/Containers/karakeep/meilisearchThe traefik external network must exist (deploy Traefik first).
cp example.env .env
# Edit .env — fill in secrets and domain
docker compose up -dAccess at https://<KARAKEEP_DOMAIN>. Create your account on first visit.
| Variable | Required | Description |
|---|---|---|
KARAKEEP_VERSION |
yes | Image tag — release for latest stable, or pin e.g. 0.10.0 |
KARAKEEP_DOMAIN |
yes | Domain Traefik routes to this service |
NEXTAUTH_SECRET |
yes | Random secret for session signing — openssl rand -base64 36 |
MEILISEARCH_MASTER_KEY |
yes | Master key for Meilisearch — openssl rand -base64 36 |
OPENAI_API_KEY |
no | Enables AI automatic tagging on saved bookmarks |
Pinned version — bump KARAKEEP_VERSION in .env, then:
docker compose pull && docker compose up -dRolling release tag:
docker compose up --pull always -dKarakeep has a browser extension for Chrome/Firefox that lets you save the current page with one click. Find it in the Karakeep web UI under Settings → Browser Extension.