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有点耶4 小时前
DELETE没删多少数据,表却越来越大——InnoDB删除空洞与页合并失效的根因
数据库·mysql·代码规范
对象存储与RustFS5 小时前
网盘限速逼你开会员?用 RustFS 自己搭一个不限速的“私人网盘
服务器·后端·docker
..Dauntless..7 小时前
【Linux】一切皆文件和缓冲区
linux·运维·服务器
裕晟资质规划7 小时前
三类资质变更报告时限差在哪?军工 15 日、集成印制 10 日
大数据·服务器·网络
ly76897 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
QMCY_jason7 小时前
x86 ubuntu2204 无gui 安装 openeuler 2203 aarch64版本
linux·运维·服务器
重生之小比特7 小时前
【Linux系统】12 进程程序替换 自定义Shell 命令行解释器
linux·运维·服务器
轻舟技术A7 小时前
Provider 不属于 Agent 核心:rpi 的分层理由与收益
服务器·网络
连山齐名7 小时前
ai应用开发的学习笔记
服务器·笔记·学习
Shadow(⊙o⊙)7 小时前
仿muduo实现高并发服务器——事件就绪管理Channel.hpp
服务器·c++