通过 Docker 自托管部署 Blinko,构建 AI 驱动、强大的个人笔记和知识库管理系统

阅读体验更佳: https://blog.dejavu.moe/posts/docker-install-blinko-with-nginx/

简介

Blinko 是一个开源、支持自托管的 AI 笔记应用,拥有 强大的 AI 集成支持,以及 最大限度的数据自由

Blinko 的 核心理念 是将笔记分为两部分:

  • Blinko 用于捕捉突发灵感和碎片想法

  • Note 用于记录归纳长篇内容和知识库

我总结了它的 特性,包括且不限于以下这些:

  • AI 驱动的 RAG 搜索
  • 不锁定格式,导出笔记为 Markdown
  • 每日回顾卡片、AI 整理笔记
  • 公开笔记提供 RSS 支持
  • 提供响应式、美观的分享页面
  • 分享笔记设置权限和过期时间
  • 具有 PWA、Android、Windows、macOS、Linux 客户端应用
  • 可选连接 Blinko Hub 与其他实例连接,构建去中心化知识网络
  • 可拓展、自由的插件化支持
  • 微信、Telegram、n8n 接入和支持
  • ……

开始部署

Blinko 拥有官方合作托管服务,起步价格为 $1.5/月,新用户拥有 $5 体验金,付费的 20% 会捐赠给此项目,感兴趣可以 去试试

或者我们花费几分钟,即可快速部署一个属于自己的 Blinko 实例。

先决条件

  • Docker 以及 Docker Compose
  • Nginx 或其他反向代理服务器
  • TLS/SSL 证书

准备模板

新建目录用于 Blinko 的数据持久化

mkdir blinko && cd $_

生成一个 NEXTAUTH_SECRET 环境变量,填入下面模板的环境变量里

openssl rand -base64 32

新建一个 docker-compose.yml 模板文件 (使用 Docker 绑定数据卷)

services:  blinko:    image: blinkospace/blinko:latest    container_name: blinko-website    environment:      NODE_ENV: production      NEXTAUTH_URL: http://localhost:1111      # change it to your domain      NEXT_PUBLIC_BASE_URL: https://blinko.your.domain      NEXTAUTH_SECRET: # openssl rand -base64 32      DATABASE_URL: postgresql://postgres:blinko@postgres:5432/postgres    depends_on:      postgres:        condition: service_healthy    volumes:      - ./data/blinko:/app/.blinko    restart: unless-stopped    ports:      - 127.0.0.1:1111:1111    healthcheck:      test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:1111/"]      interval: 30s      timeout: 10s      retries: 5      start_period: 30s    networks:      - blinko-network  postgres:    image: postgres:14    container_name: blinko-postgres    restart: unless-stopped    environment:      POSTGRES_DB: postgres      POSTGRES_USER: postgres      POSTGRES_PASSWORD: blinko      TZ: Asia/Shanghai    volumes:      - ./data/postgres:/var/lib/postgresql/data    healthcheck:      test: ["CMD", "pg_isready", "-U", "postgres", "-d", "postgres"]      interval: 5s      timeout: 10s      retries: 5    networks:      - blinko-networknetworks:  blinko-network:    driver: bridge

启动服务

一切就绪,起飞!

sudo docker compose up -d

首次启动会进行数据库迁移,观察一下日志

sudo docker compose up logs -f | more

反向代理

以 Nginx 反向代理为例,新建一个虚拟主机配置文件

sudo nvim /etc/nginx/conf.d/your.blinko.domain.conf

看起来类似这样:

server {    listen 80;    listen [::]:80;        # change it to your domain    server_name blinko.your.domain;    return 301 https://$host$request_uri;}server {    listen 443 ssl;    listen [::]:443 ssl;    http2 on;    # change it to your domain    server_name blinko.your.domain;    # change it to your TLS/SSL cert path    ssl_certificate /path/to/your/cert/wild.via.moe.pem;    ssl_certificate_key /path/to/your/cert/wild.via.moe.key;    ssl_protocols TLSv1.2 TLSv1.3;    ssl_ecdh_curve X25519:P-256:P-384;    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE+AES128:RSA+AES128:ECDHE+AES256:RSA+AES256';    ssl_prefer_server_ciphers off;    ssl_session_timeout 1d;    ssl_session_cache shared:MozSSL:10m;        access_log /var/log/nginx/blinko.your.domain.access.log;    error_log /var/log/nginx/blinko.your.domain.error.log;    add_header X-Frame-Options "SAMEORIGIN" always;    add_header X-XSS-Protection "1; mode=block" always;    add_header X-Content-Type-Options "nosniff" always;    add_header Referrer-Policy "no-referrer-when-downgrade" always;    add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline' 'unsafe-eval'" always;    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;    # max upload limit    client_max_body_size 100M;    location / {        proxy_pass http://127.0.0.1:1111;        proxy_set_header Host $http_host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $realip_remote_addr;        proxy_set_header X-Forwarded-Proto $scheme;        proxy_http_version 1.1;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection "upgrade";        proxy_read_timeout 3600s;    }}

检查 Nginx 配置文件

sudo nginx -t

确认 OK,重载配置

sudo nginx -s reload

解析域名到服务器 IP,现在可以打开你的域名访问了,首个注册用户即为管理员。

开始使用

偏好设置

设置基本的语言和时间格式

基本信息

AI 服务提供商

除了已经列出的,同样兼容任何与 OpenAI 兼容的 API。此外,若机器网络无法访问 API,Blinko 支持设置 HTTP 代理。

下滑可以调整模型温度、分数、默认提示词等参数

我觉得这个 AI 集成还有个好处:可以将各家模型的免费额度集合在一个地方使用🤔

支持 Tavily,方便 AI Agent 快速、高效地访问互联网。注册后免费额度为 1000次/月,个人好像够用了?

内建有 MCP 集成

音乐设置

Blinko 有一个漂亮的 音乐播放器,可选注册一个 Spotify API 用于获取上传音乐元数据信息。

使用 Spotify API 解析音乐元数据后,看起来更好看点

最后

总之,Blinko 借助强大的 AI 集成、自然语言搜索以及丰富的插件和服务接口,是一个构建个人知识库的优秀工具。