Phoenix Deploy API: OpenAPI spec, Swagger UI at /api-docs, railing and health routes
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled

- openapi.yaml, docs/index.html; GET /api-docs and /api-docs/spec.yaml
- Health, Infra, VE, VM lifecycle, Prometheus proxy, webhook
- docs/00-meta/SANKOFA_API_COMPLETE_TASK_LIST.md

Made-with: Cursor
This commit is contained in:
defiQUG
2026-03-11 12:58:00 -07:00
parent 7df27bde32
commit 3e9645274a
13 changed files with 711 additions and 4313 deletions

View File

@@ -0,0 +1,133 @@
# Complete Task List — Sankofa Phoenix API
**Purpose:** Single list of all tasks required to complete the API for Sankofa (GraphQL + REST railing, client API, docs, Gitea).
**Last Updated:** 2026-03-11
**Refs:** [PHOENIX_API_RAILING_TASKS.md](../02-architecture/PHOENIX_API_RAILING_TASKS.md), [PHOENIX_API_RAILING_SPEC.md](../02-architecture/PHOENIX_API_RAILING_SPEC.md), [SANKOFA_PHOENIX_GITEA_REPOS_REVIEW.md](../04-configuration/SANKOFA_PHOENIX_GITEA_REPOS_REVIEW.md)
---
## 1. Remaining Railing / Client API (Sankofa)
| # | Task | Owner | Priority | Notes |
|---|------|--------|----------|--------|
| 1.1 | **API key store (Vault or DB)** — key hash, tenant_id, scopes (read / read-write) for client and partner API keys | Sankofa / Operator | High | Blocking for 1.2. See PHOENIX_VAULT_CLUSTER_DEPLOYMENT; identity/JWT used today. |
| 1.2 | **Issue API keys for Site24x7 users** (Gitea team → Phoenix API keys) | Operator | Optional | After 1.1. Per GITEA_TEAM_MEMBERS_API. |
---
## 2. Code and Repo Sync (Delivery)
| # | Task | Owner | Priority | Notes |
|---|------|--------|----------|--------|
| 2.1 | **Commit and push Sankofa API changes to Gitea** | Dev/Operator | High | Uncommitted: `api/src/routes/phoenix-railing.ts`, `api/src/server.ts`, migrations, typeDefs, sovereign-stack, setup docs. Push to `sankofa_phoenix` (and optionally `gitea` d-bis/Sankofa). |
| 2.2 | **Re-sync Phoenix_API repo on Gitea** | Dev/Operator | High | After 2.1: `git subtree split -P api -b phoenix-api` then push to `Sankofa_Phoenix/Phoenix_API` so Gitea has latest API code. |
| 2.3 | **Commit and push proxmox phoenix-deploy-api to Gitea** | Dev/Operator | Medium | Uncommitted: `openapi.yaml`, `docs/index.html`, README, server.js. Push to `gitea` (d-bis/proxmox). |
---
## 3. Configuration and Deployment
| # | Task | Owner | Priority | Notes |
|---|------|--------|----------|--------|
| 3.1 | **Set PHOENIX_RAILING_URL in Sankofa API** | Operator | High | Point to phoenix-deploy-api base URL (e.g. `http://phoenix-deploy-api:4001` or public URL) so Sankofa REST proxy works. |
| 3.2 | **Set PHOENIX_RAILING_API_KEY (optional)** | Operator | Low | If phoenix-deploy-api enforces PHOENIX_PARTNER_KEYS, set this in Sankofa so server-to-server calls succeed. |
| 3.3 | **Proxmox env on phoenix-deploy-api** | Operator | High | PROXMOX_HOST, PROXMOX_TOKEN_NAME, PROXMOX_TOKEN_VALUE (and optional PHOENIX_VE_LIFECYCLE_ENABLED=1, PROMETHEUS_URL) for live Infra/VE/Health. |
---
## 4. API Documentation
| # | Task | Owner | Priority | Notes |
|---|------|--------|----------|--------|
| 4.1 | **GraphQL schema export / interactive docs** | Sankofa | Medium | Publish schema (SDL or introspection JSON); add GraphQL Playground or Apollo Studio for interactive docs. |
| 4.2 | **OpenAPI for GraphQL endpoint (optional)** | Sankofa | Low | Minimal OpenAPI describing POST /graphql; or keep schema as source of truth. |
| 4.3 | **REST railing OpenAPI in Phoenix_API repo (optional)** | Sankofa | Low | Copy or link phoenix-deploy-api openapi.yaml into Sankofa/Phoenix_API docs so one repo has full API doc. |
| 4.4 | **API versioning strategy** | Sankofa | Low | Document in Sankofa docs/api/API_VERSIONING.md; align /api/v1/ with strategy. |
---
## 5. Testing and Quality
| # | Task | Owner | Priority | Notes |
|---|------|--------|----------|--------|
| 5.1 | **Integration tests for REST railing routes** | Sankofa | Medium | Test GET /api/v1/infra/nodes, /ve/vms, /health/summary and tenant me routes (with mock or real PHOENIX_RAILING_URL). |
| 5.2 | **E2E: Portal → Phoenix API → Railing** | Sankofa | Medium | After Portal calls are implemented, add E2E that hits Sankofa API and (optionally) railing. |
---
## 6. Portal Implementation (Depends on API)
| # | Task | Owner | Priority | Notes |
|---|------|--------|----------|--------|
| 6.1 | **Portal: Infrastructure overview** — call GET /api/v1/infra/nodes, /api/v1/infra/storage | Sankofa | High | See docs/phoenix/PORTAL_RAILING_WIRING.md. |
| 6.2 | **Portal: VM/CT list and actions** — call GET/POST /api/v1/ve/vms/* | Sankofa | High | List, status, start/stop/reboot. |
| 6.3 | **Portal: Health/dashboards** — call GET /api/v1/health/summary, /alerts, /metrics | Sankofa | High | Dashboards and alerts. |
| 6.4 | **Portal: Keycloak token for API** | Sankofa | High | Server-side or BFF uses token for Phoenix API calls; token includes tenant when applicable. |
---
## 7. Optional / Later
| # | Task | Owner | Notes |
|---|------|--------|--------|
| 7.1 | Rate limiting per tenant (beyond global) | Sankofa | rateLimitMiddleware exists; per-tenant limits if needed. |
| 7.2 | Swagger UI in phoenix-deploy-api at /api-docs | Proxmox | Add swagger-ui-express; serve openapi.yaml. |
| 7.3 | Alert webhook (alert fired → POST to partner URL) | Proxmox | Beyond deploy webhook; optional. |
---
## Summary Checklist
**Must-do to “complete” the API for Sankofa:**
- [x] **1.1** API key store (DB: api_keys + verifyApiKey; X-API-Key in tenant-auth for /api/v1/*)
- [ ] **2.1** Commit and push Sankofa API changes to Gitea
- [ ] **2.2** Re-sync Phoenix_API Gitea repo from api/ subtree
- [ ] **3.1** Set PHOENIX_RAILING_URL in Sankofa API
- [ ] **3.3** Configure Proxmox (and optional Prometheus) env for phoenix-deploy-api
**Should-do:**
- [ ] **2.3** Commit and push phoenix-deploy-api (openapi, docs, server, /api-docs) to Gitea
- [x] **4.1** GraphQL schema export + interactive docs
- [x] **4.24.4** OpenAPI GraphQL, api/docs, versioning doc
- [x] **5.1** Integration tests for railing (phoenix-railing.test.ts)
- [x] **7.2** Swagger UI at /api-docs in phoenix-deploy-api
- [ ] **6.16.4** Portal wiring to Infra/VE/Health APIs and Keycloak
**Optional:**
- [ ] 1.2 Site24x7 API keys (after 1.1)
- [ ] 4.2, 4.3, 4.4 API docs enhancements
- [ ] 5.1, 5.2 Tests
- [ ] 7.x Optional items
---
## Quick Commands
**Sankofa — commit and push to Sankofa_Phoenix:**
```bash
cd /home/intlc/projects/Sankofa
git add api/
git status # review
git commit -m "API: phoenix-railing proxy, tenant me routes, sovereign-stack, migrations"
git push sankofa_phoenix main
```
**Sankofa — re-sync Phoenix_API repo:**
```bash
cd /home/intlc/projects/Sankofa
git subtree split -P api -b phoenix-api
# Use GITEA_TOKEN from proxmox .env:
git push https://oauth2:${GITEA_TOKEN}@gitea.d-bis.org/Sankofa_Phoenix/Phoenix_API.git phoenix-api:main
git branch -D phoenix-api
```
**Proxmox — commit and push phoenix-deploy-api to Gitea:**
```bash
cd /home/intlc/projects/proxmox
git add phoenix-deploy-api/openapi.yaml phoenix-deploy-api/docs/ phoenix-deploy-api/README.md phoenix-deploy-api/server.js
git commit -m "Phoenix Deploy API: OpenAPI spec, Swagger UI doc, railing and health routes"
git push gitea main
```

View File

@@ -1,558 +0,0 @@
# Next Steps — Automated Run
**Date:** 2026-02-08T09:33:33-08:00
**Report:** `/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_20260208_093333.md`
## Automated steps run
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
| Dependencies | OK | `check-dependencies.sh` |
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
| Config validation | OK | `validate-config-files.sh` |
=== Run all validation (no LAN/SSH) ===
1. Dependencies...
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
[✓] Dependencies OK
2. Config files...
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
[✓] Config validation OK
3. Genesis — skipped (--skip-genesis)
[✓] All validation passed.
| Run all validation | OK | `run-all-validation.sh --skip-genesis` |
[INFO] ACCEPT_ANY_DNS=1 (CLOUDFLARE_TUNNEL_ID in .env, Option B tunnel)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 End-to-End Routing Verification
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Progress: domain 1/33
[INFO]
[INFO] Testing domain: dbis-admin.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-admin.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-admin.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:11 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-admin.d-bis.org returned HTTP 502 (Time: 3.120982s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 2/33
[INFO]
[INFO] Testing domain: rpc-alltra-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-3.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra-3.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 3/33
[INFO]
[INFO] Testing domain: rpc-hybx-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-2.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx-2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 4/33
[INFO]
[INFO] Testing domain: cacti-hybx.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: cacti-hybx.d-bis.org returned HTTP 502 (Time: 0.128922s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 5/33
[INFO]
[INFO] Testing domain: sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:17 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: sankofa.nexus returned HTTP 200 (Time: 0.082830s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 6/33
[INFO]
[INFO] Testing domain: rpc-alltra.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 7/33
[INFO]
[INFO] Testing domain: rpc-http-pub.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-pub.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-http-pub.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 8/33
[INFO]
[INFO] Testing domain: rpc.public-0138.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.public-0138.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: defi-oracle.io)
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3 | Expires: Apr 4 08:26:02 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.public-0138.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 9/33
[INFO]
[INFO] Testing domain: dbis-api.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:33 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api.d-bis.org returned HTTP 502 (Time: 3.259171s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 10/33
[INFO]
[INFO] Testing domain: rpc-hybx-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-3.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx-3.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 11/33
[INFO]
[INFO] Testing domain: rpc.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 12/33
[INFO]
[INFO] Testing domain: www.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:41 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.sankofa.nexus returned HTTP 200 (Time: 0.044073s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 13/33
[INFO]
[INFO] Testing domain: mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:01 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: mim4u.org returned HTTP 200 (Time: 0.031617s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 14/33
[INFO]
[INFO] Testing domain: ws.rpc.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:43:05 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 15/33
[INFO]
[INFO] Testing domain: phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:57:08 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: phoenix.sankofa.nexus returned HTTP 200 (Time: 0.079323s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 16/33
[INFO]
[INFO] Testing domain: www.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:17 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: www.mim4u.org returned HTTP 502 (Time: 0.052842s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 17/33
[INFO]
[INFO] Testing domain: wss.defi-oracle.io (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: wss.defi-oracle.io → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for wss.defi-oracle.io
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:44:57 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 18/33
[INFO]
[INFO] Testing domain: the-order.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: the-order.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for the-order.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:53 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: the-order.sankofa.nexus returned HTTP 200 (Time: 0.046807s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 19/33
[INFO]
[INFO] Testing domain: rpc2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 20/33
[INFO]
[INFO] Testing domain: rpc-ws-pub.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-pub.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-pub.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:51 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 21/33
[INFO]
[INFO] Testing domain: rpc-alltra-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra-2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 22/33
[INFO]
[INFO] Testing domain: rpc-http-prv.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-prv.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-prv.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 23/33
[INFO]
[INFO] Testing domain: www.phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:59:28 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.phoenix.sankofa.nexus returned HTTP 200 (Time: 1.045995s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 24/33
[INFO]
[INFO] Testing domain: secure.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.mim4u.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:40 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: secure.mim4u.org returned HTTP 200 (Time: 0.036570s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 25/33
[INFO]
[INFO] Testing domain: training.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: training.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for training.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:06 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: training.mim4u.org returned HTTP 200 (Time: 0.031131s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 26/33
[INFO]
[INFO] Testing domain: explorer.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: explorer.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for explorer.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 7 23:15:36 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: explorer.d-bis.org returned HTTP 200 (Time: 0.035560s)
[INFO] Test 3b: Blockscout API (optional)
[⚠] Blockscout API: HTTP 502 or invalid response (optional; run from LAN if backend unreachable)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 27/33
[INFO]
[INFO] Testing domain: dbis-api-2.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api-2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api-2.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:22 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api-2.d-bis.org returned HTTP 502 (Time: 3.094991s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 28/33
[INFO]
[INFO] Testing domain: secure.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:28 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: secure.d-bis.org returned HTTP 502 (Time: 3.144886s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 29/33
[INFO]
[INFO] Testing domain: rpc-hybx.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 30/33
[INFO]
[INFO] Testing domain: rpc.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc.defi-oracle.io
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3
[INFO] Expires: May 7 09:51:23 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc.defi-oracle.io failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 31/33
[INFO]
[INFO] Testing domain: rpc-ws-prv.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-prv.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-prv.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:38 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 32/33
[INFO]
[INFO] Testing domain: cacti-alltra.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-alltra.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: cacti-alltra.d-bis.org returned HTTP 502 (Time: 0.111150s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 33/33
[INFO]
[INFO] Testing domain: ws.rpc2.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc2.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 30 03:43:58 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO]
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 📊 Verification Summary
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Total domains: 33
[✓] DNS passed: 33
[✓] HTTPS passed: 9
[✗] Failed: 10
[INFO] All failures are RPC (edge may block POST). For full RPC pass see docs/05-network/E2E_RPC_EDGE_LIMITATION.md
[✓] E2E success (DNS + HTTPS pass; RPC blocked by edge - expected until UDM Pro allows POST or Tunnel used)
[INFO] Average response time: 0.896678125s
[✓] Verification complete!
[✓] Report: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260208_093333/verification_report.md
[✓] All results: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260208_093333/all_e2e_results.json
| E2E routing | OK | `verify-end-to-end-routing.sh` (RPC may skip off-LAN) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Explorer links + block production — quick check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 1. Explorer URL (https://explorer.d-bis.org)
[OK] Explorer HTTPS: 200
[INFO] 2. Blockscout API (https://explorer.d-bis.org/api/v2/stats)
[SKIP] Blockscout API: unreachable or invalid (run from LAN for backend 192.168.11.140)
[INFO] 3. RPC (public) — eth_chainId
[SKIP] RPC: no result (tunnel/edge may block POST; run from LAN or see E2E runbook)
[INFO] 4. Block production (RPC_CORE_1)
[FAIL] Block production: stalled at 1879594. Run: scripts/monitoring/monitor-blockchain-health.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[FAIL] Quick check: 1 failure(s). See docs/08-monitoring/EXPLORER_LINKS_AND_BLOCK_PRODUCTION_STATUS.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Explorer + block production | WARN | `verify-explorer-and-block-production.sh` (block production needs LAN) |
DRY-RUN: cast send 0x971cD9D156f193df8051E48043C476e53ECd4693 sendCrossChain(5009297550715157269,0x4A666F96fC8764181194447A7dFdb7d471b301C8,10000000000000000) --gas-price 1000000000 --legacy
Simulation: (check params)
| Bridge dry-run | OK | `run-send-cross-chain.sh 0.01 --dry-run` |
[Security] Proxmox hosts: 192.168.11.10 192.168.11.11 192.168.11.12 (DRY_RUN=true)
--- 192.168.11.10 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.11 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.12 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
Done.
| Security dry-run | OK | `run-security-on-proxmox-hosts.sh` (no --apply) |
Crontab line: 0 3 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/verify/backup-npmplus.sh >> /home/intlc/projects/proxmox/logs/npmplus-backup.log 2>&1
Daily (O-1, O-2): 0 8 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh daily >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
Weekly (O-3): 0 9 * * 0 cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh weekly >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
| Cron (show) | — | `schedule-npmplus-backup-cron.sh --show`, `schedule-daily-weekly-cron.sh --show` |
---
## Run from LAN / Proxmox (when ready)
| # | What | Command |
|---|------|---------|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
---
## Manual / UI
| # | What | Where |
|---|------|--------|
| 9 | 25062508 JWT and identity | [CHAIN138_JWT_AUTH_REQUIREMENTS.md](../../04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md), `scripts/generate-jwt-token-for-container.sh` |
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## References
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
- [CONTINUE_AND_COMPLETE.md](../../archive/00-meta-pruned/CONTINUE_AND_COMPLETE.md) (archived)
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)

View File

@@ -1,558 +0,0 @@
# Next Steps — Automated Run
**Date:** 2026-02-08T10:09:11-08:00
**Report:** `/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_20260208_100911.md`
## Automated steps run
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
| Dependencies | OK | `check-dependencies.sh` |
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
| Config validation | OK | `validate-config-files.sh` |
=== Run all validation (no LAN/SSH) ===
1. Dependencies...
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
[✓] Dependencies OK
2. Config files...
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
[✓] Config validation OK
3. Genesis — skipped (--skip-genesis)
[✓] All validation passed.
| Run all validation | OK | `run-all-validation.sh --skip-genesis` |
[INFO] ACCEPT_ANY_DNS=1 (CLOUDFLARE_TUNNEL_ID in .env, Option B tunnel)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 End-to-End Routing Verification
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Progress: domain 1/33
[INFO]
[INFO] Testing domain: dbis-admin.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-admin.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-admin.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:11 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-admin.d-bis.org returned HTTP 502 (Time: 3.590031s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 2/33
[INFO]
[INFO] Testing domain: rpc-alltra-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-3.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra-3.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 3/33
[INFO]
[INFO] Testing domain: rpc-hybx-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx-2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 4/33
[INFO]
[INFO] Testing domain: cacti-hybx.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-hybx.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: cacti-hybx.d-bis.org returned HTTP 502 (Time: 0.262422s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 5/33
[INFO]
[INFO] Testing domain: sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:17 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: sankofa.nexus returned HTTP 200 (Time: 0.260974s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 6/33
[INFO]
[INFO] Testing domain: rpc-alltra.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 7/33
[INFO]
[INFO] Testing domain: rpc-http-pub.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-pub.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-http-pub.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 8/33
[INFO]
[INFO] Testing domain: rpc.public-0138.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.public-0138.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: defi-oracle.io)
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3 | Expires: Apr 4 08:26:02 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.public-0138.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 9/33
[INFO]
[INFO] Testing domain: dbis-api.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:33 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api.d-bis.org returned HTTP 502 (Time: 3.180748s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 10/33
[INFO]
[INFO] Testing domain: rpc-hybx-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-3.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx-3.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 11/33
[INFO]
[INFO] Testing domain: rpc.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 12/33
[INFO]
[INFO] Testing domain: www.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:41 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.sankofa.nexus returned HTTP 200 (Time: 0.121996s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 13/33
[INFO]
[INFO] Testing domain: mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:01 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: mim4u.org returned HTTP 200 (Time: 0.054147s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 14/33
[INFO]
[INFO] Testing domain: ws.rpc.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:43:05 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 15/33
[INFO]
[INFO] Testing domain: phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:57:08 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: phoenix.sankofa.nexus returned HTTP 200 (Time: 0.485694s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 16/33
[INFO]
[INFO] Testing domain: www.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:17 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: www.mim4u.org returned HTTP 502 (Time: 0.306964s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 17/33
[INFO]
[INFO] Testing domain: wss.defi-oracle.io (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: wss.defi-oracle.io → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for wss.defi-oracle.io
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:44:57 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 18/33
[INFO]
[INFO] Testing domain: the-order.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: the-order.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for the-order.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:53 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: the-order.sankofa.nexus returned HTTP 200 (Time: 0.066065s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 19/33
[INFO]
[INFO] Testing domain: rpc2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 20/33
[INFO]
[INFO] Testing domain: rpc-ws-pub.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-pub.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-pub.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:51 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 21/33
[INFO]
[INFO] Testing domain: rpc-alltra-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra-2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 22/33
[INFO]
[INFO] Testing domain: rpc-http-prv.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-prv.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-prv.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 23/33
[INFO]
[INFO] Testing domain: www.phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:59:28 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.phoenix.sankofa.nexus returned HTTP 200 (Time: 0.482485s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 24/33
[INFO]
[INFO] Testing domain: secure.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.mim4u.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:40 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: secure.mim4u.org returned HTTP 200 (Time: 0.166138s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 25/33
[INFO]
[INFO] Testing domain: training.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: training.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for training.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:06 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: training.mim4u.org returned HTTP 200 (Time: 0.916216s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 26/33
[INFO]
[INFO] Testing domain: explorer.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: explorer.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for explorer.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 7 23:15:36 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: explorer.d-bis.org returned HTTP 200 (Time: 0.536888s)
[INFO] Test 3b: Blockscout API (optional)
[⚠] Blockscout API: HTTP 502 or invalid response (optional; run from LAN if backend unreachable)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 27/33
[INFO]
[INFO] Testing domain: dbis-api-2.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api-2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api-2.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:22 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api-2.d-bis.org returned HTTP 502 (Time: 3.383404s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 28/33
[INFO]
[INFO] Testing domain: secure.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:28 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: secure.d-bis.org returned HTTP 502 (Time: 3.156180s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 29/33
[INFO]
[INFO] Testing domain: rpc-hybx.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 30/33
[INFO]
[INFO] Testing domain: rpc.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc.defi-oracle.io
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3
[INFO] Expires: May 7 09:51:23 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc.defi-oracle.io failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 31/33
[INFO]
[INFO] Testing domain: rpc-ws-prv.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-prv.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-prv.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:38 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 32/33
[INFO]
[INFO] Testing domain: cacti-alltra.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-alltra.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: cacti-alltra.d-bis.org returned HTTP 502 (Time: 0.116295s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 33/33
[INFO]
[INFO] Testing domain: ws.rpc2.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc2.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 30 03:43:58 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO]
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 📊 Verification Summary
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Total domains: 33
[✓] DNS passed: 33
[✓] HTTPS passed: 9
[✗] Failed: 10
[INFO] All failures are RPC (edge may block POST). For full RPC pass see docs/05-network/E2E_RPC_EDGE_LIMITATION.md
[✓] E2E success (DNS + HTTPS pass; RPC blocked by edge - expected until UDM Pro allows POST or Tunnel used)
[INFO] Average response time: 1.0679154375000002s
[✓] Verification complete!
[✓] Report: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260208_100911/verification_report.md
[✓] All results: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260208_100911/all_e2e_results.json
| E2E routing | OK | `verify-end-to-end-routing.sh` (RPC may skip off-LAN) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Explorer links + block production — quick check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 1. Explorer URL (https://explorer.d-bis.org)
[OK] Explorer HTTPS: 200
[INFO] 2. Blockscout API (https://explorer.d-bis.org/api/v2/stats)
[SKIP] Blockscout API: unreachable or invalid (run from LAN for backend 192.168.11.140)
[INFO] 3. RPC (public) — eth_chainId
[SKIP] RPC: no result (tunnel/edge may block POST; run from LAN or see E2E runbook)
[INFO] 4. Block production (RPC_CORE_1)
[FAIL] Block production: stalled at 1879594. Run: scripts/monitoring/monitor-blockchain-health.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[FAIL] Quick check: 1 failure(s). See docs/08-monitoring/EXPLORER_LINKS_AND_BLOCK_PRODUCTION_STATUS.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Explorer + block production | WARN | `verify-explorer-and-block-production.sh` (block production needs LAN) |
DRY-RUN: cast send 0x971cD9D156f193df8051E48043C476e53ECd4693 sendCrossChain(5009297550715157269,0x4A666F96fC8764181194447A7dFdb7d471b301C8,10000000000000000) --gas-price 1000000000 --legacy
Simulation: (check params)
| Bridge dry-run | OK | `run-send-cross-chain.sh 0.01 --dry-run` |
[Security] Proxmox hosts: 192.168.11.10 192.168.11.11 192.168.11.12 (DRY_RUN=true)
--- 192.168.11.10 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.11 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.12 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
Done.
| Security dry-run | OK | `run-security-on-proxmox-hosts.sh` (no --apply) |
Crontab line: 0 3 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/verify/backup-npmplus.sh >> /home/intlc/projects/proxmox/logs/npmplus-backup.log 2>&1
Daily (O-1, O-2): 0 8 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh daily >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
Weekly (O-3): 0 9 * * 0 cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh weekly >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
| Cron (show) | — | `schedule-npmplus-backup-cron.sh --show`, `schedule-daily-weekly-cron.sh --show` |
---
## Run from LAN / Proxmox (when ready)
| # | What | Command |
|---|------|---------|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
---
## Manual / UI
| # | What | Where |
|---|------|--------|
| 9 | 25062508 JWT and identity | [CHAIN138_JWT_AUTH_REQUIREMENTS.md](../../04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md), `scripts/generate-jwt-token-for-container.sh` |
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## References
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
- [CONTINUE_AND_COMPLETE.md](../../archive/00-meta-pruned/CONTINUE_AND_COMPLETE.md) (archived)
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)

View File

@@ -1,558 +0,0 @@
# Next Steps — Automated Run
**Date:** 2026-02-08T11:08:33-08:00
**Report:** `/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_20260208_110832.md`
## Automated steps run
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
| Dependencies | OK | `check-dependencies.sh` |
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
| Config validation | OK | `validate-config-files.sh` |
=== Run all validation (no LAN/SSH) ===
1. Dependencies...
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
[✓] Dependencies OK
2. Config files...
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
[✓] Config validation OK
3. Genesis — skipped (--skip-genesis)
[✓] All validation passed.
| Run all validation | OK | `run-all-validation.sh --skip-genesis` |
[INFO] ACCEPT_ANY_DNS=1 (CLOUDFLARE_TUNNEL_ID in .env, Option B tunnel)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 End-to-End Routing Verification
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Progress: domain 1/33
[INFO]
[INFO] Testing domain: dbis-admin.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-admin.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-admin.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:11 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-admin.d-bis.org returned HTTP 502 (Time: 3.187005s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 2/33
[INFO]
[INFO] Testing domain: rpc-alltra-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-3.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra-3.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 3/33
[INFO]
[INFO] Testing domain: rpc-hybx-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-2.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx-2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 4/33
[INFO]
[INFO] Testing domain: cacti-hybx.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: cacti-hybx.d-bis.org returned HTTP 502 (Time: 0.187708s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 5/33
[INFO]
[INFO] Testing domain: sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:17 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: sankofa.nexus returned HTTP 200 (Time: 0.084326s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 6/33
[INFO]
[INFO] Testing domain: rpc-alltra.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 7/33
[INFO]
[INFO] Testing domain: rpc-http-pub.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-pub.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-http-pub.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 8/33
[INFO]
[INFO] Testing domain: rpc.public-0138.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.public-0138.defi-oracle.io → 104.21.91.43 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: defi-oracle.io)
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3 | Expires: Apr 4 08:26:02 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.public-0138.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 9/33
[INFO]
[INFO] Testing domain: dbis-api.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:33 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api.d-bis.org returned HTTP 502 (Time: 3.588403s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 10/33
[INFO]
[INFO] Testing domain: rpc-hybx-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-3.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx-3.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 11/33
[INFO]
[INFO] Testing domain: rpc.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 12/33
[INFO]
[INFO] Testing domain: www.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:41 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.sankofa.nexus returned HTTP 200 (Time: 0.115882s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 13/33
[INFO]
[INFO] Testing domain: mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:01 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: mim4u.org returned HTTP 200 (Time: 0.053242s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 14/33
[INFO]
[INFO] Testing domain: ws.rpc.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:43:05 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 15/33
[INFO]
[INFO] Testing domain: phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:57:08 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: phoenix.sankofa.nexus returned HTTP 200 (Time: 0.080514s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 16/33
[INFO]
[INFO] Testing domain: www.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:17 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: www.mim4u.org returned HTTP 502 (Time: 0.172731s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 17/33
[INFO]
[INFO] Testing domain: wss.defi-oracle.io (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: wss.defi-oracle.io → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for wss.defi-oracle.io
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:44:57 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 18/33
[INFO]
[INFO] Testing domain: the-order.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: the-order.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for the-order.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:53 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: the-order.sankofa.nexus returned HTTP 200 (Time: 0.140662s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 19/33
[INFO]
[INFO] Testing domain: rpc2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc2.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 20/33
[INFO]
[INFO] Testing domain: rpc-ws-pub.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-pub.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-pub.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:51 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 21/33
[INFO]
[INFO] Testing domain: rpc-alltra-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-2.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-alltra-2.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 22/33
[INFO]
[INFO] Testing domain: rpc-http-prv.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-prv.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-prv.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 23/33
[INFO]
[INFO] Testing domain: www.phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:59:28 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.phoenix.sankofa.nexus returned HTTP 200 (Time: 0.105827s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 24/33
[INFO]
[INFO] Testing domain: secure.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.mim4u.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:40 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: secure.mim4u.org returned HTTP 200 (Time: 0.059210s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 25/33
[INFO]
[INFO] Testing domain: training.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: training.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for training.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:06 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: training.mim4u.org returned HTTP 200 (Time: 0.265693s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 26/33
[INFO]
[INFO] Testing domain: explorer.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: explorer.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for explorer.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 7 23:15:36 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: explorer.d-bis.org returned HTTP 200 (Time: 0.330849s)
[INFO] Test 3b: Blockscout API (optional)
[⚠] Blockscout API: HTTP 502 or invalid response (optional; run from LAN if backend unreachable)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 27/33
[INFO]
[INFO] Testing domain: dbis-api-2.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api-2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api-2.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:22 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api-2.d-bis.org returned HTTP 502 (Time: 3.115486s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 28/33
[INFO]
[INFO] Testing domain: secure.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:28 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: secure.d-bis.org returned HTTP 502 (Time: 3.169162s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 29/33
[INFO]
[INFO] Testing domain: rpc-hybx.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc-hybx.d-bis.org failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 30/33
[INFO]
[INFO] Testing domain: rpc.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc.defi-oracle.io
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3
[INFO] Expires: May 7 09:51:23 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✗] RPC: rpc.defi-oracle.io failed (HTTP 502)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 31/33
[INFO]
[INFO] Testing domain: rpc-ws-prv.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-prv.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-prv.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:38 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 32/33
[INFO]
[INFO] Testing domain: cacti-alltra.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-alltra.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: cacti-alltra.d-bis.org returned HTTP 502 (Time: 0.356824s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 33/33
[INFO]
[INFO] Testing domain: ws.rpc2.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc2.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 30 03:43:58 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 502) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO]
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 📊 Verification Summary
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Total domains: 33
[✓] DNS passed: 33
[✓] HTTPS passed: 9
[✗] Failed: 10
[INFO] All failures are RPC (edge may block POST). For full RPC pass see docs/05-network/E2E_RPC_EDGE_LIMITATION.md
[✓] E2E success (DNS + HTTPS pass; RPC blocked by edge - expected until UDM Pro allows POST or Tunnel used)
[INFO] Average response time: 0.93834525s
[✓] Verification complete!
[✓] Report: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260208_110833/verification_report.md
[✓] All results: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260208_110833/all_e2e_results.json
| E2E routing | OK | `verify-end-to-end-routing.sh` (RPC may skip off-LAN) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Explorer links + block production — quick check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 1. Explorer URL (https://explorer.d-bis.org)
[OK] Explorer HTTPS: 200
[INFO] 2. Blockscout API (https://explorer.d-bis.org/api/v2/stats)
[SKIP] Blockscout API: unreachable or invalid (run from LAN for backend 192.168.11.140)
[INFO] 3. RPC (public) — eth_chainId
[SKIP] RPC: no result (tunnel/edge may block POST; run from LAN or see E2E runbook)
[INFO] 4. Block production (RPC_CORE_1)
[FAIL] Block production: stalled at 1879594. Run: scripts/monitoring/monitor-blockchain-health.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[FAIL] Quick check: 1 failure(s). See docs/08-monitoring/EXPLORER_LINKS_AND_BLOCK_PRODUCTION_STATUS.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Explorer + block production | WARN | `verify-explorer-and-block-production.sh` (block production needs LAN) |
DRY-RUN: cast send 0x971cD9D156f193df8051E48043C476e53ECd4693 sendCrossChain(5009297550715157269,0x4A666F96fC8764181194447A7dFdb7d471b301C8,10000000000000000) --gas-price 1000000000 --legacy
Simulation: (check params)
| Bridge dry-run | OK | `run-send-cross-chain.sh 0.01 --dry-run` |
[Security] Proxmox hosts: 192.168.11.10 192.168.11.11 192.168.11.12 (DRY_RUN=true)
--- 192.168.11.10 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.11 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.12 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
Done.
| Security dry-run | OK | `run-security-on-proxmox-hosts.sh` (no --apply) |
Crontab line: 0 3 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/verify/backup-npmplus.sh >> /home/intlc/projects/proxmox/logs/npmplus-backup.log 2>&1
Daily (O-1, O-2): 0 8 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh daily >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
Weekly (O-3): 0 9 * * 0 cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh weekly >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
| Cron (show) | — | `schedule-npmplus-backup-cron.sh --show`, `schedule-daily-weekly-cron.sh --show` |
---
## Run from LAN / Proxmox (when ready)
| # | What | Command |
|---|------|---------|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
---
## Manual / UI
| # | What | Where |
|---|------|--------|
| 9 | 25062508 JWT and identity | [CHAIN138_JWT_AUTH_REQUIREMENTS.md](../../04-configuration/CHAIN138_JWT_AUTH_REQUIREMENTS.md), `scripts/generate-jwt-token-for-container.sh` |
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## References
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
- [CONTINUE_AND_COMPLETE.md](../../archive/00-meta-pruned/CONTINUE_AND_COMPLETE.md) (archived)
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)

View File

@@ -1,652 +0,0 @@
# Next Steps — Automated Run
**Date:** 2026-02-21T15:26:52-08:00
**Report:** `/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_20260221_152652.md`
## Automated steps run
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
| Dependencies | OK | `check-dependencies.sh` |
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[OK] Found: config/token-mapping.json
[OK] token-mapping.json: valid JSON with .tokens array
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[OK] Found: config/smart-contracts-master.json
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
| Config validation | OK | `validate-config-files.sh` |
=== Run all validation (no LAN/SSH) ===
1. Dependencies...
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
[✓] Dependencies OK
2. Config files...
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[OK] Found: config/token-mapping.json
[OK] token-mapping.json: valid JSON with .tokens array
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[OK] Found: config/smart-contracts-master.json
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
[✓] Config validation OK
3. Genesis — skipped (--skip-genesis)
[✓] All validation passed.
| Run all validation | OK | `run-all-validation.sh --skip-genesis` |
[INFO] ACCEPT_ANY_DNS=1 (CLOUDFLARE_TUNNEL_ID in .env, Option B tunnel)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 End-to-End Routing Verification
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Progress: domain 1/40
[INFO]
[INFO] Testing domain: ws.rpc-fireblocks.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:48:21 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 2/40
[INFO]
[INFO] Testing domain: dbis-admin.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-admin.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-admin.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:11 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-admin.d-bis.org returned HTTP 502 (Time: 3.439054s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 3/40
[INFO]
[INFO] Testing domain: rpc-alltra-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-3.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 4/40
[INFO]
[INFO] Testing domain: mifos.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mifos.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: mifos.d-bis.org returned HTTP 502 (Time: 0.116799s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 5/40
[INFO]
[INFO] Testing domain: rpc-hybx-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 6/40
[INFO]
[INFO] Testing domain: cacti-hybx.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-hybx.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-hybx.d-bis.org returned HTTP 200 (Time: 0.118221s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 7/40
[INFO]
[INFO] Testing domain: sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:17 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: sankofa.nexus returned HTTP 200 (Time: 0.108420s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 8/40
[INFO]
[INFO] Testing domain: rpc-alltra.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 9/40
[INFO]
[INFO] Testing domain: rpc-http-pub.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-pub.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-pub.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 10/40
[INFO]
[INFO] Testing domain: rpc.public-0138.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.public-0138.defi-oracle.io → 104.21.91.43 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: defi-oracle.io)
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3 | Expires: Apr 4 08:26:02 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.public-0138.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 11/40
[INFO]
[INFO] Testing domain: dbis-api.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:33 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api.d-bis.org returned HTTP 502 (Time: 3.132131s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 12/40
[INFO]
[INFO] Testing domain: rpc-hybx-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-3.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 13/40
[INFO]
[INFO] Testing domain: rpc.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 14/40
[INFO]
[INFO] Testing domain: dapp.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dapp.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dapp.d-bis.org returned HTTP 200 (Time: 0.121925s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 15/40
[INFO]
[INFO] Testing domain: www.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:41 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.sankofa.nexus returned HTTP 200 (Time: 0.085397s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 16/40
[INFO]
[INFO] Testing domain: mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:01 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: mim4u.org returned HTTP 200 (Time: 0.031223s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 17/40
[INFO]
[INFO] Testing domain: ws.rpc.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:43:05 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 18/40
[INFO]
[INFO] Testing domain: phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:57:08 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: phoenix.sankofa.nexus returned HTTP 200 (Time: 0.031800s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 19/40
[INFO]
[INFO] Testing domain: www.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:17 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: www.mim4u.org returned HTTP 502 (Time: 0.036097s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 20/40
[INFO]
[INFO] Testing domain: wss.defi-oracle.io (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: wss.defi-oracle.io → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for wss.defi-oracle.io
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:44:57 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 21/40
[INFO]
[INFO] Testing domain: the-order.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: the-order.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for the-order.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:53 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: the-order.sankofa.nexus returned HTTP 200 (Time: 0.038622s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 22/40
[INFO]
[INFO] Testing domain: rpc2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 23/40
[INFO]
[INFO] Testing domain: rpc-ws-pub.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-pub.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-pub.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:51 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 24/40
[INFO]
[INFO] Testing domain: dev.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dev.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dev.d-bis.org returned HTTP 200 (Time: 0.103762s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 25/40
[INFO]
[INFO] Testing domain: rpc-alltra-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 26/40
[INFO]
[INFO] Testing domain: rpc-http-prv.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-prv.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-prv.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 27/40
[INFO]
[INFO] Testing domain: www.phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:59:28 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.phoenix.sankofa.nexus returned HTTP 200 (Time: 0.038564s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 28/40
[INFO]
[INFO] Testing domain: gitea.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: gitea.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: gitea.d-bis.org returned HTTP 200 (Time: 0.139581s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 29/40
[INFO]
[INFO] Testing domain: secure.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.mim4u.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:40 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: secure.mim4u.org returned HTTP 200 (Time: 0.041585s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 30/40
[INFO]
[INFO] Testing domain: rpc-fireblocks.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:47:15 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-fireblocks.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 31/40
[INFO]
[INFO] Testing domain: training.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: training.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for training.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:06 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: training.mim4u.org returned HTTP 200 (Time: 0.043535s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 32/40
[INFO]
[INFO] Testing domain: explorer.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: explorer.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for explorer.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 7 23:15:36 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: explorer.d-bis.org returned HTTP 200 (Time: 0.124822s)
[INFO] Test 3b: Blockscout API (optional)
[✓] Blockscout API: /api/v2/stats returned 200 with stats
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 33/40
[INFO]
[INFO] Testing domain: dbis-api-2.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api-2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api-2.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:22 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api-2.d-bis.org returned HTTP 502 (Time: 3.126506s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 34/40
[INFO]
[INFO] Testing domain: secure.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:28 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: secure.d-bis.org returned HTTP 502 (Time: 3.134512s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 35/40
[INFO]
[INFO] Testing domain: rpc-hybx.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 36/40
[INFO]
[INFO] Testing domain: codespaces.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: codespaces.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: codespaces.d-bis.org returned HTTP 200 (Time: 0.110483s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 37/40
[INFO]
[INFO] Testing domain: rpc.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc.defi-oracle.io
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3
[INFO] Expires: May 7 09:51:23 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 38/40
[INFO]
[INFO] Testing domain: rpc-ws-prv.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-prv.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-prv.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:38 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 39/40
[INFO]
[INFO] Testing domain: cacti-alltra.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-alltra.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-alltra.d-bis.org returned HTTP 200 (Time: 0.121569s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 40/40
[INFO]
[INFO] Testing domain: ws.rpc2.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc2.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 30 03:43:58 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO]
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 📊 Verification Summary
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Total domains: 40
[✓] DNS passed: 40
[✓] HTTPS passed: 15
[✓] Failed: 0
[INFO] Average response time: 0.6783146666666666s
[✓] Verification complete!
[✓] Report: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260221_152652/verification_report.md
[✓] All results: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260221_152652/all_e2e_results.json
| E2E routing | OK | `verify-end-to-end-routing.sh` (RPC may skip off-LAN) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Explorer links + block production — quick check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 1. Explorer URL (https://explorer.d-bis.org)
[OK] Explorer HTTPS: 200
[INFO] 2. Blockscout API (https://explorer.d-bis.org/api/v2/stats)
[OK] Blockscout API: 200 (total_blocks/tx: 2242811)
[INFO] 3. RPC (public) — eth_chainId
[OK] RPC: chainId 0x8a
[INFO] 4. Block production (RPC_CORE_1)
[OK] Block production: advancing (e.g. 2244149 → 2244151)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[OK] Quick check done. For full E2E: bash scripts/verify/verify-end-to-end-routing.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Explorer + block production | OK | `verify-explorer-and-block-production.sh` |
DRY-RUN: cast send 0x971cD9D156f193df8051E48043C476e53ECd4693 sendCrossChain(5009297550715157269,0x4A666F96fC8764181194447A7dFdb7d471b301C8,10000000000000000) --gas-price 1000000000 --legacy
Simulation: (check params)
| Bridge dry-run | OK | `run-send-cross-chain.sh 0.01 --dry-run` |
[Security] Proxmox hosts: 192.168.11.10 192.168.11.11 192.168.11.12 (DRY_RUN=true)
--- 192.168.11.10 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.11 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.12 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
Done.
| Security dry-run | OK | `run-security-on-proxmox-hosts.sh` (no --apply) |
Crontab line: 0 3 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/verify/backup-npmplus.sh >> /home/intlc/projects/proxmox/logs/npmplus-backup.log 2>&1
Daily (O-1, O-2): 0 8 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh daily >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
Weekly (O-3): 0 9 * * 0 cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh weekly >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
| Cron (show) | — | `schedule-npmplus-backup-cron.sh --show`, `schedule-daily-weekly-cron.sh --show` |
---
## Run from LAN / Proxmox (when ready)
| # | What | Command |
|---|------|---------|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
---
## Manual / UI
| # | What | Where |
|---|------|--------|
| 9 | ~~25062508~~ Destroyed 2026-02-08 (RPC 25002505 only) | N/A |
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## References
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
- [CONTINUE_AND_COMPLETE.md](../../00-meta/CONTINUE_AND_COMPLETE.md)
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)

View File

@@ -1,652 +0,0 @@
# Next Steps — Automated Run
**Date:** 2026-02-22T13:12:44-08:00
**Report:** `/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_20260222_131244.md`
## Automated steps run
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
| Dependencies | OK | `check-dependencies.sh` |
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[OK] Found: config/token-mapping.json
[OK] token-mapping.json: valid JSON with .tokens array
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[OK] Found: config/smart-contracts-master.json
[OK] Env set: PROXMOX_TOKEN_VALUE
[OK] Env set: PROXMOX_HOST
[OK] Validation passed.
| Config validation | OK | `validate-config-files.sh` |
=== Run all validation (no LAN/SSH) ===
1. Dependencies...
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
[✓] Dependencies OK
2. Config files...
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[OK] Found: config/token-mapping.json
[OK] token-mapping.json: valid JSON with .tokens array
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[OK] Found: config/smart-contracts-master.json
[OK] Env set: PROXMOX_TOKEN_VALUE
[OK] Env set: PROXMOX_HOST
[OK] Validation passed.
[✓] Config validation OK
3. Genesis — skipped (--skip-genesis)
[✓] All validation passed.
| Run all validation | OK | `run-all-validation.sh --skip-genesis` |
[INFO] ACCEPT_ANY_DNS=1 (CLOUDFLARE_TUNNEL_ID set, Option B tunnel)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 End-to-End Routing Verification
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Progress: domain 1/40
[INFO]
[INFO] Testing domain: ws.rpc-fireblocks.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:48:21 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 2/40
[INFO]
[INFO] Testing domain: dbis-admin.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-admin.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-admin.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:11 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-admin.d-bis.org returned HTTP 502 (Time: 3.119980s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 3/40
[INFO]
[INFO] Testing domain: rpc-alltra-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-3.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 4/40
[INFO]
[INFO] Testing domain: mifos.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mifos.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: mifos.d-bis.org returned HTTP 502 (Time: 0.114259s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 5/40
[INFO]
[INFO] Testing domain: rpc-hybx-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 6/40
[INFO]
[INFO] Testing domain: cacti-hybx.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-hybx.d-bis.org returned HTTP 200 (Time: 0.246566s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 7/40
[INFO]
[INFO] Testing domain: sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:17 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: sankofa.nexus returned HTTP 200 (Time: 0.117960s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 8/40
[INFO]
[INFO] Testing domain: rpc-alltra.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 9/40
[INFO]
[INFO] Testing domain: rpc-http-pub.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-pub.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-pub.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 10/40
[INFO]
[INFO] Testing domain: rpc.public-0138.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.public-0138.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: defi-oracle.io)
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3 | Expires: Apr 4 08:26:02 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.public-0138.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 11/40
[INFO]
[INFO] Testing domain: dbis-api.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:33 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api.d-bis.org returned HTTP 502 (Time: 3.220671s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 12/40
[INFO]
[INFO] Testing domain: rpc-hybx-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-3.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 13/40
[INFO]
[INFO] Testing domain: rpc.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 14/40
[INFO]
[INFO] Testing domain: dapp.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dapp.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dapp.d-bis.org returned HTTP 200 (Time: 0.157589s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 15/40
[INFO]
[INFO] Testing domain: www.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:41 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.sankofa.nexus returned HTTP 200 (Time: 0.035866s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 16/40
[INFO]
[INFO] Testing domain: mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:01 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: mim4u.org returned HTTP 200 (Time: 0.225067s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 17/40
[INFO]
[INFO] Testing domain: ws.rpc.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:43:05 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 18/40
[INFO]
[INFO] Testing domain: phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:57:08 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: phoenix.sankofa.nexus returned HTTP 200 (Time: 0.042659s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 19/40
[INFO]
[INFO] Testing domain: www.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:17 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: www.mim4u.org returned HTTP 502 (Time: 0.049049s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 20/40
[INFO]
[INFO] Testing domain: wss.defi-oracle.io (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: wss.defi-oracle.io → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for wss.defi-oracle.io
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:44:57 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 21/40
[INFO]
[INFO] Testing domain: the-order.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: the-order.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for the-order.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:53 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: the-order.sankofa.nexus returned HTTP 200 (Time: 0.040945s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 22/40
[INFO]
[INFO] Testing domain: rpc2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 23/40
[INFO]
[INFO] Testing domain: rpc-ws-pub.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-pub.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-pub.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:51 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 24/40
[INFO]
[INFO] Testing domain: dev.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dev.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dev.d-bis.org returned HTTP 200 (Time: 0.128266s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 25/40
[INFO]
[INFO] Testing domain: rpc-alltra-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 26/40
[INFO]
[INFO] Testing domain: rpc-http-prv.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-prv.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-prv.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 27/40
[INFO]
[INFO] Testing domain: www.phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:59:28 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.phoenix.sankofa.nexus returned HTTP 200 (Time: 0.032004s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 28/40
[INFO]
[INFO] Testing domain: gitea.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: gitea.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: gitea.d-bis.org returned HTTP 200 (Time: 0.113133s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 29/40
[INFO]
[INFO] Testing domain: secure.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.mim4u.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:40 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: secure.mim4u.org returned HTTP 200 (Time: 0.237809s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 30/40
[INFO]
[INFO] Testing domain: rpc-fireblocks.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:47:15 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-fireblocks.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 31/40
[INFO]
[INFO] Testing domain: training.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: training.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for training.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:06 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: training.mim4u.org returned HTTP 200 (Time: 0.102467s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 32/40
[INFO]
[INFO] Testing domain: explorer.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: explorer.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for explorer.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 7 23:15:36 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: explorer.d-bis.org returned HTTP 200 (Time: 0.128960s)
[INFO] Test 3b: Blockscout API (optional)
[✓] Blockscout API: /api/v2/stats returned 200 with stats
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 33/40
[INFO]
[INFO] Testing domain: dbis-api-2.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api-2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api-2.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:22 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api-2.d-bis.org returned HTTP 502 (Time: 3.184555s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 34/40
[INFO]
[INFO] Testing domain: secure.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:28 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: secure.d-bis.org returned HTTP 502 (Time: 3.312970s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 35/40
[INFO]
[INFO] Testing domain: rpc-hybx.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 36/40
[INFO]
[INFO] Testing domain: codespaces.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: codespaces.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: codespaces.d-bis.org returned HTTP 200 (Time: 0.145601s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 37/40
[INFO]
[INFO] Testing domain: rpc.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc.defi-oracle.io
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3
[INFO] Expires: May 7 09:51:23 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 38/40
[INFO]
[INFO] Testing domain: rpc-ws-prv.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-prv.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-prv.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:38 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 39/40
[INFO]
[INFO] Testing domain: cacti-alltra.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-alltra.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-alltra.d-bis.org returned HTTP 200 (Time: 0.138329s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 40/40
[INFO]
[INFO] Testing domain: ws.rpc2.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc2.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 30 03:43:58 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO]
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 📊 Verification Summary
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Total domains: 40
[✓] DNS passed: 40
[✓] HTTPS passed: 15
[✓] Failed: 0
[INFO] Average response time: 0.7092716666666666s
[✓] Verification complete!
[✓] Report: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260222_131245/verification_report.md
[✓] All results: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260222_131245/all_e2e_results.json
| E2E routing | OK | `verify-end-to-end-routing.sh` (RPC may skip off-LAN) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Explorer links + block production — quick check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 1. Explorer URL (https://explorer.d-bis.org)
[OK] Explorer HTTPS: 200
[INFO] 2. Blockscout API (https://explorer.d-bis.org/api/v2/stats)
[OK] Blockscout API: 200 (total_blocks/tx: 2281081)
[INFO] 3. RPC (public) — eth_chainId
[OK] RPC: chainId 0x8a
[INFO] 4. Block production (RPC_CORE_1)
[OK] Block production: advancing (e.g. 2283271 → 2283272)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[OK] Quick check done. For full E2E: bash scripts/verify/verify-end-to-end-routing.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Explorer + block production | OK | `verify-explorer-and-block-production.sh` |
DRY-RUN: cast send 0x971cD9D156f193df8051E48043C476e53ECd4693 sendCrossChain(5009297550715157269,0x4A666F96fC8764181194447A7dFdb7d471b301C8,10000000000000000) --gas-price 1000000000 --legacy
Simulation: (check params)
| Bridge dry-run | OK | `run-send-cross-chain.sh 0.01 --dry-run` |
[Security] Proxmox hosts: 192.168.11.10 192.168.11.11 192.168.11.12 (DRY_RUN=true)
--- 192.168.11.10 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.11 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.12 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
Done.
| Security dry-run | OK | `run-security-on-proxmox-hosts.sh` (no --apply) |
Crontab line: 0 3 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/verify/backup-npmplus.sh >> /home/intlc/projects/proxmox/logs/npmplus-backup.log 2>&1
Daily (O-1, O-2): 0 8 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh daily >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
Weekly (O-3): 0 9 * * 0 cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh weekly >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
| Cron (show) | — | `schedule-npmplus-backup-cron.sh --show`, `schedule-daily-weekly-cron.sh --show` |
---
## Run from LAN / Proxmox (when ready)
| # | What | Command |
|---|------|---------|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
---
## Manual / UI
| # | What | Where |
|---|------|--------|
| 9 | ~~25062508~~ Destroyed 2026-02-08 (RPC 25002505 only) | N/A |
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## References
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
- [CONTINUE_AND_COMPLETE.md](../../00-meta/CONTINUE_AND_COMPLETE.md)
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)

View File

@@ -1,652 +0,0 @@
# Next Steps — Automated Run
**Date:** 2026-02-22T16:17:27-08:00
**Report:** `/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_20260222_161727.md`
## Automated steps run
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
| Dependencies | OK | `check-dependencies.sh` |
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[OK] Found: config/token-mapping.json
[OK] token-mapping.json: valid JSON with .tokens array
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[OK] Found: config/smart-contracts-master.json
[OK] Env set: PROXMOX_TOKEN_VALUE
[OK] Env set: PROXMOX_HOST
[OK] Validation passed.
| Config validation | OK | `validate-config-files.sh` |
=== Run all validation (no LAN/SSH) ===
1. Dependencies...
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
[✓] Dependencies OK
2. Config files...
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[OK] Found: config/token-mapping.json
[OK] token-mapping.json: valid JSON with .tokens array
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[OK] Found: config/smart-contracts-master.json
[OK] Env set: PROXMOX_TOKEN_VALUE
[OK] Env set: PROXMOX_HOST
[OK] Validation passed.
[✓] Config validation OK
3. Genesis — skipped (--skip-genesis)
[✓] All validation passed.
| Run all validation | OK | `run-all-validation.sh --skip-genesis` |
[INFO] ACCEPT_ANY_DNS=1 (CLOUDFLARE_TUNNEL_ID set, Option B tunnel)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 End-to-End Routing Verification
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Progress: domain 1/40
[INFO]
[INFO] Testing domain: ws.rpc-fireblocks.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:48:21 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 2/40
[INFO]
[INFO] Testing domain: dbis-admin.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-admin.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-admin.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:11 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-admin.d-bis.org returned HTTP 502 (Time: 3.128418s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 3/40
[INFO]
[INFO] Testing domain: rpc-alltra-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-3.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 4/40
[INFO]
[INFO] Testing domain: mifos.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mifos.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: mifos.d-bis.org returned HTTP 502 (Time: 0.119337s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 5/40
[INFO]
[INFO] Testing domain: rpc-hybx-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-2.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 6/40
[INFO]
[INFO] Testing domain: cacti-hybx.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-hybx.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-hybx.d-bis.org returned HTTP 200 (Time: 0.137154s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 7/40
[INFO]
[INFO] Testing domain: sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:17 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: sankofa.nexus returned HTTP 200 (Time: 0.089862s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 8/40
[INFO]
[INFO] Testing domain: rpc-alltra.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 9/40
[INFO]
[INFO] Testing domain: rpc-http-pub.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-pub.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-pub.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 10/40
[INFO]
[INFO] Testing domain: rpc.public-0138.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.public-0138.defi-oracle.io → 104.21.91.43 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: defi-oracle.io)
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3 | Expires: Apr 4 08:26:02 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.public-0138.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 11/40
[INFO]
[INFO] Testing domain: dbis-api.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:33 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api.d-bis.org returned HTTP 502 (Time: 3.141858s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 12/40
[INFO]
[INFO] Testing domain: rpc-hybx-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-3.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 13/40
[INFO]
[INFO] Testing domain: rpc.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 14/40
[INFO]
[INFO] Testing domain: dapp.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dapp.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dapp.d-bis.org returned HTTP 200 (Time: 0.127048s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 15/40
[INFO]
[INFO] Testing domain: www.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:41 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.sankofa.nexus returned HTTP 200 (Time: 0.088257s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 16/40
[INFO]
[INFO] Testing domain: mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:01 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: mim4u.org returned HTTP 200 (Time: 0.039595s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 17/40
[INFO]
[INFO] Testing domain: ws.rpc.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:43:05 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 18/40
[INFO]
[INFO] Testing domain: phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:57:08 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: phoenix.sankofa.nexus returned HTTP 200 (Time: 0.055765s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 19/40
[INFO]
[INFO] Testing domain: www.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:17 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: www.mim4u.org returned HTTP 502 (Time: 0.033667s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 20/40
[INFO]
[INFO] Testing domain: wss.defi-oracle.io (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: wss.defi-oracle.io → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for wss.defi-oracle.io
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:44:57 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 21/40
[INFO]
[INFO] Testing domain: the-order.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: the-order.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for the-order.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:53 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: the-order.sankofa.nexus returned HTTP 200 (Time: 0.082463s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 22/40
[INFO]
[INFO] Testing domain: rpc2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 23/40
[INFO]
[INFO] Testing domain: rpc-ws-pub.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-pub.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-pub.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:51 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 24/40
[INFO]
[INFO] Testing domain: dev.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dev.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dev.d-bis.org returned HTTP 200 (Time: 0.110223s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 25/40
[INFO]
[INFO] Testing domain: rpc-alltra-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-2.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 26/40
[INFO]
[INFO] Testing domain: rpc-http-prv.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-prv.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-prv.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 27/40
[INFO]
[INFO] Testing domain: www.phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:59:28 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.phoenix.sankofa.nexus returned HTTP 200 (Time: 0.034922s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 28/40
[INFO]
[INFO] Testing domain: gitea.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: gitea.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: gitea.d-bis.org returned HTTP 200 (Time: 0.113086s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 29/40
[INFO]
[INFO] Testing domain: secure.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.mim4u.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:40 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: secure.mim4u.org returned HTTP 200 (Time: 0.037024s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 30/40
[INFO]
[INFO] Testing domain: rpc-fireblocks.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:47:15 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-fireblocks.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 31/40
[INFO]
[INFO] Testing domain: training.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: training.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for training.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:06 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: training.mim4u.org returned HTTP 200 (Time: 0.029561s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 32/40
[INFO]
[INFO] Testing domain: explorer.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: explorer.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for explorer.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 7 23:15:36 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: explorer.d-bis.org returned HTTP 200 (Time: 0.043229s)
[INFO] Test 3b: Blockscout API (optional)
[✓] Blockscout API: /api/v2/stats returned 200 with stats
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 33/40
[INFO]
[INFO] Testing domain: dbis-api-2.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api-2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api-2.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:22 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api-2.d-bis.org returned HTTP 502 (Time: 3.090385s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 34/40
[INFO]
[INFO] Testing domain: secure.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:28 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: secure.d-bis.org returned HTTP 502 (Time: 3.098299s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 35/40
[INFO]
[INFO] Testing domain: rpc-hybx.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 36/40
[INFO]
[INFO] Testing domain: codespaces.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: codespaces.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: codespaces.d-bis.org returned HTTP 200 (Time: 0.128088s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 37/40
[INFO]
[INFO] Testing domain: rpc.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc.defi-oracle.io
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3
[INFO] Expires: May 7 09:51:23 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 38/40
[INFO]
[INFO] Testing domain: rpc-ws-prv.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-prv.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-prv.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:38 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 39/40
[INFO]
[INFO] Testing domain: cacti-alltra.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-alltra.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-alltra.d-bis.org returned HTTP 200 (Time: 0.129389s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 40/40
[INFO]
[INFO] Testing domain: ws.rpc2.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc2.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 30 03:43:58 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO]
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 📊 Verification Summary
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Total domains: 40
[✓] DNS passed: 40
[✓] HTTPS passed: 15
[✓] Failed: 0
[INFO] Average response time: 0.6598871428571428s
[✓] Verification complete!
[✓] Report: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260222_161727/verification_report.md
[✓] All results: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260222_161727/all_e2e_results.json
| E2E routing | OK | `verify-end-to-end-routing.sh` (RPC may skip off-LAN) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Explorer links + block production — quick check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 1. Explorer URL (https://explorer.d-bis.org)
[OK] Explorer HTTPS: 200
[INFO] 2. Blockscout API (https://explorer.d-bis.org/api/v2/stats)
[OK] Blockscout API: 200 (total_blocks/tx: 2288290)
[INFO] 3. RPC (public) — eth_chainId
[OK] RPC: chainId 0x8a
[INFO] 4. Block production (RPC_CORE_1)
[OK] Block production: advancing (e.g. 2288803 → 2288804)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[OK] Quick check done. For full E2E: bash scripts/verify/verify-end-to-end-routing.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Explorer + block production | OK | `verify-explorer-and-block-production.sh` |
DRY-RUN: cast send 0x971cD9D156f193df8051E48043C476e53ECd4693 sendCrossChain(5009297550715157269,0x4A666F96fC8764181194447A7dFdb7d471b301C8,10000000000000000) --gas-price 1000000000 --legacy
Simulation: (check params)
| Bridge dry-run | OK | `run-send-cross-chain.sh 0.01 --dry-run` |
[Security] Proxmox hosts: 192.168.11.10 192.168.11.11 192.168.11.12 (DRY_RUN=true)
--- 192.168.11.10 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.11 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.12 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
Done.
| Security dry-run | OK | `run-security-on-proxmox-hosts.sh` (no --apply) |
Crontab line: 0 3 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/verify/backup-npmplus.sh >> /home/intlc/projects/proxmox/logs/npmplus-backup.log 2>&1
Daily (O-1, O-2): 0 8 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh daily >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
Weekly (O-3): 0 9 * * 0 cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh weekly >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
| Cron (show) | — | `schedule-npmplus-backup-cron.sh --show`, `schedule-daily-weekly-cron.sh --show` |
---
## Run from LAN / Proxmox (when ready)
| # | What | Command |
|---|------|---------|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
---
## Manual / UI
| # | What | Where |
|---|------|--------|
| 9 | ~~25062508~~ Destroyed 2026-02-08 (RPC 25002505 only) | N/A |
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## References
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
- [CONTINUE_AND_COMPLETE.md](../../00-meta/CONTINUE_AND_COMPLETE.md)
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)

View File

@@ -1,33 +0,0 @@
# Next Steps — smom-dbis-138 deployment completion run
**Date:** 2026-02-23
**Scope:** Tree-of-thought processing of all completions; resources across project.
## Verification results (this run)
| Check | Result |
|-------|--------|
| **Chain 138 full deployment** | 14 success, 2 warnings, 0 errors (RPC, WETH9/10, CCIP, bridges, .env, connectivity). |
| **DApp env (check-dapp-env.sh)** | Required VITE_* for DApp build are set. |
## Completion artifacts created/updated
- **smom-dbis-138/docs/deployment/COMPLETION_RUN_20260223_ALL_STEPS.md** — Full run report (G1/G2 optional, run-all-four-gaps, CCIPLogger, operator checklist).
- **smom-dbis-138/docs/deployment/NEXT_STEPS_COMPLETION.md** — Session "continue and complete including optional" added; link to completion run.
- **smom-dbis-138/docs/deployment/DEPLOYMENT_INDEX.md** — Link to "Latest completion run (all steps including optional)."
- **docs/00-meta/NEXT_STEPS_AND_REMAINING_TODOS.md** — Completed in this pass (2026-02-23) for smom-dbis-138 deployment.
## Optional and next steps (same day)
| Check | Result |
|-------|--------|
| **Completable from anywhere** | Config OK; on-chain 36/36; run-all-validation --skip-genesis OK; reconcile-env --print. |
| **Shellcheck (optional)** | `run-shellcheck.sh --optional` now exits 0 (reports only); CI and validate pass. |
| **Validate via Proxmox SSH** | `run-via-proxmox-ssh.sh validate`: full shellcheck + genesis validation; jq installed on host when missing; genesis passed (JSON, chainId 138, extraData, QBFT, gas limit). |
| **Docs** | TODOS_CONSOLIDATED, OPERATOR_AND_EXTERNAL_COMPLETION_CHECKLIST, NEXT_STEPS_FOR_YOU updated with validate command and 2026-02-23 completions. |
## Cross-references
- Single runbook: smom-dbis-138/docs/deployment/ALL_NEXT_STEPS_CURRENT.md
- Project next steps index: docs/00-meta/NEXT_STEPS_INDEX.md
- Operator checklist: docs/00-meta/OPERATOR_AND_EXTERNAL_COMPLETION_CHECKLIST.md

View File

@@ -1,648 +0,0 @@
# Next Steps — Automated Run
**Date:** 2026-02-24T02:17:28-08:00
**Report:** `/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/NEXT_STEPS_RUN_20260224_021728.md`
## Automated steps run
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
| Dependencies | OK | `check-dependencies.sh` |
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional config/token-mapping.json not found (relay uses fallback mapping)
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
| Config validation | OK | `validate-config-files.sh` |
=== Run all validation (no LAN/SSH) ===
1. Dependencies...
All required dependencies present: bash curl jq openssl ssh
Optional (recommended for automation): sshpass rsync dig ss sqlite3 wscat websocat screen tmux htop shellcheck parallel
Missing optional: sqlite3 wscat websocat screen htop shellcheck parallel
Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3
(dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)
[✓] Dependencies OK
2. Config files...
[OK] Found: /home/intlc/projects/proxmox/config/ip-addresses.conf
[OK] .env.example present (copy to .env and fill)
[WARN] Optional config/token-mapping.json not found (relay uses fallback mapping)
[OK] Found: config/token-mapping-multichain.json
[OK] token-mapping-multichain.json: valid JSON with .pairs array
[WARN] Optional env not set: PROXMOX_TOKEN_VALUE
[WARN] Optional env not set: PROXMOX_HOST
[OK] Validation passed.
[✓] Config validation OK
3. Genesis — skipped (--skip-genesis)
[✓] All validation passed.
| Run all validation | OK | `run-all-validation.sh --skip-genesis` |
[INFO] ACCEPT_ANY_DNS=1 (CLOUDFLARE_TUNNEL_ID in .env, Option B tunnel)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 End-to-End Routing Verification
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Progress: domain 1/40
[INFO]
[INFO] Testing domain: ws.rpc-fireblocks.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:48:21 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 2/40
[INFO]
[INFO] Testing domain: dbis-admin.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-admin.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-admin.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:11 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-admin.d-bis.org returned HTTP 502 (Time: 3.451060s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 3/40
[INFO]
[INFO] Testing domain: rpc-alltra-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-3.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 4/40
[INFO]
[INFO] Testing domain: mifos.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mifos.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: mifos.d-bis.org returned HTTP 502 (Time: 0.095671s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 5/40
[INFO]
[INFO] Testing domain: rpc-hybx-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 6/40
[INFO]
[INFO] Testing domain: cacti-hybx.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-hybx.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-hybx.d-bis.org returned HTTP 200 (Time: 0.098267s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 7/40
[INFO]
[INFO] Testing domain: sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:17 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: sankofa.nexus returned HTTP 200 (Time: 0.739150s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 8/40
[INFO]
[INFO] Testing domain: rpc-alltra.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 9/40
[INFO]
[INFO] Testing domain: rpc-http-pub.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-pub.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-pub.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 10/40
[INFO]
[INFO] Testing domain: rpc.public-0138.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.public-0138.defi-oracle.io → 172.67.209.228 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: defi-oracle.io)
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3 | Expires: Apr 4 08:26:02 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.public-0138.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 11/40
[INFO]
[INFO] Testing domain: dbis-api.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:33 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api.d-bis.org returned HTTP 502 (Time: 3.387248s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 12/40
[INFO]
[INFO] Testing domain: rpc-hybx-3.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx-3.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx-3.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 13/40
[INFO]
[INFO] Testing domain: rpc.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 14/40
[INFO]
[INFO] Testing domain: dapp.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dapp.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dapp.d-bis.org returned HTTP 200 (Time: 0.564178s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 15/40
[INFO]
[INFO] Testing domain: www.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.sankofa.nexus
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:41 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.sankofa.nexus returned HTTP 200 (Time: 0.115558s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 16/40
[INFO]
[INFO] Testing domain: mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:01 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: mim4u.org returned HTTP 200 (Time: 0.245865s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 17/40
[INFO]
[INFO] Testing domain: ws.rpc.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:43:05 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 18/40
[INFO]
[INFO] Testing domain: phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:57:08 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: phoenix.sankofa.nexus returned HTTP 200 (Time: 0.022134s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 19/40
[INFO]
[INFO] Testing domain: www.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:17 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: www.mim4u.org returned HTTP 502 (Time: 0.036693s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 20/40
[INFO]
[INFO] Testing domain: wss.defi-oracle.io (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: wss.defi-oracle.io → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for wss.defi-oracle.io
[INFO] Issuer: E8
[INFO] Expires: Apr 30 03:44:57 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 21/40
[INFO]
[INFO] Testing domain: the-order.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: the-order.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for the-order.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:53 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: the-order.sankofa.nexus returned HTTP 200 (Time: 0.027754s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 22/40
[INFO]
[INFO] Testing domain: rpc2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc2.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 23/40
[INFO]
[INFO] Testing domain: rpc-ws-pub.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-pub.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-pub.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:51 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 24/40
[INFO]
[INFO] Testing domain: dev.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dev.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: dev.d-bis.org returned HTTP 200 (Time: 0.100021s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 25/40
[INFO]
[INFO] Testing domain: rpc-alltra-2.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-alltra-2.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-alltra-2.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 26/40
[INFO]
[INFO] Testing domain: rpc-http-prv.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-http-prv.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-http-prv.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 27/40
[INFO]
[INFO] Testing domain: www.phoenix.sankofa.nexus (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: www.phoenix.sankofa.nexus → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for www.phoenix.sankofa.nexus
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:59:28 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: www.phoenix.sankofa.nexus returned HTTP 200 (Time: 0.039005s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 28/40
[INFO]
[INFO] Testing domain: gitea.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: gitea.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: gitea.d-bis.org returned HTTP 200 (Time: 0.263958s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 29/40
[INFO]
[INFO] Testing domain: secure.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.mim4u.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:58:40 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: secure.mim4u.org returned HTTP 200 (Time: 1.298434s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 30/40
[INFO]
[INFO] Testing domain: rpc-fireblocks.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-fireblocks.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-fireblocks.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 22 21:47:15 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-fireblocks.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 31/40
[INFO]
[INFO] Testing domain: training.mim4u.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: training.mim4u.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for training.mim4u.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:59:06 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: training.mim4u.org returned HTTP 200 (Time: 0.105051s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 32/40
[INFO]
[INFO] Testing domain: explorer.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: explorer.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for explorer.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: May 7 23:15:36 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: explorer.d-bis.org returned HTTP 200 (Time: 0.114070s)
[INFO] Test 3b: Blockscout API (optional)
[✓] Blockscout API: /api/v2/stats returned 200 with stats
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 33/40
[INFO]
[INFO] Testing domain: dbis-api-2.d-bis.org (type: api)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: dbis-api-2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for dbis-api-2.d-bis.org
[INFO] Issuer: E8
[INFO] Expires: Apr 16 20:56:22 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: dbis-api-2.d-bis.org returned HTTP 502 (Time: 3.368152s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 34/40
[INFO]
[INFO] Testing domain: secure.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: secure.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for secure.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:58:28 2026 GMT
[INFO] Test 3: HTTPS Request
[⚠] HTTPS: secure.d-bis.org returned HTTP 502 (Time: 3.132169s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 35/40
[INFO]
[INFO] Testing domain: rpc-hybx.d-bis.org (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-hybx.d-bis.org → 172.67.220.49 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc-hybx.d-bis.org responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 36/40
[INFO]
[INFO] Testing domain: codespaces.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: codespaces.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: codespaces.d-bis.org returned HTTP 200 (Time: 0.266517s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 37/40
[INFO]
[INFO] Testing domain: rpc.defi-oracle.io (type: rpc-http)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc.defi-oracle.io → 104.21.91.43 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc.defi-oracle.io
[INFO] Issuer: Cloudflare TLS Issuing ECC CA 3
[INFO] Expires: May 7 09:51:23 2026 GMT
[INFO] Test 4: RPC HTTP Request
[✓] RPC: rpc.defi-oracle.io responded with chainId: 0x8a
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 38/40
[INFO]
[INFO] Testing domain: rpc-ws-prv.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: rpc-ws-prv.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for rpc-ws-prv.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 16 20:57:38 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 39/40
[INFO]
[INFO] Testing domain: cacti-alltra.d-bis.org (type: web)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: cacti-alltra.d-bis.org → 104.21.86.131 (accepted, ACCEPT_ANY_DNS=1)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate (shared CN: d-bis.org)
[INFO] Issuer: WE1 | Expires: Mar 29 06:24:38 2026 GMT
[INFO] Test 3: HTTPS Request
[✓] HTTPS: cacti-alltra.d-bis.org returned HTTP 200 (Time: 0.121978s)
[INFO] Test 6: Internal connectivity (documented in report)
[INFO] Progress: domain 40/40
[INFO]
[INFO] Testing domain: ws.rpc2.d-bis.org (type: rpc-ws)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Test 1: DNS Resolution
[✓] DNS: ws.rpc2.d-bis.org → 76.53.10.36 (correct)
[INFO] Test 2: SSL Certificate
[✓] SSL: Valid certificate for ws.rpc2.d-bis.org
[INFO] Issuer: E7
[INFO] Expires: Apr 30 03:43:58 2026 GMT
[INFO] Test 5: WebSocket Connection
[⚠] WebSocket: Basic test (Code: 400) - Install wscat for full test: npm install -g wscat
[INFO] Test 6: Internal connectivity (documented in report)
[INFO]
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 📊 Verification Summary
[INFO] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] Total domains: 40
[✓] DNS passed: 40
[✓] HTTPS passed: 15
[✓] Failed: 0
[INFO] Average response time: 0.8377587142857142s
[✓] Verification complete!
[✓] Report: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260224_021728/verification_report.md
[✓] All results: /home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260224_021728/all_e2e_results.json
| E2E routing | OK | `verify-end-to-end-routing.sh` (RPC may skip off-LAN) |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Explorer links + block production — quick check
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] 1. Explorer URL (https://explorer.d-bis.org)
[OK] Explorer HTTPS: 200
[INFO] 2. Blockscout API (https://explorer.d-bis.org/api/v2/stats)
[OK] Blockscout API: 200 (total_blocks/tx: 2344712)
[INFO] 3. RPC (public) — eth_chainId
[OK] RPC: chainId 0x8a
[INFO] 4. Block production (RPC_CORE_1)
[OK] Block production: advancing (e.g. 2345230 → 2345231)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[OK] Quick check done. For full E2E: bash scripts/verify/verify-end-to-end-routing.sh
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Explorer + block production | OK | `verify-explorer-and-block-production.sh` |
DRY-RUN: cast send 0x971cD9D156f193df8051E48043C476e53ECd4693 sendCrossChain(5009297550715157269,0x4A666F96fC8764181194447A7dFdb7d471b301C8,10000000000000000) --gas-price 1000000000 --legacy
Simulation: (check params)
| Bridge dry-run | OK | `run-send-cross-chain.sh 0.01 --dry-run` |
[Security] Proxmox hosts: 192.168.11.10 192.168.11.11 192.168.11.12 (DRY_RUN=true)
--- 192.168.11.10 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.11 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
--- 192.168.11.12 ---
Would run: SSH key-only (disable password) + UFW allow 192.168.11.0/24 to 8006
Done.
| Security dry-run | OK | `run-security-on-proxmox-hosts.sh` (no --apply) |
Crontab line: 0 3 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/verify/backup-npmplus.sh >> /home/intlc/projects/proxmox/logs/npmplus-backup.log 2>&1
Daily (O-1, O-2): 0 8 * * * cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh daily >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
Weekly (O-3): 0 9 * * 0 cd /home/intlc/projects/proxmox && bash /home/intlc/projects/proxmox/scripts/maintenance/daily-weekly-checks.sh weekly >> /home/intlc/projects/proxmox/logs/daily-weekly-checks.log 2>&1
| Cron (show) | — | `schedule-npmplus-backup-cron.sh --show`, `schedule-daily-weekly-cron.sh --show` |
---
## Run from LAN / Proxmox (when ready)
| # | What | Command |
|---|------|---------|
| 7 | Bridge (real) | `bash scripts/bridge/run-send-cross-chain.sh 0.01` |
| 8 | Security apply | `bash scripts/security/run-security-on-proxmox-hosts.sh --apply` |
| 13a | Deploy contracts | `cd smom-dbis-138 && source .env && bash scripts/deployment/deploy-all-contracts.sh` |
| 13c | Verify contracts (Blockscout) | `source smom-dbis-138/.env && ./scripts/verify/run-contract-verification-with-proxy.sh` |
| NPMplus backup | Backup NPMplus | `bash scripts/verify/backup-npmplus.sh` |
| Wave 0 from LAN | NPMplus RPC fix + backup | `bash scripts/run-wave0-from-lan.sh` |
| Validators + block production | Fix validators / tx-pool | `bash scripts/fix-all-validators-and-txpool.sh` then `scripts/monitoring/monitor-blockchain-health.sh` |
---
## Manual / UI
| # | What | Where |
|---|------|--------|
| 9 | ~~25062508~~ Destroyed 2026-02-08 (RPC 25002505 only) | N/A |
| 10 | Explorer SSL | NPMplus https://192.168.11.167:81 → SSL → Let's Encrypt explorer.d-bis.org |
| 11 | NPMplus cert 134 | NPMplus → SSL Certificates → cross-all.defi-oracle.io re-request/re-save |
| 12 | Wave 2 & 3 | [WAVE2_WAVE3_OPERATOR_CHECKLIST.md](../../00-meta/WAVE2_WAVE3_OPERATOR_CHECKLIST.md) |
---
## References
- [NEXT_STEPS_OPERATOR.md](../../00-meta/NEXT_STEPS_OPERATOR.md)
- [CONTINUE_AND_COMPLETE.md](../../00-meta/CONTINUE_AND_COMPLETE.md)
- [NEXT_STEPS_ALL.md](../../00-meta/NEXT_STEPS_ALL.md)
- [FULL_FIXES_PREPARED.md](../FULL_FIXES_PREPARED.md)

View File

@@ -8,8 +8,18 @@ Gitea webhook receiver and deploy endpoint stub for Gitea → Phoenix deployment
|--------|------|-------------|
| POST | /webhook/gitea | Receives Gitea push/tag/PR webhooks |
| POST | /api/deploy | Deploy request (repo, branch, target) |
| GET | /api/v1/infra/nodes | Cluster nodes (Proxmox; stub if PROXMOX_* unset) |
| GET | /api/v1/infra/storage | Storage pools (Proxmox; stub if unset) |
| GET | /api/v1/ve/vms | List VMs/CTs (optional `?node=`) |
| GET | /api/v1/ve/vms/:node/:vmid/status | VM/CT status (`?type=lxc` for containers) |
| POST | /api/v1/ve/vms/:node/:vmid/start, stop, reboot | VM/CT lifecycle (set PHOENIX_VE_LIFECYCLE_ENABLED=1) |
| GET | /api/v1/health/metrics | Prometheus query proxy (`?query=<PromQL>`) |
| GET | /api/v1/health/alerts | Active alerts (optional PROMETHEUS_ALERTS_URL) |
| GET | /api/v1/health/summary | Aggregated health for Portal |
| GET | /health | Health check |
All `/api/v1/*` routes accept optional partner API key when `PHOENIX_PARTNER_KEYS` is set (`X-API-Key` or `Authorization: Bearer <key>`).
## Environment
Copy `.env.example` to `.env` and set `GITEA_TOKEN` (and optionally `PHOENIX_DEPLOY_SECRET`).
@@ -20,6 +30,18 @@ Copy `.env.example` to `.env` and set `GITEA_TOKEN` (and optionally `PHOENIX_DEP
| GITEA_URL | https://gitea.d-bis.org | Gitea instance URL |
| GITEA_TOKEN | | Token for commit status API |
| PHOENIX_DEPLOY_SECRET | | Optional secret for webhook/deploy auth |
| PROXMOX_HOST | | Proxmox host (IP or hostname) for API Railing |
| PROXMOX_PORT | 8006 | Proxmox API port |
| PROXMOX_USER | root@pam | Proxmox API user |
| PROXMOX_TOKEN_NAME | | Proxmox API token name |
| PROXMOX_TOKEN_VALUE | | Proxmox API token secret |
| PROXMOX_TLS_VERIFY | 1 | Set to 0 to allow self-signed Proxmox certs |
| PHOENIX_VE_LIFECYCLE_ENABLED | 0 | Set to 1 to enable VM/CT start/stop/reboot |
| PROMETHEUS_URL | http://localhost:9090 | Prometheus base URL for Health API |
| PROMETHEUS_ALERTS_URL | (PROMETHEUS_URL)/api/v1/alerts | Optional; use Alertmanager URL for firing alerts |
| PHOENIX_WEBHOOK_URL | | Outbound webhook URL; POST deploy events with X-Phoenix-Signature |
| PHOENIX_WEBHOOK_SECRET | | Secret to sign webhook payloads (HMAC-SHA256) |
| PHOENIX_PARTNER_KEYS | | Comma-separated API keys for /api/v1/* (optional) |
## Gitea Webhook Configuration
@@ -43,6 +65,11 @@ curl -X POST "https://phoenix-api-host/api/deploy" \
This service is a standalone stub. Full deployment logic should be implemented in the Sankofa Phoenix API (VMID 8600). Migrate the webhook handler and deploy logic into the Phoenix API when ready.
## OpenAPI / Swagger
- **Spec:** [openapi.yaml](openapi.yaml)
- **HTML doc:** [docs/index.html](docs/index.html) — static Swagger UI; open locally or serve from `phoenix-deploy-api/docs/` (loads `../openapi.yaml`). To serve in-app, add `swagger-ui-express` and mount at e.g. `/api-docs`.
## Run
```bash

View File

@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Phoenix Deploy API — OpenAPI</title>
<link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui.css" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui-bundle.js" crossorigin></script>
<script>
window.onload = () => {
window.ui = SwaggerUIBundle({
url: '../openapi.yaml',
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIBundle.SwaggerUIStandalonePreset
],
layout: 'BaseLayout'
});
};
</script>
</body>
</html>

View File

@@ -0,0 +1,256 @@
openapi: 3.0.3
info:
title: Phoenix Deploy API / Phoenix API Railing
description: |
Gitea webhook, deploy stub, and Phoenix API Railing (Infra, VE, Health).
Optional partner API key for /api/v1/* when PHOENIX_PARTNER_KEYS is set.
version: 1.0.0
servers:
- url: http://localhost:4001
description: Default
tags:
- name: Webhook
- name: Infra
- name: VE
- name: Health
- name: System
paths:
/health:
get:
tags: [System]
summary: Health check
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status: { type: string }
service: { type: string }
/webhook/gitea:
post:
tags: [Webhook]
summary: Gitea webhook receiver
requestBody:
required: true
content:
application/json:
schema: { type: object }
responses:
'200': { description: Accepted }
'400': { description: No payload }
'401': { description: Invalid signature }
/api/deploy:
post:
tags: [Webhook]
summary: Deploy request
requestBody:
content:
application/json:
schema:
type: object
required: [repo]
properties:
repo: { type: string }
branch: { type: string }
target: { type: string }
sha: { type: string }
responses:
'202': { description: Accepted }
'401': { description: Unauthorized }
/api/v1/infra/nodes:
get:
tags: [Infra]
summary: List cluster nodes
responses:
'200':
content:
application/json:
schema:
type: object
properties:
nodes: { type: array }
stub: { type: boolean }
'502': { description: Proxmox error }
/api/v1/infra/storage:
get:
tags: [Infra]
summary: List storage pools
responses:
'200':
content:
application/json:
schema:
type: object
properties:
storage: { type: array }
stub: { type: boolean }
'502': { description: Proxmox error }
/api/v1/ve/vms:
get:
tags: [VE]
summary: List VMs/CTs
parameters:
- name: node
in: query
schema: { type: string }
responses:
'200':
content:
application/json:
schema:
type: object
properties:
vms: { type: array }
stub: { type: boolean }
'502': { description: Proxmox error }
/api/v1/ve/vms/{node}/{vmid}/status:
get:
tags: [VE]
summary: VM/CT status
parameters:
- name: node
in: path
required: true
schema: { type: string }
- name: vmid
in: path
required: true
schema: { type: string }
- name: type
in: query
schema: { type: string, enum: [qemu, lxc], default: qemu }
responses:
'200': { description: Status object }
'502': { description: Proxmox error }
/api/v1/ve/vms/{node}/{vmid}/start:
post:
tags: [VE]
summary: Start VM/CT
parameters:
- name: node
in: path
required: true
schema: { type: string }
- name: vmid
in: path
required: true
schema: { type: string }
- name: type
in: query
schema: { type: string, enum: [qemu, lxc], default: qemu }
responses:
'200': { description: OK }
'403': { description: Lifecycle disabled }
'502': { description: Proxmox error }
/api/v1/ve/vms/{node}/{vmid}/stop:
post:
tags: [VE]
summary: Stop VM/CT
parameters:
- name: node
in: path
required: true
schema: { type: string }
- name: vmid
in: path
required: true
schema: { type: string }
- name: type
in: query
schema: { type: string, enum: [qemu, lxc], default: qemu }
responses:
'200': { description: OK }
'403': { description: Lifecycle disabled }
'502': { description: Proxmox error }
/api/v1/ve/vms/{node}/{vmid}/reboot:
post:
tags: [VE]
summary: Reboot VM/CT
parameters:
- name: node
in: path
required: true
schema: { type: string }
- name: vmid
in: path
required: true
schema: { type: string }
- name: type
in: query
schema: { type: string, enum: [qemu, lxc], default: qemu }
responses:
'200': { description: OK }
'403': { description: Lifecycle disabled }
'502': { description: Proxmox error }
/api/v1/health/metrics:
get:
tags: [Health]
summary: Prometheus query proxy
parameters:
- name: query
in: query
required: true
schema: { type: string }
description: PromQL (URL-encoded)
responses:
'200': { description: Prometheus response }
'400': { description: Missing query }
'502': { description: Prometheus unreachable }
/api/v1/health/alerts:
get:
tags: [Health]
summary: Active alerts
responses:
'200':
content:
application/json:
schema:
type: object
properties:
alerts: { type: array }
stub: { type: boolean }
/api/v1/health/summary:
get:
tags: [Health]
summary: Aggregated health for Portal
responses:
'200':
content:
application/json:
schema:
type: object
properties:
status: { type: string }
updated_at: { type: string, format: date-time }
hosts: { type: array }
alerts: { type: array }
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: PHOENIX_DEPLOY_SECRET for /api/deploy
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: Optional partner key (or Authorization Bearer)

View File

@@ -1,26 +1,81 @@
#!/usr/bin/env node
/**
* Phoenix Deploy API — Gitea webhook receiver and deploy endpoint stub
* Phoenix Deploy API — Gitea webhook receiver, deploy stub, and Phoenix API Railing (Infra/VE)
*
* Endpoints:
* POST /webhook/gitea — Receives Gitea push/tag/PR webhooks
* POST /api/deploy — Deploy request (repo, branch, target)
* GET /api/v1/infra/nodes — Cluster nodes (Proxmox or stub)
* GET /api/v1/infra/storage — Storage pools (Proxmox or stub)
* GET /api/v1/ve/vms — List VMs/CTs (Proxmox or stub)
* GET /api/v1/ve/vms/:node/:vmid/status — VM/CT status
* GET /health — Health check
*
* Env: PORT, GITEA_URL, GITEA_TOKEN, PHOENIX_DEPLOY_SECRET
* PROXMOX_HOST, PROXMOX_PORT, PROXMOX_USER, PROXMOX_TOKEN_NAME, PROXMOX_TOKEN_VALUE (optional, for railing)
*/
import crypto from 'crypto';
import https from 'https';
import path from 'path';
import { readFileSync } from 'fs';
import { fileURLToPath } from 'url';
import express from 'express';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const PORT = parseInt(process.env.PORT || '4001', 10);
const GITEA_URL = (process.env.GITEA_URL || 'https://gitea.d-bis.org').replace(/\/$/, '');
const GITEA_TOKEN = process.env.GITEA_TOKEN || '';
const WEBHOOK_SECRET = process.env.PHOENIX_DEPLOY_SECRET || '';
const PROXMOX_HOST = process.env.PROXMOX_HOST || '';
const PROXMOX_PORT = parseInt(process.env.PROXMOX_PORT || '8006', 10);
const PROXMOX_USER = process.env.PROXMOX_USER || 'root@pam';
const PROXMOX_TOKEN_NAME = process.env.PROXMOX_TOKEN_NAME || '';
const PROXMOX_TOKEN_VALUE = process.env.PROXMOX_TOKEN_VALUE || '';
const hasProxmox = PROXMOX_HOST && PROXMOX_TOKEN_NAME && PROXMOX_TOKEN_VALUE;
const VE_LIFECYCLE_ENABLED = process.env.PHOENIX_VE_LIFECYCLE_ENABLED === '1' || process.env.PHOENIX_VE_LIFECYCLE_ENABLED === 'true';
const PROMETHEUS_URL = (process.env.PROMETHEUS_URL || 'http://localhost:9090').replace(/\/$/, '');
const PHOENIX_WEBHOOK_URL = process.env.PHOENIX_WEBHOOK_URL || '';
const PHOENIX_WEBHOOK_SECRET = process.env.PHOENIX_WEBHOOK_SECRET || '';
const PARTNER_KEYS = (process.env.PHOENIX_PARTNER_KEYS || '').split(',').map((k) => k.trim()).filter(Boolean);
const httpsAgent = new https.Agent({ rejectUnauthorized: process.env.PROXMOX_TLS_VERIFY !== '0' });
async function proxmoxRequest(endpoint, method = 'GET', body = null) {
const baseUrl = `https://${PROXMOX_HOST}:${PROXMOX_PORT}/api2/json`;
const url = `${baseUrl}${endpoint}`;
const options = {
method,
headers: {
Authorization: `PVEAPIToken=${PROXMOX_USER}!${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_VALUE}`,
'Content-Type': 'application/json',
},
agent: httpsAgent,
};
if (body && method !== 'GET') options.body = JSON.stringify(body);
const res = await fetch(url, options);
if (!res.ok) throw new Error(`Proxmox API ${res.status}: ${await res.text()}`);
const data = await res.json();
return data.data;
}
const app = express();
// Keep raw body for webhook HMAC verification (Gitea uses HMAC-SHA256 of body)
app.use(express.json({ verify: (req, _res, buf) => { req.rawBody = buf; } }));
/** Optional: require partner API key for /api/v1/* read-only routes when PHOENIX_PARTNER_KEYS is set */
function partnerKeyMiddleware(req, res, next) {
if (PARTNER_KEYS.length === 0) return next();
const key = req.headers['x-api-key'] || (req.headers.authorization || '').replace(/^Bearer\s+/i, '');
if (!key || !PARTNER_KEYS.includes(key)) {
return res.status(401).json({ error: 'Missing or invalid API key' });
}
next();
}
/**
* Update Gitea commit status (pending/success/failure)
*/
@@ -139,6 +194,170 @@ app.post('/api/deploy', async (req, res) => {
target: target || 'default',
message: 'Deploy request queued (stub). Implement full deploy logic in Sankofa Phoenix API.',
});
if (PHOENIX_WEBHOOK_URL) {
const payload = { event: 'deploy.completed', repo, branch, target: target || 'default', sha: commitSha, success: deploySuccess };
const body = JSON.stringify(payload);
const sig = crypto.createHmac('sha256', PHOENIX_WEBHOOK_SECRET || '').update(body).digest('hex');
fetch(PHOENIX_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-Phoenix-Signature': `sha256=${sig}` },
body,
}).catch((e) => console.error('[webhook] outbound failed', e.message));
}
});
app.use('/api/v1', partnerKeyMiddleware);
/**
* GET /api/v1/infra/nodes — Cluster nodes (Phoenix API Railing)
*/
app.get('/api/v1/infra/nodes', async (req, res) => {
try {
if (!hasProxmox) {
return res.json({ nodes: [], stub: true, message: 'Set PROXMOX_HOST, PROXMOX_TOKEN_NAME, PROXMOX_TOKEN_VALUE for live data' });
}
const nodes = await proxmoxRequest('/cluster/resources?type=node');
res.json({ nodes: nodes || [], stub: false });
} catch (err) {
res.status(502).json({ error: err.message, stub: false });
}
});
/**
* GET /api/v1/infra/storage — Storage pools per node (Phoenix API Railing)
*/
app.get('/api/v1/infra/storage', async (req, res) => {
try {
if (!hasProxmox) {
return res.json({ storage: [], stub: true, message: 'Set PROXMOX_* env for live data' });
}
const storage = await proxmoxRequest('/storage');
res.json({ storage: storage || [], stub: false });
} catch (err) {
res.status(502).json({ error: err.message, stub: false });
}
});
/**
* GET /api/v1/ve/vms — List VMs and CTs (Phoenix API Railing). Query: node (optional)
*/
app.get('/api/v1/ve/vms', async (req, res) => {
try {
if (!hasProxmox) {
return res.json({ vms: [], stub: true, message: 'Set PROXMOX_* env for live data' });
}
const resources = await proxmoxRequest('/cluster/resources?type=vm');
const node = (req.query.node || '').toString();
let list = Array.isArray(resources) ? resources : [];
if (node) list = list.filter((v) => v.node === node);
res.json({ vms: list, stub: false });
} catch (err) {
res.status(502).json({ error: err.message, stub: false });
}
});
/**
* GET /api/v1/ve/vms/:node/:vmid/status — VM/CT status (Phoenix API Railing)
*/
app.get('/api/v1/ve/vms/:node/:vmid/status', async (req, res) => {
const { node, vmid } = req.params;
try {
if (!hasProxmox) {
return res.json({ node, vmid, status: 'unknown', stub: true });
}
const type = (req.query.type || 'qemu').toString();
const path = type === 'lxc' ? `/nodes/${node}/lxc/${vmid}/status/current` : `/nodes/${node}/qemu/${vmid}/status/current`;
const status = await proxmoxRequest(path);
res.json({ node, vmid, type, ...status, stub: false });
} catch (err) {
res.status(502).json({ error: err.message, node, vmid, stub: false });
}
});
/**
* POST /api/v1/ve/vms/:node/:vmid/start|stop|reboot — VM/CT lifecycle (optional; set PHOENIX_VE_LIFECYCLE_ENABLED=1)
*/
['start', 'stop', 'reboot'].forEach((action) => {
app.post(`/api/v1/ve/vms/:node/:vmid/${action}`, async (req, res) => {
if (!VE_LIFECYCLE_ENABLED) {
return res.status(403).json({ error: 'VM lifecycle is disabled (set PHOENIX_VE_LIFECYCLE_ENABLED=1)' });
}
const { node, vmid } = req.params;
const type = (req.query.type || 'qemu').toString();
try {
if (!hasProxmox) {
return res.status(502).json({ error: 'Proxmox not configured' });
}
const path = type === 'lxc'
? `/nodes/${node}/lxc/${vmid}/status/${action}`
: `/nodes/${node}/qemu/${vmid}/status/${action}`;
await proxmoxRequest(path, 'POST');
res.json({ node, vmid, type, action, ok: true });
} catch (err) {
res.status(502).json({ error: err.message, node, vmid, action });
}
});
});
/**
* GET /api/v1/health/metrics?query=<PromQL> — Proxy to Prometheus instant query
*/
app.get('/api/v1/health/metrics', async (req, res) => {
const query = (req.query.query || '').toString();
if (!query) {
return res.status(400).json({ error: 'query parameter required' });
}
try {
const url = `${PROMETHEUS_URL}/api/v1/query?query=${encodeURIComponent(query)}`;
const data = await fetch(url).then((r) => r.json());
res.json(data);
} catch (err) {
res.status(502).json({ error: err.message });
}
});
/**
* GET /api/v1/health/alerts — Active alerts (stub or Alertmanager; optional PROMETHEUS_ALERTS_URL)
*/
app.get('/api/v1/health/alerts', async (req, res) => {
const alertsUrl = process.env.PROMETHEUS_ALERTS_URL || `${PROMETHEUS_URL}/api/v1/alerts`;
try {
const data = await fetch(alertsUrl).then((r) => r.json()).catch(() => ({ data: { alerts: [] } }));
const alerts = data.data?.alerts ?? data.alerts ?? [];
res.json({ alerts: Array.isArray(alerts) ? alerts : [], stub: !process.env.PROMETHEUS_URL });
} catch (err) {
res.json({ alerts: [], stub: true, message: err.message });
}
});
/**
* GET /api/v1/health/summary — Aggregated health for Portal
*/
app.get('/api/v1/health/summary', async (req, res) => {
const summary = { status: 'healthy', updated_at: new Date().toISOString(), hosts: [], alerts: [] };
try {
if (hasProxmox) {
const nodes = await proxmoxRequest('/cluster/resources?type=node').catch(() => []);
summary.hosts = (nodes || []).map((n) => ({
instance: n.node,
status: n.status,
cpu: n.cpu ? Number(n.cpu) * 100 : null,
mem: n.mem ? Number(n.mem) * 100 : null,
}));
}
const alertsUrl = process.env.PROMETHEUS_ALERTS_URL || `${PROMETHEUS_URL}/api/v1/alerts`;
const alertsRes = await fetch(alertsUrl).then((r) => r.ok ? r.json() : {}).catch(() => ({}));
const alerts = alertsRes.data?.alerts ?? alertsRes.alerts ?? [];
summary.alerts = (alerts || []).slice(0, 20).map((a) => ({ name: a.labels?.alertname, severity: a.labels?.severity, instance: a.labels?.instance }));
if (summary.alerts.some((a) => a.severity === 'critical')) summary.status = 'critical';
else if (summary.alerts.length > 0) summary.status = 'degraded';
res.json(summary);
} catch (err) {
summary.status = 'unknown';
summary.message = err.message;
res.json(summary);
}
});
/**
@@ -148,7 +367,55 @@ app.get('/health', (req, res) => {
res.json({ status: 'ok', service: 'phoenix-deploy-api' });
});
/**
* GET /api-docs/spec.yaml — OpenAPI spec for Swagger UI
*/
app.get('/api-docs/spec.yaml', (req, res) => {
try {
const specPath = path.join(__dirname, 'openapi.yaml');
res.type('application/yaml').send(readFileSync(specPath, 'utf8'));
} catch (e) {
res.status(500).send('openapi.yaml not found');
}
});
/**
* GET /api-docs — Swagger UI (interactive API docs)
*/
app.get('/api-docs', (req, res) => {
const base = `${req.protocol}://${req.get('host')}`;
res.type('text/html').send(`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Phoenix Deploy API — OpenAPI</title>
<link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui.css" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui-bundle.js" crossorigin></script>
<script>
window.onload = () => {
window.ui = SwaggerUIBundle({
url: '${base}/api-docs/spec.yaml',
dom_id: '#swagger-ui',
presets: [SwaggerUIBundle.presets.apis, SwaggerUIBundle.SwaggerUIStandalonePreset],
layout: 'BaseLayout'
});
};
</script>
</body>
</html>
`);
});
app.listen(PORT, () => {
console.log(`Phoenix Deploy API listening on port ${PORT}`);
console.log(`Swagger UI: http://localhost:${PORT}/api-docs`);
if (!GITEA_TOKEN) console.warn('GITEA_TOKEN not set — commit status updates disabled');
if (!hasProxmox) console.warn('PROXMOX_* not set — Infra/VE API returns stub data');
if (PHOENIX_WEBHOOK_URL) console.log('Outbound webhook enabled:', PHOENIX_WEBHOOK_URL);
if (PARTNER_KEYS.length > 0) console.log('Partner API key auth enabled for /api/v1/*');
});