Files
claudetools/wiki/systems/ix-server.md
Mike Swanson c9b9a3f479 docs(wiki): add IX hosting server system article + radio site infra
- New wiki/systems/ix-server.md: IX web host (172.16.3.10) facts, the
  ACG hosted sites table, and a full record of radio.azcomputerguru.com
  (Astro static + React 19 islands; source in projects/radio-show/website/;
  build npm run build -> dist -> rsync to cPanel doc root).
- index.md: list the new IX systems article.
- radio-show.md: fix the stale "ix-server.md may not exist" backlink.
- memory reference_radio_website.md: add stack detail (React islands,
  wavesurfer/fuse, node>=22) + pointer to the new wiki article.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 17:58:10 -07:00

116 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 `</head>` |
### 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/ <ix>:/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 13 deep-dive blog
posts (`src/content/blog/<slug>.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`