diff --git a/.claude/memory/reference_radio_website.md b/.claude/memory/reference_radio_website.md index f62067a..958b9e0 100644 --- a/.claude/memory/reference_radio_website.md +++ b/.claude/memory/reference_radio_website.md @@ -7,12 +7,14 @@ type: reference ## Radio Show Website - **URL:** https://radio.azcomputerguru.com -- **Platform:** Astro 6.0.4 (static site generator) +- **Platform:** Astro 6.0.4 (`output: 'static'`) with **React 19 islands** (`@astrojs/react`), MDX, sitemap, RSS; `wavesurfer.js` (episode audio) + `fuse.js` (client search). Node >= 22.12.0. - **Server:** IX server (172.16.3.10), cPanel account `azcomputerguru` - **Document Root:** `/home/azcomputerguru/public_html/radio` -- **Source Code:** `projects/radio-show/website/` in ClaudeTools repo +- **Source Code:** `projects/radio-show/website/` in ClaudeTools repo (server holds only built `dist/`) +- **Content:** Markdown/MDX collections at `src/content/episodes/` and `src/content/blog/` - **Build:** `cd projects/radio-show/website && npm run build` produces `dist/` folder - **Deploy:** rsync/SCP `dist/` contents to document root on IX server +- **Full infra record:** `wiki/systems/ix-server.md`. human-flow can AST-scan the `.tsx` islands under `src/components`, not the `.astro` pages. ### Community Link - The community page (`/community`) links to: diff --git a/wiki/index.md b/wiki/index.md index 8e54c7f..4f110c8 100644 --- a/wiki/index.md +++ b/wiki/index.md @@ -70,6 +70,7 @@ Run `/wiki-lint` to check for stale entries and broken backlinks. | [Jupiter](systems/jupiter.md) | 172.16.3.20 — Unraid primary NAS; virsh host for all VMs; Docker: NPM, Gitea, Seafile; iDRAC at 172.16.1.73 | 2026-05-24 | | [Pluto (Claude-Builder)](systems/pluto.md) | 172.16.3.36 — Windows Server 2019 virsh VM on Jupiter; exclusive Windows MSI + cargo build server for GuruRMM | 2026-05-24 | | [Uranus](systems/uranus.md) | 172.16.3.21 — Unraid secondary (Dell R730xd); OwnCloud archive storage only; formerly Saturn's IP (reused Apr 2026); RAM too low for VMs | 2026-05-24 | +| [IX Web Hosting Server](systems/ix-server.md) | 172.16.3.10 / 72.194.62.5 — cPanel/WHM (CloudLinux 9.7); hosts ACG static sites incl. **radio.azcomputerguru.com** (Astro, source in `projects/radio-show/website/`), public site, Flarum community, Matomo analytics + ~87 client WordPress; behind Cloudflare tunnel `acg-origin` | 2026-06-05 | ## Patterns diff --git a/wiki/projects/radio-show.md b/wiki/projects/radio-show.md index b6c0259..6fb91c9 100644 --- a/wiki/projects/radio-show.md +++ b/wiki/projects/radio-show.md @@ -199,7 +199,7 @@ IX server access: paramiko with `look_for_keys=False, allow_agent=False`. Tailsc ## Backlinks - `wiki/systems/jupiter.md` [unverified — may not exist yet] — Jupiter server spec -- `wiki/systems/ix-server.md` [unverified — may not exist yet] — IX hosting server spec +- `wiki/systems/ix-server.md` — IX hosting server + the radio website (Astro) build/deploy record - `wiki/projects/gururmm.md` — related ACG project - `projects/radio-show/audio-processor/README.md` — full pipeline spec and configuration reference - `projects/radio-show/post-show-workflow.md` — full post-show content workflow spec diff --git a/wiki/systems/ix-server.md b/wiki/systems/ix-server.md new file mode 100644 index 0000000..5432497 --- /dev/null +++ b/wiki/systems/ix-server.md @@ -0,0 +1,115 @@ +--- +type: system +name: ix-server +display_name: IX Web Hosting Server +last_compiled: 2026-06-05 +compiled_by: GURU-5070/claude-main +sources: + - .claude/memory/reference_radio_website.md + - .claude/memory/reference_resource_map.md + - wiki/clients/internal-infrastructure.md + - projects/radio-show/website/ (source tree) +--- + +# IX Web Hosting Server + +`ix.azcomputerguru.com` — Arizona Computer Guru's cPanel/WHM shared-hosting box. +It hosts ACG's own public-facing static sites (including **radio.azcomputerguru.com**), +the community forum, the analytics server, and ~87 client WordPress installs. + +> Deep operational detail (cPanel account hygiene, WordPress hygiene, mail +> accounts, the Cox→Cloudflare BGP workaround) lives in +> [`wiki/clients/internal-infrastructure.md`](../clients/internal-infrastructure.md). +> This article is the **systems-level** record and the home for the ACG static +> sites deployed here. + +## Host facts + +| Item | Value | +|---|---| +| Hostname | `ix.azcomputerguru.com` | +| Internal IP | `172.16.3.10` (Tailscale required) | +| External IP | `72.194.62.5` | +| Stack | CloudLinux 9.7, Apache, WHM/cPanel, per-account MySQL/MariaDB | +| WHM | `https://ix.azcomputerguru.com:2087` — **DNS-only / grey-cloud** in Cloudflare (`:2087`/`:2083` can't traverse the tunnel) | +| SSH | `ssh root@172.16.3.10` (internal) or `ssh root@72.194.62.5` (external) | +| Vault | `infrastructure/ix-server.sops.yaml` | +| Edge | Cloudflare tunnel `acg-origin` (UUID `78d3e58f-1979-4f0e-a28b-98d6b3c3d867`) on Jupiter routes the ACG hostnames to IX `:443` | + +[WARNING] Do NOT attempt interactive/key-based SSH from scripts to the `gurushow` +account host path — for that account use paramiko with `look_for_keys=False, +allow_agent=False`. Root SSH uses the vault password (`infrastructure/ix-server.sops.yaml`). + +## Hosted ACG sites + +| Hostname | Stack | cPanel account / doc root | +|---|---|---| +| **radio.azcomputerguru.com** | Astro static (+ React islands) | `azcomputerguru` → `/home/azcomputerguru/public_html/radio` | +| azcomputerguru.com | Astro static (public site) | `acg` / `azcomputerguru` | +| community.azcomputerguru.com | Flarum forum | (forum DB) | +| analytics.azcomputerguru.com | Matomo | — | +| (radio audio archive) | static MP3 archive | `gurushow` → `/home/gurushow/public_html/archive/Radio/` | +| ~87 client sites | WordPress | per-client cPanel accounts | + +All four ACG hostnames above reach IX through the Cloudflare tunnel (all returned +HTTP 200 via tunnel as of the 2026-04-13 cutover). `ix.azcomputerguru.com` itself +stays grey-cloud (direct to `72.194.62.5`) so WHM/cPanel ports work. + +--- + +## radio.azcomputerguru.com — "The Computer Guru Show" website + +The public site for the radio show. **Built by Claude; source lives in the +ClaudeTools repo**, not on the server — the server only holds the built `dist/`. + +| Item | Value | +|---|---| +| URL | https://radio.azcomputerguru.com | +| Source | `projects/radio-show/website/` (ClaudeTools repo) | +| Framework | Astro `^6.0.4`, `output: 'static'` | +| Islands / libs | `@astrojs/react` (React 19), `@astrojs/mdx`, `@astrojs/sitemap`, `@astrojs/rss`; `wavesurfer.js` (episode audio waveform), `fuse.js` (client-side search) | +| Node | `>= 22.12.0` | +| Content | Markdown/MDX collections at `src/content/episodes/` and `src/content/blog/` (`src/content.config.ts`) | +| Pages | `index`, `about`, `community`, `contact`, `live`, `subscribe`, `episodes/`, `blog/`, `feed.xml` (RSS), `404` | +| Layout | single `src/layouts/BaseLayout.astro`; components under `src/components/{global,home,episodes}/` | +| Analytics | Matomo site ID 3 — tracker injected into built HTML before `` | + +### Build & deploy + +```bash +cd projects/radio-show/website +npm install # first time only (node >= 22.12.0) +npm run build # -> dist/ +# deploy: rsync dist/ contents to the IX doc root +rsync -az --delete dist/ :/home/azcomputerguru/public_html/radio/ +``` + +`astro.config.mjs` pins `site: 'https://radio.azcomputerguru.com'` (correct +canonical URLs + sitemap + RSS). There is no server-side runtime — it is a pure +static deploy. + +### Relationship to the radio-show project + +The website is **tier 1/3** of the post-show content workflow documented in +[`wiki/projects/radio-show.md`](../projects/radio-show.md): each episode produces +an episode page (`src/content/episodes/sXXeYY-slug.md`) and 1–3 deep-dive blog +posts (`src/content/blog/.md`), generated from show-prep + debrief and +deployed here. The audio-processing pipeline, archive DB, and FastAPI browse UI +are separate from this static site. + +### human-flow note + +The site is Astro static but ships **React 19 islands**, so the `human-flow` +AST scanner can analyze its `.tsx` island components (it skips `.astro` +templates). Point it at `projects/radio-show/website/src/components` for a +component-level Friction Index; the page-level `.astro` flows still need a +manual/heuristic pass. + +--- + +## Backlinks + +- [`wiki/clients/internal-infrastructure.md`](../clients/internal-infrastructure.md) — full IX operational record (cPanel/WordPress hygiene, mail, Cox/Cloudflare) +- [`wiki/projects/radio-show.md`](../projects/radio-show.md) — the radio show project (audio pipeline + post-show workflow) +- [`wiki/systems/jupiter.md`](jupiter.md) — runs the `cloudflared` tunnel container that fronts IX +- Memory: `reference_radio_website.md`, `reference_ix_server_ssh.md`, `reference_resource_map.md`