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

2.9 KiB

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

# 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.