当前位置: 首页 > news >正文

用服务器自建一套无界白板 + 文档协作平台 —— Affine

前段时间团队在用 Notion 写文档、画流程图,越用越觉得卡。
尤其多人同时编辑、网络慢的时候,体验非常一般。
后来朋友推荐了一个开源项目 —— Affine,号称「Notion + Miro 的结合体」。
试了一下,确实不错:支持实时协作、白板、数据库,还有离线模式。

我干脆自己在 莱卡云服务器 上搭了一套,给团队试用。
这篇文章就是部署过程 + 使用体验。


一、为什么是 Affine

Affine 是个全栈开源项目,核心功能包括:

  • 📝 富文本文档编辑;

  • 🧩 无限白板,支持图形、便签、脑图;

  • 🧠 支持多端实时协作(Web、桌面端都有);

  • 🧷 数据本地化存储,可自托管。

最重要的是——长得像 Notion,用起来比它自由
官方还提供了 Docker 镜像,一条命令就能起。


二、准备环境

我这次用的是:

  • 服务器:莱卡云日本节点 2C4G / 40G SSD / 20Mbps 带宽

  • 系统:Ubuntu 22.04

  • 安装方式:Docker

莱卡云这台日本节点挺稳的,Docker 拉镜像速度很快(Docker Hub 基本秒下),
而且后台可以一键重装系统、做快照备份。


三、安装 Docker

如果是新系统,直接执行:

curl -fsSL https://get.docker.com | bash systemctl enable docker --now

然后确认版本:

docker -v


四、拉取 Affine 镜像

Affine 官方的镜像地址是:

ghcr.io/toeverything/affine-serve:latest

拉取镜像并启动容器:

docker run -d \ --name affine \ -p 3000:3000 \ -v /opt/affine:/data \ ghcr.io/toeverything/affine-serve:latest

解释一下:

  • -p 3000:3000 暴露端口;

  • /opt/affine 是持久化目录;

  • 镜像里自带服务端和前端。

第一次启动可能需要等 1-2 分钟,
我在莱卡云日本节点上全程不到 30 秒。


五、访问测试

浏览器打开:

http://你的服务器IP:3000

第一次加载会自动创建默认空间,
然后就能看到熟悉的 Notion 风格界面。

左边是页面列表,右边是编辑区。
点右上角 “Board” 就能切到无界白板模式,可以画框、连线、拖动文本块,非常顺滑。


六、配置反代和 HTTPS(可选)

如果打算团队用,最好加个域名和 HTTPS。
我用的是 Caddy(因为简单):

/etc/caddy/Caddyfile

affine.example.com { reverse_proxy 127.0.0.1:3000 }

然后:

systemctl restart caddy

Caddy 会自动申请 Let’s Encrypt 证书,全自动化。


七、数据持久化与备份

Affine 的数据都在 /opt/affine
可以直接备份整个目录。
如果你用的是莱卡云服务器,后台自带快照功能,
可以设个周期备份,系统崩了也能一键恢复。


八、使用体验

我自己和同事一起在线协作写文档、画白板,体验非常丝滑。
延迟低、同步快,编辑冲突也处理得很好。

测试下来:

  • 同时三人在线写文档无明显延迟;

  • 图片、白板同步即时;

  • 浏览器内存占用比 Notion 小一半;

  • 关掉浏览器重新打开还能自动恢复页面状态。

用一句话形容就是:

开源界的 Notion + Miro 混合体,轻快干净。


九、优化建议

  1. 内存少的机器
    建议加个 swap,Affine 后端在高并发时占用略高。

  2. 版本更新
    更新命令:

    docker pull ghcr.io/toeverything/affine-serve:latest docker stop affine && docker rm affine docker run -d ... (同上)

  3. 备份策略
    直接 tar 整个 /opt/affine 或用莱卡云的快照功能即可。


十、总结

Affine 是我用过最像 Notion 的开源协作工具,但比 Notion 更自由。
部署也不复杂,一台云服务器就能跑。

http://www.dtcms.com/a/507467.html

相关文章:

  • docker可视化面板portainer忘记密码的解决方案
  • Spring 4.1新特性:深度优化与生态整合
  • 湛江网站建设外包网站开发公司报价单模板
  • 画册设计公司网站优书网注册
  • 中国风手机网站模板html自动播放视频
  • 汇编与底层编程笔记
  • 酒店网站建设的需求分析报告做外贸网站赚钱吗
  • 物联网异构设备协同运维中的服务依赖动态解析与容错机制
  • 技术人互助:城市级充电系统(Java 微服务)的落地细节,含 demo 和设备适配经验
  • 如何在GitHub上查看自己提过的Issues
  • 【element-ui】面包屑导航
  • 如何设计一个高端网站简洁大方大气erp系统有哪些功能模块
  • BearPi小熊派 鸿蒙开发入门笔记(2)
  • 《信息系统项目管理师》2017 年下案例分析题及解析
  • 一、新建一个SpringBoot3项目
  • 外贸英文网站开发网站要用什么软件做
  • 凡科网站可以做seo优化周口网站设计
  • 笔记本触摸板无法使用怎么办 5种方法快速恢复
  • C#高级:数据库中使用SQL作分组处理5(Rank() 排名函数)
  • 51单片机基础-外部中断INT
  • dz网站恢复数据库阻止网站查到访问者ip
  • 【机器学习05】神经网络、模型表示、前向传播、TensorFlow实现
  • 视频教做家常菜的网站wordpress招商平台
  • 三角洲行动 游戏特色 巨 椰 云手机
  • 正则表达式魔法:用Python Re模块驯服文本数据的艺术
  • 《算法每日一题(1)--- 连续因子》
  • 019数据结构之栈——算法备赛
  • 网站添加内容PHP amp MySQL网站建设宝典
  • 消防有哪些网站合适做烟台网站推广排名
  • Python跳跳棋游戏:从基础实现到高级算法详解