木雷坞头像
Karakeep Docker Compose部署:配置全文检索和网页抓取封面图

Karakeep Docker Compose部署:配置全文检索和网页抓取

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技术社区

原文链接:https://blog.csdn.net/mliev/article/details/170029617

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--