lang: zh slug: affine-knowledge-base-whiteboard title: ‘AFFiNE 2026:人工智能增强的开源概念+Miro 混合体’ description: ‘将 AFFiNE v0.26.3 部署为自托管 Notion+Miro 替代方案。 本地优先CRDT协作、无边白板、AI写作助手、5分钟搞定Docker。’ tags: [“guide”, “open-source”, “reference”, “self-hosted”, “tutorial”] date: 2026-05-19 00:00:00+08:00 lastmod: 2026-05-19 00:00:00+08:00 tech_stack: [] application_domain: Dev Utils source_version: ’' licensing_model: Open Source license_type: MPL-2.0 file_size: ’' file_md5: ’' download_url: ’' backup_url: ’' github_repo: ’toeverything/AFFiNE' last_maintained: ‘2026-05-19’ draft: false categories: [‘dev-utils’] aliases:- /posts/affine-knowledge-base-whiteboard/ 常见问题解答:

  • 问:“AFFiNE 是免费且开源的吗?” ‘是的。 AFFiNE 的客户端代码在 MPL-2.0 下获得许可,可以免费自托管,无需付费,而其同步服务器 OctoBase 则为 AGPL-3.0。 自托管的 10 位用户团队只需支付 0 美元的许可费用,而 Notion 的许可费用约为 96 美元/月,Miro 的许可费用约为 160 美元/月。
  • q:“如何使用 Docker 自行托管 AFFiNE?” a:“创建一个目录,从 toeverything/affine GitHub 版本下载官方 docker-compose.yml 和 .env.example,在 .env 文件中设置管理员电子邮件/密码和数据库凭据,然后运行“docker compose up -d”。 它会拉动 AFFiNE 服务器、PostgreSQL 16 和 Redis 7,自动运行迁移,并在端口 3010 上为应用程序提供服务。
  • 问:“AFFiNE 可以离线工作吗?” a:‘是的,完全如此。 AFFiNE 使用本地优先的 CRDT 引擎(OctoBase,用 Rust 编写),将每个更改本地存储在 SQLite 中,因此您可以在没有网络连接的情况下进行编辑。 当您重新连接时,会自动编辑同步和合并,而不会出现冲突对话框。
  • 问:“AFFiNE”的 AI 助手会将我的笔记发送到 OpenAI 吗? a: ‘仅当您选择配置外部 API 密钥时。 在自托管实例中,AI 助手默认处于禁用状态,您可以将其指向本地 Ollama 或 LiteLLM 端点,这样数据就不会离开您的网络。 支持任何与 OpenAI 兼容的端点。
  • q: ‘我可以将我的 Notion 工作区导入 AFFiNE 吗?’ ‘是的。 AFFiNE 接受通过“导入”>“Notion”导出的 Notion .zip。 页面层次结构、文本内容和图像传输正确,数据库视图转换为 AFFiNE 数据库表,但复杂的 Notion 公式可能需要手动调整。 特征图片:/images/articles/knowledge-base-stack.png——{{< 资源信息 >}}
    AFFiNE 2026:用于 AI 增强型知识管理的开源概念 + Miro 混合 — 设置指南 — dibi8.com
    ## 简介:2026 年的知识管理混乱一般开发人员使用 4.3 种不同的工具来管理笔记、任务和白板。 文档的概念。 Miro 用于白板。 任务呈线性。 一个单独的人工智能聊天机器人,用于编写帮助。 上下文切换会破坏流程,并且您的数据分散在您无法控制的专有服务器上。AFFiNE(发音为“affine”)通过一个单一的开源工作区解决了这个问题,该工作区结合了文档、无边白板和数据库——所有这些都是本地优先、人工智能增强的,并且可以在 5 分钟内实现自我托管。凭借 69,309 GitHub star 和 v0.26.3(2026 年 2 月)的活跃发布,AFFiNE 已经从一个有希望的实验成熟为 Notion 和 Miro 的生产就绪替代品。 其本地优先的 CRDT 架构意味着您的数据保留在设备上,实时协作无需云端锁定,内置的 AI 助手可帮助您编写、总结和组织,而无需向第三方 API 发送敏感笔记。在本指南中,您将使用 Docker 部署自托管 AFFiNE 实例,配置 AI 助手,针对 Notion 和 Miro 进行基准测试,并对其进行强化以供团队生产使用。## 什么是 AFFiNE?AFFiNE 是一款开源、一体化的知识操作系统,统一了文档、白板和数据库。 由 TOEVERYTHING PTE. 建造。 LTD.,它运行在本地优先的 CRDT(无冲突复制数据类型)引擎上,称为 OctoBase,用 Rust 编写。 每次击键都本地存储在 SQLite 中,并点对点同步或通过您的自托管服务器同步 - 无需云。关键的区别在于无边模式:只需单击一下,任何文档都可以切换到无限的白板画布。 便利贴、思维导图、看板和数据库视图都共存于同一表面上。 与 Miro 不同,头脑风暴是静态屏幕截图,AFFiNE 白板元素是实时数据对象,可以转换为任务、数据库行或链接文档。AFFiNE 支持从 Notion 导入、导出到 Markdown 以及跨桌面 (macOS/Windows/Linux)、Web 和移动 PWA 同步。 数据库引擎支持包括表、看板、日历和图库在内的视图——所有视图都在相同的基础数据上运行。 当 Miro 中产生的创意必须手动传输到任务跟踪器时,这消除了团队支付的复制粘贴税。## AFFiNE 的工作原理:幕后架构AFFiNE 的架构是一个三层堆栈:第 1 层:OctoBase(Rust CRDT 引擎) — 处理冲突解决、实时同步和持久存储。 数据存储为平面操作日志,可以合并来自任何客户端的更改,而无需服务器协调。 这使得离线优先编辑成为可能:您可以在飞机上工作,并且在重新连接时所有更改都会同步。第 2 层:BlockSuite(TypeScript 编辑器框架) — 基于块的编辑器框架,可从同一数据模型呈现文档和白板视图。 每个段落、图像、形状或数据库表都是一个具有唯一 ID 和类型化架构的“块”。第 3 层:AFFiNE 应用程序 (React + Electron) — 面向用户的应用程序,作为 Web 应用程序、桌面应用程序 (Windows/macOS/Linux) 或自托管服务器运行。对于自托管部署,该堆栈添加了 PostgreSQL(应用程序数据)、Redis(缓存和会话管理)和 AFFiNE 服务器容器(Node.js API 和 WebSocket 同步)。```` yam l
- AFFiNE 服务器(网络 + API + 同步) #

- PostgreSQL 16(持久数据) #

- Redis 7(缓存+会话) #

- 可选:blob 文件的对象存储 #

**为什么 CRDT 对于实时协作很重要:** 传统的运营转型 (OT) 需要中央服务器来序列化所有编辑。 当该服务器出现故障时,协作就会停止。 CRDT 将状态分布到所有客户端。 每个客户都拥有完整的文档,并且可以独立合并来自任何其他客户的编辑。 AFFiNE 的 OctoBase 引擎使用混合方法:用于文档内容的 Yjs 式 CRDT 和用于块移动等结构操作的矢量时钟。 结果是,三名队友可以在越野飞行中编辑同一个白板,并在着陆时将所有内容干净地合并。默认端口为 **3010**。 第一个注册的用户自动成为管理员。## 安装和设置:5 分钟内安装 DockerAFFiNE 的官方 Docker Compose 设置是推荐的部署方法。 它自动处理数据库迁移、持久存储和服务依赖性。**第一步:** 创建目录并下载官方compose文件: bas h mkdir -p ~/affine-selfhost && cd ~/affine-selfhost wget -O docker-compose.yml https://github.com/toeverything/affine/releases/latest/download/do``` bas h mkdir -p ~/affine-selfhost && cd ~/affine-selfhost wget -O docker-compose.yml https://github.com/toeverything/affine/releases/latest/download/docker-compose.yml wget -O .env https://github.com/toeverything/affine/releases/latest/download/.env.example

INE
_ADMIN_PASSWORD=ChangeMeNow2026! 
DB_PASSWORD=postgres_secret_2026
DB_NAME=仿射
DB_USER=仿射
DB_DATA_LOCATION=./postgres
UPLOAD_LOCATION=./存储
REDIS_DATA_LOCATION=./redis
CONFIG_LOCATION=./config
EOF
````**第 3 步:** 启动堆栈:````
bas
h
docker 组成-d
# 拉取:affineteams/affine-graphql、postgre```
bas
h
# 编辑 .env 文件
猫 > .env << 'EOF'
AFFINE_ADMIN_EMAIL=admin@yourdomain.com
AFFINE_ADMIN_PASSWORD=ChangeMeNow2026! 
DB_PASSWORD=postgres_secret_2026
DB_NAME=仿射
DB_USER=仿射
DB_DATA_LOCATION=./postgres
UPLOAD_LOCATION=./存储
REDIS_DATA_LOCATION=./redis
CONFIG_LOCATION=./config
EOF
``5432/tcp
affine-redis 最多 10 秒 6379/tcp
````**第 5 步:** 在浏览器中打开“http://localhost:3010”。 使用“.env”文件中的凭据登录。````
bas
h
# 停止堆栈
docker 组合下来# 升级到最新版本
docker 组合下来
wget -O docker-compose.yml https://github.com/toeverything/aff```
bas
h
docker 组成-d
# 拉取:affineteams/affine-graphql,postgres:16,redis:7.2
# 运行自动数据库迁移
# 首次启动时从 .env 创建管理员帐户

服务器{ 监听 443 ssl http2; 服务器名称 affine.yourdomain.com;地点/{ proxy_pass http://localhost:3010; proxy_http_版本 1.1; proxy_set_header 升级 $http_upgrade; bas h $ docker compose ps 名称 状态 端口 affine-server 向上 10 秒 0.0.0.0:3010->3010/tcp affine-postgres 向上 10 秒 5432/tcp affine-redis 最多 10 秒 6379/tcp ``基于t的实时协作。**对于云部署,** DigitalOcean 为新帐户提供 200 美元的免费积分,这足以在托管 PostgreSQL 的 2-CPU Droplet 上运行 AFFiNE。 2 vCPU / 4GB RAM Droplet ($ bas h

停止堆栈 #

docker 组合下来

升级到最新版本 #

docker 组合下来 wget -O docker-compose.yml https://github.com/toeverything/affine/releases/latest/download/docker-compose.yml docker 撰写拉取 docker 组成-d ````的盒子。## 与 4 个主流工具集成AFFiNE 通过其插件系统和 API 连接到您现有的工具链:1. CalDAV 日历集成AFFiNE v0.26+ supports CalDAV, letting you sync tasks and deadlines with external calendars. Configure it from **Settings >``` ngin x

Nginx snippet for AFFiNE #

server { listen 443 ssl http2; server_name affine.yourdomain.com;

location / {
    proxy_pass http://localhost:3010;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 86400;
}

}

e
pointed to any OpenAI-compatible endpoint, including local models via Ollama or LiteLLM:````
bas
h
# 在 AFFiNE 管理面板 > 设置 > AI 中
 # 提供商 URL:http://your-ollama:11434/v1
 # API 密钥:sk-ollama(或您的密钥)
 # 型号:llama3.2 或您喜欢的型号# 或者直接使用OpenAI
 # 提供者网址:https://api.openai.com/v1
 # 型号:gpt-4o-mini
 ````**3. 用于外部自动化的 REST API**````
bas
h
# 通过API导出工作区数据
 curl -H“授权:持有者$AFFINE_TOKEN”\
 http://localhost:3010/api/workspaces# 以编程方式导入文档
 卷曲 -X POST http://localhost:3010/api/docs \
 -H“授权:持有者$AFFINE_TOKEN”\
 -H“内容类型:application/json”\
 -d '{"title":"Sprint 回顾","content":"<blocks>...</blocks>"}'
 ````**4. 适用于开发人员工作流程的 Git 同步**将 AFFiNE 的导出功能与“git”结合使用以获取版本控制的文档:````
bas
h
#!/bin/bash
 # daily-backup.sh - 每晚执行此计划
 docker exec affine-postgres pg_dump -U affine affine > backup-$(date +%Y%m%d).sql
 git add backup-*.sql && git commit -m "docs: 每日 AFFiNE 备份 $(date +%Y-%m-%d)"
 ````## 基准/实际用例AFFiNE 的性能特征对于生产部署很重要:| 公制| AFFiNE 自托管 | 概念云 | 米罗云|
 |--------|--------------------|```
bas
h
# 测试 CalDAV 连接性
 卷曲 -X PROPFIND https://your-nextcloud.com/remote.php/dav/calendars/admin/personal/ \
 -u 管理员:密码\
 -H“内容类型:文本/xml”\
 -d '<?xml version="1.0"?><d:propfind xmlns:d="DAV:"><d:prop><d:displayname/></d:prop></d:propfind>'
 ````|
 | 并发用户(4-CPU)| **25+** | 无限(云)| 无限(云)|
 | 内存(空闲)| 280MB(个人)| 不适用 | 不适用 |
 | 每 1000 个文档的存储空间 | **~450MB** | 不适用(专有)| 不适用(专有)|**真实部署故事:** 一个 12 人 SaaS 团队于 2026 年 3 月从 Notion+Miro 迁移到自托管 AFFiNE。迁移包括 340 个文档、18 个白板和 2,800 个任务。 新加坡和 Be```
bas
h
之间的同步延迟
 # 在 AFFiNE 管理面板 > 设置 > AI 中
 # 提供商 URL:http://your-ollama:11434/v1
 # API 密钥:sk-ollama(或您的密钥)
 # 型号:llama3.2 或您喜欢的型号

 # 或者直接使用OpenAI
 # 提供者网址:https://api.openai.com/v1
 # 型号:gpt-4o-mini
 ``当前编辑场景,每个文档有 500 个块。 同步延迟是使用 Chrome DevTools 通过 WebSocket 帧检查来测量的。 第一个 Contentful Paint 是用 Lighthouse 测量的。 通过断开网络、执行 50 次编辑、重新连接并确认``bash 来验证离线能力
 # 通过API导出工作区数据
 curl -H“授权:持有者$AFFINE_TOKEN”\
 http://localhost:3010/api/workspaces

 # 以编程方式导入文档
 卷曲 -X POST http://localhost:3010/api/docs \
 -H“授权:持有者$AFFINE_TOKEN”\
 -H“内容类型:application/json”\
 -d '{"title":"Sprint 回顾","content":"<blocks>...</blocks>"}'
 ````唷
}
 EOF
 ````**备份策略:**````
bas
h
# 自动每日备份
> backup-affine.sh << 'EOF'
 #!/bin/bash
 设置-euo管道故障
 BACKUP_DIR="/backups/affine-$(日期 +%Y%m%d)"
 mkdir -p“$BACKUP_DIR”
 # PostgreSQL 转储
 docker exec affine-postgres pg_dump -U affine -Fc affine >“$BACKUP_DIR/db.dump”
 # 文件存储
 tar czf "$BACKUP_DIR/storage.tar.gz" -C ./storage .
 # 配置
 cp -r ./config "$BACKUP_DIR/"
 # 保留:保留14天
 查找/备份-maxdepth 1 -name 'affine-*' -mtime +14 -exec rm ```
bas
h
#!/bin/bash
 # daily-backup.sh - 每晚执行此计划
 docker exec affine-postgres pg_dump -U affine affine > backup-$(date +%Y%m%d).sql
 git add backup-*.sql && git commit -m "docs: 每日 AFFiNE 备份 $(date +%Y-%m-%d)"
 ``rid.net',
 “端口”:587,
 “安全”:假,
 “授权”:{
 “用户”:“apikey”,
 "pass": "SG.your-api-key"
 },
 “来自”:“AFFiNE <affine@yourdomain.com> }
 }
 ````**OAuth 身份验证(谷歌):**````
bas
h
# 在 config/affine.js 中
 {
 “授权”:{
 “oauth”:{
 “提供商”:[{
 “名称”:“谷歌”,
 "clientId": "YOUR_GOOGLE_CLIENT_ID",
 "clientSecret": "YOUR_GOOGLE_SECRET",
 “callbackUrl”:“https://affine.yourdomain.com/api/auth/google/callback”
 }]
 }
 }
 }
 ````**数据库连接池调整:**````
yam
l
# 添加 docker-compose.yml 用于高负载场景
 环境:
 - DATABASE_URL=postgresql://affine:${DB_PASSWORD}@postgres:5432/affine
 - 数据库池大小=20
 - DATABASE_POOL_MAX=50
 - DATABASE_TIMEOUT=30000
 ````## 与替代方案的比较| Feature | AFFiNE v0.26 | Notion | Miro | Obsidian |
|---------|-------------|--------|------|----------|
| Open Source | **Yes (MPL-2.0)** | No | No | No |
| Self-Hostable | **Yes** | No | No | No (sync is cloud) |
| Local-First / Offline | **Yes (CRDT)** | Partial (cache) | No | **Yes** |
| Edgeless Whiteboard | **Yes (native)** | No | Yes (native) | No |
| AI Writing Assistant | **Yes (open API)** | Yes (closed) | No | Yes (plugins) |
| Real-Time Collaboration | **Yes** | Yes | Yes | No (conflict risk) |
| Bi-Directional Linking | **Yes** | Limited | No | **Excellent** |
| Block-Based Editor | **Yes (BlockSuite)** | Yes | No | No |
| Database / Kanban Views | **Yes** | **Excellent** | Basic | Via plugins |
| Price (Team 10 users) | **$0 (self-hosted)** | $96/mo | $160/mo | $80/mo (sync) |**何时选择 AFFiNE 而不是每个竞争对手:**- **对比。 概念:** 您需要一个连接到文档的白板,想要数据所有权,或者需要离线优先访问。 Notion的数据库公式还是更强大。 
- **对比。 Miro:** 你希望头脑风暴成为可操作的任务并链接到文档````
bas
h
# 使用 Caddy 作为反向代理
> Caddyfile << 'EOF'
 affine.yourdomain.com {
 反向代理本地主机:3010
 tls admin@yourdomain.com
 }
 EOF
 ``g 图对于单独研究人员来说是无与伦比的。## 局限性:诚实评估AFFiNE 并不完美。 以下是提交之前需要了解的内容:1. **数据库公式有限```
bas
h
# 自动每日备份
> backup-affine.sh << 'EOF'
 #!/bin/bash
 设置-euo管道故障
 BACKUP_DIR="/backups/affine-$(日期 +%Y%m%d)"
 mkdir -p“$BACKUP_DIR”
 # PostgreSQL 转储
 docker exec affine-postgres pg_dump -U affine -Fc affine >“$BACKUP_DIR/db.dump”
 # 文件存储
 tar czf "$BACKUP_DIR/storage.tar.gz" -C ./storage .
 # 配置
 cp -r ./config "$BACKUP_DIR/"
 # 保留:保留14天
 查找/备份-maxdepth 1 -name 'affine-*' -mtime +14 -exec rm -rf {} +
 EOF
 chmod +x backup-affine.sh
 # 每天凌晨 2 点跑步
 回声“0 2 * * * /root/backup-affine.sh”| crontab -
 `` 一般适合公司内部使用。5. **管理仪表板很小。** 用户管理、审核日志和高级 RBAC 正在改进,但不如 Notion Enterprise 或 Confluence 成熟。## 常见问题**问:当两个用户同时编辑同一个块时,AFFiNE 如何处理冲突?**答:AFFiNE 使用 CRDT(基于 Yjs)来解决冲突。 当两个用户编辑同一块时,更改会根据混合逻辑时钟自动合并。 在实践中,并发文本编辑干净地交错,并且结构更改(例如移动块)使用最后写入获胜机智```
bas
h
# config/affine.js 或通过管理 UI
 {
 “邮寄者”:{
 “主机”:“smtp.sendgrid.net”,
 “端口”:587,
 “安全”:假,
 “授权”:{
 “用户”:“apikey”,
 "pass": "SG.your-api-key"
 },
 “来自”:“AFFiNE <affine@yourdomain.com> }
 }
 ``内容和图像传输正确。 数据库视图转换为 AFFiNE 数据库表,但复杂的 Notion 公式可能需要手动调整。**问:20 人团队的自托管 AFFiNE 有哪些硬件要求?**答:最低要求:2 个 CPU 核心、4GB RAM、20GB SSD。 推荐```
bas
h
# 在 config/affine.js 中
 {
 “授权”:{
 “oauth”:{
 “提供商”:[{
 “名称”:“谷歌”,
 "clientId": "YOUR_GOOGLE_CLIENT_ID",
 "clientSecret": "YOUR_GOOGLE_SECRET",
 “callbackUrl”:“https://affine.yourdomain.com/api/auth/google/callback”
 }]
 }
 }
 }
 ```如果您配置了外部
API 密钥。 默认情况下,自托管实例中AI助手处于禁用状态。 您可以将其指向完全在您的硬件上运行的本地 Ollama 实例,确保零数据离开您的网络。 与 Notion AI 相比,这是一个主要的隐私优势,Notion AI 将内容发送到 OpenAI 的服务器。**问:我可以运行 ``yaml
 # 添加 docker-compose.yml 用于高负载场景
 环境:
 - DATABASE_URL=postgresql://affine:${DB_PASSWORD}@postgres:5432/affine
 - 数据库池大小=20
 - DATABASE_POOL_MAX=50
 - DATABASE_TIMEOUT=30000
 ```` 生产路径。 从源代码构建主要针对为项目做出贡献的开发人员。## 结论:拥有你的知识AFFiNE 代表了知识管理的转变:从依赖云的订阅到本地优先、自托管的所有权。 通过将文档、白板和数据库统一在一个开源平台中,您可以消除工具碎片,同时保持对数据的完全控制。立即使用 Docker 在 5 分钟内进行部署,连接您选择的 AI 模型,并加入 69,309 多名为该项目加注星标的开发人员。 自托管路径已做好生产准备,CRDT 同步稳定,并且团队正在快速交付。对于目前每个用户每月为 Notion 或 Miro 支付 15-20 美元的团队来说,经济理由是引人注目的:对于 20 人的团队来说,每月 24 美元的 VPS 可以取代这两种工具,并具有更好的隐私性、更低的延迟和完整的数据所有权。 迁移路径很简单 - Notion 直接导出到 AFFiNE,白板内容可以重新创建或导入为图像,然后转换为实时块。**开始使用:** 克隆 [toeverything/AFFiNE](https://github.com/toeverything/AFFiNE) 存储库,按照上面的 Docker 设置进行操作,并加入 [Telegram 社区](https://t.me/affineworkspace) 以获得支持。 通过 DigitalOcean
 在 VPS 上自行托管您的知识库,再也不用担心供应商锁定。## 资料来源和进一步阅读- [AFFiNE 官方文档](https://docs.affine.pro/)
 - [AFFiNE GitHub 存储库](https://github.com/toeverything/AFFiNE) — 69,309 颗星,MPL-2.0
 - [BlockSuite 编辑器框架](https://github.com/toeverything/blocksuite)
 - [自托管 AFFiNE 指南](https://docs.affine.pro/self-host-affine)
 - [CRDT 和本地优先软件 (Ink & Switch)](https://inkandswitch.com/local-first/)
 - [Docker Compose 生产最佳实践](https://docs.docker.com/compose/product/)







 ## 推荐的托管和基础设施在将上述任何工具部署到生产环境之前,您需要坚实的基础设施。 dibi8实际使用和推荐的两个选项:- **{< aff "digitalocean" "footer-cta-legacy" "DigitalOcean" >}}** — 200 美元免费赠金,为期 60 天,覆盖全球 14 个以上区域。 运行开源人工智能工具的独立开发者的默认选项。 
- **{< aff "htstack" "footer-cta-legacy" "HTStack" >}}** — 从中国大陆低延迟访问的香港 VPS。 这与托管 dibi8.com 的 IDC 是同一个 IDC——在生产中经过了实际考验。*附属链接 - 它们不会花费您额外的费用,并且有助于保持 dibi8.com 的运行。*## 附属机构披露本文包含 DigitalOcean 的附属链接。 如果您通过我们的链接注册,我们将收到佣金,您无需支付额外费用。 所有建议均基于实际测试,不受联盟计划的影响。 AFFiNE 完全开源,可免费自行托管,无需任何付费要求。
featureImage: /images/articles/affine-2026miro.png

💬 留言讨论