diff options
| -rw-r--r-- | prompts/skills/f3s/SKILL.md | 1 | ||||
| -rw-r--r-- | prompts/skills/f3s/references/ychat.md | 74 |
2 files changed, 75 insertions, 0 deletions
diff --git a/prompts/skills/f3s/SKILL.md b/prompts/skills/f3s/SKILL.md index 83adb3e..85adca4 100644 --- a/prompts/skills/f3s/SKILL.md +++ b/prompts/skills/f3s/SKILL.md @@ -38,6 +38,7 @@ Detailed reference documentation is in the `references/` subfolder: - [Pi-hole on Pis](references/pihole-pi.md) — **pi2/pi3** Docker Pi-hole, **`~/pihole`**, **`*.f3s.lan.buetow.org` → 192.168.1.138**, paths under **`f3s/pihole/docker-pi/`** - [goprecords / uptimed uploads](references/goprecords-uptimed.md) — **`https://goprecords.f3s.buetow.org`**, **`PUT /upload`**, OpenBSD **Rex** daily vs **FreeBSD/Pi** manual hourly **`cron`** / **systemd**, **`contrib/goprecords-upload-client.sh`**, **geheim** tokens - [Player](references/player.md) — **`https://player.f3s.buetow.org`**, image build/push workflow, Helm chart path, ArgoCD sync, NFS PV/PVC notes +- [yChat](references/ychat.md) — **`https://ychat.f3s.lan.buetow.org/`**, legacy C++ chat server, image build/push, Helm chart (`f3s/ychat/helm-chart`) + ArgoCD, **not yet deployed** (DB-backed build needs a PVC for `/app/data`) - [Shelly Plug (Rack Fans)](references/shelly-plug.md) — **Shelly Plug M Gen 3** at **`192.168.1.28`** powering the rack fans; digest auth (`admin`), secret on **`/keys/shelly_plug.secret`** (f-hosts) / **`~/.shelly_plug`** (earth/Pis); boot-time auto-on rc.d service (**`f3s/freebsd-hosts/shelly-fans/`**), `wol-f3s` on/off integration, HTTP RPC API Package repository details were split into the sibling `pkgrepo` skill. Use `pkgrepo` for `pkgrepo.f3s.buetow.org`, repo layout, package publication, and client repo configuration. diff --git a/prompts/skills/f3s/references/ychat.md b/prompts/skills/f3s/references/ychat.md new file mode 100644 index 0000000..33218f9 --- /dev/null +++ b/prompts/skills/f3s/references/ychat.md @@ -0,0 +1,74 @@ +# yChat Deployment + +yChat is a legacy (2007) C++ HTTP web chat server, revived to build in Docker +with a mandatory embedded-SQLite backend. It is deployed on the f3s k3s +cluster as a GitOps-managed service. + +> **Not yet deployed as of this writing.** The live cluster +> (`https://ychat.f3s.lan.buetow.org/`) still runs an **older, in-memory-only, +> no-database image**. Rolling out the current DB-backed build is a deliberate +> follow-up, not automatic: it needs a persistent volume (PVC) for `/app/data` +> — the existing Helm chart was written for the no-DB build and doesn't +> provision one yet. + +## Repositories and paths + +- App source: `~/git/ychat` (subproject `ychat/`; source on + https://codeberg.org/snonux/ychat) +- f3s config source: `~/git/conf` (mirrored on the in-cluster git-server; + https://codeberg.org/snonux/conf) +- Helm chart: `f3s/ychat/helm-chart` +- ArgoCD app: `f3s/argocd-apps/services/ychat.yaml` +- LAN URL: `https://ychat.f3s.lan.buetow.org/` + +## Build and push a new image + +Use the app git commit SHA as the immutable image tag. Build is a multi-stage +`Dockerfile` (Rocky Linux 9 builder + slim Rocky 9 runtime) that compiles +ychat entirely inside the container. + +```sh +cd ~/git/ychat/ychat +podman build -t ychat:dev . + +TAG=$(git rev-parse --short HEAD) +podman tag ychat:$TAG r0.lan.buetow.org:30001/ychat:$TAG +podman tag ychat:latest r0.lan.buetow.org:30001/ychat:latest +podman push --tls-verify=false r0.lan.buetow.org:30001/ychat:$TAG +podman push --tls-verify=false r0.lan.buetow.org:30001/ychat:latest +``` + +The registry is the f3s private registry on NodePort `30001` (plain +HTTP/insecure). In Kubernetes manifests, pods pull the image as: + +```text +registry.lan.buetow.org:30001/ychat:<TAG> +``` + +## Deploy (GitOps) + +Config lives in the `conf` repo (mirrored on the in-cluster git-server): + +- Helm chart: `f3s/ychat/helm-chart` +- ArgoCD app: `f3s/argocd-apps/services/ychat.yaml` + +The Deployment pulls `registry.lan.buetow.org:30001/ychat:<TAG>` (tag matches +`appVersion` in `Chart.yaml`). The default chat port is **2000**. + +## Storage notes + +- **Logs** (`/app/log`: `access_log`, `system_log`, `rooms/<room>`) go to an + `emptyDir` — ephemeral by design. +- **SQLite database** (`/app/data/ychat.db`) holds registered accounts and + needs a real persistent volume (PVC) to survive pod rescheduling. The + current Helm chart doesn't provision one — this is the main blocker for + rolling out the DB-backed build. + +Only registered accounts persist (in SQLite). Sessions/rooms/online-state are +in-memory, and unregistered `chat.enableguest=true` guest chatters are wiped +on restart — only the accounts table persists. + +## Follow-ups before this build goes live + +- Provision a PVC for `/app/data` and update the Helm chart. +- Deploy the DB-backed image and ArgoCD-sync it. |
