cover.webp

简介

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://ink.via.moe
      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-network

networks:
  blinko-network:
    driver: bridge

启动服务

一切就绪,起飞!

sudo docker compose up -d

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

sudo docker compose up logs -f | more

反向代理

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

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

看起来类似这样:

server {
    listen 80;
    listen [::]:80;
    
    # change it to your domain
    server_name ink.via.moe;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    # change it to your domain
    server_name ink.via.moe;

    # 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+AES
256:RSA+AES256';
    ssl_prefer_server_ciphers off;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    
    access_log /var/log/nginx/ink.via.moe.access.log;
    error_log /var/log/nginx/ink.via.moe.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,现在可以打开你的域名访问了,首个注册用户即为管理员。

开始使用

偏好设置

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

preference.webp

基本信息

basic-settings.webp

AI 服务提供商

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

ai-provider.webp

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

ai-arguments.webp

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

blinko-ai.webp

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

tavily.webp

内建有 MCP 集成

mcp-integration.webp

音乐设置

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

no-api.webp

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

with-api.webp

最后

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