【Docker项目实战】使用Docker部署karakeep自托管书签工具
一、karakeep介绍
1.1 Karakeep项目简介
Karakeep 是一个可完全自我托管的个人知识管理平台,旨在帮助用户集中保存和智能管理网络上的任何有价值内容。它不仅支持链接书签、笔记、图片和 PDF 的统一存储,还通过 AI 技术实现自动标签、内容总结与全文搜索,结合 OCR、全页存档、视频下载等强大功能,打造一个安全、智能、跨平台的“第二大脑”。无论是网页片段、RSS 订阅,还是本地文件,Karakeep 都能帮你高效归档、智能分类,并通过多端应用与浏览器插件实现随时随地访问。
1.2 Karakeep主要特点
- 🔗 轻松书签网页链接,记录简短笔记,并上传图片与 PDF 文件。
- ⬇️ 自动提取链接的标题、描述和封面图,提升收藏效率。
- 📋 将书签灵活组织到自定义列表或文件夹中,便于分类管理。
- 🔍 支持对所有存储内容(包括图片中的文字)进行全文搜索。
- ✨ 利用 AI(如 ChatGPT 或本地 Ollama 模型)自动生成标签和内容摘要。
- 🤖 内置基于规则的自动化引擎,可自定义书签处理流程。
- 🎆 使用 OCR 技术从图像中提取可搜索的文本内容。
- 🔖 提供 Chrome 插件与 Firefox 扩展,一键快速收藏网页。
- 📱 支持 iOS 和 Android 原生应用,随时随地访问你的知识库。
- ". 自动抓取并归档订阅的 RSS 源内容,不错过任何更新。
- 🔌 提供 RESTful API 与多个第三方客户端,便于集成与扩展。
- 🌐 支持多语言界面与内容处理,满足国际化使用需求。
- 🗑️ 标记并保存内容中的高亮片段,便于后续回顾与引用。
- 🗄️ 使用 Monolith 实现网页全页离线存档,防止链接失效(404)。
- ▶️ 通过 yt-dlp 自动下载并归档视频内容,支持离线观看。
- ☑️ 支持批量导入、编辑、删除操作,提升大规模管理效率。
- 🔐 集成 SSO(如 OAuth2 / SAML)支持,便于团队或企业部署。
- 🌙 提供暗黑模式界面,保护夜间阅读视力。
- 💾 设计以自我托管为核心,保障数据隐私与长期可控性。
- ⬇️ 支持从 Chrome、Pocket、Linkwarden、Omnivore 等工具导入数据。
- 🔁 通过 Floccus 与浏览器书签同步,实现无缝过渡与双端备份。
- 📥 计划支持移动设备离线阅读,无网络也能查看书签内容。
- 🧠 未来将实现基于语义理解的智能书签搜索与推荐。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
| hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
|---|---|---|---|---|---|
| jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | karakeep | —— |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署karakeep自托管书签工具。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-10-04 13:29:05 UTC; 2 days ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 888 (dockerd)
Tasks: 65
Memory: 1.2G (peak: 1.4G)
CPU: 3min 23.296s
CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取karakeep镜像
4.1 创建部署目录
部署项目之前,我们需要创建一个部署目录。
mkdir -p /data/karakepp/ && cd /data/karakepp/
4.2 下载部署文件
我们将官方文提供的提供的docker compose部署文件直接放入到刚才创建的目录,如下所示:
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml
修改docker-compose.yml文件,将chrome服务的容器替换为
registry.cn-hangzhou.aliyuncs.com/jeson/alpine-chrome:124。
vim docker-compose.yml
services:
web:
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
restart: unless-stopped
volumes:
# By default, the data is stored in a docker volume called "data".
# If you want to mount a custom directory, change the volume mapping to:
# - /path/to/your/directory:/data
- data:/data
ports:
- 3000:3000
env_file:
- .env
environment:
MEILI_ADDR: http://meilisearch:7700
BROWSER_WEB_URL: http://chrome:9222
# OPENAI_API_KEY: ...
# You almost never want to change the value of the DATA_DIR variable.
# If you want to mount a custom directory, change the volume mapping above instead.
DATA_DIR: /data # DON'T CHANGE THIS
chrome:
image: registry.cn-hangzhou.aliyuncs.com/jeson/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
meilisearch:
image: getmeili/meilisearch:v1.13.3
restart: unless-stopped
env_file:
- .env
environment:
MEILI_NO_ANALYTICS: "true"
volumes:
- meilisearch:/meili_data
volumes:
meilisearch:
data:

4.3 编辑变量文件
新建及编辑.env变量文件,其中NEXTAUTH_URL部分需要替换为自己服务器的IP地址。
vim .env
root@jeven:/data/karakepp# cat .env
KARAKEEP_VERSION=0.27.0
NEXTAUTH_SECRET=gK947TfXkPi4toqX1bs1otVS4uGMdwUy7W7xt+gGjRV373XL
MEILI_MASTER_KEY=DVLxsDnxhHDnvdw4zdJEe/SAZe0/q6f06k+OLajcfCcGpaFH
NEXTAUTH_URL=http://192.168.3.88:3000
4.4 拉取镜像
执行以下命令,拉取karakeep相关镜像。
docker compose pull

五、部署karakeep服务
5.1 创建karakeep容器
执行以下命令,创建karakeep容器。
docker compose up -d

5.2 查看karakeep容器状态
检查karakeep容器运行状态,确保karakeep容器正常启动。
root@jeven:/data/karakepp# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
karakepp-chrome-1 registry.cn-hangzhou.aliyuncs.com/jeson/alpine-chrome:124 "chromium-browser --…" chrome 16 minutes ago Up 16 minutes
karakepp-meilisearch-1 getmeili/meilisearch:v1.13.3 "tini -- /bin/sh -c …" meilisearch 16 minutes ago Up 16 minutes 7700/tcp
karakepp-web-1 ghcr.io/karakeep-app/karakeep:0.27.0 "/init" web 16 minutes ago Up 16 minutes (healthy) 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp
5.3 检查karakeep容器日志
检查容器运行日志,确保karakeep服务正常运行。
docker compose logs

六、访问karakeep服务
6.1访问karakeep初始页
浏览器地址:
http://<个人的服务器IP>:3000,访问karakeep初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

6.2 注册karakeep账号
点击karakeep初始页的注册选项,自行填写登录账号信息,确认创建即可。


七、karakeep基本使用
7.1 设置中文语言
在用户设置——界面语言中,选择简体中文选项,时区则选择Asia/Shanghai,如下所示:

7.2 保存网站
将网站地址复制到以下位置,保存即可。

可以看成网站成功保存,也可以对该书签进行重新编辑书签名称等信息。


7.3 统计信息功能
用户设置——使用统计信息,可以查看karakeep的各项统计信息。

八、总结
通过本次实践,我们成功使用Docker部署了Karakeep自托管书签工具,搭建了一个集链接管理、笔记记录、文件存储于一体的个人知识库平台。Karakeep凭借其丰富的功能,如自动元信息提取、AI标签生成、全文搜索和浏览器插件支持,极大提升了信息收藏与检索的效率。整个部署过程简洁高效,得益于Docker容器化技术,服务运行稳定且易于维护。未来可以进一步探索其RSS抓取、Ollama本地AI模型集成等高级功能,打造更智能的个性化知识管理体系。
- 点赞
- 收藏
- 关注作者
评论(0)