e1c78e735833004413445603d74955d44644dbdf
Dockerfile: add postgresql-client and bake db-customization/ SQL scripts into the image at /vnc/db-customization/. config/migrate.sh: detection + migration script with two modes: - pre-upgrade: runs idempotent prosody-13-new-deployment.sql on 13.0.x databases; skips 0.11.6 (unsafe pre-upgrade) and new deployments. - post-upgrade: waits for Prosody table, then runs the appropriate scripts — full 0.11.6->13.0.6 migration (rules-triggers + migration-once + new-deployment) or idempotent drift correction for 13.0.x. Helm chart: two Job templates (db-migration-pre-upgrade.yaml, db-migration-post-upgrade.yaml) gated by dbMigration.enabled (default true). Both reuse the Prosody image and DB credentials from existing values. backoffLimit: 0, hook-delete-policy: hook-succeeded. Also tracks the db-customization SQL files (previously untracked, now referenced by the Dockerfile ADD). Part-of: <http://gitlab.vnc.biz/uxf/vnctalk-prosody/-/merge_requests/3>
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 GitLab CI from the
Dockerfile, pushed toeu.gcr.io, and referenced by tag inargo/prosody.yaml.
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.
Languages
Python
43.5%
Lua
41.5%
Shell
6.5%
PLpgSQL
4.8%
PHP
1.3%
Other
2.4%