Docker Compose 部署 KaraKeep (原 Hoarder) 全攻略插图

KaraKeep 是一个“万物皆可存”的自托管应用。你可以把它当作加强版的 Pocket 或 Raindrop,它不仅能存链接,还能存笔记、图片,并利用 AI 自动整理。

✅ 核心功能

  • 智能抓取:自动提取网页标题、描述和预览图。

  • AI 标签:(可选) 支持 OpenAI/Ollama,自动为收藏内容打标签。

  • 全文搜索:基于 Meilisearch,毫秒级搜索体验。

  • 多端支持:有 Chrome/Firefox 插件以及 iOS/Android 客户端。


1. 准备工作

确保你的服务器已经安装了 Docker 和 Docker Compose。

Bash
# 检查 Docker 是否安装
docker -v
docker compose version

创建一个安装目录,保持文件整洁:

Bash

mkdir -p /root/data/docker_data/karakeep
cd /root/data/docker_data/karakeep

2. 创建配置文件

 

我们需要两个核心文件:docker-compose.yml (定义服务) 和 .env (存放敏感配置)。

步骤 2.1:创建 docker-compose.yml

 

使用 vim docker-compose.yml 创建文件,并粘贴以下内容:

YAML

version: "3.8"
services:
  web:
    image: ghcr.io/karakeep-app/karakeep:latest
    restart: unless-stopped
    volumes:
      - ./data:/data
    ports:
      - 3000:3000 # 如果3000端口冲突,可修改为 3030:3000
    env_file:
      - .env
    environment:
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      # 如果不需要 AI 功能,下面这行可以忽略;如果需要,请在 .env 中配置
      # OPENAI_API_KEY: ... 
      DATA_DIR: /data
    depends_on:
      - meilisearch
      - chrome

  meilisearch:
    image: getmeili/meilisearch:v1.11.1 # 建议锁定版本以保证稳定
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - MEILI_NO_ANALYTICS=true
    volumes:
      - ./meili_data:/meili_data

  chrome:
    image: gcr.io/zenika-hub/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

步骤 2.2:创建 .env 文件

 

这是最关键的一步。你需要生成几个密钥并填入其中。

首先,在终端运行以下命令生成两个随机密钥(运行两次,分别复制):

Bash

openssl rand -base64 32

然后,使用 vim .env 创建文件,粘贴并修改以下内容:

Ini, TOML

# --- 必须修改的部分 ---

# 1. 将生成的第一个随机字符串填在这里
NEXTAUTH_SECRET=你的随机字符串1

# 2. 将生成的第二个随机字符串填在这里
MEILI_MASTER_KEY=你的随机字符串2

# 3. 你的访问地址
# 如果你是本地测试,填 http://localhost:3000
# 如果你有域名,填 https://yourdomain.com (注意必须带 http/https)
NEXTAUTH_URL=http://localhost:3000

# --- 可选配置 (AI功能) ---
# 如果你想用 OpenAI 自动打标签,取消注释并填入 Key
# OPENAI_API_KEY=sk-xxxxxxxxxxxx
# OPENAI_BASE_URL=https://api.openai.com/v1 # 如果用第三方转发需修改

# --- 固定配置 (一般不用动) ---
KARAKEEP_VERSION=release

3. 启动服务

 

docker-compose.yml 所在的目录下执行:

Bash

docker compose up -d

等待镜像拉取完成。你可以使用以下命令查看日志,确保没有报错:

Bash

docker compose logs -f

如果看到类似 ReadyListening on port 3000 的字样,说明启动成功。


4. 访问与初始化

 

  1. 打开浏览器,访问 http://服务器IP:3000(或者你在 .env 里配置的域名)。

  2. 你会看到登录页面。

  3. 注册管理员账号:系统默认第一个注册的账号为管理员账号。


5. 常见问题与维护

 

如何升级?

 

随着 KaraKeep 的更新,你可能需要升级版本。执行以下命令即可:

Bash

cd /root/data/docker_data/karakeep
docker compose pull
docker compose up -d
docker image prune -f # 清理旧的镜像

AI 打标签无法使用?

 

  • 检查 .env 文件中 OPENAI_API_KEY 是否正确。

  • 如果你使用的是第三方 API(OneAPI 等),记得配置 OPENAI_BASE_URL

  • 修改 .env 后,必须执行 docker compose up -d 才能生效。

网页截图不显示?

 

KaraKeep 依赖 chrome 容器进行截图。如果截图失败:

  • 检查服务器内存是否充足(Chrome 比较吃内存)。

  • 检查 docker logs 看 chrome 容器是否正常运行。

  • 如果是 ARM 架构服务器(如甲骨文 ARM、树莓派),alpine-chrome 镜像可能需要更换为支持 ARM 的版本(如 zenika/alpine-chrome:with-puppeteer 尝试一下,或搜索特定 ARM 镜像)。


💡 进阶建议:配置反向代理

 

为了安全起见,建议不要直接通过 IP:3000 访问,而是使用 Nginx Proxy Manager 或 Caddy 配置 HTTPS 域名访问。配置反代时,只需将流量转发到 http://127.0.0.1:3000 即可。

下一步:如果你在安装过程中遇到 openssl 命令报错或者端口被占用的问题,请告诉我,我可以帮你排查。