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 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 ##### 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