Skip to main content

drawio-headless

Generate architecture diagrams with draw.io in headless/server environments (WSL2, VPS, Docker)

설치로 이동

소스 정보

저장소
kevinnft/ai-agent-skills
최근 소스 활동
2026년 5월 15일 04:45
감지된 SKILL.md 언어
영어
스타
14
포크
2

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
4 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
drawio-headless
description
Generate architecture diagrams with draw.io in headless/server environments (WSL2, VPS, Docker)
version
1.0.0
dependencies
["draw.io desktop (snap or .deb)","xvfb (X virtual framebuffer)"]
platforms
["linux"]
tags
["diagrams","architecture","visualization","headless","wsl2"]
origin
unknown
source_license
see upstream
language
en
# Draw.io Headless Diagram Generation Generate professional architecture diagrams from .drawio XML files in headless environments (WSL2, VPS, Docker) where GUI is not available. ## When to Use - Server/VPS without X11 display - WSL2 Ubuntu (no native GUI) - Docker containers - CI/CD pipelines - Automated diagram generation ## Prerequisites **Required packages:** ```bash # Install draw.io (snap - easiest) sudo snap install drawio # Install Xvfb (virtual framebuffer for headless rendering) sudo apt-get update sudo apt-get install -y xvfb ``` **Alternative: .deb package** ```bash # Download latest .deb wget https://github.com/jgraph/drawio-desktop/releases/download/v28.2.5/drawio-amd64-28.2.5.deb # Install sudo dpkg -i drawio-amd64-28.2.5.deb sudo apt-get install -f # Fix dependencies ``` ## Verification ```bash # Check draw.io installation which drawio # Expected: /snap/bin/drawio or /usr/bin/drawio # Test with xvfb-run xvfb-run -a drawio --version # Expected: draw.io version number (e.g., 28.2.5) ``` ## Usage ### Basic Export ```bash # Export .drawio to PNG xvfb-run -a drawio -x -f png -o output.png input.drawio # Export to SVG xvfb-run -a drawio -x -f svg -o output.svg input.drawio # Export to PDF xvfb-run -a drawio -x -f pdf -o output.pdf input.drawio ``` ### Flags Explained - `xvfb-run -a` — Run in virtual framebuffer (headless) - `-x` — Export mode - `-f <format>` — Output format (png, svg, pdf, jpg) - `-o <output>` — Output file path - `<input>` — Input .drawio file ## Pitfalls ### 1. Snap Confinement (File Access) **Problem:** Snap-installed draw.io cannot access `/tmp` or arbitrary directories due to confinement. **Solution:** Use home directory or snap-accessible paths: ```bash # ❌ FAILS (snap cannot access /tmp) xvfb-run -a drawio -x -f png -o /tmp/diagram.png /tmp/input.drawio # ✅ WORKS (home directory accessible) cd ~/diagrams xvfb-run -a drawio -x -f png -o diagram.png input.drawio ``` **Snap-accessible paths:** - `~/` (home directory) - `/home/<user>/` - `/media/` (removable media) - `/mnt/` (mounted filesystems) ### 2. OpenGL/dbus Warnings **Symptoms:** Errors like: ``` libGL error: No matching fbConfigs or visuals found dbus[]: Failed to connect to socket ``` **Impact:** These are **warnings only** — export still succeeds. Safe to ignore in headless environments. **Suppress (optional):** ```bash xvfb-run -a drawio -x -f png -o output.png input.drawio 2>/dev/null ``` ### 3. Missing Xvfb **Symptom:** ``` Error: Cannot open display: :99 ``` **Fix:** ```bash sudo apt-get install -y xvfb ``` ### 4. Large Diagrams (Memory) **Problem:** Complex diagrams with many elements may consume significant memory. **Solution:** Monitor memory usage, increase if needed: ```bash # Check available memory before export free -h # For very large diagrams, consider SVG (vector, smaller memory footprint) xvfb-run -a drawio -x -f svg -o output.svg input.drawio ``` ### 5. Premature Deletion (CRITICAL) **Problem:** Deleting diagram files immediately after generation but before user confirms receipt. **Symptom:** User reports "diagram not received" but files already deleted. **Root cause:** Telegram/messaging platforms may have delivery lag. Deleting before send confirmation = data loss. **Solution:** ```bash # ❌ WRONG — Delete immediately after MEDIA: path returned xvfb-run -a drawio -x -f png -o diagram.png diagram.drawio echo "MEDIA:/path/to/diagram.png" rm diagram.png diagram.drawio # TOO EARLY! # ✅ CORRECT — Keep files, cleanup weekly xvfb-run -a drawio -x -f png -o ~/diagrams/analysis_$(date +%Y%m%d).png diagram.drawio echo "MEDIA:~/diagrams/analysis_20260505.png" # Files remain for user reference # Weekly cleanup (manual or cron) find ~/diagrams -name "*.png" -mtime +7 -delete ``` **Policy:** Never auto-delete diagrams after sending. User may need to reference them later or delivery may fail silently. ## Diagram Types Supported - **Architecture diagrams** (microservices, cloud, infrastructure) - **Flowcharts** (process flows, decision trees) - **Sequence diagrams** (API calls, interactions) - **Network diagrams** (topology, connections) - **ER diagrams** (database schemas) - **UML diagrams** (class, component, deployment) ## Example Workflow ### 1. Create .drawio XML ```xml <mxfile host="app.diagrams.net"> <diagram name="Example"> <mxGraphModel dx="1200" dy="900"> <root> <mxCell id="0"/> <mxCell id="1" parent="0"/> <!-- Add your diagram elements here --> <mxCell id="box1" value="Service A" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;" vertex="1" parent="1"> <mxGeometry x="100" y="100" width="120" height="60" as="geometry"/> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> ``` ### 2. Export to PNG ```bash xvfb-run -a drawio -x -f png -o diagram.png diagram.drawio ``` ### 3. Verify Output ```bash ls -lh diagram.png file diagram.png # Expected: PNG image data, ... ``` ## Integration with Hermes When generating diagrams in Hermes workflows: 1. **Create .drawio XML** programmatically (Python, script, template) 2. **Export via xvfb-run** in execute_code or terminal tool 3. **Return path** via `MEDIA:/path/to/diagram.png` for Telegram 4. **DO NOT auto-delete** — Keep diagrams for user reference (cleanup weekly, not per-send) ## Performance **Typical export times:** - Simple diagram (5-10 elements): 2-3 seconds - Medium diagram (20-50 elements): 4-6 seconds - Complex diagram (100+ elements): 8-12 seconds **Memory usage:** - draw.io process: ~100-200 MB during export - Xvfb overhead: ~10-20 MB ## Troubleshooting ### Export produces blank/empty PNG **Cause:** Invalid XML structure or missing geometry. **Fix:** Validate .drawio XML structure, ensure all cells have geometry. ### "Command not found: drawio" **Cause:** Snap bin directory not in PATH. **Fix:** ```bash # Add to ~/.bashrc export PATH="/snap/bin:$PATH" # Or use full path xvfb-run -a /snap/bin/drawio -x -f png -o output.png input.drawio ``` ### Permission denied **Cause:** Output directory not writable or snap confinement. **Fix:** Use home directory or check permissions: ```bash # Use home directory cd ~/diagrams # Or check permissions ls -ld /path/to/output/directory ``` ## References - `references/system-services-diagram-pattern.md` — Pattern for mapping running services to comprehensive diagrams - `references/electricity-consumption-analysis.md` — Household/office electricity analysis with AC-focused breakdown and savings scenarios ## See Also - `architecture-diagram` skill — Dark-themed SVG architecture diagrams as HTML - `excalidraw` skill — Hand-drawn style diagrams (JSON format) - draw.io GitHub: https://github.com/jgraph/drawio-desktop
GitHub에서 보기