Draw.io 在线绘图工具私有部署

Draw.io(现更名为 diagrams.net)是全球最流行的在线绘图工具之一,支持流程图、架构图、网络拓扑图、UML 图等多种图表类型。虽然官方提供了免费的在线版本,但如果你对数据安全有要求,或者希望在内网环境使用,可以将其私有部署到搬瓦工 VPS 上。本文将介绍如何通过 Docker 快速完成部署。

一、Draw.io 私有部署的优势

  • 数据安全:所有图表文件保存在自己的服务器上,不经过第三方服务器。
  • 内网可用:部署在内网服务器上,无需互联网即可使用。
  • 自定义配置:可以预配置模板库、形状库,统一团队绘图规范。
  • 无使用限制:没有文件数量和大小限制,不受公共服务的速率限制。
  • 集成能力:可与 Nextcloud、Confluence 等平台集成。

二、环境要求

  • 搬瓦工 VPS 一台,512MB 内存即可运行(购买时使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
  • 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
  • 域名一个(可选,用于 HTTPS 访问)。

2.1 创建项目目录

mkdir -p /opt/drawio
cd /opt/drawio

三、Docker Compose 部署

Draw.io 的 Docker 部署非常简单,因为它本质上是一个纯前端应用加上导出服务。

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

services:
  drawio:
    image: jgraph/drawio:latest
    restart: always
    ports:
      - "8080:8080"
      - "8443:8443"
    environment:
      DRAWIO_SELF_CONTAINED: 1
      DRAWIO_SERVER_URL: https://draw.yourdomain.com
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080"]
      interval: 30s
      timeout: 10s
      retries: 3
EOF

其中 DRAWIO_SELF_CONTAINED: 1 表示启用自包含模式,所有资源都从本地加载,不依赖外部 CDN。

四、启动服务

cd /opt/drawio
docker compose up -d

检查运行状态:

docker compose ps
docker compose logs drawio

服务启动后,通过 http://VPS_IP:8080 即可访问 Draw.io。

五、配置 Nginx 反向代理与 HTTPS

5.1 安装 Nginx

apt update
apt install nginx certbot python3-certbot-nginx -y

5.2 配置反向代理

cat > /etc/nginx/sites-available/drawio <<'EOF'
server {
    listen 80;
    server_name draw.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
    }

    client_max_body_size 100m;
}
EOF

ln -sf /etc/nginx/sites-available/drawio /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

5.3 申请 SSL 证书

certbot --nginx -d draw.yourdomain.com

六、高级配置

6.1 禁用外部服务连接

如果你希望完全隔离,不允许用户连接 Google Drive、OneDrive 等外部服务,可以通过环境变量设置:

environment:
  DRAWIO_SELF_CONTAINED: 1
  DRAWIO_GOOGLE_CLIENT_ID: ""
  DRAWIO_MSGRAPH_CLIENT_ID: ""
  DRAWIO_GITLAB_ID: ""
  DRAWIO_CLOUD_CONVERT_APIKEY: ""

6.2 配置自定义模板

你可以将自定义模板文件挂载到容器中:

volumes:
  - /opt/drawio/templates:/usr/local/tomcat/webapps/draw/templates2

将你的 XML 模板文件放入 /opt/drawio/templates 目录即可。

6.3 导出功能配置

Draw.io 支持将图表导出为 PNG、PDF、SVG 等格式。导出功能需要服务端渲染支持,jgraph/drawio 镜像已经内置了导出服务器,无需额外配置。

七、与 Nextcloud 集成

如果你同时部署了 Nextcloud,可以在 Nextcloud 中安装 Draw.io 集成插件:

  1. 在 Nextcloud 应用商店中搜索并安装「Draw.io」插件。
  2. 在管理设置中配置 Draw.io 服务器地址为你私有部署的地址。
  3. 之后在 Nextcloud 中打开 .drawio 文件会自动调用你的私有 Draw.io 服务器。

八、性能优化

Draw.io 主要是前端应用,对服务器资源消耗较低。以下是一些优化建议:

  • 启用 Gzip 压缩:在 Nginx 中启用压缩可以减少传输量,加快页面加载。
  • 配置缓存:静态资源可以设置较长的缓存时间。
  • 限制导出并发:如果导出请求量大,可以限制并发数避免 OOM。
# 在 Nginx 中添加静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
    proxy_pass http://127.0.0.1:8080;
    expires 30d;
    add_header Cache-Control "public, immutable";
}

九、版本更新

cd /opt/drawio
docker compose pull
docker compose up -d
docker image prune -f

十、常见问题

导出 PDF 空白

这通常是导出服务内存不足导致的。检查容器日志:

docker compose logs drawio | tail -50

可以增加容器内存限制或升级 VPS 方案。

页面加载缓慢

确认 DRAWIO_SELF_CONTAINED 设置为 1,避免从外部 CDN 加载资源。同时检查 Nginx 是否启用了 Gzip 压缩。

总结

Draw.io 是一个功能强大且轻量的绘图工具,私有部署后可以保障数据安全并提供稳定的内网服务。结合 Nextcloud 使用效果更佳。搬瓦工 VPS 可在 bwh81.net 购买,使用优惠码 NODESEEK2026 享受 6.77% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。