docs(*): Update README and screenshots for the new feature set
@@ -22,8 +22,13 @@ Open Network Diagram helps you document your infrastructure in a visual UI while
|
|||||||
|
|
||||||
- Network view with ethernet labels to make physical and logical links easy to read.
|
- Network view with ethernet labels to make physical and logical links easy to read.
|
||||||
- Non-network view for host-first inventory and service mapping.
|
- Non-network view for host-first inventory and service mapping.
|
||||||
|
- Rack view: managed racks with U positions and heights, side-by-side shelf items, and click-through to the editor.
|
||||||
|
- Node search that highlights matches by name, IP, role or OS and dims everything else.
|
||||||
|
- IPAM panel: per-subnet utilization, duplicate-IP conflict detection, and next-free-IP suggestions when adding machines, devices or VMs.
|
||||||
|
- Subnet and VLAN declarations, with nodes colour-coded by VLAN and a clickable legend filter.
|
||||||
|
- Cable tracking on connections (type, colour, length) with colour-coded links and hover details.
|
||||||
- Expandable VM lists per machine for quick virtualization visibility.
|
- Expandable VM lists per machine for quick virtualization visibility.
|
||||||
- Modal editor for machines/devices with live diagram updates.
|
- Modal editor for machines/devices with live diagram updates, notes and MAC address fields.
|
||||||
- JSON-backed persistence with autosave in self-hosted mode.
|
- JSON-backed persistence with autosave in self-hosted mode.
|
||||||
- Docker-first deployment with writable data volume support.
|
- Docker-first deployment with writable data volume support.
|
||||||
- Optional read-only mode for public demos and safe sharing.
|
- Optional read-only mode for public demos and safe sharing.
|
||||||
@@ -32,6 +37,8 @@ Open Network Diagram helps you document your infrastructure in a visual UI while
|
|||||||
## Why Home Lab Users Use It
|
## Why Home Lab Users Use It
|
||||||
|
|
||||||
- Keep an always-up-to-date map of machines, VMs, and devices.
|
- Keep an always-up-to-date map of machines, VMs, and devices.
|
||||||
|
- Find a free IP and spot duplicate assignments without a spreadsheet.
|
||||||
|
- Know exactly what's in your rack and where, down to the U.
|
||||||
- Edit quickly through a modal UI instead of hand-editing large diagrams.
|
- Edit quickly through a modal UI instead of hand-editing large diagrams.
|
||||||
- Persist everything to JSON so backups and Git workflows stay simple.
|
- Persist everything to JSON so backups and Git workflows stay simple.
|
||||||
- Stay fully self-hosted with no runtime dependency on external APIs.
|
- Stay fully self-hosted with no runtime dependency on external APIs.
|
||||||
@@ -78,6 +85,10 @@ docker rm open-network-diagram
|
|||||||
| -------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
|
| -------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
|
||||||
|  |  |  |
|
|  |  |  |
|
||||||
|
|
||||||
|
| IPAM panel with subnet utilization | Rack view with shelf items |
|
||||||
|
| ------------------------------------------------------------------ | -------------------------------------------------------- |
|
||||||
|
|  |  |
|
||||||
|
|
||||||
## Docker Compose Option
|
## Docker Compose Option
|
||||||
|
|
||||||
If you prefer compose:
|
If you prefer compose:
|
||||||
@@ -151,25 +162,73 @@ Environment variables:
|
|||||||
"ipAddress": "10.0.0.3",
|
"ipAddress": "10.0.0.3",
|
||||||
"role": "Hypervisor",
|
"role": "Hypervisor",
|
||||||
"operatingSystem": "Proxmox",
|
"operatingSystem": "Proxmox",
|
||||||
|
"notes": "Primary router box.",
|
||||||
"software": {
|
"software": {
|
||||||
"vms": [{ "name": "OpnSense", "role": "Router", "ipAddress": "10.0.0.4" }]
|
"vms": [
|
||||||
|
{
|
||||||
|
"name": "OpnSense",
|
||||||
|
"role": "Router",
|
||||||
|
"ipAddress": "10.0.0.4",
|
||||||
|
"macAddress": "bc:24:11:5a:2e:01"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"hardware": {
|
"hardware": {
|
||||||
"cpu": "Intel N100",
|
"cpu": "Intel N100",
|
||||||
"ram": "8GB",
|
"ram": "8GB",
|
||||||
"networkPorts": 4
|
"networkPorts": 4
|
||||||
|
},
|
||||||
|
"ports": [
|
||||||
|
{
|
||||||
|
"portName": "eth0",
|
||||||
|
"speedGbps": 1,
|
||||||
|
"connectedTo": {
|
||||||
|
"device": "Switch",
|
||||||
|
"port": "1",
|
||||||
|
"cable": { "type": "Cat6", "color": "blue", "lengthM": 1 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"devices": [{ "name": "Switch", "ipAddress": "10.0.0.2", "type": "Nintendo Switch" }]
|
"rack": { "name": "Lab Rack", "unit": 10 }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"devices": [
|
||||||
|
{
|
||||||
|
"name": "Switch",
|
||||||
|
"ipAddress": "10.0.0.2",
|
||||||
|
"type": "Network Switch",
|
||||||
|
"ports": [
|
||||||
|
{
|
||||||
|
"portName": "1",
|
||||||
|
"speedGbps": 1,
|
||||||
|
"connectedTo": {
|
||||||
|
"device": "ProxRouter",
|
||||||
|
"port": "eth0",
|
||||||
|
"cable": { "type": "Cat6", "color": "blue", "lengthM": 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rack": { "name": "Lab Rack", "unit": 12 }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"subnets": [{ "cidr": "10.0.0.0/24", "name": "LAN", "vlanId": 1 }],
|
||||||
|
"racks": [{ "name": "Lab Rack", "heightU": 12 }]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Notes on the optional fields:
|
||||||
|
|
||||||
|
- `subnets` powers the IPAM panel and VLAN colouring (`vlanId` is optional per subnet).
|
||||||
|
- `racks` declares rack names and total units for the rack view; machines/devices opt in with a `rack` placement (`unit` is the bottom U, `heightU` defaults to 1). Items with the identical U range render side by side as shelf-mates.
|
||||||
|
- `cable` on a `connectedTo` records type/colour/length and is kept identical on both ends automatically.
|
||||||
|
- `notes` (machines and devices) and `macAddress` (ports and VMs) are free text.
|
||||||
|
|
||||||
### Project Structure
|
### Project Structure
|
||||||
|
|
||||||
```text
|
```text
|
||||||
OpenNetworkDiagram/
|
OpenNetworkDiagram/
|
||||||
├── src/ # Svelte app source
|
├── src/ # Svelte app source
|
||||||
|
├── src/lib/shared/ # Schema + persistence core (shared with server.mjs)
|
||||||
├── src/lib/config/vendorIconManifest.ts # Generated local icon catalog
|
├── src/lib/config/vendorIconManifest.ts # Generated local icon catalog
|
||||||
├── static/data/network.json # Demo dataset (Netlify)
|
├── static/data/network.json # Demo dataset (Netlify)
|
||||||
├── static/icons/vendor/ # Vendored icon assets (runtime-local)
|
├── static/icons/vendor/ # Vendored icon assets (runtime-local)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 276 KiB After Width: | Height: | Size: 219 KiB |
|
Before Width: | Height: | Size: 334 KiB After Width: | Height: | Size: 264 KiB |
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 191 KiB |
|
After Width: | Height: | Size: 270 KiB |
|
After Width: | Height: | Size: 81 KiB |