搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

Goblinmine/homelab-diagram

运维与部署

把 YAML 格式的 homelab 清单渲染成 r/homelab 风格的网络拓扑图,输出 SVG 和 PNG。

104
5
Python
MIT
今天创建

项目用途

homelab-diagram 读取一份描述家庭实验室的 YAML 文件,生成类似 r/homelab 版上常见风格的大型网络拓扑图。图上包括从互联网经运营商路由器、防火墙到核心交换机的链路,每个交换机端口及其 VLAN 标记,以线宽表示协商速率的网线,带型号、IP、主机名和系统的设备卡片,Proxmox 主机及其虚机/容器,TrueNAS 存储池和磁盘占用,以及 DMZ 容器及其 CT ID README。

作者明确说明这不是通用工具:内容来自 inventory.yaml,但布局(每个框、端口和连线的坐标)是在 build.py 里为某一套网络手工放置的,换一套网络需要改坐标。可以先看示例输出判断是否符合需要。

工作原理

build.py 按手写坐标绘制 SVG,嵌入图标,再用 rsvg-convert 转成 PNG;部分文本宽度用 Pillow 按真实字体测量,使标签和徽章不溢出。默认会把真实域名替换成 redacted.com、SSID 改成通用名称,方便公开发布;--unredacted 则直接渲染清单里的真实值,供自己使用。

快速使用

依赖:Python 3 与 PyYAML(Pillow 可选,但标签宽度更准)、用于 PNG 输出的 librsvg 中的 rsvg-convert,以及能通过 fontconfig 找到的 Fira Sans 和 Fira Code 字体。Arch/CachyOS 上:pacman -S python-yaml python-pillow librsvg ttf-fira-sans ttf-fira-code;Debian/Ubuntu 上:apt install python3-yaml python3-pil librsvg2-bin fonts-firacode,再另装 Fira Sans。

克隆后执行:

python3 fetch_icons.py          # 下载服务图标到 icons/,只需一次
python3 build.py                # → out/homelab.svg + out/homelab.png(打码版)
python3 build.py --unredacted   # → out/homelab-unredacted.svg + .png(真实值)

服务图标不在仓库里,由 fetch_icons.py 从 homarr-labs/dashboard-icons 下载;仓库只附带作者自己画的 CPU、内存、SSD 等小图标。

改成自己的图

  1. 改写 inventory.yaml:文字、IP、端口、VLAN 颜色和容器分组都来自这里。
  2. 渲染后看哪里放不下,回到 build.py 调坐标;README 指出顶部区域和服务器卡片内分栏对应的变量为 fy, fh、ox, oy、bx, by、DY、MAD。
  3. 新图标把 SVG 放进 icons/,在清单里引用文件名即可。

仓库还带一份写给 AI 编程代理的 CLAUDE.md,说明代码结构、哪些布局是硬编码的,以及渲染后检查的迭代流程。作者建议的用法是:用 Claude Code 打开仓库,让它按你的网络改写 inventory.yaml 和 build.py 并反复看渲染结果。

使用限制

  • 布局是针对单套网络硬编码的,适配过程是改代码,不是填配置。
  • 生成 PNG 需要 librsvg 和指定的 Fira 字体,且 fontconfig 必须能找到字体。
  • 代码和自带图标为 MIT 许可(LICENSE);服务图标来自另一个项目,商标归各项目所有;字体为 SIL Open Font License(Fira)。
  • README 说明代码由 AI 在 Claude Code 中编写,作者描述了约 60 轮反馈和迭代。

HotRepo 点评

HotRepo 在 2026-11-08 的新项目榜中记录到该项目 100 stars、4 forks,增长窗口为 2026-11-07 至 2026-11-08;它没有进入 GitHub 全语言日榜,目前也只有这一条快照,因此数据只能说明早期关注,谈不上趋势。更有参考价值的是作者的坦白:这是一个偏个人、手工调坐标的脚本,因为产出的图有人喜欢而被问起。对愿意改 build.py 的人来说,作为起点是合理的;想找开箱即用的网络绘图工具,它并不合适。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。