--- 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`