project atlas route
This commit is contained in:
@@ -9,7 +9,7 @@ export const revalidate = 0;
|
||||
export const metadata: Metadata = {
|
||||
title: 'Ecosystem Atlas',
|
||||
description:
|
||||
'Live Sankofa route matrix, hidden inventory, and revision notes with server-side IT inventory awareness.',
|
||||
'Project Atlas-backed Sankofa route matrix, hidden inventory, and revision notes with server-side IT inventory awareness.',
|
||||
alternates: {
|
||||
canonical: 'https://sankofa.nexus/atlas',
|
||||
},
|
||||
|
||||
@@ -113,7 +113,8 @@ export default function AtlasDashboard({
|
||||
<p className="mt-4 max-w-3xl text-base leading-7 text-sovereign-ivory/70 sm:text-lg">
|
||||
Public Sankofa routing, live inventory, hidden operator surfaces, and revision notes in one
|
||||
place. The live counters come from the portal server's IT read API, while the route matrix
|
||||
is normalized from the repo's canonical hostname and tunnel docs.
|
||||
is sourced from the vendored Project Atlas manifests so the page mirrors the canonical
|
||||
ecosystem map.
|
||||
</p>
|
||||
<div className="mt-6 flex flex-wrap gap-3">
|
||||
<Link
|
||||
|
||||
@@ -0,0 +1,922 @@
|
||||
{
|
||||
"endpointCount": 61,
|
||||
"endpoints": [
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://admin.sankofa.nexus",
|
||||
"dns": "dig +short admin.sankofa.nexus",
|
||||
"edge": "curl -skI https://admin.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.50 8080"
|
||||
},
|
||||
"domain": "admin.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Phoenix admin surface; see system atlas / OMNL architecture",
|
||||
"reverseTarget": "192.168.11.50:8080",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://admin.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://besu-sentry-ali.sankofa.nexus",
|
||||
"dns": "dig +short besu-sentry-ali.sankofa.nexus",
|
||||
"edge": "curl -skI https://besu-sentry-ali.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.154 9545"
|
||||
},
|
||||
"domain": "besu-sentry-ali.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Ali sentry metrics",
|
||||
"reverseTarget": "192.168.11.154:9545",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://besu-sentry-ali.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://blockscout.defi-oracle.io",
|
||||
"dns": "dig +short blockscout.defi-oracle.io",
|
||||
"edge": "curl -skI https://blockscout.defi-oracle.io",
|
||||
"origin": "nc -vz 192.168.11.142 80"
|
||||
},
|
||||
"domain": "blockscout.defi-oracle.io",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Standard Blockscout / VMID 5011",
|
||||
"reverseTarget": "192.168.11.142:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://blockscout.defi-oracle.io"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://cacti-alltra.d-bis.org",
|
||||
"dns": "dig +short cacti-alltra.d-bis.org",
|
||||
"edge": "curl -skI https://cacti-alltra.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.80 80"
|
||||
},
|
||||
"domain": "cacti-alltra.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Cacti monitoring",
|
||||
"reverseTarget": "192.168.11.80:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://cacti-alltra.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://cacti-hybx.d-bis.org",
|
||||
"dns": "dig +short cacti-hybx.d-bis.org",
|
||||
"edge": "curl -skI https://cacti-hybx.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.80 80"
|
||||
},
|
||||
"domain": "cacti-hybx.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Cacti monitoring",
|
||||
"reverseTarget": "192.168.11.80:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://cacti-hybx.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://codespaces.d-bis.org",
|
||||
"dns": "dig +short codespaces.d-bis.org",
|
||||
"edge": "curl -skI https://codespaces.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.170 443"
|
||||
},
|
||||
"domain": "codespaces.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Fourth NPMplus / dev or Codespaces ingress",
|
||||
"reverseTarget": "192.168.11.170:443",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://codespaces.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://dapp.d-bis.org",
|
||||
"dns": "dig +short dapp.d-bis.org",
|
||||
"edge": "curl -skI https://dapp.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.58 80"
|
||||
},
|
||||
"domain": "dapp.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "DApp frontend / VMID 5801",
|
||||
"reverseTarget": "192.168.11.58:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://dapp.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://dash.sankofa.nexus",
|
||||
"dns": "dig +short dash.sankofa.nexus",
|
||||
"edge": "curl -skI https://dash.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.50 8080"
|
||||
},
|
||||
"domain": "dash.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Sankofa operator dashboard",
|
||||
"reverseTarget": "192.168.11.50:8080",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://dash.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://dbis-admin.d-bis.org",
|
||||
"dns": "dig +short dbis-admin.d-bis.org",
|
||||
"edge": "curl -skI https://dbis-admin.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.130 80"
|
||||
},
|
||||
"domain": "dbis-admin.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "DBIS admin console / VMID 10130",
|
||||
"reverseTarget": "192.168.11.130:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://dbis-admin.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://dbis-api-2.d-bis.org",
|
||||
"dns": "dig +short dbis-api-2.d-bis.org",
|
||||
"edge": "curl -skI https://dbis-api-2.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.156 3000"
|
||||
},
|
||||
"domain": "dbis-api-2.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "DBIS API secondary / VMID 10151",
|
||||
"reverseTarget": "192.168.11.156:3000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "api",
|
||||
"url": "https://dbis-api-2.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://dbis-api.d-bis.org",
|
||||
"dns": "dig +short dbis-api.d-bis.org",
|
||||
"edge": "curl -skI https://dbis-api.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.155 3000"
|
||||
},
|
||||
"domain": "dbis-api.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "DBIS API primary / VMID 10150",
|
||||
"reverseTarget": "192.168.11.155:3000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "api",
|
||||
"url": "https://dbis-api.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://dealflow.d-bis.org",
|
||||
"dns": "dig +short dealflow.d-bis.org",
|
||||
"edge": "curl -skI https://dealflow.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.94 443"
|
||||
},
|
||||
"domain": "dealflow.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "DealFlow Command Center / VMID 10381",
|
||||
"reverseTarget": "192.168.11.94:443",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://dealflow.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://dev.d-bis.org",
|
||||
"dns": "dig +short dev.d-bis.org",
|
||||
"edge": "curl -skI https://dev.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.170 443"
|
||||
},
|
||||
"domain": "dev.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Fourth NPMplus / dev ingress",
|
||||
"reverseTarget": "192.168.11.170:443",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://dev.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://docs.d-bis.org",
|
||||
"dns": "dig +short docs.d-bis.org",
|
||||
"edge": "curl -skI https://docs.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.140 4000"
|
||||
},
|
||||
"domain": "docs.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Explorer nginx / docs host (same edge as explorer)",
|
||||
"reverseTarget": "192.168.11.140:4000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://docs.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://explorer.d-bis.org",
|
||||
"dns": "dig +short explorer.d-bis.org",
|
||||
"edge": "curl -skI https://explorer.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.140 4000"
|
||||
},
|
||||
"domain": "explorer.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Direct Blockscout route on port 4000",
|
||||
"reverseTarget": "192.168.11.140:4000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://explorer.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://firefly-ali.sankofa.nexus",
|
||||
"dns": "dig +short firefly-ali.sankofa.nexus",
|
||||
"edge": "curl -skI https://firefly-ali.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.57 5000"
|
||||
},
|
||||
"domain": "firefly-ali.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Firefly Ali instance / VMID 6201",
|
||||
"reverseTarget": "192.168.11.57:5000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "api",
|
||||
"url": "https://firefly-ali.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://gitea.d-bis.org",
|
||||
"dns": "dig +short gitea.d-bis.org",
|
||||
"edge": "curl -skI https://gitea.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.59 3000"
|
||||
},
|
||||
"domain": "gitea.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Dev VM Gitea endpoint",
|
||||
"reverseTarget": "192.168.11.59:3000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://gitea.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://hermes.sankofa.nexus",
|
||||
"dns": "dig +short hermes.sankofa.nexus",
|
||||
"edge": "curl -skI https://hermes.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.77 3020"
|
||||
},
|
||||
"domain": "hermes.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Hermes underwiting intelligence / VMID 7817",
|
||||
"reverseTarget": "192.168.11.77:3020",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://hermes.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://howtothinkwithai.sankofa.nexus",
|
||||
"dns": "dig +short howtothinkwithai.sankofa.nexus",
|
||||
"edge": "curl -skI https://howtothinkwithai.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.79 3021"
|
||||
},
|
||||
"domain": "howtothinkwithai.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "HowToThinkWithAI / VMID 7819",
|
||||
"reverseTarget": "192.168.11.79:3021",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://howtothinkwithai.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://keycloak.sankofa.nexus",
|
||||
"dns": "dig +short keycloak.sankofa.nexus",
|
||||
"edge": "curl -skI https://keycloak.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.52 8080"
|
||||
},
|
||||
"domain": "keycloak.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Sankofa Keycloak / VMID 7802",
|
||||
"reverseTarget": "192.168.11.52:8080",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://keycloak.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://mail.d-bis.org",
|
||||
"dns": "dig +short mail.d-bis.org",
|
||||
"edge": "curl -skI https://mail.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.32 25 && nc -vz 192.168.11.32 587 && nc -vz 192.168.11.32 465"
|
||||
},
|
||||
"domain": "mail.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Mail gateway / PMG",
|
||||
"reverseTarget": "192.168.11.32:25/587/465",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://mail.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://mifos.d-bis.org",
|
||||
"dns": "dig +short mifos.d-bis.org",
|
||||
"edge": "curl -skI https://mifos.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.85 80"
|
||||
},
|
||||
"domain": "mifos.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Mifos/Fineract / VMID 5800",
|
||||
"reverseTarget": "192.168.11.85:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://mifos.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://mim4u.org",
|
||||
"dns": "dig +short mim4u.org",
|
||||
"edge": "curl -skI https://mim4u.org",
|
||||
"origin": "nc -vz 192.168.11.37 80"
|
||||
},
|
||||
"domain": "mim4u.org",
|
||||
"ecosystem": "other",
|
||||
"reverseNote": "MIM4U web / VMID 7810",
|
||||
"reverseTarget": "192.168.11.37:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://mim4u.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://phoenix.sankofa.nexus",
|
||||
"dns": "dig +short phoenix.sankofa.nexus",
|
||||
"edge": "curl -skI https://phoenix.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.50 8080"
|
||||
},
|
||||
"domain": "phoenix.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Phoenix API hub / VMID 7800",
|
||||
"reverseTarget": "192.168.11.50:8080",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://phoenix.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://portal.sankofa.nexus",
|
||||
"dns": "dig +short portal.sankofa.nexus",
|
||||
"edge": "curl -skI https://portal.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.51 3000"
|
||||
},
|
||||
"domain": "portal.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Sankofa portal / VMID 7801",
|
||||
"reverseTarget": "192.168.11.51:3000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://portal.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://reserve.d-bis.org",
|
||||
"dns": "dig +short reserve.d-bis.org",
|
||||
"edge": "curl -skI https://reserve.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.140 4000"
|
||||
},
|
||||
"domain": "reserve.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Explorer / reserve shared backend",
|
||||
"reverseTarget": "192.168.11.140:4000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://reserve.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-ali-0x1.sankofa.nexus -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-ali-0x1.sankofa.nexus",
|
||||
"edge": "curl -skI https://rpc-ali-0x1.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.234 8545 && nc -vz 192.168.11.234 8546"
|
||||
},
|
||||
"domain": "rpc-ali-0x1.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Ali Besu RPC 0x1 / VMID 2304",
|
||||
"reverseTarget": "192.168.11.234:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-ali-0x1.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-ali-0x8a.sankofa.nexus -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-ali-0x8a.sankofa.nexus",
|
||||
"edge": "curl -skI https://rpc-ali-0x8a.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.233 8545 && nc -vz 192.168.11.233 8546"
|
||||
},
|
||||
"domain": "rpc-ali-0x8a.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Ali Besu RPC 0x8a / VMID 2303",
|
||||
"reverseTarget": "192.168.11.233:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-ali-0x8a.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-alltra-2.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-alltra-2.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-alltra-2.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.173 8545 && nc -vz 192.168.11.173 8546"
|
||||
},
|
||||
"domain": "rpc-alltra-2.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "ALLTRA internal RPC 2 / VMID 2501",
|
||||
"reverseTarget": "192.168.11.173:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-alltra-2.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-alltra-3.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-alltra-3.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-alltra-3.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.174 8545 && nc -vz 192.168.11.174 8546"
|
||||
},
|
||||
"domain": "rpc-alltra-3.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "ALLTRA internal RPC 3 / VMID 2502",
|
||||
"reverseTarget": "192.168.11.174:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-alltra-3.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-alltra.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-alltra.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-alltra.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.172 8545 && nc -vz 192.168.11.172 8546"
|
||||
},
|
||||
"domain": "rpc-alltra.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "ALLTRA internal RPC 1 / VMID 2500",
|
||||
"reverseTarget": "192.168.11.172:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-alltra.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-fireblocks.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-fireblocks.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-fireblocks.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.211 8545 && nc -vz 192.168.11.211 8546"
|
||||
},
|
||||
"domain": "rpc-fireblocks.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Fireblocks dedicated RPC / VMID 2101",
|
||||
"reverseTarget": "192.168.11.211:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-fireblocks.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-http-prv.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-http-prv.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-http-prv.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.211 8545 && nc -vz 192.168.11.211 8546"
|
||||
},
|
||||
"domain": "rpc-http-prv.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Private RPC / VMID 2101",
|
||||
"reverseTarget": "192.168.11.211:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-http-prv.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-http-pub.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-http-pub.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-http-pub.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "rpc-http-pub.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Public RPC / VMID 2201",
|
||||
"reverseTarget": "192.168.11.221:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-http-pub.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-hybx-2.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-hybx-2.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-hybx-2.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.247 8545 && nc -vz 192.168.11.247 8546"
|
||||
},
|
||||
"domain": "rpc-hybx-2.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "HYBX internal RPC 2 / VMID 2504",
|
||||
"reverseTarget": "192.168.11.247:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-hybx-2.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-hybx-3.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-hybx-3.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-hybx-3.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.248 8545 && nc -vz 192.168.11.248 8546"
|
||||
},
|
||||
"domain": "rpc-hybx-3.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "HYBX internal RPC 3 / VMID 2505",
|
||||
"reverseTarget": "192.168.11.248:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-hybx-3.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc-hybx.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-hybx.d-bis.org",
|
||||
"edge": "curl -skI https://rpc-hybx.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.246 8545 && nc -vz 192.168.11.246 8546"
|
||||
},
|
||||
"domain": "rpc-hybx.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "HYBX internal RPC 1 / VMID 2503",
|
||||
"reverseTarget": "192.168.11.246:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc-hybx.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://rpc-ws-prv.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-ws-prv.d-bis.org",
|
||||
"edge": "npx wscat -c wss://rpc-ws-prv.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.211 8546"
|
||||
},
|
||||
"domain": "rpc-ws-prv.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Private WebSocket RPC / VMID 2101",
|
||||
"reverseTarget": "192.168.11.211:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://rpc-ws-prv.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://rpc-ws-pub.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc-ws-pub.d-bis.org",
|
||||
"edge": "npx wscat -c wss://rpc-ws-pub.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "rpc-ws-pub.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Public WebSocket RPC / VMID 2201",
|
||||
"reverseTarget": "192.168.11.221:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://rpc-ws-pub.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc.d-bis.org",
|
||||
"edge": "curl -skI https://rpc.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "rpc.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Canonical public RPC / VMID 2201",
|
||||
"reverseTarget": "192.168.11.221:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc.defi-oracle.io -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc.defi-oracle.io",
|
||||
"edge": "curl -skI https://rpc.defi-oracle.io",
|
||||
"origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "rpc.defi-oracle.io",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Defi Oracle RPC alias",
|
||||
"reverseTarget": "192.168.11.221:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc.defi-oracle.io"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc.public-0138.defi-oracle.io -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc.public-0138.defi-oracle.io",
|
||||
"edge": "curl -skI https://rpc.public-0138.defi-oracle.io",
|
||||
"origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "rpc.public-0138.defi-oracle.io",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Defi Oracle public RPC",
|
||||
"reverseTarget": "192.168.11.221:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc.public-0138.defi-oracle.io"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -sk https://rpc2.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short rpc2.d-bis.org",
|
||||
"edge": "curl -skI https://rpc2.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "rpc2.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Canonical public RPC alias / VMID 2201",
|
||||
"reverseTarget": "192.168.11.221:8545/8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-http",
|
||||
"url": "https://rpc2.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://sankofa.nexus",
|
||||
"dns": "dig +short sankofa.nexus",
|
||||
"edge": "curl -skI https://sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.51 3000"
|
||||
},
|
||||
"domain": "sankofa.nexus",
|
||||
"ecosystem": "other",
|
||||
"reverseNote": "Sankofa portal / VMID 7801",
|
||||
"reverseTarget": "192.168.11.51:3000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://secure.d-bis.org",
|
||||
"dns": "dig +short secure.d-bis.org",
|
||||
"edge": "curl -skI https://secure.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.130 80 && nc -vz 192.168.11.130 443"
|
||||
},
|
||||
"domain": "secure.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "DBIS admin / secure portal",
|
||||
"reverseTarget": "192.168.11.130:80/443",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://secure.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://secure.mim4u.org",
|
||||
"dns": "dig +short secure.mim4u.org",
|
||||
"edge": "curl -skI https://secure.mim4u.org",
|
||||
"origin": "nc -vz 192.168.11.37 80"
|
||||
},
|
||||
"domain": "secure.mim4u.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "MIM4U secure",
|
||||
"reverseTarget": "192.168.11.37:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://secure.mim4u.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://solace-treasury-mgmt.defi-oracle.io",
|
||||
"dns": "dig +short solace-treasury-mgmt.defi-oracle.io",
|
||||
"edge": "curl -skI https://solace-treasury-mgmt.defi-oracle.io",
|
||||
"origin": "nc -vz 192.168.11.60 443"
|
||||
},
|
||||
"domain": "solace-treasury-mgmt.defi-oracle.io",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Solace treasury frontend / VMID 3000",
|
||||
"reverseTarget": "192.168.11.60:443",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://solace-treasury-mgmt.defi-oracle.io"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://studio.sankofa.nexus",
|
||||
"dns": "dig +short studio.sankofa.nexus",
|
||||
"edge": "curl -skI https://studio.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.72 8000"
|
||||
},
|
||||
"domain": "studio.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Sankofa Studio / VMID 7805",
|
||||
"reverseTarget": "192.168.11.72:8000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://studio.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://the-order.sankofa.nexus",
|
||||
"dns": "dig +short the-order.sankofa.nexus",
|
||||
"edge": "curl -skI https://the-order.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.39 80"
|
||||
},
|
||||
"domain": "the-order.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Order HAProxy / VMID 10210",
|
||||
"reverseTarget": "192.168.11.39:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://the-order.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://training.mim4u.org",
|
||||
"dns": "dig +short training.mim4u.org",
|
||||
"edge": "curl -skI https://training.mim4u.org",
|
||||
"origin": "nc -vz 192.168.11.37 80"
|
||||
},
|
||||
"domain": "training.mim4u.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "MIM4U training",
|
||||
"reverseTarget": "192.168.11.37:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://training.mim4u.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://webmail.d-bis.org",
|
||||
"dns": "dig +short webmail.d-bis.org",
|
||||
"edge": "curl -skI https://webmail.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.35 443"
|
||||
},
|
||||
"domain": "webmail.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Mailcow webmail",
|
||||
"reverseTarget": "192.168.11.35:443",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://webmail.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://ws-rpc-ali-0x1.sankofa.nexus -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short ws-rpc-ali-0x1.sankofa.nexus",
|
||||
"edge": "npx wscat -c wss://ws-rpc-ali-0x1.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.234 8546"
|
||||
},
|
||||
"domain": "ws-rpc-ali-0x1.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Ali Besu WS RPC 0x1 / VMID 2304",
|
||||
"reverseTarget": "192.168.11.234:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://ws-rpc-ali-0x1.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://ws-rpc-ali-0x8a.sankofa.nexus -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short ws-rpc-ali-0x8a.sankofa.nexus",
|
||||
"edge": "npx wscat -c wss://ws-rpc-ali-0x8a.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.233 8546"
|
||||
},
|
||||
"domain": "ws-rpc-ali-0x8a.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Ali Besu WS RPC 0x8a / VMID 2303",
|
||||
"reverseTarget": "192.168.11.233:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://ws-rpc-ali-0x8a.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://ws.rpc-fireblocks.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short ws.rpc-fireblocks.d-bis.org",
|
||||
"edge": "npx wscat -c wss://ws.rpc-fireblocks.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.211 8546"
|
||||
},
|
||||
"domain": "ws.rpc-fireblocks.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Fireblocks WS RPC / VMID 2101",
|
||||
"reverseTarget": "192.168.11.211:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://ws.rpc-fireblocks.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://ws.rpc.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short ws.rpc.d-bis.org",
|
||||
"edge": "npx wscat -c wss://ws.rpc.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "ws.rpc.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Public WS RPC / VMID 2201",
|
||||
"reverseTarget": "192.168.11.221:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://ws.rpc.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://ws.rpc2.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short ws.rpc2.d-bis.org",
|
||||
"edge": "npx wscat -c wss://ws.rpc2.d-bis.org",
|
||||
"origin": "nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "ws.rpc2.d-bis.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Public WS RPC alias / VMID 2201",
|
||||
"reverseTarget": "192.168.11.221:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://ws.rpc2.d-bis.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "npx wscat -c wss://wss.defi-oracle.io -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'",
|
||||
"dns": "dig +short wss.defi-oracle.io",
|
||||
"edge": "npx wscat -c wss://wss.defi-oracle.io",
|
||||
"origin": "nc -vz 192.168.11.221 8546"
|
||||
},
|
||||
"domain": "wss.defi-oracle.io",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "Defi Oracle WS RPC",
|
||||
"reverseTarget": "192.168.11.221:8546",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "rpc-ws",
|
||||
"url": "https://wss.defi-oracle.io"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://www.mim4u.org",
|
||||
"dns": "dig +short www.mim4u.org",
|
||||
"edge": "curl -skI https://www.mim4u.org",
|
||||
"origin": "nc -vz 192.168.11.37 80"
|
||||
},
|
||||
"domain": "www.mim4u.org",
|
||||
"ecosystem": "proxmox",
|
||||
"reverseNote": "MIM4U www redirect",
|
||||
"reverseTarget": "192.168.11.37:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://www.mim4u.org"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://www.phoenix.sankofa.nexus",
|
||||
"dns": "dig +short www.phoenix.sankofa.nexus",
|
||||
"edge": "curl -skI https://www.phoenix.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.50 8080"
|
||||
},
|
||||
"domain": "www.phoenix.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Phoenix www redirect",
|
||||
"reverseTarget": "192.168.11.50:8080",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://www.phoenix.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://www.sankofa.nexus",
|
||||
"dns": "dig +short www.sankofa.nexus",
|
||||
"edge": "curl -skI https://www.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.51 3000"
|
||||
},
|
||||
"domain": "www.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Sankofa www redirect",
|
||||
"reverseTarget": "192.168.11.51:3000",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://www.sankofa.nexus"
|
||||
},
|
||||
{
|
||||
"checks": {
|
||||
"app": "curl -skI https://www.the-order.sankofa.nexus",
|
||||
"dns": "dig +short www.the-order.sankofa.nexus",
|
||||
"edge": "curl -skI https://www.the-order.sankofa.nexus",
|
||||
"origin": "nc -vz 192.168.11.39 80"
|
||||
},
|
||||
"domain": "www.the-order.sankofa.nexus",
|
||||
"ecosystem": "sankofa",
|
||||
"reverseNote": "Order www redirect",
|
||||
"reverseTarget": "192.168.11.39:80",
|
||||
"triagePath": "DNS -> edge -> origin -> app",
|
||||
"type": "web",
|
||||
"url": "https://www.the-order.sankofa.nexus"
|
||||
}
|
||||
],
|
||||
"name": "Project Atlas DNS Reverse E2E Map",
|
||||
"version": "v1"
|
||||
}
|
||||
@@ -0,0 +1,316 @@
|
||||
{
|
||||
"name": "Project Atlas Network Architecture",
|
||||
"version": "v1",
|
||||
"traceOrder": [
|
||||
"dns",
|
||||
"edge-routing",
|
||||
"host-port",
|
||||
"namespace-origin",
|
||||
"application-route",
|
||||
"content-marker"
|
||||
],
|
||||
"e2eReverseCoverage": {
|
||||
"command": "bash /home/intlc/projects/proxmox/scripts/verify/verify-end-to-end-routing.sh --list-endpoints --profile=all",
|
||||
"endpointCount": 61,
|
||||
"artifact": "manifest/dns-e2e-reverse-map.v1.json"
|
||||
},
|
||||
"cloudflaredLayers": [
|
||||
{
|
||||
"layer": "public",
|
||||
"description": "Cloudflared Tunnel mapped to managed public DNS"
|
||||
},
|
||||
{
|
||||
"layer": "sd-wan",
|
||||
"description": "Cloudflared Tunnels for ecosystem-to-ecosystem routing"
|
||||
},
|
||||
{
|
||||
"layer": "admin",
|
||||
"description": "Cloudflared Tunnel access for admin tasks and redeployments"
|
||||
}
|
||||
],
|
||||
"ecosystems": [
|
||||
{
|
||||
"name": "Nathan / AnakaTech",
|
||||
"surfaces": [
|
||||
{
|
||||
"label": "CT59 SSH",
|
||||
"hostname": "192.168.1.59",
|
||||
"alias": "ssh ct59",
|
||||
"port": 22,
|
||||
"state": "verified"
|
||||
},
|
||||
{
|
||||
"label": "PVE SSH",
|
||||
"hostname": "192.168.1.50",
|
||||
"alias": "ssh pve",
|
||||
"port": 22,
|
||||
"state": "verified"
|
||||
},
|
||||
{
|
||||
"label": "Astra",
|
||||
"hostname": "192.168.1.100",
|
||||
"alias": "not granted",
|
||||
"port": 8006,
|
||||
"state": "blocked"
|
||||
}
|
||||
],
|
||||
"tunnelName": "wg0-p",
|
||||
"auth": [
|
||||
"WireGuard VPN",
|
||||
"SSH key",
|
||||
"ssh_config alias"
|
||||
],
|
||||
"failureModes": [
|
||||
"network unreachable",
|
||||
"wrong SSH target"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Sankofa / local Proxmox infrastructure",
|
||||
"surfaces": [
|
||||
{
|
||||
"label": "Local Proxmox workspace",
|
||||
"hostname": "this checkout",
|
||||
"alias": "projectAtlas",
|
||||
"port": null,
|
||||
"state": "live"
|
||||
},
|
||||
{
|
||||
"label": "Live canary",
|
||||
"hostname": "scripts/maintenance/verify-pve-cluster-health.sh",
|
||||
"alias": "cluster health",
|
||||
"port": null,
|
||||
"state": "available"
|
||||
},
|
||||
{
|
||||
"label": "Public E2E verifier",
|
||||
"hostname": "scripts/verify/verify-end-to-end-routing.sh",
|
||||
"alias": "dns / routing sweep",
|
||||
"port": null,
|
||||
"state": "available"
|
||||
}
|
||||
],
|
||||
"auth": [
|
||||
"local shell",
|
||||
"live validation scripts"
|
||||
],
|
||||
"failureModes": [
|
||||
"stale docs",
|
||||
"repo-only readiness claims",
|
||||
"uncorroborated localhost"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Nova App / Zardasht dual production",
|
||||
"surfaces": [
|
||||
{
|
||||
"label": "Nova Plus local machine",
|
||||
"hostname": "localhost",
|
||||
"alias": "nova-plus-server",
|
||||
"port": 3099,
|
||||
"state": "local-production"
|
||||
},
|
||||
{
|
||||
"label": "Nova Bank local machine",
|
||||
"hostname": "localhost",
|
||||
"alias": "nova-api-1",
|
||||
"port": 3000,
|
||||
"state": "local-production"
|
||||
},
|
||||
{
|
||||
"label": "Local edge shim",
|
||||
"hostname": "localhost",
|
||||
"alias": "novabank-uk-edge",
|
||||
"port": 9080,
|
||||
"state": "local-production"
|
||||
},
|
||||
{
|
||||
"label": "Cloudflare tunnel ingress",
|
||||
"hostname": "novabank.uk / novablockchainsystem.com",
|
||||
"alias": "public ingress",
|
||||
"port": 80,
|
||||
"state": "mixed"
|
||||
},
|
||||
{
|
||||
"label": "Legacy VPS origin",
|
||||
"hostname": "51.75.64.28",
|
||||
"alias": "public origin",
|
||||
"port": 80,
|
||||
"state": "blocked"
|
||||
}
|
||||
],
|
||||
"auth": [
|
||||
"local shell",
|
||||
"Docker Desktop",
|
||||
"compose",
|
||||
"remote VPS access"
|
||||
],
|
||||
"cloudflareDomains": [
|
||||
{
|
||||
"domain": "novablockchainsystem.com",
|
||||
"zoneId": "0711dce56ea228b3fc8625b96c486eb2",
|
||||
"accountId": "197663c4dea180dc3310fea5702905ac",
|
||||
"accountName": "Dsbullock"
|
||||
},
|
||||
{
|
||||
"domain": "d-bis.org",
|
||||
"zoneId": "43599eed5d83f1fa641f2aaa276d3c4d",
|
||||
"accountId": "52ad57a71671c5fc009edf0744658196",
|
||||
"accountName": "SGI PARTNERS, LLC"
|
||||
},
|
||||
{
|
||||
"domain": "novabank.uk",
|
||||
"zoneId": "1f7e82b672f78a862abcbe384509841c",
|
||||
"accountId": "52ad57a71671c5fc009edf0744658196",
|
||||
"accountName": "SGI PARTNERS, LLC"
|
||||
},
|
||||
{
|
||||
"domain": "omdnl.org",
|
||||
"zoneId": "b9f8979a4088c2d6cfdfe0f952a46d89",
|
||||
"accountId": "52ad57a71671c5fc009edf0744658196",
|
||||
"accountName": "SGI PARTNERS, LLC"
|
||||
},
|
||||
{
|
||||
"domain": "z-bank.uk",
|
||||
"zoneId": "1790b5b392c07b181e6ba1fc421cd347",
|
||||
"accountId": "52ad57a71671c5fc009edf0744658196",
|
||||
"accountName": "SGI PARTNERS, LLC"
|
||||
}
|
||||
],
|
||||
"publicTunnelHostnames": [
|
||||
{
|
||||
"hostname": "novablockchainsystem.com",
|
||||
"type": "CNAME",
|
||||
"target": "Railway apex",
|
||||
"status": "live",
|
||||
"accountName": "Dsbullock"
|
||||
},
|
||||
{
|
||||
"hostname": "www.novablockchainsystem.com",
|
||||
"type": "CNAME",
|
||||
"target": "novablockchainsystem.com",
|
||||
"status": "redirect-live",
|
||||
"accountName": "Dsbullock"
|
||||
},
|
||||
{
|
||||
"hostname": "novabank.uk",
|
||||
"type": "CNAME",
|
||||
"target": "aa9d668a-43bb-487d-9189-edf7300e35e8.cfargotunnel.com",
|
||||
"status": "configured-pending-connector",
|
||||
"accountName": "SGI PARTNERS, LLC"
|
||||
},
|
||||
{
|
||||
"hostname": "www.novabank.uk",
|
||||
"type": "CNAME",
|
||||
"target": "novabank.uk",
|
||||
"status": "configured-pending-connector",
|
||||
"accountName": "SGI PARTNERS, LLC"
|
||||
},
|
||||
{
|
||||
"hostname": "devops.novabank.uk",
|
||||
"type": "CNAME",
|
||||
"target": "e979ef06-cb71-4550-a1ba-326ee4d1753d.cfargotunnel.com",
|
||||
"status": "operator-tunnel",
|
||||
"accountName": "SGI PARTNERS, LLC"
|
||||
}
|
||||
],
|
||||
"publicStaticIpPlan": [
|
||||
{
|
||||
"ip": "76.53.10.43",
|
||||
"plannedUse": "spare / unassigned",
|
||||
"status": "unused"
|
||||
},
|
||||
{
|
||||
"ip": "76.53.10.44",
|
||||
"plannedUse": "Zardasht public service IP",
|
||||
"status": "planned"
|
||||
},
|
||||
{
|
||||
"ip": "76.53.10.45",
|
||||
"plannedUse": "Zardasht public service IP",
|
||||
"status": "planned"
|
||||
},
|
||||
{
|
||||
"ip": "76.53.10.46",
|
||||
"plannedUse": "Zardasht devops host / tunnel ingress",
|
||||
"status": "planned"
|
||||
}
|
||||
],
|
||||
"devopsTunnel": {
|
||||
"hostname": "devops.novabank.uk",
|
||||
"publicIp": "76.53.10.46",
|
||||
"purpose": "operator-only tunnel for pushes, admin SSH, and deploy tooling",
|
||||
"ports": [
|
||||
22,
|
||||
3000,
|
||||
3099,
|
||||
9080
|
||||
],
|
||||
"access": "Cloudflare Access app/policy + SSH + TCP",
|
||||
"verifiedWith": "ssh -l novac -o ProxyCommand=cloudflared access ssh --hostname %h devops.novabank.uk"
|
||||
},
|
||||
"targetTopology": [
|
||||
{
|
||||
"role": "edge / ingress",
|
||||
"hostname": "zardasht-edge",
|
||||
"exposure": "public + SD-WAN",
|
||||
"services": [
|
||||
"Cloudflared ingress",
|
||||
"reverse proxy",
|
||||
"route fanout"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "Nova Plus app",
|
||||
"hostname": "zardasht-plus",
|
||||
"exposure": "internal only",
|
||||
"services": [
|
||||
"nova-plus-server",
|
||||
"portal runtime"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "Nova Bank API",
|
||||
"hostname": "zardasht-bank",
|
||||
"exposure": "internal only",
|
||||
"services": [
|
||||
"nova-api-1",
|
||||
"bank API"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "data / state",
|
||||
"hostname": "zardasht-data",
|
||||
"exposure": "internal only",
|
||||
"services": [
|
||||
"Postgres",
|
||||
"Redis",
|
||||
"uploads",
|
||||
"persistent volumes"
|
||||
]
|
||||
},
|
||||
{
|
||||
"role": "admin / ops",
|
||||
"hostname": "zardasht-ops",
|
||||
"exposure": "admin-only",
|
||||
"services": [
|
||||
"deploy scripts",
|
||||
"health checks",
|
||||
"SSH/SCP",
|
||||
"logs"
|
||||
]
|
||||
}
|
||||
],
|
||||
"failureModes": [
|
||||
"localhost used as public target",
|
||||
"container unhealthy",
|
||||
"wrong port mapping",
|
||||
"compose not up",
|
||||
"tunnel connector unhealthy",
|
||||
"VPS origin unreachable",
|
||||
"DNS points at the wrong origin",
|
||||
"missing Proxmox LXC target definitions"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"name": "Project Atlas",
|
||||
"version": "v1",
|
||||
"statusLegend": {
|
||||
"blocked": "The ecosystem endpoint or access path is known but not reachable or not yet provisioned.",
|
||||
"partial": "Some access exists, but the ecosystem is not fully usable or not fully public.",
|
||||
"live": "The endpoint is reachable and the service is available now.",
|
||||
"verified": "A live check has been run and matched the expected output."
|
||||
},
|
||||
"statusEnum": [
|
||||
"blocked",
|
||||
"partial",
|
||||
"live",
|
||||
"verified"
|
||||
],
|
||||
"ecosystems": [
|
||||
{
|
||||
"name": "Nathan / AnakaTech",
|
||||
"status": "verified-wireguard-ct59-pve-astra-denied",
|
||||
"access": {
|
||||
"type": "wireguard-and-ssh",
|
||||
"state": "verified",
|
||||
"tunnelName": "wg0-p",
|
||||
"scopeBoundary": "Astra denied, not granted"
|
||||
},
|
||||
"sourceDocs": [
|
||||
"/home/intlc/Downloads/from_Nathan/P-ANAKATECH-ACCESS.md"
|
||||
],
|
||||
"verificationCommands": [
|
||||
"wg-quick up wg0-p",
|
||||
"ssh ct59",
|
||||
"ssh pve",
|
||||
"ssh -i /home/intlc/Downloads/from_Nathan/p_anakatech_key -o BatchMode=yes -o ConnectTimeout=5 [email protected] 'hostname && id'"
|
||||
],
|
||||
"nextDependency": "Astra remains denied"
|
||||
},
|
||||
{
|
||||
"name": "Sankofa / local Proxmox infrastructure",
|
||||
"status": "available",
|
||||
"access": {
|
||||
"type": "workspace-and-live-ops",
|
||||
"state": "available"
|
||||
},
|
||||
"sourceDocs": [
|
||||
"/home/intlc/projects/proxmox/docs/02-architecture/OMNL_BANKING_PORTAL_SMOM_AND_NOVA_TRUST_ARCHITECTURE.md",
|
||||
"/home/intlc/projects/proxmox/docs/MASTER_INDEX.md",
|
||||
"/home/intlc/projects/projectAtlas/docs/network-architecture.md"
|
||||
],
|
||||
"verificationCommands": [
|
||||
"bash /home/intlc/projects/proxmox/scripts/maintenance/verify-pve-cluster-health.sh"
|
||||
],
|
||||
"nextDependency": "ongoing-live-validation"
|
||||
},
|
||||
{
|
||||
"name": "Nova App / Zardasht dual production",
|
||||
"status": "partial-dual-production-local-live-devops-live-public-tunnel-configured-pending-health",
|
||||
"access": {
|
||||
"type": "dual-production",
|
||||
"state": "partial",
|
||||
"tunnelName": "local-machine-and-vps",
|
||||
"scopeBoundary": "Local machine and devops tunnel are live; the Dsbullock apex is live on Railway with www redirecting to apex, while novabank.uk is published but still connector-pending"
|
||||
},
|
||||
"sourceDocs": [
|
||||
"/home/intlc/projects/projectAtlas/atlas.md",
|
||||
"/home/intlc/projects/projectAtlas/docs/network-architecture.md",
|
||||
"/home/intlc/projects/projectAtlas/ecosystems/zardasht-dual-production.md",
|
||||
"/home/intlc/projects/projectAtlas/ecosystems/zardasht-migration-runbook.md",
|
||||
"/home/intlc/projects/nova-trust/docs/architecture/system-atlas.md"
|
||||
],
|
||||
"verificationCommands": [
|
||||
"docker ps --format '{{.Names}}\\t{{.Status}}\\t{{.Ports}}'",
|
||||
"ipconfig",
|
||||
"curl -I http://localhost:3099",
|
||||
"curl -I http://localhost:3000",
|
||||
"curl -I http://localhost:9080",
|
||||
"curl -I http://51.75.64.28/",
|
||||
"curl -I https://novablockchainsystem.com",
|
||||
"curl -I https://novabank.uk",
|
||||
"ssh -l novac -o ProxyCommand=\"cloudflared access ssh --hostname %h\" devops.novabank.uk 'hostname && id'"
|
||||
],
|
||||
"nextDependency": "define-proxmox-lxc-targets-and-public-cutover"
|
||||
}
|
||||
]
|
||||
}
|
||||
+222
-175
@@ -1,4 +1,7 @@
|
||||
import { itReadApiBaseUrl, itReadApiKey } from '@/app/api/it/_auth';
|
||||
import projectAtlasReverseMapJson from '@/data/project-atlas/dns-e2e-reverse-map.v1.json';
|
||||
import projectAtlasNetworkJson from '@/data/project-atlas/network-architecture.v1.json';
|
||||
import projectAtlasRegistryJson from '@/data/project-atlas/project-atlas.v1.json';
|
||||
|
||||
export type AtlasRouteRow = {
|
||||
hostnames: string[];
|
||||
@@ -60,6 +63,81 @@ export type AtlasSnapshot = {
|
||||
|
||||
type RecordLike = Record<string, unknown>;
|
||||
|
||||
type ProjectAtlasRegistry = {
|
||||
ecosystems: Array<{
|
||||
name: string;
|
||||
status: string;
|
||||
access?: {
|
||||
type?: string;
|
||||
state?: string;
|
||||
tunnelName?: string;
|
||||
scopeBoundary?: string;
|
||||
};
|
||||
sourceDocs?: string[];
|
||||
verificationCommands?: string[];
|
||||
nextDependency?: string;
|
||||
}>;
|
||||
};
|
||||
|
||||
type ProjectAtlasNetwork = {
|
||||
e2eReverseCoverage?: {
|
||||
command?: string;
|
||||
endpointCount?: number;
|
||||
artifact?: string;
|
||||
};
|
||||
cloudflaredLayers?: Array<{
|
||||
layer: string;
|
||||
description: string;
|
||||
}>;
|
||||
ecosystems?: Array<{
|
||||
name: string;
|
||||
publicTunnelHostnames?: Array<{
|
||||
hostname: string;
|
||||
type: string;
|
||||
target: string;
|
||||
status: string;
|
||||
accountName?: string;
|
||||
}>;
|
||||
cloudflareDomains?: Array<{
|
||||
domain: string;
|
||||
zoneId: string;
|
||||
accountId: string;
|
||||
accountName: string;
|
||||
}>;
|
||||
publicStaticIpPlan?: Array<{
|
||||
ip: string;
|
||||
plannedUse: string;
|
||||
status: string;
|
||||
}>;
|
||||
}>;
|
||||
};
|
||||
|
||||
type ProjectAtlasReverseMap = {
|
||||
endpointCount: number;
|
||||
endpoints: Array<{
|
||||
domain: string;
|
||||
type: string;
|
||||
url: string;
|
||||
ecosystem: string;
|
||||
triagePath: string;
|
||||
reverseTarget: string;
|
||||
reverseNote?: string;
|
||||
checks?: Record<string, string>;
|
||||
}>;
|
||||
};
|
||||
|
||||
const projectAtlasRegistry = projectAtlasRegistryJson as ProjectAtlasRegistry;
|
||||
const projectAtlasNetwork = projectAtlasNetworkJson as ProjectAtlasNetwork;
|
||||
const projectAtlasReverseMap = projectAtlasReverseMapJson as ProjectAtlasReverseMap;
|
||||
|
||||
function fetchProjectAtlasEcosystem(name: string) {
|
||||
return projectAtlasRegistry.ecosystems.find((ecosystem) => ecosystem.name === name);
|
||||
}
|
||||
|
||||
function fetchProjectAtlasNetworkEcosystem(name: string) {
|
||||
return projectAtlasNetwork.ecosystems?.find((ecosystem) => ecosystem.name === name);
|
||||
}
|
||||
|
||||
async function fetchJson(url: string, apiKey?: string): Promise<unknown | null> {
|
||||
try {
|
||||
const res = await fetch(url, {
|
||||
@@ -105,6 +183,48 @@ function toText(value: unknown, fallback = '—'): string {
|
||||
return fallback;
|
||||
}
|
||||
|
||||
function isInternalRoute(domain: string, type: string): boolean {
|
||||
if (type === 'ssh') return true;
|
||||
const normalized = domain.toLowerCase();
|
||||
return [
|
||||
'portal.',
|
||||
'keycloak.',
|
||||
'admin.',
|
||||
'dash.',
|
||||
'rancher.',
|
||||
'argocd.',
|
||||
'grafana.',
|
||||
'vault.',
|
||||
'k8s-api.',
|
||||
'devops.',
|
||||
'mail.',
|
||||
'webmail.',
|
||||
'pve.',
|
||||
'cc.',
|
||||
'auth.cc.',
|
||||
'entity.cc.',
|
||||
].some((needle) => normalized.includes(needle));
|
||||
}
|
||||
|
||||
function isPendingRoute(domain: string, status: string): boolean {
|
||||
const normalized = domain.toLowerCase();
|
||||
return (
|
||||
status.includes('pending') ||
|
||||
status.includes('blocked') ||
|
||||
normalized === 'novabank.uk' ||
|
||||
normalized === 'www.novabank.uk'
|
||||
);
|
||||
}
|
||||
|
||||
function dedupeRoutes(rows: AtlasRouteRow[]): AtlasRouteRow[] {
|
||||
const seen = new Map<string, AtlasRouteRow>();
|
||||
for (const row of rows) {
|
||||
const key = row.hostnames.join('|');
|
||||
if (!seen.has(key)) seen.set(key, row);
|
||||
}
|
||||
return [...seen.values()];
|
||||
}
|
||||
|
||||
function buildGuestRows(liveInventory: unknown): AtlasGuestRow[] {
|
||||
const rows = firstRecordArray(liveInventory);
|
||||
const vmRows = rows.filter((row) =>
|
||||
@@ -123,141 +243,83 @@ function buildGuestRows(liveInventory: unknown): AtlasGuestRow[] {
|
||||
}));
|
||||
}
|
||||
|
||||
function buildRoutes(): AtlasRouteRow[] {
|
||||
return [
|
||||
{
|
||||
hostnames: ['sankofa.nexus', 'www.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> 76.53.10.36 -> NPMplus',
|
||||
backend: '192.168.11.51:3000 Sankofa public site',
|
||||
visibility: 'public',
|
||||
status: 'live',
|
||||
source: 'docs/INSTITUTIONAL_REGISTRY.md',
|
||||
notes: 'Public corporate apex. www canonicalizes to apex.',
|
||||
},
|
||||
{
|
||||
hostnames: ['phoenix.sankofa.nexus', 'www.phoenix.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> 76.53.10.36 -> NPMplus',
|
||||
backend: '192.168.11.50:4000 Phoenix surface',
|
||||
visibility: 'public',
|
||||
status: 'live',
|
||||
source: 'docs/INSTITUTIONAL_REGISTRY.md',
|
||||
},
|
||||
{
|
||||
hostnames: ['the-order.sankofa.nexus', 'www.the-order.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> 76.53.10.36 -> 192.168.11.39:80 HAProxy -> portal',
|
||||
backend: '192.168.11.51:3000 Sankofa portal stack',
|
||||
visibility: 'public',
|
||||
status: 'live',
|
||||
source: 'docs/04-configuration/ALL_VMIDS_ENDPOINTS.md',
|
||||
notes: 'www redirects to apex.',
|
||||
},
|
||||
{
|
||||
hostnames: ['studio.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> 76.53.10.36 -> NPMplus',
|
||||
backend: '192.168.11.72:8000 Sankofa Studio',
|
||||
visibility: 'public',
|
||||
status: 'live',
|
||||
source: 'docs/04-configuration/ALL_VMIDS_ENDPOINTS.md',
|
||||
notes: 'Public tooling surface under /studio.',
|
||||
},
|
||||
{
|
||||
hostnames: ['portal.sankofa.nexus'],
|
||||
edge: 'Cloudflare Tunnel -> control-plane ingress',
|
||||
backend: 'portal.portal.svc.cluster.local:80',
|
||||
visibility: 'internal',
|
||||
status: 'live',
|
||||
source: 'cloudflare/tunnel-configs/control-plane.yaml',
|
||||
notes: 'Client workspace and SSO shell.',
|
||||
},
|
||||
{
|
||||
hostnames: ['keycloak.sankofa.nexus'],
|
||||
edge: 'Cloudflare Tunnel -> control-plane ingress',
|
||||
backend: 'keycloak.keycloak.svc.cluster.local:8080',
|
||||
visibility: 'internal',
|
||||
status: 'live',
|
||||
source: 'cloudflare/tunnel-configs/control-plane.yaml',
|
||||
notes: 'Shared identity provider.',
|
||||
},
|
||||
{
|
||||
hostnames: ['admin.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> NPMplus / protected app',
|
||||
backend: 'SSO administration boundary',
|
||||
visibility: 'internal',
|
||||
status: 'documented',
|
||||
source: 'docs/02-architecture/EXPECTED_WEB_CONTENT.md',
|
||||
},
|
||||
{
|
||||
hostnames: ['dash.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> NPMplus / operator access',
|
||||
backend: 'IP allowlist + MFA operator dashboard',
|
||||
visibility: 'hidden',
|
||||
status: 'documented',
|
||||
source: 'docs/02-architecture/EXPECTED_WEB_CONTENT.md',
|
||||
},
|
||||
{
|
||||
hostnames: ['pve.sankofa.nexus', 'pve1.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> NPMplus / tunnel',
|
||||
backend: 'Proxmox management surfaces',
|
||||
visibility: 'hidden',
|
||||
status: 'documented',
|
||||
source: 'docs/INSTITUTIONAL_REGISTRY.md',
|
||||
},
|
||||
{
|
||||
hostnames: ['cc.sankofa.nexus', 'auth.cc.sankofa.nexus', 'admin.cc.sankofa.nexus', 'entity.cc.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> Complete Credential stack',
|
||||
backend: 'Credential issuance and admin portals',
|
||||
visibility: 'hidden',
|
||||
status: 'documented',
|
||||
source: 'docs/INSTITUTIONAL_REGISTRY.md',
|
||||
},
|
||||
{
|
||||
hostnames: ['ml110-01.sankofa.nexus', 'ml110-01-api.sankofa.nexus', 'ml110-01-metrics.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> internal instance routing',
|
||||
backend: '192.168.11.10 / instance services',
|
||||
visibility: 'hidden',
|
||||
status: 'documented',
|
||||
source: 'docs/proxmox/DNS_CONFIGURATION.md',
|
||||
},
|
||||
{
|
||||
hostnames: ['r630-01.sankofa.nexus', 'r630-01-api.sankofa.nexus', 'r630-01-metrics.sankofa.nexus'],
|
||||
edge: 'Cloudflare DNS -> internal instance routing',
|
||||
backend: '192.168.11.11 / instance services',
|
||||
visibility: 'hidden',
|
||||
status: 'documented',
|
||||
source: 'docs/proxmox/DNS_CONFIGURATION.md',
|
||||
},
|
||||
{
|
||||
hostnames: ['rancher.sankofa.nexus', 'argocd.sankofa.nexus', 'grafana.sankofa.nexus', 'vault.sankofa.nexus', 'k8s-api.sankofa.nexus'],
|
||||
edge: 'Cloudflare Tunnel -> control-plane ingress',
|
||||
backend: 'Kubernetes control-plane services',
|
||||
visibility: 'hidden',
|
||||
status: 'documented',
|
||||
source: 'cloudflare/tunnel-configs/control-plane.yaml',
|
||||
},
|
||||
];
|
||||
function buildProjectAtlasRoutes(): AtlasRouteRow[] {
|
||||
const routes: AtlasRouteRow[] = [];
|
||||
|
||||
const zardashtNetwork = fetchProjectAtlasNetworkEcosystem('Nova App / Zardasht dual production');
|
||||
for (const entry of zardashtNetwork?.publicTunnelHostnames ?? []) {
|
||||
routes.push({
|
||||
hostnames: [entry.hostname],
|
||||
edge:
|
||||
entry.type.toUpperCase() === 'CNAME'
|
||||
? `Cloudflare Tunnel -> ${entry.target}`
|
||||
: `Cloudflare DNS -> ${entry.target}`,
|
||||
backend: entry.target,
|
||||
visibility: isInternalRoute(entry.hostname, entry.type) ? 'internal' : 'public',
|
||||
status: isPendingRoute(entry.hostname, entry.status) ? 'pending' : 'live',
|
||||
source: 'projectAtlas/manifest/network-architecture.v1.json',
|
||||
notes: [entry.accountName, entry.type].filter(Boolean).join(' · '),
|
||||
});
|
||||
}
|
||||
|
||||
for (const endpoint of projectAtlasReverseMap.endpoints) {
|
||||
routes.push({
|
||||
hostnames: [endpoint.domain],
|
||||
edge: endpoint.triagePath,
|
||||
backend: endpoint.reverseTarget,
|
||||
visibility: isInternalRoute(endpoint.domain, endpoint.type) ? 'internal' : 'public',
|
||||
status: isPendingRoute(endpoint.domain, endpoint.reverseNote ?? '') ? 'pending' : 'live',
|
||||
source: 'projectAtlas/manifest/dns-e2e-reverse-map.v1.json',
|
||||
notes: endpoint.reverseNote ?? endpoint.checks?.origin ?? undefined,
|
||||
});
|
||||
}
|
||||
|
||||
return dedupeRoutes(routes).sort((a, b) => a.hostnames[0].localeCompare(b.hostnames[0]));
|
||||
}
|
||||
|
||||
function buildHiddenRows(): AtlasHiddenRow[] {
|
||||
const nathan = fetchProjectAtlasEcosystem('Nathan / AnakaTech');
|
||||
const sankofa = fetchProjectAtlasEcosystem('Sankofa / local Proxmox infrastructure');
|
||||
const zardasht = fetchProjectAtlasEcosystem('Nova App / Zardasht dual production');
|
||||
const reverseCoverage = projectAtlasNetwork.e2eReverseCoverage;
|
||||
const cloudflaredLayers = projectAtlasNetwork.cloudflaredLayers ?? [];
|
||||
const publicIpPlan = fetchProjectAtlasNetworkEcosystem('Nova App / Zardasht dual production')?.publicStaticIpPlan ?? [];
|
||||
|
||||
return [
|
||||
{
|
||||
label: 'Atlas hidden inventory',
|
||||
detail: 'Public page can surface routes and hosts that are documented in repo but not exposed in the main nav.',
|
||||
source: 'portal/src/lib/atlas.ts',
|
||||
label: 'Project Atlas source-of-truth',
|
||||
detail: 'Project Atlas is the canonical mapping source for the Sankofa atlas page and is vendored locally for production rendering.',
|
||||
source: 'portal/src/data/project-atlas/project-atlas.v1.json',
|
||||
},
|
||||
{
|
||||
label: 'IT read API',
|
||||
detail: 'Server-side inventory and drift fetches are backed by IT_READ_API_URL and IT_READ_API_KEY.',
|
||||
source: 'portal/src/app/api/it/_auth.ts',
|
||||
label: 'Nathan / AnakaTech',
|
||||
detail: `${nathan?.status ?? 'unknown'} · ${nathan?.access?.scopeBoundary ?? 'no access boundary recorded'}`,
|
||||
source: 'portal/src/data/project-atlas/project-atlas.v1.json',
|
||||
},
|
||||
{
|
||||
label: 'Control-plane tunnel',
|
||||
detail: 'portal, keycloak, rancher, argocd, grafana, vault, and k8s-api share the Cloudflare tunnel ingress.',
|
||||
source: 'cloudflare/tunnel-configs/control-plane.yaml',
|
||||
label: 'Sankofa / local Proxmox infrastructure',
|
||||
detail: `${sankofa?.status ?? 'unknown'} · ${sankofa?.nextDependency ?? 'no next dependency recorded'}`,
|
||||
source: 'portal/src/data/project-atlas/project-atlas.v1.json',
|
||||
},
|
||||
{
|
||||
label: 'Proxmox instance DNS',
|
||||
detail: 'ml110-01 and r630-01 hostnames are documented internal inventory rather than public marketing surfaces.',
|
||||
source: 'docs/proxmox/DNS_CONFIGURATION.md',
|
||||
label: 'Nova App / Zardasht dual production',
|
||||
detail: `${zardasht?.status ?? 'unknown'} · ${zardasht?.access?.scopeBoundary ?? 'no scope boundary recorded'}`,
|
||||
source: 'portal/src/data/project-atlas/project-atlas.v1.json',
|
||||
},
|
||||
{
|
||||
label: 'Reverse coverage',
|
||||
detail: `${reverseCoverage?.endpointCount ?? projectAtlasReverseMap.endpointCount} endpoints mapped with DNS -> edge -> origin -> app trace order.`,
|
||||
source: 'portal/src/data/project-atlas/network-architecture.v1.json',
|
||||
},
|
||||
{
|
||||
label: 'Cloudflared layers',
|
||||
detail: cloudflaredLayers.map((layer) => `${layer.layer}: ${layer.description}`).join(' · '),
|
||||
source: 'portal/src/data/project-atlas/network-architecture.v1.json',
|
||||
},
|
||||
{
|
||||
label: 'Public IP plan',
|
||||
detail: publicIpPlan.map((entry) => `${entry.ip} (${entry.status})`).join(' · '),
|
||||
source: 'portal/src/data/project-atlas/network-architecture.v1.json',
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -266,23 +328,23 @@ function buildRevisions(): AtlasRevision[] {
|
||||
return [
|
||||
{
|
||||
date: '2026-07-28',
|
||||
title: 'Atlas route published',
|
||||
detail: 'Added a public /atlas page on the Sankofa apex so the route can be linked from the corporate shell.',
|
||||
title: 'Project Atlas imported into Sankofa',
|
||||
detail: 'The Sankofa /atlas page now renders from vendored Project Atlas manifests instead of a separate synthetic dataset.',
|
||||
},
|
||||
{
|
||||
date: '2026-06-04',
|
||||
title: 'Institutional registry published',
|
||||
detail: 'Documented the primary Sankofa and Phoenix hostnames, including public portal and identity boundaries.',
|
||||
date: '2026-07-28',
|
||||
title: 'DNS reverse map synchronized',
|
||||
detail: 'The 61-endpoint reverse map is now available locally for public rendering and filtering.',
|
||||
},
|
||||
{
|
||||
date: '2026-03-27',
|
||||
title: 'NPM routing authority updated',
|
||||
detail: 'Route ownership for sankofa.nexus, phoenix.sankofa.nexus, and the-order.sankofa.nexus was consolidated in the NPM routing docs.',
|
||||
date: '2026-07-28',
|
||||
title: 'Network architecture synchronized',
|
||||
detail: 'Cloudflared layers, public ingress, and tunnel-bound hostnames are read from the Project Atlas network manifest.',
|
||||
},
|
||||
{
|
||||
date: '2025-12-15',
|
||||
title: 'Cluster status baseline',
|
||||
detail: 'The sfvalley-01 Proxmox / Ceph status report captured the original cluster baseline and quorum state.',
|
||||
date: '2026-07-28',
|
||||
title: 'Live inventory remains server-side',
|
||||
detail: 'IT inventory and drift counters continue to come from the portal server read API so the page stays current.',
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -291,33 +353,33 @@ function buildRecommendations(): AtlasRecommendation[] {
|
||||
return [
|
||||
{
|
||||
priority: 'P1',
|
||||
title: 'Publish an atlas snapshot feed',
|
||||
detail: 'Generate a JSON snapshot of routes, hosts, and revision history so public rendering and incident review use the same payload.',
|
||||
title: 'Keep Project Atlas as the source of truth',
|
||||
detail: 'Treat the vendored Project Atlas manifests as the canonical dataset for Sankofa /atlas and refresh them when routing changes.',
|
||||
},
|
||||
{
|
||||
priority: 'P1',
|
||||
title: 'Keep live inventory server-side',
|
||||
detail: 'Continue fetching the IT inventory from the server-side read API so the public page stays current without exposing credentials.',
|
||||
title: 'Automate manifest sync',
|
||||
detail: 'Add a small sync step from the `projectAtlas` repo so the production page can stay current without hand-copying JSON.',
|
||||
},
|
||||
{
|
||||
priority: 'P2',
|
||||
title: 'Export hidden inventory separately',
|
||||
detail: 'Add a distinct capture-required section for hidden or operator-only hosts so the public page stays readable while still exhaustive.',
|
||||
title: 'Add download/export controls',
|
||||
detail: 'Expose JSON and CSV exports so operators can reuse the atlas for handoffs and incident review.',
|
||||
},
|
||||
{
|
||||
priority: 'P2',
|
||||
title: 'Add CSV / JSON export buttons',
|
||||
detail: 'Allow the atlas to feed handoff, audit, and escalation workflows without copy/paste.',
|
||||
title: 'Add health badges next',
|
||||
detail: 'Augment route rows with live edge health once the public probes are wired in.',
|
||||
},
|
||||
{
|
||||
priority: 'P3',
|
||||
title: 'Add route health badges',
|
||||
detail: 'Annotate route rows with health and 404/5xx checks once the checkers are wired to the public edge.',
|
||||
title: 'Render the markdown atlas snapshot',
|
||||
detail: 'Surface the human-readable atlas summary alongside the tables if a document-style view is useful to operators.',
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
async function loadLiveSummary() {
|
||||
async function loadLiveSummary(liveInventory: unknown | null) {
|
||||
const base = itReadApiBaseUrl();
|
||||
const apiKey = itReadApiKey();
|
||||
const readApiConfigured = Boolean(base);
|
||||
@@ -337,18 +399,15 @@ async function loadLiveSummary() {
|
||||
}
|
||||
|
||||
const root = base.replace(/\/$/, '');
|
||||
const [summary, inventory, portMap] = await Promise.all([
|
||||
const [summary, portMap] = await Promise.all([
|
||||
fetchJson(`${root}/v1/summary`, apiKey),
|
||||
fetchJson(`${root}/v1/inventory/live`, apiKey),
|
||||
fetchJson(`${root}/v1/portmap/joined`, apiKey),
|
||||
]);
|
||||
|
||||
const summaryRecord = asRecord(summary);
|
||||
const inventoryRecord = asRecord(inventory);
|
||||
const inventoryRecord = asRecord(liveInventory);
|
||||
const portMapRecord = asRecord(portMap);
|
||||
const guestRows = buildGuestRows(inventoryRecord ?? inventory);
|
||||
|
||||
const liveSummary = summaryRecord && 'artifacts' in summaryRecord ? (summaryRecord.artifacts as RecordLike) : null;
|
||||
const guestRows = buildGuestRows(liveInventory);
|
||||
|
||||
return {
|
||||
collectedAt:
|
||||
@@ -360,39 +419,27 @@ async function loadLiveSummary() {
|
||||
: typeof summaryRecord?.guest_count === 'number'
|
||||
? summaryRecord.guest_count
|
||||
: null,
|
||||
stoppedCount:
|
||||
typeof inventoryRecord?.stopped === 'number' ? inventoryRecord.stopped : null,
|
||||
stoppedCount: typeof inventoryRecord?.stopped === 'number' ? inventoryRecord.stopped : null,
|
||||
portMapState: portMapRecord?.stale ? 'stale' : 'live',
|
||||
portMapNote: toText(portMapRecord?.note, undefined),
|
||||
inventoryState: inventory ? 'live' : 'unavailable',
|
||||
inventoryState: inventoryRecord ? 'live' : 'unavailable',
|
||||
summaryState: summary ? 'live' : 'unavailable',
|
||||
readApiConfigured,
|
||||
// keep the snapshot summary available if the UI wants to expose it later
|
||||
// without another fetch path.
|
||||
...(liveSummary ? { liveArtifacts: liveSummary } : {}),
|
||||
} as AtlasSnapshot['liveSummary'] & { liveArtifacts?: RecordLike };
|
||||
};
|
||||
}
|
||||
|
||||
export async function loadAtlasSnapshot(): Promise<AtlasSnapshot> {
|
||||
const liveSummary = await loadLiveSummary();
|
||||
const routes = buildRoutes();
|
||||
const hiddenRows = buildHiddenRows();
|
||||
const revisions = buildRevisions();
|
||||
const recommendations = buildRecommendations();
|
||||
|
||||
const liveInventory = await (async () => {
|
||||
const base = itReadApiBaseUrl();
|
||||
const apiKey = itReadApiKey();
|
||||
if (!base) return null;
|
||||
return fetchJson(`${base.replace(/\/$/, '')}/v1/inventory/live`, apiKey);
|
||||
})();
|
||||
const base = itReadApiBaseUrl();
|
||||
const apiKey = itReadApiKey();
|
||||
const liveInventory = base ? await fetchJson(`${base.replace(/\/$/, '')}/v1/inventory/live`, apiKey) : null;
|
||||
const liveSummary = await loadLiveSummary(liveInventory);
|
||||
|
||||
return {
|
||||
routeRows: routes,
|
||||
routeRows: buildProjectAtlasRoutes(),
|
||||
guestRows: buildGuestRows(liveInventory),
|
||||
hiddenRows,
|
||||
revisions,
|
||||
recommendations,
|
||||
hiddenRows: buildHiddenRows(),
|
||||
revisions: buildRevisions(),
|
||||
recommendations: buildRecommendations(),
|
||||
liveSummary,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user