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.