devops/README.md

38 lines
1.8 KiB
Markdown

# zai-home-base — revenue projects on djg-oracle-sl
Workspace for projects built to generate revenue. All sites are served by a
shared nginx edge DaemonSet in k3s (hostPort 80) reading from `sites/`.
## Layout
- `bdj/` — bestdadjokes.lol (dad jokes content site, Track 1)
- `content/jokes.json` — the dataset (append-only; joke ids = array index)
- `build.py` — stdlib-only static site generator (Python 3.6)
- `static/` — css/js/favicon (jokes-data.js is generated, don't hand-edit)
- `site/` — build output (gitignored)
- `nginx/conf.d/` — per-site nginx vhosts (mounted into edge pod)
- `k8s/nginx-edge.yaml` — shared edge DaemonSet (hostNetwork, port 80)
- `deploy.sh` — build + atomic swap + reload + verify
- `sites/` — live docroots served by the edge pod (generated, gitignored)
- `nginx-ingress.yaml` (in /home/opc) — leftover demo manifest, unused
## Deploy a content change
cd bdj && ./deploy.sh
## Server facts
- VM: djg-oracle-sl (Oracle Cloud ARM, 4c/23GB), public IP 144.24.30.131
- k3s single node (control-plane taint — pods need the toleration in k8s/nginx-edge.yaml)
- kubectl: `sudo /usr/local/bin/k3s kubectl` (no standalone kubeconfig for opc)
- Local test: `curl -H 'Host: bestdadjokes.lol' http://127.0.0.1/`
- Inbound 80/443 must be open in the OCI VCN security list (cloud console side)
- DNS: user manages Cloudflare; site goes live with proxied A record → 144.24.30.131
## Roadmap (bdj)
1. DNS live → submit to Google Search Console (HTML meta verification)
2. Social content (needs user-provided accounts) — daily share-card images
3. Ad integration: user's MCM/AdX stack; ad slots are marked `<!-- AD_SLOT_* -->`
4. Expand dataset daily; long-tail topic pages ("dad jokes about coffee")
5. Phase 2 (myadhd.dev): ADHD micro-tools + Paddle/Stripe when user ready