38 lines
1.8 KiB
Markdown
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
|