自部署 Blinko AI 笔记工具并配置 Cloudflare R2 对象存储

✨ 文章介绍了一款名为 Blinko 的开源自托管 AI 笔记工具,作为 memos 的替代方案,该工具支持纯文本与 Markdown 格式记录,通过“闪念”和“笔记”双模块管理内容,并集成基于 RAG 技术的自然语言搜索功能。文章重点阐述了部署流程:使用 Xata 的 PostgreSQL 数据库服务配置数据库,通过 Docker Compose 启动服务,并详细指导如何对接 Cloudflare R2 对象存储实现文件托管。

TOC

背景

之前自部署的 memos 笔记工具,从 0.18 版本后的更新项目有点与个人预期不符,也就停留在旧版本凑合使用。Blinko 作为后起之秀,几个月前分享过,但一直没有部署,这下有时间正好整一整。

https://tg.okhk.net/posts/2603

项目

Blinko 是一个开源、自托管的个人 AI 笔记工具,专注于隐私保护,使用 TypeScript 构建。它允许用户快速记录灵感,并通过自然语言查询轻松检索笔记。

https://github.com/blinko-space/blinkohttps://blinko.mintlify.app/

主要功能点

  1. 基于 AI 的笔记检索:利用先进的 RAG (Retrieval-Augmented Generation) 技术,用户可以使用自然语言查询快速搜索和访问笔记。
  2. 数据所有权:所有笔记和数据都存储在用户自托管的环境中,确保完全控制信息。
  3. 高效快捷:可以即时捕捉想法并以纯文本形式存储,支持 Markdown 格式,方便共享。
  4. 轻量级架构:基于 Next.js 构建,提供出色的性能和效率。
  5. 开放协作:作为开源项目,Blinko 欢迎社区贡献,所有代码都是透明的,可在 GitHub 上获取。

技术栈

  • 前端: React, Next.js
  • 后端: TypeScript
  • 数据库: PostgreSQL

部署

数据库

服务器上的储存空间不太够, 这里还是使用 DBaaS 服务 —— https://xata.io

https://xata.io/

根据指引创建好数据库(需要开启 Enable direct access to Postgres),得到 PostgreSQL Endpoint ,下面的 docker compose 配置文件会用到。

Compose.yaml


services:
  blinko-website:
    image: blinkospace/blinko:latest
    container_name: blinko
    restart: always
    environment:
      TZ: Asia/Shanghai
      NODE_ENV: production
      NEXTAUTH_SECRET: 此处自定义加密字符串,可随机生成
      DATABASE_URL: 此处使用上面得到的 PostgreSQL Endpoint
    volumes:
      - ./blinko:/app/.blinko 
    ports:
      - 127.0.0.1:1111:1111
    healthcheck:
      test: ["CMD", "curl", "-f", "http://blinko:1111/"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 30s
    networks:
      - blinko-network


networks:
  blinko-network:
    driver: bridge

执行 docker compose up -d 启动服务,docker compose logs -f -n 300 可查看运行日志。

页面

打开页面(域名解析等在此略去,根据实际情况自行处理),初始时会自动跳转到登录页,先手动注册第一个用户,此用户将会成为超级管理员权限,后续如需要注册其他用户需要去设置中开启允许注册。

设置

S3 对象存储

这里直接使用赛博菩萨 Cloudflare 家的 R2 对象存储,其兼容 S3 协议,且有 10GB 的免费额度。

登录 https://dash.cloudflare.com

  • 创建 bucket:
  • 创建 Token

点击 Use R2 with APIs 可查看 S3 compatible API,也就是 S3 Endpoint。

点击 Manage API tokens 可创建 Token:

得到如下图中的 Access Key ID 和 Secret Access Key

  • Blinko 配置 S3

根据上面得到信息依次填写即可