Files
macanhhuy d6dddbbc91
Build + push image / build-and-push (push) Successful in 1m8s
chore: remove GCP + GitLab references, migrate to Gitea registry
Replace eu.gcr.io/vnc-development image refs with gitea.saas.vnc.biz/vnciac,
swap gcr-json-key pull secret for gitea-registry, and update CI/deploy docs
from GitLab CI to Gitea Actions.
2026-08-19 17:31:05 +07:00

57 lines
2.9 KiB
Markdown

# VNCtalk Prosody
Dockerized **Prosody 13.0.6** XMPP server for VNCtalk, built from source against
Lua 5.4 on Alpine. The Dockerfile compiles Prosody, applies source patches, and
layers on custom Lua modules — producing a single image deployed to Kubernetes
via the bundled Helm chart and ArgoCD.
## Repository layout
| Path | Purpose |
|------|---------|
| `Dockerfile` | Multi-stage build: builder applies `patches/*.patch` to the extracted Prosody source, then `./configure --idn-library=idn --lua-version=5.4 && make install`. Final stage copies the built tree + `vnctalk/` modules + `config/`. |
| `patches/` | Unified diffs against upstream Prosody core files, applied with `patch -p1 --fuzz=0` before configure. Adding/removing a `.patch` needs no Dockerfile change (glob-based). See `patches/README.md` for per-patch intent. |
| `vnctalk/` | VNCtalk-specific Prosody modules (`mod_vnc_*`, `mod_http_rest`, `mod_alias`, `mod_webpresence`, …), copied wholesale to `/usr/local/lib/prosody/modules/`. |
| `config/` | Runtime config template (`prosody.cfg.lua.template`), `startup.sh` (renders config via `envsubst`, writes certs, launches Prosody), `healthcheck.sh`, and `startup-sidecar.sh` (static-file/redirect sidecar). |
| `helm/prosody/` | Helm chart for Kubernetes deployment (`Chart.yaml`, `values.yaml`, `templates/`). |
| `argo/prosody.yaml` | ArgoCD `Application` manifest — the canonical deploy config (image tag, ingress, env vars). |
| `db-customization/` | PostgreSQL schema/migration SQL for the Prosody 13 database (applied out-of-band, not by the container). |
| `tests/` | pytest + slixmpp integration suite (~86 tests) with aiohttp mocks and a compose test harness. |
## Deployment
The **only intended deployment method** is the Helm chart in `helm/prosody/`,
synced to the cluster by **ArgoCD** via `argo/prosody.yaml`.
```
argo/prosody.yaml → helm/prosody/ → Docker image (release-13.0.6-vnc)
```
- **ArgoCD** (`argo/prosody.yaml`) is the source of truth for the live image tag,
ingress annotations, TLS, and environment variables. It references the Helm
chart and overrides values as needed.
- **Helm chart** (`helm/prosody/`) defines the Deployment, Service, Ingress,
HPA, PDB, and ServiceAccount templates.
- **Docker image** is built by Gitea Actions (`.gitea/workflows/deploy.yml`) from
the `Dockerfile`, pushed to the Gitea registry (`gitea.saas.vnc.biz/vnciac/vnctalk-prosody`),
and referenced by tag in the ArgoCD application in the `vnc-iac-env` GitOps repo.
No other deployment method is supported. The `test.sh` / `docker-compose.yml`
files are for local testing only.
## Build & test
```sh
# Build the image
docker build -t vnctalk-prosody .
# Run the compose test harness (postgres + mocks + prosody)
make up
source tests/venv/bin/activate
pip install -r tests/requirements.txt
pytest tests/ -v -c tests/pytest.ini
make down
```
For full details see `AGENTS.md` and `tests/README.md`.