AFFiNE 详细部署教程:自托管 Notion + Miro 融合工作区
AFFiNE 是一个开源、隐私优先的下一代知识库,融合了文档(Docs)、画布(Whiteboard)和表格(Tables)的功能,可作为 Notion 和 Miro 的自托管替代品。本教程将指导你使用官方推荐的 Docker Compose 方式,在自己的服务器上完成 AFFiNE 的部署。
1. 准备工作
在开始之前,请确保你的服务器满足以下最低要求:
- 操作系统:Linux(Ubuntu 20.04+、Debian 11+ 等)或通过 WSL2 运行的 Windows。
- 硬件:至少 4 GB RAM 和 2个 CPU 核心。对于生产环境,推荐 8 GB+ RAM 和 4+ 核心。
- 存储:至少 20 GB 可用磁盘空间(实际需求取决于上传的图片和文件量)。
- 软件:已安装 Docker Engine 24.0+ 和 Docker Compose V2(可通过
docker compose version验证)。
💡 数据主权提醒:自托管 AFFiNE 意味着你需要自行管理 PostgreSQL 数据库、Redis 缓存、上传的文件以及配置与备份。请评估自身运维能力后再做选择。
2. 部署 AFFiNE 服务器
官方强烈推荐使用 Docker Compose 进行部署,它将 AFFiNE 应用、PostgreSQL 数据库、Redis 缓存和数据库迁移任务打包在一个可重复的堆栈中。
2.1 创建部署目录并下载配置文件
首先,创建一个稳定的目录来存放所有数据,并进入该目录:
1 | mkdir ~/affine |
官方 Compose 文件默认将 PostgreSQL 数据、上传文件和配置存储在相对于此目录的子文件夹中,因此请勿随意移动或删除此目录。
然后,使用 wget 或 curl 下载官方提供的最新 docker-compose.yml 和配置文件模板:
1 | # 下载 Docker Compose 文件 |
注意:官方最新的 Docker Compose 部署不再需要
.env文件来配置运行时参数。所有应用设置应存放在config/config.json中。
2.2 配置应用参数(config.json)
使用文本编辑器(如 nano 或 vim)打开 config/config.json 文件:
1 | nano config/config.json |
你至少需要修改 server.externalUrl 字段,将其设置为用户将用来访问此实例的最终 URL。
示例配置(本地测试):
1 | { |
server.externalUrl:必须与实际访问地址一致。如果后续配置了域名和 HTTPS,请修改为https://你的域名。copilot.enabled:设为true可以启用 AFFiNE AI 功能(需自行配置 API 密钥)。
保存并退出编辑器。
2.3 启动 AFFiNE 服务
在 ~/affine 目录下,执行以下命令以守护进程模式启动所有容器:
1 | docker compose up -d |
首次启动时,Docker 会自动拉取 AFFiNE、PostgreSQL 和 Redis 的镜像,这可能需要几分钟时间。
执行后,通过以下命令检查服务状态:
1 | docker compose ps |
你应该会看到 affine、postgres、redis 和 affine_migration(一次性任务,完成后会退出)等容器。
如果启动过程中出现问题,可以查看日志:
1 | docker compose logs --tail=200 affine affine_migration |
3. 次配置与使用
3.1 访问并注册管理员账户
- 在浏览器中访问
http://<你的服务器IP地址>:3010(如果是在本地部署,则为http://localhost:3010)。 - 页面加载后,按照提示创建第一个管理员账户。该账户拥有最高管理权限。
3.2 后续配置建议
- 管理后台:登录后,你可以访问
http://<你的地址>:3010/admin/settings对服务器进行更多设置,如修改站点名称、配置邮件服务等。 - 域名与 HTTPS:在生产环境中,强烈建议你配置反向代理(如 Nginx、Traefik)并提供 HTTPS 访问。你需要将
config.json中的server.externalUrl更新为https://你的域名。 - 启用全文搜索:从 AFFiNE 0.22 版本开始,你可以通过添加一个 Manticore 搜索服务容器来启用服务端全文搜索。这需要额外配置
docker-compose.indexer.yml文件。
4. 备份与更新
4.1 数据备份(至关重要!)
在投入生产前,务必建立完善的备份机制。你需要备份以下数据:
- PostgreSQL 数据库:使用
pg_dump等工具进行备份。 - 上传的文件:默认存储在
~/affine/data/storage目录下。 - 配置文件:即
~/affine/config/config.json。
请务必测试从备份中恢复的流程,而不仅仅是创建备份。
4.2 更新 AFFiNE
更新到最新版本非常简单,但更新前请务必备份数据。
在 ~/affine 目录下执行:
1 | docker compose pull |
这会拉取最新的镜像并重新创建容器,数据卷中的持久化数据不会丢失。
5. 总结
恭喜!通过以上步骤,你已经成功部署了一个功能强大、完全由你掌控的自托管 AFFiNE 实例。
AFFiNE 的核心价值在于它将文档与白板深度融合,为个人和团队提供了一个高度灵活、隐私安全的知识创作与管理平台。其社区版(CE)基于 MIT 许可证,对自托管和商业使用都非常友好。
如果在部署过程中遇到问题,可以查阅 AFFiNE 官方文档 或加入其 Discord 社区 寻求帮助。







