feat: homelab case study from live infra; Traefik-based deploy

- rewrote homelab (content + topology diagram + stack) from a live inspection of the host:
  Ubuntu 24.04, ~30 Docker services behind Traefik (Cloudflare-fronted, TLS, HTTP/3),
  Authentik SSO forward-auth, CrowdSec, Pi-hole, self-hosted Gitea + CI runner, socket-proxy,
  per-app network isolation; WordPress framed as being decommissioned (not future arch)
- deploy: docker-compose now uses Traefik labels + traefik_proxy network (was assumed nginx
  edge); .env.example adds SITE_HOST/TRAEFIK_ENTRYPOINT; colophon + ARCHITECTURE/DOCKER/
  DEPLOYMENT specs corrected nginx-edge -> Traefik (site container still serves via nginx)
- PROJECT_STATUS: pre-launch checklist updated; infra section added

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
cesnimda
2026-07-04 11:23:09 +02:00
parent a10418ab93
commit bfa8cfd357
8 changed files with 129 additions and 84 deletions
+19 -11
View File
@@ -59,19 +59,27 @@
6. **Theme-init is an external script** (`/theme-init.js`) so the CSP can use `script-src
'self'` with no inline hash.
## Pre-launch checklist (carried from Phase 1/2 — owner action)
## Pre-launch checklist (owner action)
- [ ] **Replace the `/Linkedin` redirect target** in `site/nginx.conf` with the real LinkedIn
profile URL before cutover (currently a placeholder slug).
- [ ] Screenshot capture pass on **seeded demo data** for JobTrack + InboxIntel; drop real
captures into the `placeholder:` media refs (`src/data/projects/*`).
- [ ] Drop the real **outdoor headshot** into the portrait ref (replaces `placeholder:portrait`).
- [ ] **ATS-safe CV rework** (EN/NO) — replace the PDFs at `site/public/cv/` (same URLs).
- [ ] **Native-Norwegian review** of all NO content (launch gate).
- [x] ~~`/Linkedin` redirect target~~ — set to `https://www.linkedin.com/in/connor-babbington`.
- [x] ~~JobTrack seed-data screenshots~~ — real captures integrated (`/assets/projects/jobtrack/`).
- [x] ~~Real headshot~~ — integrated (`/assets/portrait.webp`, hero + about).
- [x] ~~ATS-safe CV rework (EN/NO)~~ — done; generator in `tools/cv/`.
- [ ] **InboxIntel screenshots** — still placeholders (no captures provided; it is "in development").
- [ ] **Native-Norwegian review** of all NO content, incl. the NO CV (launch gate).
- [ ] **Legacy WordPress URL inventory** → confirm the 301/410 map in `nginx.conf`.
- [ ] Configure CI secrets (`REGISTRY_USER`, `REGISTRY_TOKEN`) + the relay `.env` on the server.
- [ ] Confirm the Traefik entrypoint / cert-resolver names in `deploy/.env.example` match the host.
## Open questions / blocked-on-user
## Infrastructure (verified live, July 2026)
- Are the JobTrack / InboxIntel repos public? If so, add `repo` links in `src/data/projects/*`
(currently omitted to avoid dead links).
Deploy target is the `mediaserver` host (Ubuntu 24.04): ~30 Docker services behind **Traefik**
(Cloudflare-fronted, TLS, HTTP/3), with **Authentik** SSO, **CrowdSec**, **Pi-hole**, and
self-hosted **Gitea + Actions runner** (the CI/CD target for this site). The homelab case study
and `deploy/` now reflect this (Traefik labels, `traefik_proxy` network). WordPress still runs
but is being decommissioned as this site replaces it — not documented as future architecture.
## Resolved
- JobTrack / InboxIntel repos are **private** → repo links intentionally omitted; case studies
describe the architecture without linking code.