万能的开源制图利器 —— draw.io(diagrams.net)自托管与应用分享

在工作中,我们经常需要画各种图:流程图、UML、架构图、网络拓扑、业务逻辑、ER 模型……
常见工具有 Visio、ProcessOn、Lucidchart 等,但它们要么收费、要么依赖云服务,无法用于内网或保密环境。

有没有既开源、又免费、还能完全离线自托管的制图工具?
答案就是:draw.io(现名:diagrams.net)。


✅ draw.io 是什么?

draw.io 是一款 开源、免费、功能强大的通用绘图工具,支持:

  • 流程图、组织结构图
  • UML、时序图、用例图
  • ER 数据库模型图
  • 网络拓扑、云架构图(AWS / Azure / GCP)
  • 软件架构图、服务关系图
  • BPMN、思维导图等

它同时提供:

✔ Web 在线版
✔ 桌面版(Windows、Mac、Linux)
✔ VSCode / Obsidian 插件
自托管服务器版(重点)

也就是说,你可以在自己的服务器上运行一个“公司内部的 draw.io”,所有人不用登录、无需联网即可使用,数据不会上传第三方。


✅ 为什么推荐 draw.io?

优势说明
✅ 完全开源、免费Apache 2.0 协议,可商业使用
✅ 自托管支持内网、机密项目环境可用
✅ 图标库丰富网络、架构、云服务、UML、BPMN……应有尽有
✅ 导出方便PNG、SVG、PDF、XML、HTML
✅ 支持中文操作体验友好
✅ 多系统支持Web、桌面、插件,多场景使用

对需要离线绘图、内网使用、交付客户项目、企业开发文档的人特别友好。


✅ 自托管安装(适合内网环境)

✅ 方式一:Docker 运行(最快)

docker run -d \ --name drawio \ -p 8080:8080 \ jgraph/drawio 

浏览器访问:

http://服务器IP:8080 

即可直接使用,无需登录、无需数据库。


✅ 方式二:Docker Compose(推荐长期部署)

新建 docker-compose.yml

version:"3.8"services:drawio:image: jgraph/drawio:latest container_name: drawio ports:-"8080:8080"-"8443:8443"environment:- DRAWIO_DISABLE_ANALYTICS=true - DRAWIO_ENABLE_PLANTUML=true restart: unless-stopped 

启动:

docker compose up -d 

优势:

✅ 自动重启
✅ 支持启用 PlantUML(序列图/类图自动生成)
✅ 内网即可访问

✅ 自托管效果

在这里插入图片描述

✅ Mermaid 是什么?

Mermaid 是一个基于文本(类似代码)的开源制图语言,用简单描述就能生成专业流程图、时序图、甘特图、状态机、架构关系图。

✅ 支持流程图、时序图、类图、ER 图、状态机、甘特图
✅ 用文本写图 → 可版本管理(Git)
✅ 可嵌入 Markdown、Wiki、文档系统
✅ Obsidian / VSCode / GitLab / Typora / Wiki.js / GitHub 已原生支持
✅ 可自托管渲染(适合离线或内网)

一句话总结:
Mermaid = 图用“代码”生成,让图变得可追踪、可自动化、可被大模型生成。

大模型生成Mermaid

用户浏览商品并下单 → 系统检查库存 → 如果库存不足提示失败 → 否则扣库存 → 用户支付 → 支付成功后生成订单 → 通知仓库发货 将上述的描述转成 Mermaid 
flowchart TD A[用户浏览商品并下单] --> B[系统检查库存] B -->|库存不足| C[提示下单失败] B -->|库存充足| D[扣减库存] D --> E[用户支付] E -->|支付成功| F[生成订单] F --> G[通知仓库发货] 
在这里插入图片描述


在这里插入图片描述

✅ 文件保存方式(重点)

draw.io 不会强制把数据存到服务器,默认保存到用户本地:

  • .drawio / .xml 文件
  • PNG、SVG、PDF

如果需要团队协作,可以接入:

  • WebDAV(Nextcloud、OwnCloud、Seafile)
  • GitLab / Gitea 仓库
  • Samba 文件共享

这比云产品更自由,数据完全掌控在自己手里。


✅ 适用场景

研发团队内部文档、架构图
不依赖外网,图保存到 Git/Nextcloud,安全可控。

高校、培训、教学演示
学生在浏览器打开就能画图,轻量零门槛。

公司交付客户的私有化项目
很多甲方项目不能使用外网制图工具,draw.io 刚好解决痛点。

个人知识管理
结合 Obsidian、VSCode,当本地画图工具使用。

长期使用 Visio 替代品
无需授权、无需破解、完全免费。


✅ 与其他工具对比

工具是否开源是否可私有部署费用难度功能丰富度
draw.io✅ 是✅ 是免费✅ 丰富
ProcessOn❌ 否❌ 否商业中等
Lucidchart❌ 否❌ 否商业
Excalidraw✅ 是✅ 是免费中(偏手绘)
Visio❌ 否✅ 部分商业

综合来看,draw.io是最接近Visio级功能同时完全开源可私有部署的方案。


✅ 总结

draw.io 就像一把“瑞士军刀式”的制图工具:

✅ 开源免费
✅ 自托管,无数据外泄风险
✅ 图标库丰富、支持架构/网络/UML/ER全部场景
✅ 部署简单,几分钟搞定

适合:

  • 开发团队
  • 企业内部系统
  • 信息安全要求高的客户项目
  • 个人学习、文档记录

Read more

Flutter 三方库 jsonata_dart 的鸿蒙化适配指南 - 实现高性能的 JSON 数据查询与转换、支持 JSONata 表达式引擎与端侧复杂数据清洗

Flutter 三方库 jsonata_dart 的鸿蒙化适配指南 - 实现高性能的 JSON 数据查询与转换、支持 JSONata 表达式引擎与端侧复杂数据清洗

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 jsonata_dart 的鸿蒙化适配指南 - 实现高性能的 JSON 数据查询与转换、支持 JSONata 表达式引擎与端侧复杂数据清洗 前言 在进行 Flutter for OpenHarmony 的数据密集型应用开发时,经常会遇到后端返回的 JSON 结构过于复杂,或者需要在前端对海量数据进行动态过滤、聚合和转换的情况。直接编写多层嵌套的 for 循环和 if 判断不仅低效且难以维护。jsonata_dart 是成熟的 JSONata 查询语言在 Dart 环境下的高性能移植。它能让你用一句描述性的表达式完成复杂的数据抽取任务。本文将探讨如何在鸿蒙端利用 JSONata 提升数据处理的优雅度。 一、原理解析 / 概念介绍 1.1 基础原理

By Ne0inhk
Flutter 三方库 dead_code_analyzer 的鸿蒙化适配指南 - 彻底清除无用代码、精简鸿蒙产物包体积、提升工程纯净度

Flutter 三方库 dead_code_analyzer 的鸿蒙化适配指南 - 彻底清除无用代码、精简鸿蒙产物包体积、提升工程纯净度

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 dead_code_analyzer 的鸿蒙化适配指南 - 彻底清除无用代码、精简鸿蒙产物包体积、提升工程纯净度 在鸿蒙跨平台开发的长期迭代中,废弃的业务逻辑、过时的工具函数就像“工程血栓”,不仅拖慢编译速度,还会无端增加最终 .app 包的体积。今天我们聊聊如何用 dead_code_analyzer 像外科医生一样精准切除这些冗余毒瘤。 前言 很多开发者认为“我不调用它,它就不占空间”。但在复杂的 Flutter 依赖树中,一些被标注为 public 但实际未引用的类,依然可能被编译器包含。特别是在 OpenHarmony 这种对包体积、启动性能有极致要求的系统下,工程的“纯净度”直接影响用户体验。 dead_code_analyzer 是一款专门针对

By Ne0inhk
Linux 进程间通信之管道基础解析 —— 匿名管道的原理与实现

Linux 进程间通信之管道基础解析 —— 匿名管道的原理与实现

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 进程间通信基础认知 * 1.1 进程间通信的核心目的 * 1.2 进程间通信的发展与分类 * 二. 管道的基础概念 * 2.1 管道的定义 * 2.2 管道的核心特性(最后总结部分的图片里更全点,可以着重看那个) * 三. 匿名管道的创建与 API * 3.1 匿名管道的创建函数 * 3.2 匿名管道的简单使用示例 * 四. 基于 fork 的匿名管道跨进程通信 * 4.1 fork 共享管道的核心原理 * 4.2

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 dart_style 像官方一样统一你的鸿蒙代码格式(代码美化神器)

Flutter for OpenHarmony: Flutter 三方库 dart_style 像官方一样统一你的鸿蒙代码格式(代码美化神器)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在 OpenHarmony 项目开发中,不论是个人的“心血之作”还是团队协作的“巨无霸”工程,代码的可读性是维护成本的生命线。每个人都有自己的编码习惯:有人喜欢紧凑型,有人喜欢在大括号前后留白。如果代码格式没有统一的标准,代码提交(Git Merge)时的差异对比将是一场灾难。 dart_style(其核心命令即 dart format)是 Dart 语言官方出品的格式化引擎。它通过一套被全球 Dart 开发者公认的算法,强制将你的源码重新排版为最标准、最易读的形态。 一、核心排版逻辑 dart_style 采用“行长度优先”的排版权重算法。 计算行长 修正空白 杂乱的源码 dart_style 解析器 折行与对齐策略

By Ne0inhk