Setting Up Karakeep with Docker Compose¶
Rebrand Notice
Hoarder was rebranded to Karakeep in April 2025 due to a trademark issue. The old ghcr.io/hoarder-app/hoarder image is no longer updated. If you are upgrading from Hoarder, follow the official migration guide.
Introduction to Karakeep¶
Karakeep is a self-hosted bookmarking and note-saving application designed to help you manage and organise content effortlessly. It integrates MeiliSearch for full-text search and a headless Chrome browser for link previews and screenshots. This guide walks you through deploying Karakeep using Docker Compose.
Prerequisites¶
- Docker and Docker Compose installed on your system.
- Basic understanding of Docker Compose files.
- A
.envfile with the required environment variables.
Docker Compose Configuration for Karakeep¶
Docker Compose File (docker-compose.yml)¶
services:
web:
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
restart: unless-stopped
volumes:
- data:/data
ports:
- 3000:3000
env_file:
- .env
environment:
MEILI_ADDR: http://meilisearch:7700
BROWSER_WEB_URL: http://chrome:9222
# OPENAI_API_KEY: ...
DATA_DIR: /data
chrome:
image: gcr.io/zenika-hub/alpine-chrome:123
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:v1.15.0
restart: unless-stopped
env_file:
- .env
environment:
MEILI_NO_ANALYTICS: "true"
volumes:
- meilisearch:/meili_data
volumes:
meilisearch:
data:
Environment Variables (.env)¶
KARAKEEP_VERSION=release
NEXTAUTH_SECRET=YourRandomSecureKey
MEILI_MASTER_KEY=YourMeiliMasterKey
NEXTAUTH_URL=http://yourdomain.com:3000
Replace all secret values before deploying
Both NEXTAUTH_SECRET and MEILI_MASTER_KEY must be replaced with securely generated random values. Deploying with placeholder values makes authentication insecure. Generate values with: openssl rand -hex 32
- Replace
YourRandomSecureKeywith a securely generated secret (e.g., usingopenssl rand -base64 36). - Replace
YourMeiliMasterKeywith a securely generated key for MeiliSearch. - Update
NEXTAUTH_URLwith your domain or IP address and port.
Key Components of the Configuration¶
Service: web (Karakeep)¶
- Image:
ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release} - Ports: Maps
3000:3000for accessing Karakeep's web interface. - Environment Variables:
MEILI_ADDR: URL of the MeiliSearch service.BROWSER_WEB_URL: URL of the Alpine Chrome browser debugging service.DATA_DIR: Directory for storing Karakeep's data.
Service: chrome (Alpine Chrome)¶
- Image:
gcr.io/zenika-hub/alpine-chrome:123 - Command: Configures Chrome for headless operation with remote debugging enabled.
Service: meilisearch¶
- Image:
getmeili/meilisearch:v1.15.0 - Environment Variables:
MEILI_NO_ANALYTICS: Disables analytics for privacy.
Volumes¶
meilisearch: Stores MeiliSearch index data persistently.data: Stores Karakeep's application data persistently.
Preparing for Deployment¶
- Prepare the
.envFile: Fill out the.envfile with secure keys and URLs as described above. - Review Configuration: Ensure the
docker-compose.ymland.envfiles are correctly set up for your environment.
Deploying Karakeep¶
- Save the configuration in a
docker-compose.ymlfile and create the.envfile in the same directory. - Run the following command to start Karakeep and its dependencies:
- Access Karakeep at
http://yourdomain.com:3000(replace with your actual domain or IP and port).
Post-Deployment Tips¶
- Reverse Proxy: For improved security and accessibility, consider using a reverse proxy (e.g., Nginx Proxy Manager or Traefik) to serve Karakeep over HTTPS.
- OpenAI API Key: If you plan to use AI-powered tagging, set the
OPENAI_API_KEYin the.envfile. - Secure Your Setup: Use strong, randomly generated secrets for all environment variables.
Troubleshooting¶
- Service Not Starting: Check for missing or incorrect values in the
.envfile. - Connection Issues: Verify that
MEILI_ADDRandBROWSER_WEB_URLare correctly configured and that those services are running.
Updating Karakeep¶
Back up before updating
Your data lives in the data and meilisearch Docker volumes. Back these up before major version updates.
If there is an issue with this guide or you wish to suggest changes, please raise an issue on GitHub.