Aller au contenu principal

Architecture interactive Nabla

Plateforme IA, services homelab, dépendances fonctionnelles et intégrations observables.

La lecture commence par les fondations et composants à plus grand rayon d’impact, avant les applications feuilles. La vue détaillée conserve ensuite l’ensemble des relations déclarées dans nabla-compose.

Opérations et diagnostic

Un snapshot unique en lecture seule du runtime FastAPI, de la santé des dépendances et des preuves TrueNAS, pfSense et Cloudflare. Commencez ici pour identifier la couche en défaut avant de modifier la configuration.

Actualisation des preuves…
Actualisation des preuves…

Diagnostic d’impact et de cause racine

Sélectionne un service pour séparer sa santé locale, les causes observées via blocked_by et son rayon d’impact structurel dans la topologie requise.

État et filtres de l’architecture

Les filtres s’appliquent aux services déclarés du graphe ; la topologie complète reste utilisée pour calculer la criticité et le rayon d’impact.

Actualisation…

72 services déclarés affichés sur 72

1 · Services et expérimentationsFinalité principale du homelab : disponibilité, erreurs, latence et trafic des services expérimentés.RED49 composants49 en alerte
Garage

Garage

Inconnu

Garage WebUI exposed through Cloudflare Tunnel directly to the LAN-bound :3909 origin without Traefik.

Nexus

Nexus

Inconnu

Sonatype Nexus Repository

AdGuard Home

AdGuard Home

Inconnu

Network-wide ad blocking

Affine

Affine

Inconnu

Knowledge base and notes

AnythingLLM

AnythingLLM

Inconnu

Private LLM workspace and RAG

AnythingLLM - albandrieu

AnythingLLM - albandrieu

Inconnu

Private LLM workspace and RAG

ConvertX

ConvertX

Inconnu

File conversion service

DDNS Updater

DDNS Updater

Inconnu

Dynamic DNS updates

Domain Watchdog

Domain Watchdog

Inconnu

Domain monitoring service

Heimdall

Heimdall

Inconnu

Application dashboard

Hello

Hello

Inconnu

Hello World NGINX service

Home

Home

Inconnu

Gateway admin UI (home hostname)

IT Tools

IT Tools

Inconnu

Developer utilities collection

KaraKeep

KaraKeep

Inconnu

Karaoke management

Language Tool

Language Tool

Inconnu

languagetool

Lidarr

Lidarr

Inconnu

Music collection manager

LiteLLM - albandrieu

LiteLLM - albandrieu

Inconnu

LLM proxy and gateway

LocalAI (GPU)

LocalAI (GPU)

Inconnu

Local AI models (GPU instance)

NetAlertX

NetAlertX

Inconnu

Network presence and alerts

Netbootxyz

Netbootxyz

Inconnu

Network boot utility

Ollama (GPU)

Ollama (GPU)

Inconnu

Large language models (GPU instance)

Open SpeedTest

Open SpeedTest

Inconnu

Open SpeedTest - Network speed testing

Open WebUI

Open WebUI

Inconnu

Web interface for chat models

OpenArchiver

OpenArchiver

Inconnu

Archive management

Paperless AI

Paperless AI

Inconnu

Document management with AI

Paperless-ngx

Paperless-ngx

Inconnu

Document management system

pgAdmin

pgAdmin

Inconnu

PostgreSQL administration

Plumber

Plumber

Inconnu

GitLab Security check

Plumber API

Plumber API

Inconnu

GitLab Security check

Portainer

Portainer

Inconnu

Container management

PortTracker

PortTracker

Inconnu

Port tracking service

PortTracker - albandrieu

PortTracker - albandrieu

Inconnu

Port tracking service

Prometheus - albandrieu

Prometheus - albandrieu

Inconnu

Prometheus

Radarr

Radarr

Inconnu

Movie collection manager

Reactive Resume

Reactive Resume

Inconnu

Reactive Resume

Reactive Resume - albandrieu

Reactive Resume - albandrieu

Inconnu

Reactive Resume

Scrutiny Collector - albandrieu

Scrutiny Collector - albandrieu

Inconnu

Workstation SMART collector posting disk telemetry to the Scrutiny Web/API hosted on TrueNAS.

Service web
Stirling PDF - albandrieu

Stirling PDF - albandrieu

Inconnu

PDF toolkit

Transmission

Transmission

Inconnu

BitTorrent client

Statut applicatif TrueNAS: en cours / sain transitoire / dégradé arrêté / en échec aucun statut runtime courant
Santé des dépendances: La couleur principale du service/lien suit l’état effectif ; l’icône runtime conserve l’état local de l’application TrueNAS.
2 · Socle critiqueFondations dont la panne peut retirer une couche entière : disponibilité, quorum/readiness, pression, capacité et erreurs.USE2 composants2 en alerte
TrueNAS

TrueNAS

Inconnu

Storage management UI

Statut applicatif TrueNAS: en cours / sain transitoire / dégradé arrêté / en échec aucun statut runtime courant
Santé des dépendances: La couleur principale du service/lien suit l’état effectif ; l’icône runtime conserve l’état local de l’application TrueNAS.
3 · Contrôles de sécuritéDisponibilité des contrôles et posture sécurité restent deux dimensions distinctes.POSTURE4 composants4 en alerte
Keycloak

Keycloak

Inconnu

Identity and access management

Vaultwarden

Vaultwarden

Inconnu

Password manager

2FAuth

2FAuth

Inconnu

Two-factor codes manager

Statut applicatif TrueNAS: en cours / sain transitoire / dégradé arrêté / en échec aucun statut runtime courant
Santé des dépendances: La couleur principale du service/lien suit l’état effectif ; l’icône runtime conserve l’état local de l’application TrueNAS.
4 · Plateforme et données partagéesBackends partagés : disponibilité, latence, saturation et capacité sans confondre impact et dépendance requise.RED + USE9 composants9 en alerte
PostgreSQL

PostgreSQL

Inconnu

Database server (TCP — use a Postgres client, not a normal web browser tab)

Garage S3

Garage S3

Inconnu

Garage S3-compatible object-storage API exposed through the direct HAProxy/TLS re-encryption/Traefik path.

LiteLLM

LiteLLM

Inconnu

LLM proxy and gateway

Scrutiny

Scrutiny

Inconnu

Hard drive health monitoring

Uptime Kuma

Uptime Kuma

Inconnu

Uptime monitoring

Homarr

Homarr

Inconnu

Homepage dashboard

Statut applicatif TrueNAS: en cours / sain transitoire / dégradé arrêté / en échec aucun statut runtime courant
Santé des dépendances: La couleur principale du service/lien suit l’état effectif ; l’icône runtime conserve l’état local de l’application TrueNAS.
5 · Observabilité et supportObservabilité et outils auxiliaires : importants pour diagnostiquer, sans rendre automatiquement les services indisponibles.SUPPORT8 composants8 en alerte
Garage Admin

Garage Admin

Inconnu

Garage Admin API exposed through Cloudflare Tunnel directly to the LAN-bound :3903 origin without Traefik.

SearXNG

SearXNG

Inconnu

SearXNG service

Grafana

Grafana

Inconnu

Analytics and monitoring

Graylog

Graylog

Inconnu

Log management and analysis

ntopng

ntopng

Inconnu

Network traffic visibility

Statut applicatif TrueNAS: en cours / sain transitoire / dégradé arrêté / en échec aucun statut runtime courant
Santé des dépendances: La couleur principale du service/lien suit l’état effectif ; l’icône runtime conserve l’état local de l’application TrueNAS.
Afficher la hiérarchie des dépendances critiquesLire les dépendances requises, le rayon d’impact et l’ordre lifecycle canonique (phase + priorité) issu de Nabla Compose. Chemin critique

Hiérarchie des dépendances critiques

Les fondations et l’état partagé sont présentés avant les applications selon les dépendances requises déclarées et leur rayon d’impact transitif.

Ordre lifecycle canonique de Nabla Compose : les dépendances requises restent prioritaires, puis la phase et la priorité numérique déterminent l’ordre opérationnel.

1 · Fondations d’infrastructure

Docker97 dépendants
container-runtimeP10 · Fondations · compatRayon d’impact : 2FAuth, AIStor, Akvorado, Akvorado Inlet +93 autres
Inspecter l’impact des dépendances
Dépendants directs : 2FAuth, AIStor, Akvorado, Akvorado Inlet, Akvorado Orchestrator, Akvorado Outlet, Grafana Alloy, AutoKuma, AutoXpose, Bichon, ClickHouse, Code Server, CrowdSec, Docker Socket Proxy, Dockhand, Doco-CD, Dozzle, Draw.io, Elasticsearch, FastAPI Sample, Garage S3, Garage, Gatus, Grafana, Graylog, pfSense HAProxy Exporter, Hello Nginx, Homarr, Homarr Reconciler, Home Assistant, InfluxDB, Apache Kafka, Keycloak, Kibana, Langflow, Langfuse Web, Langfuse Worker, LanguageTool, LiteLLM, Loki, Mimir, MinIO, MongoDB, n8n, Nexus Repository, Nginx Proxy Manager, NPMplus, ntopng, Obsidian, Ollama, 1Password Connect API, 1Password Connect Sync, OpenClaw Sandbox, OpenHands, OpenRAG Backend, OpenRAG Frontend, OpenSearch, OpenSearch Dashboards, OpenSearch Exporter, OpenSearch Security, OpenSearch Security Exporter, Open WebUI, Open WebUI Pipelines, pfSense Exporter, Pi-hole, Pi-hole DNS Sync, Pi-hole Exporter, Portracker, PostgreSQL Exporter, Prometheus, Alertmanager, Grafana Pyroscope, Redis, Scrutiny, Scrutiny Collector, Sentry, Sentry ClickHouse, Sentry Edge, Sentry Relay, Sentry Snuba API, Sentry Taskbroker, Sentry Taskworker, SonarQube, Squid Proxy, Suricata, Sybase Exporter, Tempo, Traefik, Vaultwarden, Vaultwarden REST API Adapter, Wazuh Dashboard, Wazuh OpenSearch Forwarder, Wazuh Indexer, Wazuh Manager, WordPress
Impact indirect / transitif : Garage Admin, pfSense Unbound
Docker Socket Proxy3 dépendants
security-proxyP0 · Bootstrap runtime · compatRequiert : DockerRayon d’impact : AutoXpose, Doco-CD, Pi-hole DNS Sync
Inspecter l’impact des dépendances
Chemin requis : Docker Socket Proxy → Docker
Dépendants directs : AutoXpose, Doco-CD, Pi-hole DNS Sync
TrueNAS101 dépendants
storage-platformP10 · Fondations · compatRayon d’impact : 2FAuth, AIStor, Akvorado, Akvorado Inlet +97 autres
Inspecter l’impact des dépendances
Dépendants directs : Docker, Talos Linux
Impact indirect / transitif : 2FAuth, AIStor, Akvorado, Akvorado Inlet, Akvorado Orchestrator, Akvorado Outlet, Grafana Alloy, AutoKuma, AutoXpose, Bichon, ClickHouse, Code Server, CrowdSec, Docker Socket Proxy, Dockhand, Doco-CD, Dozzle, Draw.io, Elasticsearch, etcd, FastAPI Sample, Garage S3, Garage Admin, Garage, Gatus, Grafana, Graylog, pfSense HAProxy Exporter, Hello Nginx, Homarr, Homarr Reconciler, Home Assistant, InfluxDB, Apache Kafka, Keycloak, Kibana, Kubernetes (Talos), Langflow, Langfuse Web, Langfuse Worker, LanguageTool, LiteLLM, Loki, Mimir, MinIO, MongoDB, n8n, Nexus Repository, Nginx Proxy Manager, NPMplus, ntopng, Obsidian, Ollama, 1Password Connect API, 1Password Connect Sync, OpenClaw Sandbox, OpenHands, OpenRAG Backend, OpenRAG Frontend, OpenSearch, OpenSearch Dashboards, OpenSearch Exporter, OpenSearch Security, OpenSearch Security Exporter, Open WebUI, Open WebUI Pipelines, pfSense Exporter, pfSense Unbound, Pi-hole, Pi-hole DNS Sync, Pi-hole Exporter, Portracker, PostgreSQL Exporter, Prometheus, Alertmanager, Grafana Pyroscope, Redis, Scrutiny, Scrutiny Collector, Sentry, Sentry ClickHouse, Sentry Edge, Sentry Relay, Sentry Snuba API, Sentry Taskbroker, Sentry Taskworker, SonarQube, Squid Proxy, Suricata, Sybase Exporter, Tempo, Traefik, Vaultwarden, Vaultwarden REST API Adapter, Wazuh Dashboard, Wazuh OpenSearch Forwarder, Wazuh Indexer, Wazuh Manager, WordPress
Pi-hole2 dépendants
dnsP10 · Fondations · compatRayon d’impact : pfSense Unbound, Pi-hole Exporter
Inspecter l’impact des dépendances
Dépendants directs : pfSense Unbound, Pi-hole Exporter
Vaultwarden1 dépendant
password-managerP10 · Fondations · compatRayon d’impact : Vaultwarden REST API Adapter
Inspecter l’impact des dépendances
Dépendants directs : Vaultwarden REST API Adapter
Nginx Proxy Managerfeuille
reverse-proxyP10 · Fondations · compat
+5 composants à impact inférieur

2 · Données et état partagés

🐘 PostgreSQL10 dépendants
databaseP20 · Données primaires · compatRayon d’impact : Keycloak, Langfuse Web, Langfuse Worker, n8n +6 autres
Inspecter l’impact des dépendances
Dépendants directs : Keycloak, Langfuse Web, Langfuse Worker, n8n, PostgreSQL Exporter, Sentry, SonarQube, WordPress
Impact indirect / transitif : Sentry Edge, Sentry Relay
Apache Kafka9 dépendants
message-brokerP20 · Données primaires · compatRayon d’impact : Akvorado Inlet, Akvorado Orchestrator, Akvorado Outlet, Sentry +5 autres
Inspecter l’impact des dépendances
Dépendants directs : Akvorado Inlet, Akvorado Orchestrator, Akvorado Outlet, Sentry, Sentry Relay, Sentry Snuba API, Sentry Taskbroker
Impact indirect / transitif : Sentry Edge, Sentry Taskworker
🔴 Redis6 dépendants
cacheP20 · Données primaires · compatRayon d’impact : Langfuse Web, Langfuse Worker, Sentry, Sentry Edge +2 autres
Inspecter l’impact des dépendances
Dépendants directs : Langfuse Web, Langfuse Worker, Sentry, Sentry Relay, Sentry Snuba API
Impact indirect / transitif : Sentry Edge
InfluxDB2 dépendants
time-series-databaseP20 · Données primaires · compatRayon d’impact : Scrutiny, Scrutiny Collector
Inspecter l’impact des dépendances
Dépendants directs : Scrutiny
Impact indirect / transitif : Scrutiny Collector
🍃 MongoDB1 dépendant
databaseP20 · Données primaires · compatRayon d’impact : Graylog
Inspecter l’impact des dépendances
Dépendants directs : Graylog
⚡ ClickHouse6 dépendants
databaseP30 · Données secondaires · compatRayon d’impact : Akvorado, Akvorado Orchestrator, Akvorado Outlet, Langfuse Web +2 autres
Inspecter l’impact des dépendances
Dépendants directs : Akvorado, Akvorado Orchestrator, Akvorado Outlet, Langfuse Web, Langfuse Worker, ntopng
+16 composants à impact inférieur

3 · Services de plateforme partagés

🛡️ Wazuh4 dépendants
security-platformP40 · Services de plateforme · compatRayon d’impact : Wazuh Dashboard, Wazuh OpenSearch Forwarder, Wazuh Indexer, Wazuh Manager
Inspecter l’impact des dépendances
Dépendants directs : Wazuh Dashboard, Wazuh OpenSearch Forwarder, Wazuh Indexer, Wazuh Manager
Sentry Snuba API3 dépendants
analytics-apiP40 · Services de plateforme · compatRequiert : Apache Kafka · Redis · Sentry ClickHouseRayon d’impact : Sentry, Sentry Edge, Sentry Relay
Inspecter l’impact des dépendances
Chemin requis : Sentry Snuba API → Apache Kafka
Dépendants directs : Sentry
Impact indirect / transitif : Sentry Edge, Sentry Relay
🔗 Langflow2 dépendants
workflowP40 · Services de plateforme · compatRequiert : OpenSearchRayon d’impact : OpenRAG Backend, OpenRAG Frontend
Inspecter l’impact des dépendances
Chemin requis : Langflow → OpenSearch
Dépendants directs : OpenRAG Backend, OpenRAG Frontend
📈 Langfuse2 dépendants
observabilityP40 · Services de plateforme · compatRayon d’impact : Langfuse Web, Langfuse Worker
Inspecter l’impact des dépendances
Dépendants directs : Langfuse Web, Langfuse Worker
Sentry2 dépendants
error-trackingP40 · Services de plateforme · compatRequiert : Apache Kafka · PostgreSQL · Redis · Sentry Snuba APIRayon d’impact : Sentry Edge, Sentry Relay
Inspecter l’impact des dépendances
Chemin requis : Sentry → Sentry Snuba API → Apache Kafka
Dépendants directs : Sentry Edge, Sentry Relay
🛡️ Wazuh Manager2 dépendants
security-managerP40 · Services de plateforme · compatRequiert : Wazuh · Wazuh IndexerRayon d’impact : Wazuh Dashboard, Wazuh OpenSearch Forwarder
Inspecter l’impact des dépendances
Chemin requis : Wazuh Manager → Wazuh Indexer → Wazuh
Dépendants directs : Wazuh Dashboard, Wazuh OpenSearch Forwarder
+41 composants à impact inférieur

4 · Applications et consommateurs

🔷 Talos Linux2 dépendants
kubernetes-osP50 · Applications · compatRayon d’impact : etcd, Kubernetes (Talos)
Inspecter l’impact des dépendances
Dépendants directs : etcd, Kubernetes (Talos)
🗄️ etcd1 dépendant
control-plane-storeP50 · Applications · compatRayon d’impact : Kubernetes (Talos)
Inspecter l’impact des dépendances
Dépendants directs : Kubernetes (Talos)
Homarr1 dépendant
dashboardP50 · Applications · compatOptionnel : DockerRayon d’impact : Homarr Reconciler
Inspecter l’impact des dépendances
Dépendants directs : Homarr Reconciler
📚 OpenRAG Backend1 dépendant
serviceP50 · Applications · compatRequiert : Langflow · OpenSearchRayon d’impact : OpenRAG Frontend
Inspecter l’impact des dépendances
Chemin requis : OpenRAG Backend → Langflow → OpenSearch
Dépendants directs : OpenRAG Frontend
Homarr Reconcilerfeuille
configuration-reconcilerP50 · Applications · compatRequiert : Homarr
Inspecter l’impact des dépendances
Chemin requis : Homarr Reconciler → Homarr
☸️ Kubernetes (Talos)feuille
orchestratorP50 · Applications · compatRequiert : etcd
Inspecter l’impact des dépendances
Chemin requis : Kubernetes (Talos) → etcd
+8 composants à impact inférieur

5 · Support et composants à faible impact

AutoXposefeuille
exposure-automationP50 · Applications · compatRequiert : Docker Socket Proxy
Inspecter l’impact des dépendances
Chemin requis : AutoXpose → Docker Socket Proxy → Docker
Bichonfeuille
applicationP50 · Applications · compat
Cloudflare Tunnel Connectorfeuille
tunnel-connectorP50 · Applications · compat
Code Serverfeuille
development-environmentP50 · Applications · compat
Dockhandfeuille
container-managementP50 · Applications · compat
Doco-CDfeuille
deployment-automationP50 · Applications · compatRequiert : Docker Socket Proxy
Inspecter l’impact des dépendances
Chemin requis : Doco-CD → Docker Socket Proxy → Docker
+13 composants à impact inférieur

La criticité est dérivée des relations requises bloquantes (dependsOn, consumesApi, routesTo, storesIn, authenticatesVia et partOf structurel). Les bases, caches et stockages sont classés comme état partagé lorsqu’ils ont des dépendants requis. Les liens d’observabilité et d’exposition n’augmentent pas artificiellement la criticité de démarrage.

Hiérarchie compacte

Vue mobile des niveaux de criticité, états effectifs et relations directes. Le graphe interactif complet reste disponible plus bas.

Fondations d’infrastructure3 servicesinconnu
TrueNASfoundation · impact 101
inconnu
Aucune relation directe affichée.
pfSensefoundation · impact 2
inconnu
Aucune relation directe affichée.
Vaultwardenfoundation · impact 1
inconnu
  • Dockerrequise · hostedBy
Données et état partagés7 servicesinconnu
PostgreSQLshared-data · impact 10
inconnu
Aucune relation directe affichée.
SearXNGshared-data · impact 0
inconnu
Aucune relation directe affichée.
Clickhouseshared-data · impact 6
inconnu
  • Dockerrequise · hostedBy
Minioshared-data · impact 2
inconnu
  • Dockerrequise · hostedBy
Garage S3shared-data · impact 2
inconnu
  • Dockerrequise · hostedBy
  • Traefikrequise · exposedBy
Garageshared-data · impact 0
inconnu
  • Dockerrequise · hostedBy
  • Garage S3requise · consumesApi
  • Cloudflare Tunnel Connectorrequise · exposedBy
Garage Adminshared-data · impact 0
inconnu
  • Garage S3requise · partOf
  • Cloudflare Tunnel Connectorrequise · exposedBy
Services de plateforme partagés13 servicesinconnu
Prometheusshared-platform · impact 0
inconnu
  • Dockerrequise · hostedBy
  • Mimirrequise · storesIn
Scrutinyshared-platform · impact 1
inconnu
  • Dockerrequise · hostedBy
  • InfluxDBrequise · storesIn
Uptime Kumashared-platform · impact 1
inconnu
Aucune relation directe affichée.
2FAuthshared-platform · impact 0
inconnu
  • Dockerrequise · hostedBy
Ollamashared-platform · impact 2
inconnu
  • Dockerrequise · hostedBy
n8nshared-platform · impact 0
inconnu
  • Dockerrequise · hostedBy
  • PostgreSQLrequise · dependsOn
Grafanashared-platform · impact 0
inconnu
  • Dockerrequise · hostedBy
Keycloakshared-platform · impact 0
inconnu
  • Dockerrequise · hostedBy
  • PostgreSQLrequise · dependsOn
ClamAVshared-platform · impact 0
inconnu
Aucune relation directe affichée.
Gatusshared-platform · impact 0
inconnu
  • Dockerrequise · hostedBy
Graylogshared-platform · impact 0
inconnu
  • Dockerrequise · hostedBy
  • MongoDBrequise · dependsOn
  • OpenSearch Securityrequise · storesIn
LiteLLMshared-platform · impact 1
inconnu
  • Dockerrequise · hostedBy
  • Ollamarequise · routesTo
Langfuseshared-platform · impact 2
inconnu
Aucune relation directe affichée.
Applications et consommateurs2 servicesinconnu
Homarrapplication · impact 1
inconnu
  • Dockerrequise · hostedBy
ntopngapplication · impact 0
inconnu
  • ClickHouserequise · storesIn
  • Dockerrequise · hostedBy

Topologie interactive des services

Utilisez la recherche et les contrôles du graphe pour basculer entre plateforme IA, services, chemin critique, catalogue complet et relations optionnelles. Sur mobile, la hiérarchie compacte ci-dessus fournit une lecture plus directe avant le graphe complet.

20 nœuds · 6 groupes · 20 relations
Sémantique des arêtes
DépendanceFlux API / donnéesExpositionHébergementObservabilitéAutomatisation
La couleur et le motif indiquent la nature de la relation ; required/optional indique séparément son poids fonctionnel. L’évidence FastAPI d’une dépendance requise peut surcharger sa couleur sans modifier sa sémantique.

La molette fait défiler la page. Utilisez Ctrl/Cmd + molette ou les contrôles +/− pour zoomer dans le diagramme.

Mini Map

AI Platform est regroupé par couches fonctionnelles. Le flux principal descend des interfaces vers le control plane, l’inférence, les outils, l’orchestration et l’observabilité ; la sémantique des arêtes reste distincte de leur caractère requis ou optionnel.

Réseau homelab et chemins d’ingress

Ce diagramme React Flow est exactement le même composant que celui de la page TrueNAS. Les chemins ingress direct HAProxy/Traefik et Cloudflare Tunnel montrent désormais tous deux leur transit par le WAN avant pfSense, puis le tunnel rejoint TrueNAS/cloudflared via le switch LAN. OpenWebUI illustre une origine tunnel directe sur :31028 qui ne traverse jamais Traefik. Le filtre DNS sépare la résolution de noms du routage HTTP : les clients LAN utilisent pfSense/Unbound 172.17.0.1:53 ; les noms publics sont résolus récursivement avec Quad9/Cloudflare comme fallbacks publics uniquement, tandis que le Domain Override int.albandrieu.com délègue vers Pi-hole 172.17.0.24:53, alimenté par pihole-dns-sync à partir des labels Traefik éligibles. Le graphe documente aussi l’incident où une politique Unbound limitée au WAN faisait expirer le forwarder Pi-hole ; la configuration validée est Outgoing Network Interfaces = All avec Forwarding Mode désactivé. Garage conserve trois surfaces : s3.int.albandrieu.com via HAProxy → TLS ré-chiffré → Traefik → :3900, garage.albandrieu.com via Tunnel → cloudflared → :3909 et garage-admin.albandrieu.com via Tunnel → cloudflared → :3903.

La molette fait défiler la page. Utilisez Ctrl/Cmd + molette pour zoomer dans le diagramme.

Chemin à isolerLes cadres sont des domaines de panne, pas de simples catégories visuelles.
WAN transportLAN / hostingWi-FiDirect reverse proxy (HAProxy / Traefik)Cloudflare TunnelDNS resolution / split DNS

Configuration déclarée, runtime observé et santé

L’architecture sépare volontairement ce qui devrait exister, ce qui tourne réellement et ce qui est effectivement utilisable. Cette séparation permet de détecter les dérives sans faire de l’interface Web ou de l’API TrueNAS une source de vérité de configuration.

1. nabla-compose

Source déclarative : services x-nabla, identité stable, binding runtime et relations de topologie. services.json et service-topology.json sont générés depuis le code.

2. TrueNAS API

Source runtime observée : le client officiel truenas_api_client interroge app.query pour les Apps, containers, états et versions. Il ne décide jamais qu’un service doit exister ou être public.

3. fastapi-sample

Couche de réconciliation : joint les bindings déclarés aux workloads TrueNAS, classe les écarts (in_sync, declared_only, observed_only, conflict) et garde les contrôles de santé séparés.

4. albanandrieu.com

Couche de présentation : visualise la topologie, le statut runtime et la santé sans devenir une source de données backend.

Declared ≠ Observed ≠ Healthy