Visiteurs DuckDNS Let's Encrypt Cloudflare CrowdSec CAPI Telegram Registres
│ ▲ ▲ (Turnstile) ▲ ▲ ▲
│ HTTPS │ IP │ certificat │ │ │ 5 h
▼ │ │ wildcard │ │ │
┌─────────┐ │ │ │ │ │
│ Box │ │ │ │ │ │
└────┬────┘ │ │ │ │ │
│ 80/443 │ │ │ │ │
┌─────┼───────────┼─────────────┼──────────────────────────────┼──────────────┼────────────┼──┐
│ ▼ │ SERVEUR PRINCIPAL (Debian 13, noyau Zabbly)│ │ │ │
│ ┌────────┐ ┌───┴────┐ ┌────┴─────┐ │ ┌─────┴─┐│
│ │ SWAG │──┤ DuckDNS│ Authelia ◄── contrôle d'accès ─┤ CrowdSec │ │ │Watch- ││
│ │ nginx │ └────────┘ ▲ └────▲─────┘ │ │tower ││
│ │fail2ban├───────────────────┘ journaux / décisions ────┘ │ └───────┘│
│ └───┬────┘ │ │
│ │ proxy (réseau proxy) │ │
│ ▼ │ │
│ ┌──────────────────────────────────────────────────┐ ┌─────────────────┐ │ │
│ │ Services : Productivité · Veille · Médias · │ │ Script Plakar ├──┘ ✅ ⚠️ ❌ │
│ │ Outils (Sshwifty…) │ │ cron 3 h 30 │ │
│ │ n8n ──► docker-socket-proxy (réseau docker-api) │ └────────┬────────┘ │
│ │ n8n ──► Telegram (mises à jour de conteneurs) │ │ │
│ │ Jellystat ──► API Jellyfin │ │ │
│ └──────────────────────────────────────────────────┘ │ │
│ Portainer ──────────────────────────────────┐ │ │
└───────┬───────────────────────────────────────┼─────────────────┼───────────────────────────┘
│ proxy (Jellyfin, AdGuard) SSH (clé) │ 9001 │ SFTP, chaque nuit
┌───────▼───────────────────────────────────────▼─────────────────▼───────────────────────────┐
│ RASPBERRY PI (Debian 13, noyau Raspberry Pi) │
│ AdGuard Home Jellyfin meshtasticd Portainer Agent Watchtower OLED Stats led-anim│
│ ▲ │ │
│ │ DNS │ radio LoRa SSD : dépôt Plakar · médias Jellyfin │
└──────┼──────────────────────────┼───────────────────────────────────────────────────────────┘
│ ▼
Postes clients Réseau Meshtastic
(réseau local)
<mxGraphModel dx="800" dy="600" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="net" value="Internet" style="rounded=0;fillColor=#f5f5f5;strokeColor=#999999;verticalAlign=top;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="40" y="20" width="770" height="90" as="geometry" />
</mxCell>
<mxCell id="visit" value="Visiteurs" style="rounded=1;fillColor=#ffffff;strokeColor=#666666" vertex="1" parent="1">
<mxGeometry x="60" y="55" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="svcext" value="DuckDNS Let's Encrypt Cloudflare CrowdSec CAPI" style="rounded=1;fillColor=#ffffff;strokeColor=#666666;align=left;spacingLeft=8" vertex="1" parent="1">
<mxGeometry x="330" y="45" width="160" height="60" as="geometry" />
</mxCell>
<mxCell id="tg" value="Telegram" style="rounded=1;fillColor=#ffffff;strokeColor=#666666" vertex="1" parent="1">
<mxGeometry x="650" y="55" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="box" value="Box redirection 80/443" style="rounded=1;fillColor=#fff2cc;strokeColor=#d6b656" vertex="1" parent="1">
<mxGeometry x="60" y="150" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="srv" value="Serveur principal — Debian 13" style="rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;verticalAlign=top;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="40" y="240" width="770" height="330" as="geometry" />
</mxCell>
<mxCell id="swag" value="SWAG reverse proxy, TLS, fail2ban" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf" vertex="1" parent="1">
<mxGeometry x="70" y="285" width="200" height="60" as="geometry" />
</mxCell>
<mxCell id="auth" value="Authelia authentification" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf" vertex="1" parent="1">
<mxGeometry x="310" y="285" width="150" height="60" as="geometry" />
</mxCell>
<mxCell id="cs" value="CrowdSec détection, bannissement" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf" vertex="1" parent="1">
<mxGeometry x="500" y="285" width="180" height="60" as="geometry" />
</mxCell>
<mxCell id="svc" value="Services en conteneurs productivité · veille · médias · outils" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf" vertex="1" parent="1">
<mxGeometry x="70" y="390" width="330" height="70" as="geometry" />
</mxCell>
<mxCell id="gest" value="Portainer · Watchtower docker-socket-proxy · n8n" style="rounded=1;fillColor=#ffffff;strokeColor=#6c8ebf" vertex="1" parent="1">
<mxGeometry x="440" y="390" width="240" height="70" as="geometry" />
</mxCell>
<mxCell id="plakar" value="Sauvegarde Plakar — 3 h 30" style="rounded=1;fillColor=#d5e8d4;strokeColor=#82b366" vertex="1" parent="1">
<mxGeometry x="70" y="490" width="610" height="50" as="geometry" />
</mxCell>
<mxCell id="pi" value="Raspberry Pi — Debian 13, réseau local" style="rounded=0;fillColor=#e1d5e7;strokeColor=#9673a6;verticalAlign=top;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="40" y="640" width="770" height="180" as="geometry" />
</mxCell>
<mxCell id="adg" value="AdGuard Home DNS local" style="rounded=1;fillColor=#ffffff;strokeColor=#9673a6" vertex="1" parent="1">
<mxGeometry x="70" y="685" width="160" height="55" as="geometry" />
</mxCell>
<mxCell id="jf" value="Jellyfin" style="rounded=1;fillColor=#ffffff;strokeColor=#9673a6" vertex="1" parent="1">
<mxGeometry x="260" y="685" width="120" height="55" as="geometry" />
</mxCell>
<mxCell id="mesh" value="meshtasticd LoRa" style="rounded=1;fillColor=#ffffff;strokeColor=#9673a6" vertex="1" parent="1">
<mxGeometry x="410" y="685" width="120" height="55" as="geometry" />
</mxCell>
<mxCell id="ssd" value="SSD dépôt Plakar · médias" style="rounded=1;fillColor=#d5e8d4;strokeColor=#82b366" vertex="1" parent="1">
<mxGeometry x="560" y="685" width="220" height="55" as="geometry" />
</mxCell>
<mxCell id="postes" value="Postes du réseau local" style="rounded=1;fillColor=#ffffff;strokeColor=#666666" vertex="1" parent="1">
<mxGeometry x="60" y="860" width="200" height="40" as="geometry" />
</mxCell>
<mxCell id="lora" value="Réseau Meshtastic" style="rounded=1;fillColor=#ffffff;strokeColor=#666666" vertex="1" parent="1">
<mxGeometry x="400" y="860" width="180" height="40" as="geometry" />
</mxCell>
<mxCell id="e1" value="HTTPS" style="edgeStyle=orthogonalEdgeStyle;rounded=0;endArrow=block" edge="1" parent="1" source="visit" target="box">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e2" value="80/443" style="edgeStyle=orthogonalEdgeStyle;rounded=0;endArrow=block" edge="1" parent="1" source="box" target="swag">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e3" value="contrôle d'accès" style="edgeStyle=orthogonalEdgeStyle;rounded=0;dashed=1;endArrow=block" edge="1" parent="1" source="swag" target="auth">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e4" value="journaux / décisions" style="edgeStyle=orthogonalEdgeStyle;rounded=0;dashed=1;endArrow=block" edge="1" parent="1" source="swag" target="cs">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e5" value="proxy" style="edgeStyle=orthogonalEdgeStyle;rounded=0;endArrow=block" edge="1" parent="1" source="swag" target="svc">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e6" value="proxy (Jellyfin, AdGuard)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;endArrow=block" edge="1" parent="1" source="swag" target="pi">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e7" value="SFTP chaque nuit" style="edgeStyle=orthogonalEdgeStyle;rounded=0;strokeColor=#82b366;endArrow=block" edge="1" parent="1" source="plakar" target="ssd">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e8" value="✅ ⚠️ ❌" style="edgeStyle=orthogonalEdgeStyle;rounded=0;dashed=1;strokeColor=#82b366;endArrow=block" edge="1" parent="1" source="plakar" target="tg">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e9" value="DNS" style="edgeStyle=orthogonalEdgeStyle;rounded=0;endArrow=block" edge="1" parent="1" source="postes" target="adg">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e10" value="radio" style="edgeStyle=orthogonalEdgeStyle;rounded=0;endArrow=block" edge="1" parent="1" source="mesh" target="lora">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e11" value="DNS dynamique, certificat, signalements" style="edgeStyle=orthogonalEdgeStyle;rounded=0;dashed=1;endArrow=block" edge="1" parent="1" source="srv" target="svcext">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>