- 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>
116 lines
5.3 KiB
Markdown
116 lines
5.3 KiB
Markdown
---
|
||
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 1–3 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`
|