nordabiz/docs/architecture/diagrams/a9-detailed-it-architecture.drawio

387 lines
41 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<mxfile host="draw.io" modified="2026-02-12" agent="Claude Code" type="device">
<diagram id="a9-it-arch" name="Szczegółowa Architektura IT">
<mxGraphModel dx="2600" dy="1800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2800" pageHeight="2000" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- TYTUŁ -->
<mxCell id="title" value="NordaBiznes.pl — Szczegółowa Architektura IT i Infrastruktura" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=26;fontStyle=1;fontColor=#1a1a2e;" vertex="1" parent="1">
<mxGeometry x="700" y="10" width="780" height="40" as="geometry"/>
</mxCell>
<!-- ==================== INTERNET / CLOUD (góra) ==================== -->
<mxCell id="cloud_group" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1565C0;strokeWidth=2;dashed=1;" vertex="1" parent="1">
<mxGeometry x="40" y="70" width="2720" height="210" as="geometry"/>
</mxCell>
<mxCell id="cloud_label" value="&lt;b style=&quot;font-size:16px;color:#1565C0&quot;&gt;INTERNET / CHMURA&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="60" y="75" width="220" height="28" as="geometry"/>
</mxCell>
<!-- Użytkownicy -->
<mxCell id="users" value="&lt;b style=&quot;font-size:13px&quot;&gt;Użytkownicy&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;150 firm członkowskich&lt;br&gt;nordabiznes.pl (HTTPS)&lt;/font&gt;" style="shape=mxgraph.cisco.users;html=1;fillColor=#1565C0;strokeColor=#1565C0;fontColor=#333;rounded=1;whiteSpace=wrap;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;" vertex="1" parent="1">
<mxGeometry x="70" y="105" width="80" height="60" as="geometry"/>
</mxCell>
<!-- OVH DNS -->
<mxCell id="ovh" value="&lt;b style=&quot;font-size:13px&quot;&gt;OVH DNS&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;nordabiznes.pl&lt;br&gt;A → 85.237.177.83&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#BBDEFB;strokeColor=#1565C0;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="250" y="110" width="170" height="65" as="geometry"/>
</mxCell>
<!-- Azure AD / M365 -->
<mxCell id="azure" value="&lt;b style=&quot;font-size:13px;color:#0078D4&quot;&gt;Microsoft Azure&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#333&quot;&gt;Entra ID (Azure AD)&lt;br&gt;Exchange Online (SMTP)&lt;br&gt;OneDrive for Business&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1F5FE;strokeColor=#0078D4;strokeWidth=2;fontSize=12;shadow=1;" vertex="1" parent="1">
<mxGeometry x="490" y="100" width="200" height="90" as="geometry"/>
</mxCell>
<!-- Let's Encrypt -->
<mxCell id="letsencrypt" value="&lt;b style=&quot;font-size:13px&quot;&gt;Let's Encrypt&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;SSL/TLS auto-renewal&lt;br&gt;wildcard cert&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C8E6C9;strokeColor=#2E7D32;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="760" y="115" width="170" height="60" as="geometry"/>
</mxCell>
<!-- Google APIs -->
<mxCell id="google" value="&lt;b style=&quot;font-size:13px;color:#4285F4&quot;&gt;Google Cloud&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#333&quot;&gt;Gemini AI (NordaGPT)&lt;br&gt;Places API / PageSpeed&lt;br&gt;OAuth 2.0 / Search Console&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF8E1;strokeColor=#F57F17;strokeWidth=2;fontSize=12;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1000" y="100" width="210" height="90" as="geometry"/>
</mxCell>
<!-- GitHub -->
<mxCell id="github" value="&lt;b style=&quot;font-size:13px&quot;&gt;GitHub&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;CI/CD (Actions)&lt;br&gt;Cloud backup repo&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#7B1FA2;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1280" y="115" width="160" height="60" as="geometry"/>
</mxCell>
<!-- External APIs -->
<mxCell id="ext_apis" value="&lt;b style=&quot;font-size:13px&quot;&gt;API zewnętrzne&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;KRS · Brave · Graph&lt;br&gt;YouTube · CrUX&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#7B1FA2;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1510" y="115" width="160" height="60" as="geometry"/>
</mxCell>
<!-- Hetzner Backup -->
<mxCell id="hetzner" value="&lt;b style=&quot;font-size:13px&quot;&gt;Hetzner Storage&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;Backup offsite (nocny)&lt;br&gt;30-day retention&lt;br&gt;Geo-redundancy: DE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4EC;strokeColor=#C62828;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1740" y="105" width="180" height="75" as="geometry"/>
</mxCell>
<!-- Slack -->
<mxCell id="slack_cloud" value="&lt;b style=&quot;font-size:13px&quot;&gt;Slack&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;MCP Webhooks&lt;br&gt;Alerty · Deploy&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8EAF6;strokeColor=#283593;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1990" y="115" width="150" height="60" as="geometry"/>
</mxCell>
<!-- Dev VPN -->
<mxCell id="dev" value="&lt;b style=&quot;font-size:13px&quot;&gt;Dev (VPN)&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;FortiClient SSL&lt;br&gt;10.212.134.x&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8EAF6;strokeColor=#283593;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="2210" y="115" width="140" height="60" as="geometry"/>
</mxCell>
<!-- ==================== FIREWALL ==================== -->
<mxCell id="fw" value="&lt;b style=&quot;font-size:16px;color:#C62828&quot;&gt;FortiGate 500D&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:12px;color:#333&quot;&gt;85.237.177.83 | IPS/IDS | VPN | Web Filtering | NAT/PAT&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFCDD2;strokeColor=#C62828;strokeWidth=3;fontSize=12;shadow=1;" vertex="1" parent="1">
<mxGeometry x="950" y="320" width="460" height="70" as="geometry"/>
</mxCell>
<!-- Strzałki: Internet → Firewall -->
<mxCell id="arr_ovh_fw" style="rounded=1;strokeColor=#1565C0;strokeWidth=2;exitX=1;exitY=0.5;entryX=0;entryY=0.3;" edge="1" source="ovh" target="fw" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="arr_vpn_fw" style="rounded=1;strokeColor=#283593;strokeWidth=2;dashed=1;entryX=1;entryY=0.3;" edge="1" source="dev" target="fw" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- ==================== SIEĆ LOKALNA ==================== -->
<mxCell id="lan_group" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FAFAFA;strokeColor=#666;strokeWidth=2;dashed=1;" vertex="1" parent="1">
<mxGeometry x="40" y="430" width="2720" height="1320" as="geometry"/>
</mxCell>
<mxCell id="lan_label" value="&lt;b style=&quot;font-size:16px;color:#333&quot;&gt;SIEĆ LOKALNA INPI — 10.22.68.0/24 | Gateway: FortiGate 10.22.68.1&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="60" y="435" width="600" height="28" as="geometry"/>
</mxCell>
<!-- =========================================================== -->
<!-- ===== SERWER FIZYCZNY 1: r11-pve-01 (IBM x3550 M4) ======= -->
<!-- =========================================================== -->
<mxCell id="pve1_box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#EDE7F6;strokeColor=#4527A0;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="60" y="480" width="1330" height="710" as="geometry"/>
</mxCell>
<mxCell id="pve1_header" value="&lt;b style=&quot;font-size:18px;color:#4527A0&quot;&gt;SERWER FIZYCZNY 1: r11-pve-01&lt;/b&gt;&lt;font style=&quot;font-size:13px;color:#666&quot;&gt; — IBM System x3550 M4 | IP: 10.22.68.121 | IPMI/IMM: 10.22.68.103&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="485" width="880" height="28" as="geometry"/>
</mxCell>
<mxCell id="pve1_specs" value="&lt;font style=&quot;font-size:12px;color:#4527A0&quot;&gt;&lt;b&gt;2× Intel Xeon E5-26xx v2 | 32 vCPU | 256 GB ECC RAM | Proxmox VE 9.1.4 (kernel 6.17.4) | 21 VM aktywnych (~180 GB RAM)&lt;/b&gt;&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="510" width="840" height="24" as="geometry"/>
</mxCell>
<!-- === VM: NordaBiznes PROD === -->
<mxCell id="prod_group" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#2E7D32;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="80" y="545" width="520" height="340" as="geometry"/>
</mxCell>
<mxCell id="prod_label" value="&lt;b style=&quot;font-size:15px;color:#2E7D32&quot;&gt;VM 249 — NORDABIZ-01 (PRODUKCJA)&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;10.22.68.249 | 4 vCPU | 4 GB RAM | 30 GB SSD (iSCSI)&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="100" y="550" width="430" height="40" as="geometry"/>
</mxCell>
<mxCell id="flask" value="&lt;b style=&quot;font-size:13px&quot;&gt;Flask 3.1 + Gunicorn&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;18 blueprintów | 40+ serwisów&lt;br&gt;56+ endpointów REST API&lt;br&gt;1 557 linii app.py&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C8E6C9;strokeColor=#2E7D32;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="100" y="600" width="230" height="90" as="geometry"/>
</mxCell>
<mxCell id="postgres" value="&lt;b style=&quot;font-size:13px&quot;&gt;PostgreSQL 14&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;89 tabel | FTS + fuzzy&lt;br&gt;~500 MB danych&lt;/font&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=10;fillColor=#C8E6C9;strokeColor=#2E7D32;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="350" y="600" width="180" height="90" as="geometry"/>
</mxCell>
<mxCell id="nordagpt" value="&lt;b style=&quot;font-size:12px;color:#F57F17&quot;&gt;NordaGPT (AI)&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;Gemini 3 Flash (primary)&lt;br&gt;Gemini 3 Pro (reasoning)&lt;br&gt;Thinking mode | 150 firm&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF8E1;strokeColor=#F57F17;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="100" y="700" width="170" height="70" as="geometry"/>
</mxCell>
<mxCell id="audits" value="&lt;b style=&quot;font-size:12px&quot;&gt;Audyty&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;SEO | GBP | Social&lt;br&gt;KRS | CrUX&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C8E6C9;strokeColor=#2E7D32;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="260" y="705" width="130" height="60" as="geometry"/>
</mxCell>
<mxCell id="rbac" value="&lt;b style=&quot;font-size:12px&quot;&gt;Security&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;RBAC 6 ról | 2FA&lt;br&gt;CSRF | Rate limit&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C8E6C9;strokeColor=#2E7D32;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="405" y="705" width="130" height="60" as="geometry"/>
</mxCell>
<mxCell id="forum" value="&lt;b style=&quot;font-size:12px&quot;&gt;Forum + ZOPK&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;KB · Timeline · Graf&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C8E6C9;strokeColor=#2E7D32;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="100" y="778" width="145" height="50" as="geometry"/>
</mxCell>
<mxCell id="email_send" value="&lt;b style=&quot;font-size:12px;color:#0078D4&quot;&gt;Email M365&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;SMTP Azure&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1F5FE;strokeColor=#0078D4;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="260" y="778" width="120" height="50" as="geometry"/>
</mxCell>
<mxCell id="norda360" value="&lt;b style=&quot;font-size:12px;color:#F57F17&quot;&gt;Norda360&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;SEO/GBP/Social&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF8E1;strokeColor=#F57F17;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="395" y="778" width="110" height="50" as="geometry"/>
</mxCell>
<mxCell id="cron_prod" value="&lt;b style=&quot;font-size:11px&quot;&gt;Cron:&lt;/b&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt; news · updater · backup&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="100" y="838" width="200" height="20" as="geometry"/>
</mxCell>
<!-- === VM: NordaBiznes STAGING === -->
<mxCell id="staging" value="&lt;b style=&quot;font-size:13px;color:#FF6F00&quot;&gt;VM 248 — STAGING&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#333&quot;&gt;10.22.68.248 | 2 vCPU | 4 GB&lt;br&gt;staging.nordabiznes.pl&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#FF6F00;strokeWidth=2;fontSize=12;shadow=1;" vertex="1" parent="1">
<mxGeometry x="80" y="900" width="240" height="75" as="geometry"/>
</mxCell>
<!-- === VM: NPM Reverse Proxy === -->
<mxCell id="npm" value="&lt;b style=&quot;font-size:13px&quot;&gt;VM 119 — R11-REVPROXY-01&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;10.22.68.250 | NPM (Nginx Proxy Manager)&lt;br&gt;SSL termination | Let's Encrypt auto-renew&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E0F2F1;strokeColor=#00695C;strokeWidth=2;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="340" y="900" width="300" height="75" as="geometry"/>
</mxCell>
<!-- === Grupa: Infrastruktura krytyczna na pve-01 === -->
<mxCell id="infra_crit" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;strokeWidth=2;dashed=1;" vertex="1" parent="1">
<mxGeometry x="620" y="545" width="750" height="340" as="geometry"/>
</mxCell>
<mxCell id="infra_crit_label" value="&lt;b style=&quot;font-size:14px;color:#E65100&quot;&gt;INFRASTRUKTURA KRYTYCZNA (na r11-pve-01)&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="640" y="550" width="380" height="24" as="geometry"/>
</mxCell>
<mxCell id="dns01" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 122 — R11-DNS-01&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;10.22.68.171 | 4 GB&lt;br&gt;Technitium PRIMARY&lt;br&gt;DNS + DHCP HA&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="640" y="585" width="170" height="75" as="geometry"/>
</mxCell>
<mxCell id="dns02" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 175 — R11-DNS-02&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;10.22.68.175 | 2 GB&lt;br&gt;Technitium SECONDARY&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="830" y="585" width="170" height="75" as="geometry"/>
</mxCell>
<mxCell id="zabbix" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 135 — Zabbix 7.0&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;10.22.68.126 | &lt;b&gt;32 GB&lt;/b&gt;&lt;br&gt;Monitoring 43 hostów&lt;br&gt;Alerty: email + Slack&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1020" y="585" width="170" height="80" as="geometry"/>
</mxCell>
<mxCell id="gitea" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 180 — Gitea&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;10.22.68.180 | 8 GB&lt;br&gt;Git repo + deploy source&lt;br&gt;+ GitHub mirror&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1210" y="585" width="145" height="80" as="geometry"/>
</mxCell>
<mxCell id="ipam" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 123 — phpIPAM&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;10.22.68.172 | 4 GB&lt;br&gt;IP management&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="640" y="680" width="160" height="65" as="geometry"/>
</mxCell>
<mxCell id="vault" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 246 — Vaultwarden&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;10.22.68.174 | 4 GB&lt;br&gt;Password manager&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="820" y="680" width="160" height="65" as="geometry"/>
</mxCell>
<mxCell id="cortex" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 177 — Cortex&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;Dashboard INPI&lt;br&gt;4 GB RAM&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1000" y="680" width="140" height="65" as="geometry"/>
</mxCell>
<mxCell id="n8n" value="&lt;b style=&quot;font-size:12px&quot;&gt;VM 185 — N8N&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;Automatyzacja&lt;br&gt;4 GB RAM&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1160" y="680" width="130" height="65" as="geometry"/>
</mxCell>
<mxCell id="ca" value="&lt;b style=&quot;font-size:11px&quot;&gt;VM 176&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;CA (512 MB)&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE0B2;strokeColor=#E65100;fontSize=11;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1305" y="685" width="80" height="55" as="geometry"/>
</mxCell>
<!-- Inne VM na pve-01 -->
<mxCell id="other_prod" value="&lt;b style=&quot;font-size:12px;color:#E65100&quot;&gt;Pozostałe VM na r11-pve-01:&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;VM 128: POMERANIA-PROD-01 (4 GB) | VM 252: INPI-WEB-01 (1 GB) | VM 253: INPI-WEB-02 (4 GB)&lt;br&gt;VM 254: SOCIALMEDIA-01 (4 GB) | VM 247: PROJECTS-01 (4 GB) | VM 241: DEV-ZABBIX-01 (32 GB)&lt;br&gt;VM 102: R11-BECK-01 (8 GB Win) | VM 106: R11-UGMO-01 (4 GB Win) | VM 126: HIKVIS-01 (4 GB Win) | VM 200: OLIWIER-01 (8 GB Win)&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#E65100;fontSize=11;fontColor=#333;dashed=1;" vertex="1" parent="1">
<mxGeometry x="640" y="760" width="720" height="80" as="geometry"/>
</mxCell>
<!-- === Podsumowanie pve-01 === -->
<mxCell id="pve1_summary" value="&lt;font style=&quot;font-size:12px;color:#4527A0&quot;&gt;&lt;b&gt;Łącznie pve-01:&lt;/b&gt; 21 VM | ~180 GB / 256 GB RAM (70%) | 32 vCPU&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="1000" width="470" height="22" as="geometry"/>
</mxCell>
<!-- =========================================================== -->
<!-- ===== SERWER FIZYCZNY 2: r11-pve-02 (IBM x3550 M4) ======= -->
<!-- =========================================================== -->
<mxCell id="pve2_box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#7B1FA2;strokeWidth=2;dashed=1;" vertex="1" parent="1">
<mxGeometry x="60" y="1040" width="640" height="140" as="geometry"/>
</mxCell>
<mxCell id="pve2_header" value="&lt;b style=&quot;font-size:16px;color:#7B1FA2&quot;&gt;SERWER FIZYCZNY 2: r11-pve-02&lt;/b&gt;&lt;font style=&quot;font-size:12px;color:#666&quot;&gt; — IBM System x3550 M4&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="1045" width="530" height="24" as="geometry"/>
</mxCell>
<mxCell id="pve2_specs" value="&lt;font style=&quot;font-size:12px;color:#7B1FA2&quot;&gt;&lt;b&gt;2× Intel Xeon E5-26xx v2 | 32 vCPU | 256 GB ECC RAM&lt;/b&gt; | IP: 10.22.68.122 | IPMI/IMM: 10.22.68.104&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="1070" width="640" height="22" as="geometry"/>
</mxCell>
<mxCell id="pve2_status" value="&lt;b style=&quot;font-size:14px;color:#7B1FA2&quot;&gt;STATUS: ONLINE — 0 VM (Standby / Failover)&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;Dostępny dla migracji VM w razie awarii pve-01 lub pve-03&lt;br&gt;Automatyczny failover z Proxmox HA | Gotowy do rozbudowy w ciągu minut&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1BEE7;strokeColor=#7B1FA2;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="80" y="1100" width="460" height="70" as="geometry"/>
</mxCell>
<!-- =========================================================== -->
<!-- ===== SERWER FIZYCZNY 3: r11-pve-03 (HPE) ================ -->
<!-- =========================================================== -->
<mxCell id="pve3_box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E0F7FA;strokeColor=#006064;strokeWidth=3;" vertex="1" parent="1">
<mxGeometry x="60" y="1200" width="1330" height="230" as="geometry"/>
</mxCell>
<mxCell id="pve3_header" value="&lt;b style=&quot;font-size:18px;color:#006064&quot;&gt;SERWER FIZYCZNY 3: r11-pve-03&lt;/b&gt;&lt;font style=&quot;font-size:13px;color:#666&quot;&gt; — HPE ProLiant (najwydajniejszy węzeł) | IP: 10.22.68.123&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="1205" width="830" height="28" as="geometry"/>
</mxCell>
<mxCell id="pve3_specs" value="&lt;font style=&quot;font-size:13px;color:#006064&quot;&gt;&lt;b&gt;2× Intel Xeon E5-2698 v4 @ 2.20 GHz | 80 vCPU (40 rdzeni / 80 wątków) | 503 GB ECC DDR4 RAM&lt;/b&gt; | Proxmox VE 9.1.4&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="80" y="1230" width="900" height="24" as="geometry"/>
</mxCell>
<mxCell id="pbs" value="&lt;b style=&quot;font-size:13px&quot;&gt;VM 127 — R11-PBS-01&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;10.22.68.127 | &lt;b&gt;24 GB RAM&lt;/b&gt;&lt;br&gt;Proxmox Backup Server&lt;br&gt;Snapshoty → Hetzner offsite&lt;br&gt;30-day retention&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B2EBF2;strokeColor=#006064;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="100" y="1270" width="230" height="100" as="geometry"/>
</mxCell>
<mxCell id="ha" value="&lt;b style=&quot;font-size:13px&quot;&gt;VM 181 — HomeAssistant&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;10.22.68.181 | 2 GB RAM&lt;br&gt;Smart Home Controller&lt;br&gt;vmbr1 (IoT bridge)&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B2EBF2;strokeColor=#006064;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="360" y="1270" width="230" height="100" as="geometry"/>
</mxCell>
<mxCell id="solinpi" value="&lt;b style=&quot;font-size:13px&quot;&gt;VM 121 — SOLINPI-PROD-01&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:11px;color:#666&quot;&gt;10.22.68.211 | 8 GB RAM&lt;br&gt;Solplanet + Certbot&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B2EBF2;strokeColor=#006064;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="620" y="1270" width="230" height="100" as="geometry"/>
</mxCell>
<mxCell id="pve3_summary" value="&lt;font style=&quot;font-size:12px;color:#006064&quot;&gt;&lt;b&gt;Łącznie pve-03:&lt;/b&gt; 3 VM | ~35 GB / 503 GB RAM (7%) | 80 vCPU | &lt;b&gt;408 GB wolnego RAM&lt;/b&gt; — rezerwa na rozbudowę&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="880" y="1310" width="620" height="22" as="geometry"/>
</mxCell>
<!-- =========================================================== -->
<!-- ===== STORAGE & NETWORK (prawa strona) ==================== -->
<!-- =========================================================== -->
<mxCell id="storage_group" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4EC;strokeColor=#C62828;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="1430" y="480" width="580" height="380" as="geometry"/>
</mxCell>
<mxCell id="storage_label" value="&lt;b style=&quot;font-size:16px;color:#C62828&quot;&gt;STORAGE — R11-ASUSTOR-01 (ASUSTOR AS6510T)&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:12px;color:#666&quot;&gt;10.22.68.162 | iSCSI shared storage dla całego klastra&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1450" y="485" width="520" height="40" as="geometry"/>
</mxCell>
<mxCell id="stor_hdd" value="&lt;b style=&quot;font-size:14px&quot;&gt;HDD RAID&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:12px;color:#666&quot;&gt;5 TB pojemności&lt;br&gt;~60% wykorzystania&lt;br&gt;Dane VM, backupy&lt;/font&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=12;fillColor=#FFCDD2;strokeColor=#C62828;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1460" y="540" width="160" height="100" as="geometry"/>
</mxCell>
<mxCell id="stor_nvme" value="&lt;b style=&quot;font-size:14px&quot;&gt;NVMe RAID1&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:12px;color:#666&quot;&gt;1 TB pojemności&lt;br&gt;~45% wykorzystania&lt;br&gt;Krytyczne VM&lt;/font&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=12;fillColor=#FFCDD2;strokeColor=#C62828;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1650" y="540" width="160" height="100" as="geometry"/>
</mxCell>
<mxCell id="stor_ssd" value="&lt;b style=&quot;font-size:14px&quot;&gt;SSD RAID10&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:12px;color:#666&quot;&gt;1 TB pojemności&lt;br&gt;~50% wykorzystania&lt;br&gt;NordaBiz PROD&lt;/font&gt;" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=12;fillColor=#FFCDD2;strokeColor=#C62828;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1840" y="540" width="150" height="100" as="geometry"/>
</mxCell>
<mxCell id="iscsi_info" value="&lt;font style=&quot;font-size:12px;color:#C62828&quot;&gt;&lt;b&gt;iSCSI Multipath:&lt;/b&gt; 10.10.10.9 + 10.10.10.10 (vmbr11)&lt;br&gt;&lt;b&gt;IQN:&lt;/b&gt; iqn.2011-08.com.asustor:as6510t-848e77&lt;br&gt;&lt;b&gt;Łącznie:&lt;/b&gt; 7 TB raw storage (HDD 5TB + NVMe 1TB + SSD 1TB)&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FCE4EC;strokeColor=#C62828;fontSize=11;fontColor=#333;dashed=1;" vertex="1" parent="1">
<mxGeometry x="1450" y="660" width="410" height="65" as="geometry"/>
</mxCell>
<!-- 10G Switch -->
<mxCell id="switch10g" value="&lt;b style=&quot;font-size:14px;color:#333&quot;&gt;Netgear XS712Tv2&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:12px;color:#666&quot;&gt;R11-NETGEAR-10G | 10.22.68.3&lt;br&gt;12-port 10G SFP+ switch&lt;br&gt;iSCSI + VM migration backbone&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E0E0E0;strokeColor=#333;strokeWidth=2;fontSize=12;fontColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="1460" y="745" width="240" height="90" as="geometry"/>
</mxCell>
<!-- Network info -->
<mxCell id="net_info" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8EAF6;strokeColor=#283593;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="1430" y="870" width="580" height="170" as="geometry"/>
</mxCell>
<mxCell id="net_label" value="&lt;b style=&quot;font-size:15px;color:#283593&quot;&gt;SIECI WIRTUALNE (vBridge)&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1450" y="875" width="240" height="24" as="geometry"/>
</mxCell>
<mxCell id="vmbr0" value="&lt;b&gt;vmbr0&lt;/b&gt; — Management&lt;br&gt;&lt;font color=&quot;#666&quot;&gt;10.22.68.0/24 | Wszystkie VM&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C5CAE9;strokeColor=#283593;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1450" y="905" width="260" height="50" as="geometry"/>
</mxCell>
<mxCell id="vmbr10" value="&lt;b&gt;vmbr10&lt;/b&gt; — Migration 10G&lt;br&gt;&lt;font color=&quot;#666&quot;&gt;10.10.10.64/26 | ~820 MiB/s&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C5CAE9;strokeColor=#283593;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1730" y="905" width="260" height="50" as="geometry"/>
</mxCell>
<mxCell id="vmbr11" value="&lt;b&gt;vmbr11&lt;/b&gt; — iSCSI Multipath&lt;br&gt;&lt;font color=&quot;#666&quot;&gt;10.10.10.128/26 | MTU 9000&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C5CAE9;strokeColor=#283593;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1450" y="965" width="260" height="50" as="geometry"/>
</mxCell>
<mxCell id="vmbr1" value="&lt;b&gt;vmbr1&lt;/b&gt; — IoT Network&lt;br&gt;&lt;font color=&quot;#666&quot;&gt;192.168.68.0/24 | pve-03 only&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C5CAE9;strokeColor=#283593;fontSize=12;fontColor=#333;" vertex="1" parent="1">
<mxGeometry x="1730" y="965" width="260" height="50" as="geometry"/>
</mxCell>
<!-- =========================================================== -->
<!-- ===== POŁĄCZENIA ========================================== -->
<!-- =========================================================== -->
<!-- FW → NPM -->
<mxCell id="arr_fw_npm" value="&lt;font style=&quot;font-size:11px&quot;&gt;HTTPS:443&lt;/font&gt;" style="rounded=1;strokeColor=#C62828;strokeWidth=3;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" source="fw" target="npm" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- NPM → Prod -->
<mxCell id="arr_npm_prod" value="&lt;font style=&quot;font-size:11px&quot;&gt;:5000&lt;/font&gt;" style="rounded=1;strokeColor=#2E7D32;strokeWidth=2;exitX=0;exitY=0.3;entryX=0.5;entryY=1;" edge="1" source="npm" target="prod_group" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Flask → Google -->
<mxCell id="arr_flask_google" style="rounded=1;strokeColor=#F57F17;strokeWidth=2;dashed=1;" edge="1" source="nordagpt" target="google" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Email → Azure -->
<mxCell id="arr_email_azure" style="rounded=1;strokeColor=#0078D4;strokeWidth=2;dashed=1;" edge="1" source="email_send" target="azure" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- PBS → Hetzner -->
<mxCell id="arr_pbs_hetzner" style="rounded=1;strokeColor=#C62828;strokeWidth=2;dashed=1;" edge="1" source="pbs" target="hetzner" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Zabbix → Slack -->
<mxCell id="arr_zabbix_slack" style="rounded=1;strokeColor=#E65100;strokeWidth=1;dashed=1;" edge="1" source="zabbix" target="slack_cloud" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- Storage → pve nodes (iSCSI) -->
<mxCell id="arr_stor_pve1" value="&lt;font style=&quot;font-size:10px;color:#C62828&quot;&gt;iSCSI 10G&lt;/font&gt;" style="rounded=1;strokeColor=#C62828;strokeWidth=2;exitX=0;exitY=0.5;entryX=1;entryY=0.5;dashed=1;" edge="1" source="stor_hdd" target="infra_crit" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- ==================== STATYSTYKI NA DOLE ==================== -->
<mxCell id="stats_bar" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a1a2e;strokeColor=#1a1a2e;" vertex="1" parent="1">
<mxGeometry x="60" y="1470" width="1350" height="55" as="geometry"/>
</mxCell>
<mxCell id="stat1" value="&lt;b style=&quot;font-size:16px;color:#D69E2E&quot;&gt;3&lt;/b&gt;&lt;font style=&quot;font-size:11px;color:#A0AEC0&quot;&gt; serwery fizyczne&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="70" y="1482" width="150" height="28" as="geometry"/>
</mxCell>
<mxCell id="stat2" value="&lt;b style=&quot;font-size:16px;color:#D69E2E&quot;&gt;144&lt;/b&gt;&lt;font style=&quot;font-size:11px;color:#A0AEC0&quot;&gt; vCPU łącznie&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="230" y="1482" width="140" height="28" as="geometry"/>
</mxCell>
<mxCell id="stat3" value="&lt;b style=&quot;font-size:16px;color:#D69E2E&quot;&gt;1 015 GB&lt;/b&gt;&lt;font style=&quot;font-size:11px;color:#A0AEC0&quot;&gt; RAM łącznie&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="390" y="1482" width="170" height="28" as="geometry"/>
</mxCell>
<mxCell id="stat4" value="&lt;b style=&quot;font-size:16px;color:#D69E2E&quot;&gt;7 TB&lt;/b&gt;&lt;font style=&quot;font-size:11px;color:#A0AEC0&quot;&gt; storage (iSCSI)&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="570" y="1482" width="160" height="28" as="geometry"/>
</mxCell>
<mxCell id="stat5" value="&lt;b style=&quot;font-size:16px;color:#D69E2E&quot;&gt;24&lt;/b&gt;&lt;font style=&quot;font-size:11px;color:#A0AEC0&quot;&gt; maszyny wirtualne&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="750" y="1482" width="180" height="28" as="geometry"/>
</mxCell>
<mxCell id="stat6" value="&lt;b style=&quot;font-size:16px;color:#D69E2E&quot;&gt;10 Gbps&lt;/b&gt;&lt;font style=&quot;font-size:11px;color:#A0AEC0&quot;&gt; backbone&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="950" y="1482" width="140" height="28" as="geometry"/>
</mxCell>
<mxCell id="stat7" value="&lt;b style=&quot;font-size:16px;color:#D69E2E&quot;&gt;~305 000 zł&lt;/b&gt;&lt;font style=&quot;font-size:11px;color:#A0AEC0&quot;&gt; wartość platformy&lt;/font&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1120" y="1482" width="200" height="28" as="geometry"/>
</mxCell>
<!-- Legenda -->
<mxCell id="legend_bar" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#ddd;" vertex="1" parent="1">
<mxGeometry x="1430" y="1470" width="580" height="55" as="geometry"/>
</mxCell>
<mxCell id="leg1" value="&lt;font style=&quot;font-size:11px&quot;&gt;&#x1F7E2; NordaBiznes&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1445" y="1480" width="120" height="20" as="geometry"/>
</mxCell>
<mxCell id="leg2" value="&lt;font style=&quot;font-size:11px&quot;&gt;&#x1F7E0; Infra INPI&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1565" y="1480" width="100" height="20" as="geometry"/>
</mxCell>
<mxCell id="leg3" value="&lt;font style=&quot;font-size:11px&quot;&gt;&#x1F535; Cloud&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1665" y="1480" width="70" height="20" as="geometry"/>
</mxCell>
<mxCell id="leg4" value="&lt;font style=&quot;font-size:11px&quot;&gt;&#x1F7E3; IBM pve-01/02&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1735" y="1480" width="120" height="20" as="geometry"/>
</mxCell>
<mxCell id="leg5" value="&lt;font style=&quot;font-size:11px&quot;&gt;&#x1F7E6; HPE pve-03&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1855" y="1480" width="100" height="20" as="geometry"/>
</mxCell>
<mxCell id="leg6" value="&lt;font style=&quot;font-size:11px&quot;&gt;&#x1F534; Storage/Security&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="1445" y="1500" width="140" height="20" as="geometry"/>
</mxCell>
<!-- Migration label -->
<mxCell id="migration_note" value="&lt;font style=&quot;font-size:11px;color:#283593&quot;&gt;&lt;b&gt;Live migration:&lt;/b&gt; ~820 MiB/s via 10G (vmbr10) | Downtime: 30-80 ms | &lt;b&gt;Energooszczędność:&lt;/b&gt; konsolidacja VM → oszczędność ~2 600 zł/rok&lt;/font&gt;" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="60" y="1445" width="750" height="20" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>