Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
起因是昨天刷到的一条微博里提到了 Karakeep,顿时来了兴趣,试了一下发现很符合我的需求,于是决定写一下部署过程。
我猜,除非你很早就有了整理意识,大多数人上网冲浪看到想收藏的东西,或是想记下的只言片语,都是直接在微信发给文件传输助手或者自己。久而久之就攒下了一大堆不知道是啥的网址,搜也不好搜 —— 至少我是这样的。
Karakeep 就很好地解决了这个需求,简单来说:
官方文档里就有部署教程,问题不大。我个人习惯用 Docker Compose 写好编排后扔到 NAS 上跑。下面给出我的 compose.yml
供参考:
services:
karakeep:
image: ghcr.io/karakeep-app/karakeep:release
restart: unless-stopped
ports:
- 8088:80
volumes:
- /path/to/your/karakeep:/data
environment:
- DATA_DIR=/data
- MEILI_ADDR=http://meilisearch:7700
- MEILI_MASTER_KEY=random_meli_key
- BROWSER_WEB_URL=http://chrome:9222
- NEXTAUTH_URL=http://192.168.x.y:8088
- NEXTAUTH_SECRET=another_random_key
depends_on:
- meilisearch
- chrome
meilisearch:
image: getmeili/meilisearch:v1.13.3
restart: unless-stopped
volumes:
- /path/to/your/meilisearch:/meili_data
environment:
- MEILI_MASTER_KEY=random_meli_key
- MEILI_NO_ANALYTICS=true
chrome:
image: ghcr.io/zenika/alpine-chrome:124
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
里面有几处地方需要你手动替换的:
8088
是服务会在你 NAS 上监听的端口,和 NEXTAUTH_URL=http://192.168.x.y:8088
对应,假如你的 NAS 内网 IP 为 192.168.10.2,希望它放在 9999
端口,那么后者也对应改成 http://192.168.10.2:9999
即可。这也是你访问 Karakeep 所使用的地址MEILI_MASTER_KEY
有两处,使用 openssl rand -base64 36
命令生成,注意这两处需要一致NEXTAUTH_SECRET
同样使用 openssl rand -base64 36
生成,和上面的不一样/path/to/your/karakeep
用于持久化保存 Karakeep 的数据,你需要在 NAS 上你认为合适的地方建一个文件夹,得到完整路径替换它/path/to/your/melisearch
同理,用于持久化保存搜索索引实际上我还用 Tailscale 和 Traefik 给服务搭了个内网穿透和 HTTPS 子域名 —— 但那样写起来就太长了,略了略了。
到了这一步,执行 docker compose up -d
之后就可以把服务跑起来并且通过浏览器打开访问并创建账号用起来了。但是下面才是重点,一些让它更好用的配置。
Karakeep 让我惊喜的能力之一就是它能自己对接 OpenAI 或兼容的 LLM 平台,利用 LLM 的能力为收藏的内容打 tag、生成总结。
众所周知,OpenAI 在国内不太容易用上。好在 5202 年的今天,大模型在国内基本上遍地开花了,模型服务提供商们基本上也提供了和 OpenAI 兼容的 API 接口可以直接用。
我这这里就拿阿里云的 Qwen3 举例了。理论上,你也可以用腾讯云、硅基流动之类的平台,都一样。广告位招租(不是
在上面那份 compose.yml
的 karakeep
的 environment:
里增加:
- OPENAI_API_KEY=你申请到的KEY
- OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
- INFERENCE_TEXT_MODEL=qwen-flash
- INFERENCE_IMAGE_MODEL=qwen3-vl-plus
- INFERENCE_LANG=中文
- INFERENCE_NUM_WORKERS=5
解释:
OPENAI_API_KEY
- 在大模型平台上申请到的 API KEYOPENAI_BASE_URL
- 平台提供的 OpenAI 兼容接口INFERENCE_TEXT_MODEL
- 用于对文本生成标签的模型,我就随便拍脑袋选了 Qwen3 Flash。这个任务不复杂,用不着 DeepSeek-R1 之类的推理模型。主要考虑输出速度和价格,又快又便宜就行INFERENCE_IMAGE_MODEL
- 用于给图像生成标签的模型,同理,只要是个具备视觉理解能力的模型就行INFERENCE_LANG=中文
- 要求模型使用中文生成标签。没有这一行的话默认会用英文INFERENCE_NUM_WORKERS=5
- 同时进行的 LLM 调用数,没啥特别,拍脑袋写的同样是那份 compose.yml
的 environment:
:
- CRAWLER_NUM_WORKERS=5
- CRAWLER_VIDEO_DOWNLOAD=true
- CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE=-1
加上上面的配置后,对于支持的网站,利用自带的 yt-dlp
自动把视频下载到本地。最多同时进行5个下载任务,下载大小不限。
就算搭好了 Karakeep,要是没有便捷的录入方式,最后我肯定还是会懒得专门为了这么点事打开网页把东西贴进去。
好在 Karakeep 提供了 Chrome 扩展和手机 App。
有了手机 App,平常看到什么就可以直接通过系统分享扔过去。也可以复制链接之后打开 App 贴进去。也可以用来当成一个普通的标签。
可恶啊,写到这里发现还是得有内网穿透才玩得转,但是这样会占用很多篇幅……
配置好后只要在浏览器右上角一点,就把当前在看的 URL 收录到 Karakeep 里。
Karakeep 它是开源的,本身也提供了 API,可以自己搭建更多玩法。比如接个 Telegram Bot 什么的。
要说有什么遗憾吗?有的,但不太是 Karakeep 本身的问题 —— 前面说到 Karakeep 会自动为你抓取链接内容并且生成缩略图、标签和总结。但这套逻辑遇到抖音、小红书这类反爬虫机制比较严格的平台,效果就不太理想了。
这些后面有机会再继续分享吧(如果没鸽的话…… _(:зゝ∠)_
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀