自建书签管理应用 Hoarder App

✨ Hoarder App 是一款自建书签管理应用,支持快速保存链接、笔记和图片,并利用AI自动打标签。其特点包括全文搜索、分类管理、批量操作和深色模式,用户可通过 Docker 自部署以控制隐私。应用正在快速迭代开发中,尚未稳定。

TOC

官网介绍

https://hoarder.app

根据👆上方官网中的信息,Hoarder 是一款专为数据爱好者设计的应用,能够快速保存链接、笔记和图片,并使用AI自动为其打标签以便快速检索。

有如下特点:

  • 让用户能够快速保存链接、笔记和图片,提升信息捕捉效率
  • 自动获取链接对应的标题、描述和图片,减少手动操作
  • 用户可以将书签按列表进行分类排序,帮助更好地组织信息
  • 使用利用 AI (支持 ChatGPT 和 Ollama 本地模型)为书签自动打标签(tag)
  • 提供全文搜索功能,用户能够快速查找所有书签内容
  • 支持自部署,用户可通过 Docker 快速部署从而控制隐私
  • 可以进行批量操作,方便管理大量书签的效率
  • 支持深色模式,为用户提供更舒适的阅读体验
💡
根据官网文档提示,该应用正在进行快速迭代开发中,目前尚未稳定。

自部署

Docker Compose

Docker 环境安装此处略去不表,请参考 Docker 官网并根据具体系统进行安装。

https://docs.docker.com/engine/install/
compose.yaml 配置如下
services:
  web:
    image: ghcr.io/hoarder-app/hoarder-web:${HOARDER_VERSION:-release}
    restart: unless-stopped
    volumes:
      - ./data:/data
    ports:
      - 3000:3000
    env_file:
      - .env
    environment:
      REDIS_HOST: redis
      MEILI_ADDR: http://meilisearch:7700
      DATA_DIR: /data
  redis:
    image: redis:7.2-alpine
    restart: unless-stopped
    volumes:
      - ./redis:/data
  chrome:
    image: gcr.io/zenika-hub/alpine-chrome:123
    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.6
    restart: unless-stopped
    env_file:
      - .env
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - ./meilisearch:/meili_data
  workers:
    image: ghcr.io/hoarder-app/hoarder-workers:${HOARDER_VERSION:-release}
    restart: unless-stopped
    volumes:
      - ./data:/data
    env_file:
      - .env
    environment:
      REDIS_HOST: redis
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      DATA_DIR: /data
      OPENAI_API_KEY: sk-
      OPENAI_BASE_URL: 
    depends_on:
      web:
        condition: service_started

根据👆的配置文件,还需要创建.env文件用于配置环境变量,根据实际情况调整

HOARDER_VERSION=release
MEILI_MASTER_KEY=aDwgUyiP+vswsR0Snc+PJIlX5pG9jANPoyuk5ZLlfwObzfnp
NEXTAUTH_URL=Np2ig9jLTA29GCH6oAdRdxwqllue/P+WZqFXGzkhUThJEyKi
NEXTAUTH_SECRET=http://localhost:3000

其中 MEILI_MASTER_KEY 和 NEXTAUTH_SECRET 应为随机字符串,建议通过如下 shell 命令生成:

openssl rand -base64 36

HOARDER_VERSION 为选用版本,不配置默认为 release,即当前稳定版,NEXTAUTH_URL需配置为当前 web 服务所对应的路径,如 http://localhost:3000,绑定了域名或配置了 Nginx 转发可根据实际情况调整。

之后根据实际情况配置 OPENAI_API_KEY 和 OPENAI_BASE_URL 这两项用于 AI 调用,此处可以使用 https://github.com/songquanpeng/one-api / https://github.com/Calcium-Ion/new-api/ 等类似项目,从而可以接入其他 LLM 。关于 https://github.com/songquanpeng/one-api 和 https://github.com/Calcium-Ion/new-api/ 的安装配置此处不做赘述,可直接参考项目说明文档进行。

以上配置填充并检查无误后即可通过 docker compose up -d 来启动服务端了。

App / 插件 安装

此处直接引用文档