nordabiz/docs/architecture/diagrams/a3-network-topology.drawio

143 lines
13 KiB
Plaintext

<mxfile host="draw.io" modified="2026-02-12" agent="Claude Code" type="device">
<diagram id="a3-network" name="Topologia Sieci">
<mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="title" value="NordaBiz — Topologia Sieci" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=22;fontStyle=1;fontColor=#1a1a2e;" vertex="1" parent="1">
<mxGeometry x="500" y="15" width="380" height="36" as="geometry"/>
</mxCell>
<mxCell id="subtitle" value="Infrastruktura sieciowa INPI — podsieci, VM-y, adresy IP" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=11;fontColor=#888;" vertex="1" parent="1">
<mxGeometry x="470" y="48" width="420" height="20" as="geometry"/>
</mxCell>
<!-- INTERNET -->
<mxCell id="internet" value="&lt;b style=&quot;font-size:14px&quot;&gt;Internet&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#666&quot;&gt;nordabiznes.pl&lt;br&gt;DNS: OVH&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#333;shadow=1;" vertex="1" parent="1">
<mxGeometry x="640" y="80" width="140" height="80" as="geometry"/>
</mxCell>
<!-- FORTIGATE -->
<mxCell id="fw_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#C62828;shadow=1;" vertex="1" parent="1">
<mxGeometry x="560" y="200" width="300" height="70" as="geometry"/>
</mxCell>
<mxCell id="fw" value="&lt;b style=&quot;font-size:14px;color:#C62828&quot;&gt;FortiGate 500D&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;85.237.177.83 (WAN) | NAT → :443&lt;br&gt;SSL-VPN: pula 10.212.134.x&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="575" y="208" width="270" height="55" as="geometry"/>
</mxCell>
<!-- STRZAŁKA Internet → FW -->
<mxCell id="arr_inet" value="HTTPS :443" style="strokeColor=#333;strokeWidth=2;fontSize=10;fontStyle=1;" edge="1" source="internet" target="fw_bg" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- SIEĆ LAN 10.22.68.0/24 -->
<mxCell id="lan_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F5F5F5;strokeColor=#999;strokeWidth=2;dashed=1;" vertex="1" parent="1">
<mxGeometry x="30" y="310" width="1340" height="630" as="geometry"/>
</mxCell>
<mxCell id="lan_title" value="&lt;b style=&quot;font-size:16px;color:#555&quot;&gt;LAN: 10.22.68.0/24&lt;/b&gt;&lt;font style=&quot;font-size:10px;color:#999&quot;&gt; — Proxmox Cluster (r11-pve-01/02/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="50" y="316" width="500" height="24" as="geometry"/>
</mxCell>
<!-- STRZAŁKA FW → LAN -->
<mxCell id="arr_fw" value="NAT" style="strokeColor=#C62828;strokeWidth=2;fontSize=10;fontStyle=1;fontColor=#C62828;" edge="1" source="fw_bg" target="npm_box" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- REVERSE PROXY -->
<mxCell id="npm_box" value="&lt;b style=&quot;color:#E65100&quot;&gt;Nginx Proxy Manager&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;R11-REVPROXY-01 (VM 119)&lt;br&gt;10.22.68.250&lt;br&gt;Let's Encrypt SSL&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#E65100;shadow=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="600" y="360" width="220" height="70" as="geometry"/>
</mxCell>
<!-- PRODUKCJA -->
<mxCell id="prod_grp" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E3F2FD;strokeColor=#1565C0;shadow=1;" vertex="1" parent="1">
<mxGeometry x="50" y="480" width="380" height="200" as="geometry"/>
</mxCell>
<mxCell id="prod_lbl" value="&lt;b style=&quot;font-size:14px;color:#1565C0&quot;&gt;Produkcja&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="486" width="110" height="24" as="geometry"/>
</mxCell>
<mxCell id="prod_vm" value="&lt;b&gt;NORDABIZ-01&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;VM 249 — 10.22.68.249&lt;br&gt;Flask :5000 + PostgreSQL :5432&lt;br&gt;Ubuntu 22.04 LTS&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#1565C0;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="65" y="516" width="350" height="60" as="geometry"/>
</mxCell>
<mxCell id="prod_db" value="&lt;b&gt;PostgreSQL&lt;/b&gt; — nordabiz&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;80+ tabel | 150 firm | User: nordabiz_app&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#BBDEFB;strokeColor=#1565C0;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="65" y="586" width="350" height="40" as="geometry"/>
</mxCell>
<mxCell id="prod_app" value="&lt;b&gt;Gunicorn + Flask&lt;/b&gt; :5000&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;17 blueprintów | 375+ routes | Gemini AI&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#BBDEFB;strokeColor=#1565C0;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="65" y="634" width="350" height="40" as="geometry"/>
</mxCell>
<!-- NPM → PROD strzałka -->
<mxCell id="arr_npm_prod" value=":5000" style="strokeColor=#1565C0;strokeWidth=2;fontSize=10;fontStyle=1;fontColor=#1565C0;" edge="1" source="npm_box" target="prod_grp" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- STAGING -->
<mxCell id="stag_grp" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#2E7D32;shadow=1;" vertex="1" parent="1">
<mxGeometry x="500" y="480" width="300" height="200" as="geometry"/>
</mxCell>
<mxCell id="stag_lbl" value="&lt;b style=&quot;font-size:14px;color:#2E7D32&quot;&gt;Staging&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="510" y="486" width="80" height="24" as="geometry"/>
</mxCell>
<mxCell id="stag_vm" value="&lt;b&gt;NORDABIZ-STAGING-01&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;VM 248 — 10.22.68.248&lt;br&gt;Flask + PostgreSQL&lt;br&gt;staging.nordabiznes.pl&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#2E7D32;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="515" y="516" width="270" height="60" as="geometry"/>
</mxCell>
<mxCell id="stag_db" value="&lt;b&gt;PostgreSQL&lt;/b&gt; — nordabiz_staging" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#C8E6C9;strokeColor=#2E7D32;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="515" y="586" width="270" height="32" as="geometry"/>
</mxCell>
<!-- USŁUGI WSPIERAJĄCE -->
<mxCell id="svc_grp" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#E65100;shadow=1;" vertex="1" parent="1">
<mxGeometry x="870" y="480" width="480" height="200" as="geometry"/>
</mxCell>
<mxCell id="svc_lbl" value="&lt;b style=&quot;font-size:14px;color:#E65100&quot;&gt;Usługi Wspierające&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="880" y="486" width="180" height="24" as="geometry"/>
</mxCell>
<mxCell id="git_vm" value="&lt;b&gt;Gitea&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;10.22.68.180&lt;br&gt;Repo wewnętrzny&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E65100;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="885" y="516" width="140" height="55" as="geometry"/>
</mxCell>
<mxCell id="dns_vm" value="&lt;b&gt;Technitium DNS&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;R11-DNS-01/02&lt;br&gt;10.22.68.171/172&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E65100;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1035" y="516" width="140" height="55" as="geometry"/>
</mxCell>
<mxCell id="pbs_vm" value="&lt;b&gt;Proxmox PBS&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;10.22.68.127&lt;br&gt;Backup offsite&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E65100;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1185" y="516" width="140" height="55" as="geometry"/>
</mxCell>
<mxCell id="ipam_vm" value="&lt;b&gt;phpIPAM&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;IP Address Mgmt&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E65100;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="885" y="585" width="140" height="42" as="geometry"/>
</mxCell>
<mxCell id="zabbix_vm" value="&lt;b&gt;Zabbix&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;Monitoring&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E65100;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1035" y="585" width="140" height="42" as="geometry"/>
</mxCell>
<mxCell id="github_ext" value="&lt;b&gt;GitHub&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;Cloud backup&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#E65100;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="1185" y="585" width="140" height="42" as="geometry"/>
</mxCell>
<!-- STRZAŁKI między komponentami -->
<mxCell id="arr_prod_git" value="" style="strokeColor=#E65100;strokeWidth=1;dashed=1;" edge="1" source="prod_grp" target="git_vm" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="arr_prod_pbs" value="backup" style="strokeColor=#E65100;strokeWidth=1;dashed=1;fontSize=9;fontColor=#E65100;" edge="1" source="prod_grp" target="pbs_vm" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- DEV -->
<mxCell id="dev_box" value="&lt;b style=&quot;color:#7B1FA2&quot;&gt;Developer (macOS)&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px&quot;&gt;Docker PostgreSQL :5433&lt;br&gt;Flask dev :5000/5001&lt;br&gt;FortiClient SSL-VPN&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F3E5F5;strokeColor=#7B1FA2;shadow=1;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="50" y="740" width="270" height="70" as="geometry"/>
</mxCell>
<!-- VPN connection -->
<mxCell id="arr_vpn" value="SSL-VPN" style="strokeColor=#7B1FA2;strokeWidth=2;dashed=1;fontSize=10;fontStyle=1;fontColor=#7B1FA2;" edge="1" source="dev_box" target="fw_bg" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<!-- LEGENDA -->
<mxCell id="legend_bg" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff;strokeColor=#ccc;" vertex="1" parent="1">
<mxGeometry x="50" y="850" width="600" height="60" as="geometry"/>
</mxCell>
<mxCell id="legend" value="&lt;font style=&quot;font-size:10px&quot;&gt;&lt;b&gt;Legenda:&lt;/b&gt; &lt;font color=&quot;#1565C0&quot;&gt;■&lt;/font&gt; Produkcja &amp;nbsp; &lt;font color=&quot;#2E7D32&quot;&gt;■&lt;/font&gt; Staging &amp;nbsp; &lt;font color=&quot;#E65100&quot;&gt;■&lt;/font&gt; Usługi &amp;nbsp; &lt;font color=&quot;#C62828&quot;&gt;■&lt;/font&gt; Firewall &amp;nbsp; &lt;font color=&quot;#7B1FA2&quot;&gt;■&lt;/font&gt; Dev &amp;nbsp;|&amp;nbsp; ── pełna linia = ruch sieciowy &amp;nbsp; - - linia przerywana = zarządzanie&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="862" width="580" height="24" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>