90b8975464
**Description** ⚒️ Fixes # **⚙️ Type of change** - [x] ⚙️ Feature/App addition - [ ] 🪛 Bugfix - [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] 🔃 Refactor of current code - [ ] 📜 Documentation Changes **🧪 How Has This Been Tested?** Installed on a personal Talos/k8s cluster (k8s 1.33) with the local chart path: - `helm dependency update` and `helm lint` pass - CNPG operator installed via the `cloudnative-pg` upstream chart - `helm install` with single-node CNPG (`cluster.instances: 1`, `cluster.singleNode: true`) and a generated `cnpg.main.password` - Verified: - migration init-container (`affine-install-affine-migration`) runs `node ./scripts/self-host-predeploy.js` to completion - CNPG `Cluster` reaches `Ready`, the `vectors` extension is enabled (`SELECT extname FROM pg_extension;` lists `vectors`) - main `affine` pod reaches `Ready`, TCP probes on port 3010 succeed - external HTTPS access works through nginx-ingress + cert-manager (`affine.domain.com` returns the AFFiNE web UI) - PVCs `affine-config` and `affine-storage` are bound and mounted on both the main and init containers - `affine-server-external-url` is correctly built as `<scheme>://<host>` when `affine.serverHost` is set The chart is published as OCI; no test cluster is required to pull dependencies. **📃 Notes:** - New chart for **AFFiNE** (https://github.com/toeverything/AFFiNE) — open-source, all-in-one workspace (docs, whiteboards, tasks). - Image: `ghcr.io/toeverything/affine:stable` pinned by digest. - Dependencies: - `common` 29.3.4 (shared library) - `valkey` 2.3.2 (aliased `redis`) — required by upstream - CNPG with `type: vectors` and `pgVersion: 16` — required by upstream (uses pgvector) - The upstream image runs as root and writes under `/root/.affine/...`. The chart's `securityContext` keeps root + capabilities, and the comment in `values.yaml` tells users to set `pod-security.kubernetes.io/enforce: baseline` (or `privileged`) on the namespace. `restricted` PSS is not supported. - Migration is handled as an `initContainer` with `type: install` (runs only on install), executing `node ./scripts/self-host-predeploy.js` — same script as the official `affine_migration` compose service. It mounts the same `storage` and `config` PVCs as the main container. - The `affine-server-external-url` env var is built from `affine.serverHost` + `affine.useHttps` so the URL always carries a scheme (upstream validates this). - README links reference `stable/affine` (forward-looking) even though the chart is currently in `incubator/affine`; the path will match once promoted. - Icon is in `.webp` (192px source converted with `cwebp`), no `.png` is shipped because the `.helmignore` and the daily CI both expect `icon.webp` / `icon-small.webp`. **✔️ Checklist:** - [x] ⚖️ My code follows the style guidelines of this project - [x] 👀 I have performed a self-review of my own code - [x] #️⃣ I have commented my code, particularly in hard-to-understand areas (`values.yaml` has inline comments for the securityContext and the external URL logic) - [x] 📄 I have made changes to the documentation (`README.md` + comments in `values.yaml`) - [ ] 🧪 I have added tests to this description that prove my fix is effective or that my feature works - [ ] ⬆️ I increased versions for any altered app according to semantic versioning - [x] I made sure the title starts with `feat(chart-name):`, `fix(chart-name):`, `chore(chart-name):`, `docs(chart-name):` or `fix(docs):` **➕ App addition** If this PR is an app addition please make sure you have done the following. - [x] 🖼️ I have added an icon in the Chart's root directory called `icon.png` --- --------- Signed-off-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com> Co-authored-by: n0PainNoBrioche <22093195+n0PainNoBrioche@users.noreply.github.com> Co-authored-by: Alfred Göppel <43101280+alfi0812@users.noreply.github.com>