Blinko 是一个开源、可自托管、且深度集成 AI 的个人笔记工具。
简单来说,它结合了 Flomo(浮墨)的轻量级记录体验 和 AI(RAG 技术)的知识检索能力。它的核心理念是“快速捕捉想法,并通过 AI 帮你回忆和连接这些想法”。
以下是它的核心亮点:
1. 核心功能
⚡ 闪念笔记 (Quick Capture): 类似发朋友圈或 Flomo,主打“无压力记录”。打开就能写,支持 Markdown,适合记录灵感、碎片化知识、待办事项。
🤖 AI 增强检索 (RAG 技术): 这是它最大的特色。通常笔记多了很难找,Blinko 内置了 RAG (检索增强生成) 技术。你可以像和 ChatGPT 聊天一样问它:“我上周关于 Docker 的笔记记了什么?”,它会基于你私有的笔记内容回答你,而不是瞎编。
🔒 数据完全私有: 正如你刚才用 Docker 部署的那样,所有数据(文字、索引)都保存在你自己的服务器(Postgres 数据库)里,不经过任何第三方云端,隐私性极强。
📱 多端支持: 支持响应式网页(也就是你部署的这个 Web 版),也有基于 PWA 或 Tauri 封装的桌面端/移动端体验。
2. 为什么选择它?
对比 Notion:Blinko 更轻,打开更快,没有复杂的数据库和排版,专注于“记”和“问”。
对比 Obsidian:Blinko 自带数据库和 AI 服务端,不需要你自己折腾复杂的插件配置就能用 AI 搜笔记。
对比 Memos:Blinko 在 Memos 的“碎片记录”基础上,大大增强了 AI 的能力,不仅是记录,更是“第二大脑”。
3. 技术栈
前端/服务端:Next.js (TypeScript) —— 所以你需要配置
NEXTAUTH_URL。数据库:PostgreSQL (pgvector) —— 用于存储笔记文本和向量数据(供 AI 检索使用)。
搭建方法
使用飞牛NAS的自带docker面板,创建docker compose,为了数据持久化建议自定义一个稳妥的目录,选择创建docker-compose.yml,填入我根据官方docker-compose.yml修改的YAML文件,然后单击确定运行。
version: '3.8' # 版本号会自适应 networks: blinko-network: driver: bridge services: blinko-website: image: blinkospace/blinko:latest container_name: blinko-website environment: NODE_ENV: production # 启用 NEXTAUTH_URL,否则登录可能报错 # 如果是服务器部署,请将 localhost 换成你的服务器 IP 或域名 #NEXTAUTH_URL: http://localhost:1111 #NEXT_PUBLIC_BASE_URL: http://localhost:1111 # 生产环境请生成一个复杂的随机字符串 NEXTAUTH_SECRET: my_ultra_secure_nextauth_secret # 数据库连接正确,指向的是容器名 postgres DATABASE_URL: postgresql://postgres:mysecretpassword@postgres:5432/postgres depends_on: postgres: condition: service_healthy # 必须挂载数据卷,否则数据会丢失 volumes: # 确保 ./blinko-data 目录存在或者 Docker 有权限创建 - ./blinko-data:/app/.blinko restart: always logging: options: max-size: "10m" max-file: "3" ports: - "1111:1111" healthcheck: #使用 localhost 更稳妥 test: ["CMD", "wget", "--spider", "-q", "http://localhost:1111/"] interval: 30s timeout: 10s retries: 5 start_period: 30s networks: - blinko-network postgres: image: postgres:14 container_name: blinko-postgres restart: always ports: # 映射到宿主机 5435 没问题,防止和飞牛本地 postgres 冲突 - "5435:5432" environment: POSTGRES_DB: postgres POSTGRES_USER: postgres POSTGRES_PASSWORD: mysecretpassword TZ: Asia/Shanghai # 数据库建议持久化 volumes: # 数据将保存在当前目录下的 blinko-db 文件夹中 - ./blinko-db:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "postgres", "-d", "postgres"] interval: 5s timeout: 10s retries: 5 networks: - blinko-network
🔍 详细拆解(AI生成)
1. 网络部分 (networks)
networks: blinko-network: driver: bridge
作用:建立了一个名为 blinko-network 的虚拟局域网。
意义:只有在这个网络里的容器(blinko 和 postgres)才能通过“名字”互相访问。比如 blinko 可以直接用 postgres 这个名字找到数据库,而不需要知道它的具体 IP。
2. 服务 A:主程序 (blinko-website)
这是你直接交互的部分。
image: blinkospace/blinko:latest: 告诉 Docker 去下载 Blinko 官方最新版的镜像代码。
environment (环境变量):
这串代码相当于告诉 Blinko:“去 postgres 这台机器的
5432端口,用密码 mysecretpassword 登录数据库”。NEXTAUTH_URL: 告诉程序它的“门牌号”是 localhost:1111,用于登录跳转。
DATABASE_URL: 这是最关键的一行。postgresql://postgres:mysecretpassword@postgres:5432/postgres。
depends_on:
作用:启动顺序控制。
逻辑:Blinko 会说:“我先不急着启动,我要等 postgres 数据库**健康(healthy)**之后我再启动。”这避免了程序启动了但连不上数据库报错。
volumes (我们修复的部分):
将容器里的 /app/.blinko 映射到你电脑的 ./blinko-data。
意义:如果容器删了,你的附件、头像等文件还会留在你电脑里。
ports:
1111:1111:把你电脑的 1111 端口打通到容器的 1111 端口。这就是为什么你在浏览器输入 <nas ip>:1111 能看到页面的原因。
3. 服务 B:数据库 (postgres)
这是系统的记忆中枢。
image: postgres:14: 使用 PostgreSQL 14 版本(Blinko 需要支持向量插件的版本,通常官方镜像已包含或只需基础版)。
ports: 5435:5432:
容器内部用标准的 5432 端口。
对外映射为 5435:这是为了防止和你电脑上可能已经安装的其他 PostgreSQL(默认也是 5432)发生冲突。
volumes:
- ./blinko-db:/var/lib/postgresql/data
重要性:这是全文件最重要的配置。它把数据库的所有数据文件保存在你电脑的
blinko-db文件夹里。如果没有这一行,你重启 Docker,所有笔记都会消失。healthcheck:
作用:每隔 5 秒检查一次数据库是否“活着”。只有当它回应“我活着”,Docker 才会通知 blinko-website 可以启动了。









还没有评论,来说两句吧...