From 938a739dfe760e62135d5f4514d5eb090586797d Mon Sep 17 00:00:00 2001 From: NuklearRabbit <145918611+NuklearRabbit@users.noreply.github.com> Date: Sun, 2 Aug 2026 04:51:43 +0200 Subject: [PATCH] docs(deploy): record current Unraid baseline Capture container topology, deployed revision, migration head, volumes, network and env-var names on the existing review deployment before any functional-completion changes, per the audit brief's server-first workflow. --- docs/functional-completion/server-baseline.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 docs/functional-completion/server-baseline.md diff --git a/docs/functional-completion/server-baseline.md b/docs/functional-completion/server-baseline.md new file mode 100644 index 0000000..f1b3ce8 --- /dev/null +++ b/docs/functional-completion/server-baseline.md @@ -0,0 +1,111 @@ +# Unraid server baseline (functional-completion audit) + +Captured 2026-08-02 before any functional-completion changes, via `ssh unraid` (alias in +`~/.ssh/config`, key `itworx_unraid_deploy`; the `widefrog_unraid_deploy` identity named in +the task brief does not exist locally — the working alias/key was used instead, no new key +was created). + +## SSH access + +```bash +ssh -o BatchMode=yes -o ConnectTimeout=10 unraid "hostname && docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'" +``` + +Result: reachable, host `Tower`. `widefrog_unraid_deploy` is not a valid identity path on +this workstation (`~/.ssh/widefrog_unraid_deploy` does not exist); the pre-existing +`unraid` SSH config alias (`itworx_unraid_deploy` key, root@192.168.10.150:22) was used +instead and is fully functional. No key was created, copied, or replaced. + +## Deployed containers (Compose project `mobilityops`) + +| Container | Image | Status | Health | Restarts | Host port | +|---|---|---|---|---|---| +| `mobilityops-web-1` | `mobilityops-web` | Up | healthy | 0 | `1236:80` | +| `mobilityops-api-1` | `mobilityops-api` | Up | healthy | 0 | none (compose-network only) | +| `mobilityops-db-1` | `postgres:16-alpine` | Up | healthy | 0 | none (compose-network only) | + +Shared host `n8n` container (outside the `mobilityops` Compose project, pre-existing +infrastructure): Up, healthy, `5678:5678`, on the default `bridge` network (not on +`mobilityops_mobilityops`). + +Deployment directory: `/mnt/user/appdata/mobilityops` (matches `docs/17-runbook.md` / +`deploy/unraid/README.md`). + +## Deployed revision + +`.deploy/source-revision` on the server contains: + +``` +54dc952915a4874fcdf14781e1c37feb0e253851 +``` + +This matches the local `design/mobilityops-premium-ui` HEAD (`54dc952`) exactly — the +server is running the last committed premium-design revision, confirming the externally +observed branch/revision. `.deploy/` also retains prior archives +(`source-a737860.tar.gz`, `source-686b62f.tar.gz`, `source.tar.gz`) for rollback. + +## Migrations + +```bash +docker compose -p mobilityops exec -T api python -m alembic current +# e7b08389f47f (head) +``` + +Matches the local repository's Alembic head (`backend/alembic/versions/`: +`c9498525abb5_initial_schema.py` → `e7b08389f47f_idempotency_records.py`). No drift. + +## Volumes and network + +- `mobilityops_mobilityops-db` (Postgres data, named/persistent) +- `mobilityops_mobilityops-n8n` (retained from an earlier bundled-n8n attempt; unused now + that the shared host `n8n` is reused — see `compose.unraid.yaml` `bundled-n8n` profile) +- Network: `mobilityops_mobilityops` (bridge) + +## Environment variable names present on the server `.env` + +(names only — no values inspected or printed) + +`APP_SECRET`, `COMPOSE_PROJECT_NAME`, `DATABASE_URL`, `DEMO_TODAY`, `KNOWLEDGE_PROVIDER`, +`MCP_HUB_BASE_URL`, `MCP_HUB_REGISTRATION_ENABLED`, `MCP_HUB_SERVICE_TOKEN`, +`MCP_PROVIDER_ID`, `MOBILITYOPS_API_URL`, `MOBILITYOPS_CALLBACK_TOKEN`, +`MOBILITYOPS_DEMO_MODE`, `MOBILITYOPS_ENV`, `MOBILITYOPS_PUBLIC_URL`, `N8N_BASE_URL`, +`N8N_BASIC_AUTH_ACTIVE`, `N8N_BASIC_AUTH_PASSWORD`, `N8N_BASIC_AUTH_USER`, +`N8N_ENCRYPTION_KEY`, `N8N_OWNER_EMAIL`, `N8N_OWNER_PASSWORD`, `N8N_WEBHOOK_URL`, +`POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `RAGCORE_API_TOKEN`, +`RAGCORE_BASE_URL`, `RAGCORE_COLLECTION`, `RAGCORE_TENANT`, `RAGCORE_WORKSPACE`, `TZ`. + +`diff` against the committed `.env.example` variable set: no difference — the server +`.env` was generated from the current `.env.example` with no drift in variable names. + +## Integration configuration (as previously documented in +`artifacts/deployment/unraid-summary.md`, re-verified live) + +- **n8n**: shared host instance at `http://192.168.10.150:5678`, healthy, outside the + MobilityOps Compose project. The bundled MobilityOps `n8n` service exists only behind + the `bundled-n8n` Compose profile and is not started. +- **RAGcore**: `KNOWLEDGE_PROVIDER=demo` — not live-connected by design; no live RAGcore + instance exists yet. +- **ITWorx MCP Hub**: `MCP_HUB_REGISTRATION_ENABLED=false` — provider endpoints exist and + are independently testable, but no live Hub round trip is claimed. + +## Application reachability + +```bash +curl -s -o /dev/null -w "%{http_code}\n" http://192.168.10.150:1236/ +# 200 +``` + +## Startup log scan + +```bash +docker compose -p mobilityops logs --tail=200 api +``` + +No traceback, fatal, or unresolved startup error observed — only routine `GET /health` +polling entries from the Compose healthcheck. + +## Configuration differences vs. the committed repository + +None found: deployed source revision, Alembic head, and `.env.example` variable set all +match the current `design/mobilityops-premium-ui` branch exactly. This baseline was +captured immediately before any functional-completion work began.