Files
docker_compose/karakeep.yaml
T
2026-07-14 13:10:02 -05:00

105 lines
6.1 KiB
YAML

services:
######################
# KARAKEEP MAIN APP
######################
karakeep:
container_name: karakeep
image: ghcr.io/karakeep-app/karakeep:release
# all-in-one image, no need for separate worker container
restart: unless-stopped
volumes:
- /mnt/raid1/data/appdata/karakeep:/data
ports:
- 3005:3000
environment:
# https://docs.karakeep.app/configuration/environment-variables
TZ: America/Chicago
MEILI_ADDR: http://karakeep-meilisearch:7700
MEILI_MASTER_KEY: ${MEILI_MASTER_KEY} #generate with <openssl rand -base64 36>
BROWSER_WEB_URL: http://karakeep-chrome:9222
DATA_DIR: /data # DON'T CHANGE THIS
DISABLE_SIGNUPS: true # disables public signups
OCR_CONFIDENCE_THRESHOLD: 60 # default: 50 - A number between 0 and 100 indicating the minimum acceptable confidence from tessaract. If tessaract's confidence is lower than this value, extracted text won't be stored.
OCR_USE_LLM: true #If set to true, uses the configured inference model (OpenAI or Ollama) for OCR instead of Tesseract. Falls back to Tesseract if no inference provider is configured.
NEXTAUTH_URL: ${KARAKEEP_URL} #your server http://192.168.0.131:3005
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} #generate with <openssl rand -base64 36>
##### AI Inference Configs (For automatic tagging) #####
# https://github.com/karakeep-app/karakeep/blob/aa7a81e0cad81f51ce21e2977c60ab4cb66e9e43/docs/versioned_docs/version-v0.30.0/03-configuration/02-different-ai-providers.md
#OPENAI_API_KEY: ${OPENAI_API_KEY} # OPEN AI would take precedence over ollama if set
OLLAMA_BASE_URL: http://ollama:11434
# Make sure to pull the models in ollama first
INFERENCE_TEXT_MODEL: gemma4
INFERENCE_IMAGE_MODEL: llava
INFERENCE_CONTEXT_LENGTH: 4096 # default 2048 - max number of tokens that we'll pass to the inference model. Larger content is truncated
INFERENCE_JOB_TIMEOUT_SEC: 60 #How long to wait for the inference job to finish before timing out. Default:30
# If the model you're using doesn't support structured output, you also need:
# INFERENCE_OUTPUT_SCHEMA=plain
#INFERENCE_ENABLE_AUTO_SUMMARIZATION: true #Whether automatic AI summarization is enabled or disabled. Default false
#INFERENCE_FETCH_TIMEOUT_SEC: 300 # ollama only default:300 The timeout of the fetch request to the ollama server.
#OLLAMA_KEEP_ALIVE: 5m #control how long models stay in memory example value: "5m", default: not set
#EMBEDDING_TEXT_MODEL: #The model to be used for generating embeddings for the text. default "text-embedding-3-small"
#INFERENCE_MAX_OUTPUT_TOKENS: 2048 # The maximum number of tokens that the inference model is allowed to generate in its response. This controls the length of AI-generated content like tags and summaries. Default 2048
# Additional settings for media and video - Auto video archiving using yt-dlp.
#CRAWLER_ENABLE_ADBLOCKER: true # required to save YouTube videos - Whether to enable an adblocker in the crawler or not. If you're facing troubles downloading the adblocking lists on worker startup, you can disable this. default:true
#MAX_ASSET_SIZE_MB: 200 #default 50 #Sets the maximum allowed asset size (in MB) to be uploaded
#CRAWLER_VIDEO_DOWNLOAD: true #Whether to download videos from the page or not (using yt-dlp)
#CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE: 5000000 # The maximum file size for the downloaded video. Use -1 to disable the limit. default 50
#CRAWLER_VIDEO_DOWNLOAD_TIMEOUT_SEC: 7200 # 7200=2 hours # How long to wait for the video download to finish default 600
#CRAWLER_DOWNLOAD_BANNER_IMAGE: true # default: true Whether to cache the banner image used in the cards locally or fetch it each time directly from the website. Caching it consumes more storage space, but is more resilient against link rot and rate limits from websites.
#CRAWLER_STORE_SCREENSHOT: true #Whether to store a screenshot from the crawled website or not. Screenshots act as a fallback for when we fail to extract an image from a website. Default: true
#CRAWLER_FULL_PAGE_SCREENSHOT: true #Whether to store a screenshot of the full page or not. default false
#CRAWLER_FULL_PAGE_ARCHIVE: true # Whether to store a full local copy of the page or not. If disabled, only the readable text of the page is archived. default false
# Email configuration - Karakeep can send emails for various purposes such as email verification during signup. Configure these settings to enable email functionality.
SMTP_HOST: ${SMTP_HOST}
SMTP_PORT: 587
SMTP_SECURE: false # Whether to use SSL/TLS encryption. Set to true for port 465, false for port 587 with STARTTLS.
SMTP_USER: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASSWORD}
SMTP_FROM: ${SMTP_FROM}
#EMAIL_VERIFICATION_REQUIRED: false # Whether email verification is required during user signup.
networks:
- proxy-net
- ollama-net
######################
# CHROME
######################
karakeep-chrome:
image: gcr.io/zenika-hub/alpine-chrome:124
container_name: karakeep-chrome
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:
- ollama-net
######################
# MEILISEARCH - FULL CONTENT SEARCH
######################
# update instuctions: https://github.com/karakeep-app/karakeep/issues/543
# bring the whole stack down, backup & delete the data.ms directory under the Meilisearch volume, bump the Meilisearch image tag and bring it back up and re-index.
karakeep-meilisearch:
image: getmeili/meilisearch:v1.49.0
container_name: karakeep-meilisearch
restart: unless-stopped
environment:
TZ: America/Chicago
MEILI_NO_ANALYTICS: "true"
MEILI_MASTER_KEY: ${MEILI_MASTER_KEY}
volumes:
- /srv/docker/office/karakeep/meilisearch:/meili_data
networks:
- ollama-net
networks:
ollama-net:
external: true
proxy-net:
external: true