Karakeep的页面能打开后,还要分别确认收藏保存、全文检索和网页抓取。本文给出固定版本的三服务Compose与初始化步骤,用3条文本笔记验证保存和搜索,再用一个公开网页验证Chrome链路。适合在Linux Docker主机上建立个人资料收藏库。
配置依据是11月3日官方资料:应用0.34.1、配套Meilisearch v1.41.0,以及当日可核的Chrome固定标签。本文没有执行Docker拉取、启动或浏览器业务测试,输出判断均为参考验收方法。
三个服务分别做什么
| 服务 | 当前任务 | 持久化与访问 |
|---|---|---|
| web | 网页、账号、收藏与后台处理 | data:/data;主机回环3000 |
| meilisearch | 普通关键词的全文检索 | meilisearch:/meili_data;只走内部网络 |
| chrome | 抓取网页内容 | 内部9222;不映射公网端口 |

保存网址与取得网页正文是两个阶段。先用自拟文本验证存储和检索,能减少网站反爬、登录条件等外部因素。
准备新项目与密钥
在Docker主机终端执行,前提是已安装Docker Engine、Compose V2和OpenSSL,当前账号具有Docker权限:
docker version
docker compose version
openssl version
docker compose ls -a
docker volume ls --filter name=karakeep-demo
前三条须返回版本信息;daemon连接失败先修复Docker状态或账号权限。同名项目、卷已经存在时停止本例,换全新命名并同步修改项目与目录,不清理旧资料。确认没有冲突后执行:
mkdir ~/karakeep-demo && cd ~/karakeep-demo
创建或进入目录失败时不要执行后续写文件。只在本次新目录首次生成.env:
umask 077
printf 'NEXTAUTH_SECRET=%s\nMEILI_MASTER_KEY=%s\nNEXTAUTH_URL=http://127.0.0.1:3000\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
chmod 600 .env
.env应有两项独立随机密钥与浏览器地址,生成时无需打印内容。若OpenSSL失败或配置缺项,先修复再继续。后续重建容器沿用此文件,不通过重新生成密钥处理登录或搜索异常。
在同目录保存完整compose.yaml:
name: karakeep-demo
services:
web:
image: ghcr.1ms.run/karakeep-app/karakeep:0.34.1
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
env_file:
- .env
environment:
MEILI_ADDR: http://meilisearch:7700
BROWSER_WEB_URL: http://chrome:9222
DATA_DIR: /data
volumes:
- data:/data
chrome:
image: ghcr.1ms.run/karakeep-app/karakeep-chrome:156.0.8078.47-r2
restart: unless-stopped
init: true
command:
- --disable-gpu
- --disable-dev-shm-usage
- --hide-scrollbars
- --disable-blink-features=AutomationControlled
- --window-size=1440,900
meilisearch:
image: docker.1ms.run/getmeili/meilisearch:v1.41.0
restart: unless-stopped
env_file:
- .env
environment:
MEILI_NO_ANALYTICS: "true"
volumes:
- meilisearch:/meili_data
volumes:
data:
meilisearch:
MEILI_ADDR和BROWSER_WEB_URL使用Compose服务名。容器中的localhost指向容器自身,因此不能把它们改成主机浏览器所用的127.0.0.1。镜像获取采用毫秒镜像对应的完整来源路径,固定标签只明确请求对象,不承诺拉取成功或服务可用。
启动并通过回环地址访问
在Docker主机的~/karakeep-demo执行:
docker compose config --quiet && docker compose pull && docker compose up -d
docker compose ps -a
docker compose logs --tail=80 web meilisearch chrome
首行任一步失败先停止。ps -a应有web、chrome、meilisearch;没有服务先确认目录和项目名,退出或持续重启则看对应日志。配置解析失败先改YAML或.env,拉取失败按实际报错核对标签、网络与访问权限。端口占用先检查已有服务,不能为了试通就把管理口对公网开放。
如果Docker就在电脑上,直接打开http://127.0.0.1:3000。如果在云主机,在电脑终端建立隧道,替换账号与主机:
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:3000:127.0.0.1:3000 your_user@your_server
隧道窗口保持运行,从电脑浏览器访问同一地址。端口已占用、认证失败或远程服务未启动时先解决对应问题。此路径与.env中的NEXTAUTH_URL一致;网页打不开不能只依据云安全组猜原因。
首次使用注册入口建立自己的演示账号并登录。若看到已有资料而本次尚未初始化,先检查是否连到旧实例或旧卷,确认归属后才继续。
用三条文本分别验证保存与索引
在新增收藏入口选择文本/笔记类型。下面每行单独保存一条,第一列写在正文首行,第二列放下一行:
| 笔记第一行 | 正文示例 |
|---|---|
| OPS-DEMO-001 发布交接 | 演示资料。检索词:releasehandoff。发布后先核版本,再记录回退入口。 |
| OPS-DEMO-002 值班说明 | 演示资料。检索词:oncallguide。接班时核对告警接收人和当前待办。 |
| OPS-DEMO-003 资料索引 | 演示资料。检索词:resourceindex。记录资料用途与维护人,不粘贴真实凭据。 |
保存后逐条打开,核对正文,再在详情的标签区域添加work并保存。不要把表格一次粘成一条;若误删条目,只补建缺失项并注明,不能以补建结果证明旧记录保留。
在搜索框分别输入:
tag:work
releasehandoff
在没有其他同标签资料的新库中,第一项预期列出3条;第二项预期命中第1条。打开结果核原文,不能只看结果数量。这里使用ASCII唯一词是为了让演示结果容易核对,不代表中文检索不受分词条件影响。
如果普通词没有结果,先等索引处理后重试;仍为空,在Docker主机原目录执行:
docker compose logs --tail=120 web meilisearch
| 现象 | 下一步 |
|---|---|
| 列表中也找不到笔记 | 先核保存是否成功、当前账号及项目/卷归属 |
| 标签能过滤,普通词无结果 | 核Meili运行状态、索引任务和两服务日志;不先删应用数据 |
| 日志有Meili连接错误 | 核MEILI_ADDR和服务名,确认Meili没有退出 |
| 日志有认证错误 | 核两服务读同一份.env,MEILI_MASTER_KEY一致 |
修正配置后运行docker compose up -d,重复关键词与正文核对。日志不足以定位时保留原卷和配置,继续按实际错误处理,不用重置整个库掩盖问题。
再验证一次可选网页抓取
在新增收藏的链接入口保存https://cnb.cool/,只保存公开页面,等待后台处理,再打开详情查看网页标题、抓取状态及是否有正文。取得正文后,选取正文中一个有辨识度的词去搜索,核对返回内容是否来自这条链接。
若文本笔记可搜、网页没有正文,在Docker主机原目录执行:
docker compose logs --tail=120 web chrome
Chrome连接错误先核BROWSER_WEB_URL=http://chrome:9222和Chrome状态;网站返回登录页、验证页或拒绝抓取时,链接仍可能保存成功,但不能记为网页全文检索通过。尊重网站访问条件,不把开放9222或绕过站点限制当作修复方法。
保留数据重建与停用
在Docker主机原目录执行:
docker compose up -d --force-recreate
docker compose ps -a
服务恢复后刷新浏览器,必要时重新登录,重复核对3条笔记、标签与releasehandoff检索。空库先核项目名、挂载与原卷;普通词搜不到则查索引,不能重新录入后把它写成重建保留成功。
临时停止用docker compose stop,恢复用docker compose up -d。若用docker compose down移除容器,不加-v;.env、两个数据卷和项目目录都保留。容器重建检查不能替代备份恢复;升级时一起核应用依赖及Meilisearch迁移要求,不直接拿main分支的新依赖覆盖已有数据目录。
转载自 CSDN-专业IT技术社区




