Chart for HOTOSM Field Tasking Manager.
Requires secrets to be pre-populated inside the correct namespace:
- Create namespace:
kubectl create namespace field-tm
kubectl -
db-ftm-vars for backend database settings (optional when
db.enabled=true)- key: FTM_DB_HOST
- key: FTM_DB_USER
- key: FTM_DB_PASSWORD
- key: FTM_DB_NAME
kubectl create secret generic db-ftm-vars --namespace field-tm \ --from-literal=FTM_DB_HOST=your-db-hostname \ --from-literal=FTM_DB_USER=xxxxxxx \ --from-literal=FTM_DB_PASSWORD=xxxxxxx \ --from-literal=FTM_DB_NAME=xxxxxxx
-
api-ftm-vars for the Field-TM backend
- key: ENCRYPTION_KEY
- key: FTM_DOMAIN
- key: OSM_CLIENT_ID
- key: OSM_CLIENT_SECRET
- key: OSM_SECRET_KEY
kubectl create secret generic api-ftm-vars --namespace field-tm \ --from-literal=ENCRYPTION_KEY=xxxxxxx \ --from-literal=FTM_DOMAIN=some.domain.com \ --from-literal=OSM_CLIENT_ID=xxxxxxx \ --from-literal=OSM_CLIENT_SECRET=xxxxxxx \ --from-literal=OSM_SECRET_KEY=xxxxxxx
helm upgrade --install field-tm oci://ghcr.io/hotosm/field-tm --namespace field-tmBy default the chart expects an external database (db.enabled=false).
Set db.enabled=true to run an in-cluster PostGIS database.
When db.enabled=false, provide FTM_DB_HOST via your DB secret/env.
Chart values can be overridden using values.yaml or the --set flag.
helm upgrade --install field-tm . \
--set image.tag=dev \
--set qfieldCloud.tag=26.3 \
--set image.pullPolicy="Always" \
--set domain="some.new.domain"For local dev clusters (for example Talos), use the included override file:
helm upgrade --install field-tm ./chart \
--namespace field-tm \
--create-namespace \
-f chart/values.local.yamlThis disables ingress, keeps the service as ClusterIP, enables bundled PostGIS
(db.enabled=true), and sets stricter pod/container security contexts for local
Talos-style restricted policies.
It also includes local fallback env vars so api-ftm-vars secret creation is optional.
Access the app locally with:
kubectl -n field-tm port-forward svc/field-tm 8000:8000values.local.yaml also overrides backend command/args so the debug image
can run in Kubernetes without requiring a /opt/tests directory.