
Karakeep 極簡安裝指南無 Meilisearch、Chrome 與 AI 依賴的單容器部署方案【免費下載鏈接】hoarderA self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search項目地址: https://gitcode.com/GitHub_Trending/ho/hoarder本篇技術指南聚焦 Karakeep原 Hoarder的極簡安裝Minimal Installation方案在不引入 Meilisearch 全文檢索引擎、Chrome 無頭瀏覽器與 OpenAI/Ollama 推理服務的前提下僅用單個容器完成自托管部署。你將掌握完整的最小化docker-compose.yml與docker run命令寫法、關鍵環境變量的底層校驗邏輯以及極簡模式下各功能模塊的實際降級行為并了解后續向完整安裝平滑升級的路徑。極簡安裝的本質犧牲哪些功能保留哪些能力Karakeep 的完整安裝見 Docker 安裝指南 與倉庫根目錄的 docker/docker-compose.yml默認由三組外部依賴共同支撐核心體驗依賴組件在完整安裝中的角色極簡安裝不部署后的行為Meilisearch全文檢索后端通過MEILI_ADDR連接搜索功能被完全禁用搜索入口與索引任務均不生效Chrome無頭瀏覽器負責頁面 JS 渲染、網站截圖、整頁歸檔爬取仍可工作但退化為純 HTTP 請求無法截取網站截圖含 JavaScript 動態內容的頁面無法被正確抓取OpenAI / OllamaAI 自動打標簽、摘要、圖像理解AI 自動打標簽被禁用這三種能力對發揮 Karakeep 的完整價值非常重要但如果你運行在資源受限的環境低配 VPS、樹莓派、內網 NAS、臨時驗證環境中完全可以用下面這份最小化編排文件跳過全部外部依賴只啟動一個容器。方式一使用最小化 docker-compose.yml將以下內容保存為docker-compose.yml并執行docker compose up -dservices: web: image: ghcr.io/karakeep-app/karakeep:release restart: unless-stopped volumes: - data:/data ports: - 3000:3000 environment: DATA_DIR: /data NEXTAUTH_SECRET: super_random_string volumes: data:逐項拆解這份編排文件image: ghcr.io/karakeep-app/karakeep:releaseKarakeep 的 All-in-OneAIO鏡像。從 docker/Dockerfile 的構建結構aio_builder、aio、web、workers等多個 target可以看出該鏡像內置了 Web 服務與全部后臺 worker單容器即可運行完整應用release標簽指向最新穩定版生產環境建議鎖定具體版本號如0.29.0以便控制升級節奏。volumes: - data:/data將數據目錄掛載為 Docker 命名卷。數據庫SQLite、默認資產存儲${DATA_DIR}/assets都位于該目錄下請務必保留持久化否則容器重建會丟失全部數據。ports: - 3000:3000將容器內 3000 端口映射到宿主機。若宿主機 3000 被占用只需修改左側宿主端口即可例如8080:3000不要去改動容器內端口。environment僅需兩個關鍵變量DATA_DIR指定持久化目錄NEXTAUTH_SECRET用于簽名 JWT 會話令牌詳見下文。方式二使用單條 docker run 命令不習慣 compose 的話也可以用下面這條等價命令直接啟動docker run -d \ --restart unless-stopped \ -v data:/data \ -p 3000:3000 \ -e DATA_DIR/data \ -e NEXTAUTH_SECRETsuper_random_string \ ghcr.io/karakeep-app/karakeep:release參數與 compose 版本一一對應-d后臺運行、--restart unless-stopped保證崩潰后自動拉起、-v data:/data掛載數據卷、-p 3000:3000暴露端口、兩個-e注入環境變量。啟動后訪問http://localhost:3000即可看到注冊/登錄頁面。必讀警告NEXTAUTH_SECRET 必須替換為真隨機串兩份配置示例中的super_random_string只是占位符必須替換為真正隨機的字符串。原文檔給出的推薦生成命令為openssl rand -hex 32為什么這個變量如此關鍵在 packages/shared/config.ts 中可以看到應用啟動時會調用signingSecret()若NEXTAUTH_SECRET未設置會直接拋出NEXTAUTH_SECRET is not set異常而該秘密用于簽發與校驗 NextAuth 的 JWT 令牌。使用固定弱口令意味著所有會話令牌都可被預測或偽造屬于嚴重安全風險。同理若日后啟用 Meilisearch其MEILI_MASTER_KEY也建議用openssl rand -base64 36之類的方式生成。極簡模式下仍然可用的功能源碼級佐證很多用戶擔心極簡安裝會殘廢實際上核心的書簽管理能力鏈接、筆記、圖片的增刪改查、標簽、列表、導入導出、RSS 等都完整保留。以下從源碼確認三處關鍵行為1. 爬取降級為純 HTTP 模式截圖與 JS 渲染不可用在 apps/workers/workers/crawler/crawlPage.ts 中browserlessCrawlPage()函數明確處理了無瀏覽器后端的場景日志會打印Running in browserless mode. Will do a plain http request ... Screenshots will be disabled.隨后通過fetchWithProxy直接抓取 URL 內容返回的screenshot與pdf均為undefined。對應地apps/workers/workers/crawler/browser.ts 只在配置了BROWSER_WEBSOCKET_URL直連調試 WebSocket或BROWSER_WEB_URL先取調試地址再解析 WebSocket時才啟動 Playwright 瀏覽器連接兩者都未設置時worker 走純 HTTP 路徑。因此在極簡模式下純靜態頁面服務端渲染的 HTML可以正常抓取正文與元數據依賴 JS 動態渲染的 SPA 頁面只會拿到初始 HTML內容可能缺失網站截圖、整頁歸檔CRAWLER_FULL_PAGE_ARCHIVE、PDF 快照等能力無法使用。2. 搜索功能整體關閉但索引邏輯不會報錯未設置MEILI_ADDR時搜索后端不可用全文搜索入口被整體禁用從 packages/shared/config.ts 的search配置段看搜索相關 workersearchWorker的索引任務在此場景下不會產生實際效果系統不會因此崩潰只會靜默跳過。這也是官方文檔強調搜索功能會被完全禁用的底層原因。3. 后臺 worker 仍然全部隨容器啟動極簡安裝并非只有一個 Web 進程。鏡像內通過 s6-overlay 同時拉起 Web 與 workers 服務見 docker/Dockerfile 中svc-web與svc-workers兩個服務定義。在 apps/workers/index.ts 中注冊的 worker 包括crawler、inference、search、adminMaintenance、video、feed、assetPreprocessing、webhook、ruleEngine、backup等。未配置對應依賴的 worker如無 Meilisearch 時的search、無 OpenAI/Ollama 時的inference會保持空閑而crawler純 HTTP 模式、adminMaintenance、feed等仍正常運轉。如需進一步裁剪可結合WORKERS_ENABLED_WORKERS/WORKERS_DISABLED_WORKERS環境變量按需啟停。兩個必配環境變量詳解極簡安裝只需要理解兩個環境變量但它們承擔了最關鍵的基礎職責變量必填默認值說明DATA_DIR是未設置持久化數據目錄數據庫SQLite存放于此資產圖片、截圖等默認存儲在${DATA_DIR}/assets可被ASSETS_DIR覆蓋。在容器內固定為/data與卷掛載點對應不要改動容器內值NEXTAUTH_SECRET是未設置用于簽名 JWT 令牌的隨機字符串缺失時應用啟動即失敗見 packages/shared/config.ts完整的變量清單含PORT、NEXTAUTH_URL、LOG_LEVEL、DB_WAL_MODE、MAX_ASSET_SIZE_MB、CRAWLER_*、INFERENCE_*、ASSET_STORE_S3_*、SMTP_*、OTEL_*等數十項請查閱 環境變量配置文檔其權威定義位于 packages/shared/config.ts通過 zod schema 解析process.env并對非法值做啟動期校驗。兩點提示若部署在非本機、且后續要接入瀏覽器擴展或移動端建議同時設置NEXTAUTH_URL指向實例的實際訪問地址如http://192.168.1.10:3000否則登出等場景可能出現跳轉地址錯誤極簡部署后若磁盤空間緊張可考慮DB_WAL_MODEtrueSQLite WAL 模式提升并發讀寫性能但不要在網絡盤上開啟。從極簡到完整按需補齊依賴的升級路徑極簡安裝適合受限環境但若后續需要全文搜索、截圖與 AI 打標簽無需重新部署數據只需在 compose 中補齊對應服務并增加環境變量。參照倉庫根目錄的 docker/docker-compose.yml 完整編排services: web: image: ghcr.io/karakeep-app/karakeep:release restart: unless-stopped volumes: - data:/data ports: - 3000:3000 environment: MEILI_ADDR: http://meilisearch:7700 BROWSER_WEB_URL: http://chrome:9222 # OPENAI_API_KEY: ... # 需要自動打標簽時取消注釋 DATA_DIR: /data chrome: image: ghcr.io/karakeep-app/karakeep-chrome:release restart: unless-stopped init: true meilisearch: image: getmeili/meilisearch:v1.41.0 restart: unless-stopped environment: MEILI_NO_ANALYTICS: true volumes: - meilisearch:/meili_data volumes: meilisearch: data:升級要點啟用搜索設置MEILI_ADDR指向 Meilisearch 服務地址生產環境還需為 Meilisearch 配置MEILI_MASTER_KEYopenssl rand -base64 36 | tr -dc A-Za-z0-9生成。啟用瀏覽器爬取設置BROWSER_WEB_URL或直連 WebSocket 的BROWSER_WEBSOCKET_URL指向 Chrome 容器即可恢復截圖、JS 渲染、整頁歸檔能力。啟用 AI 打標簽設置OPENAI_API_KEY或自建 Ollama 時設置OLLAMA_BASE_URL。從 packages/shared/config.ts 可見inference.isConfigured的判定邏輯正是!!OPENAI_API_KEY || !!OLLAMA_BASE_URL兩者均未配置時自動打標簽會被跳過。版本固定release標簽會在鏡像更新后需要顯式拉取docker compose up --pull always -d鎖版本號則每次升級只需修改版本并docker compose up -d。結語極簡安裝是 Karakeep 在資源受限環境下的務實之選一個容器、兩個環境變量即可跑起完整的書簽管理核心搜索、截圖、AI 打標簽等增強能力按需通過MEILI_ADDR、BROWSER_WEB_URL、OPENAI_API_KEY/OLLAMA_BASE_URL逐步補齊。無論從極簡起步還是直接完整部署都建議先通讀 環境變量配置文檔對應本版本歸檔見 version-v0.29.0 配置章節并結合 packages/shared/config.ts 理解每一項配置的真實作用避免出現配置了卻不生效的困惑。若需要整頁歸檔、整頁截圖、推理語言等更多進階能力請參考 完整 Docker 安裝指南?!久赓M下載鏈接】hoarderA self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search項目地址: https://gitcode.com/GitHub_Trending/ho/hoarder創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考