0 Votes

Schéma de l'infrastructure

Version 3.1 par john le 2026/09/20 20:45

                                   INTERNET
  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&#10;Let's Encrypt&#10;Cloudflare&#10;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&#10;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&#10;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&#10;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&#10;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&#10;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&#10;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&#10;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&#10;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&#10;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>