Excalidraw 自建部署指南:白板协作工具完全私有化

Excalidraw 自建部署指南:白板协作工具完全私有化

Excalidraw 是一个极简的在线白板工具,手绘风格、零学习曲线,非常适合快速画架构图、流程图、草图。官方版是开源的,但文档存在云端。自建版本可以把数据完全存在私有服务器,配合 Room 功能支持实时多人协作,适合团队内部使用。

适用场景

  • 技术架构图快速手绘
  • 产品需求草图
  • 会议白板(实时协作)
  • 系统设计文档配图

服务器配置

规格 推荐
CPU 1 核
内存 512MB
硬盘 5GB

极其轻量,和其他服务共用一台机器完全没有问题。我把 Excalidraw 和 HedgeDoc 都部署在雨云服务器 rainyun+com 的同一台机器上,内存占用加一起不到 200MB。注册填优惠码 2026off 领 5 折优惠券。

方法一:Docker 部署(最快)

bash 复制代码
docker run -d \
  --name excalidraw \
  -p 3001:80 \
  --restart unless-stopped \
  excalidraw/excalidraw:latest

方法二:Docker Compose(带实时协作服务)

Excalidraw 的协作功能(Room)需要 excalidraw-room 服务:

bash 复制代码
mkdir -p /opt/excalidraw

cat > /opt/excalidraw/docker-compose.yml << 'EOF'
version: "3.8"

services:
  excalidraw:
    image: excalidraw/excalidraw:latest
    container_name: excalidraw
    ports:
      - "3001:80"
    restart: unless-stopped

  excalidraw-room:
    image: excalidraw/excalidraw-room:latest
    container_name: excalidraw-room
    ports:
      - "3002:80"
    restart: unless-stopped

  excalidraw-storage:
    image: redis:7-alpine
    container_name: excalidraw-storage
    restart: unless-stopped
EOF

cd /opt/excalidraw
docker compose up -d

方法三:从源码构建(自定义配置)

如果需要自定义主题、添加 Logo、修改默认行为:

bash 复制代码
sudo apt install -y nodejs npm git

git clone https://github.com/excalidraw/excalidraw.git
cd excalidraw

# 创建环境配置
cat > .env.production << 'EOF'
VITE_APP_WS_SERVER_URL=wss://draw.你的域名.com/socket
VITE_APP_BACKEND_V2_GET_URL=https://json.excalidraw.com/api/v2/
VITE_APP_BACKEND_V2_POST_URL=https://json.excalidraw.com/api/v2/post/
EOF

npm install
npm run build

# 构建完成后在 build/ 目录
# 用 Nginx 或 Caddy 直接提供静态文件

配置 HTTPS(Caddy)

bash 复制代码
sudo tee -a /etc/caddy/Caddyfile << 'EOF'

draw.你的域名.com {
    reverse_proxy localhost:3001
}

draw-room.你的域名.com {
    reverse_proxy localhost:3002
}
EOF

sudo systemctl reload caddy

使用教程

基本绘图

访问 https://draw.你的域名.com,界面极简,工具栏在左侧:

工具 快捷键
选择 V
矩形 R
菱形 D
椭圆 E
箭头 A
线条 L
自由绘制 P
文字 T
图片插入 I

实时协作

创建协作 Room:

  1. 右上角 → Live collaboration
  2. Start session(创建 Room)
  3. 把生成的链接发给协作者
  4. 协作者打开链接即可实时共同编辑

注意:协作 Room 的数据是临时的,关闭 session 后数据不会保存到服务器,需要手动保存为文件。

导出格式

复制代码
文件 → 导出图片
- PNG(带/不带背景)
- SVG(矢量图,可继续编辑)
- 导出到剪贴板

嵌入其他工具

Excalidraw 生成的 SVG 文件可以直接嵌入 Markdown 文档、Wiki 等,保持矢量质量。

也可以作为 VS Code 插件使用(.excalidraw 文件):

bash 复制代码
# VS Code 扩展
# Excalidraw - Henning Dieterichs

保存和加载

自建版没有云端保存(除非接入后端服务),文件保存在浏览器本地或手动导出:

复制代码
文件 → 保存到磁盘(Ctrl+S)
文件 → 打开(Ctrl+O)

接入后端存储(可选)

如果需要服务端保存图形,可以接入 excalidraw-json 后端:

bash 复制代码
docker run -d \
  --name excalidraw-json \
  -p 3003:3000 \
  -e REDIS_URL=redis://excalidraw-storage:6379 \
  --network excalidraw_default \
  --restart unless-stopped \
  excalidraw/excalidraw-json:latest

在 Excalidraw 部署的环境变量里配置:

复制代码
VITE_APP_BACKEND_V2_GET_URL=https://draw.你的域名.com/api/v2/
VITE_APP_BACKEND_V2_POST_URL=https://draw.你的域名.com/api/v2/post/

更新

bash 复制代码
cd /opt/excalidraw
docker compose pull
docker compose up -d

Excalidraw 的最大特点是低门槛、高效率------打开就能画,不需要任何设计软件知识。手绘风格让图表看起来还在草图阶段,避免了早期方案讨论时过分在乎外观的问题。部署在自己的雨云服务器上,团队内部使用不受限制,实时协作功能对远程团队尤其实用。

相关推荐
这个DBA有点耶1 小时前
联合索引的顺序:写错等于白建(最左前缀+范围条件+覆盖索引详解)
数据库·代码规范
从零开始学习人工智能1 小时前
同文件同网络,curl 上传飞快,浏览器 HTTP/1.1 却慢到离谱?终于找到元凶!
网络·网络协议·http
程序员小白条1 小时前
别盲目卷算法!2026 程序员\&大学生,最稳的 AI 技术进阶路线全梳理
java·网络·人工智能·网络协议·http·面试
2301_775639891 小时前
Golang怎么写TODO待办应用_Golang TODO应用教程【深入】
jvm·数据库·python
胖头鱼的鱼缸(尹海文)1 小时前
数据库管理-第423期 Oracle AI DB 23.26.2新特性一览(20260504)
数据库·人工智能·oracle
iuvtsrt1 小时前
WordPress 分页失效的常见原因与正确实现方案
jvm·数据库·python
木井巳2 小时前
【MySQL数据库】数据库操作及数据类型
数据库·mysql·adb
阿维的博客日记2 小时前
Redis 和 Caffeine 构建的多级缓存,如何保持数据一致性?
数据库·redis·缓存
爱莉希雅&&&2 小时前
MySQL MGR + MySQL Router 高可用集群完整笔记(含手动配置 + Shell 接管双路线)
linux·数据库·笔记·mysql·mysqlrouter·mysqlshell