What the chart deploys
You also need Helm 3,
kubectl for the cluster, and an ingress controller with TLS for a public install: the networks send their sign-in callbacks to an https address.
Install
1
Write my-values.yaml
my-values.yaml
image.tag: take the newest tag from the app’s tags. The chart’s default islatest, which moves. ItsappVersionnames the release current when the chart was published (v3.6.84in chart 1.1.6).RUN_CRON: the chart does not set it. Without it the recurring workflows never start, so posts that failed to schedule are never picked up again and analytics do not sync.- The connection strings: the app reads only
secrets.DATABASE_URLandsecrets.REDIS_URL. The chart does not derive them from the subcharts. The values above match a release namedpostqueenwith the bundled databases and their default passwords. - Chart 1.1.4 and newer set
STORAGE_PROVIDERtolocal,UPLOAD_DIRECTORYto/uploads,NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORYtouploadsandIS_GENERALtotrue.
2
Install the release
helm repo add step. The chart’s name is postqueen-app, although it lives in charts/postqueen in its repository. Flux and Argo CD take the same reference in OCI mode.3
Check it
Backend started successfully on port 3000, and no Configuration issue lines.secrets in the same way, for example LINKEDIN_CLIENT_ID.
Apply a change
The chart handsenv and secrets to the pod through a ConfigMap and a Secret, and a pod reads them only when it starts. After helm upgrade with changed values, restart the pod:
Change the defaults for a real install
- Passwords. Change
postgresql.auth.passwordandredis.auth.password, and the two connection strings with them. - Your own databases. Set
postgresql.enabled: falseorredis.enabled: falseand point the connection string at your service. - Uploads. Without
extraVolumes,/uploadsis anemptyDirthat is lost when the pod restarts. Mount a persistent volume at/uploadswithextraVolumesandextraVolumeMounts, or store media in Cloudflare R2. With more than one replica, the volume has to be ReadWriteMany so every pod mounts it, or media goes to R2.
Traps
The image tag needs its v
The image tag needs its v
Published tags look like
v3.6.84. An empty image.tag falls back to the chart’s appVersion, which falls behind as the app moves on. Write the tag out, and only ever move it forward: every start applies that image’s database schema.Chart 1.1.0 cannot pull its databases
Chart 1.1.0 cannot pull its databases
Chart 1.1.0 bundles Bitnami image tags that Docker Hub no longer serves under
bitnami/, so its database pods stay in ImagePullBackOff. Chart 1.1.3 and newer take the same tags from bitnamilegacy/. Use 1.1.4.There are no health probes
There are no health probes
The deployment defines no liveness or readiness probe, so traffic can reach a pod that is still starting and a stuck pod is not restarted. Add your own probe against
/ on port 5000 if you need that.Resource names look doubled
Resource names look doubled
A release named
postqueen creates objects named postqueen-postqueen-app. That is the chart’s naming helper. The bundled databases are postqueen-postgresql and postqueen-redis-master, which is why the connection strings look the way they do.An empty secret is still set
An empty secret is still set
Every key under
secrets is rendered, so a key left as "" reaches the app as an empty variable rather than an absent one.Upgrade
image.tag in my-values.yaml to move to a newer PostQueen, after a database backup. helm uninstall postqueen removes the release; the bundled databases’ volumes stay until you delete their PersistentVolumeClaims. The chart’s README lists the changes in each chart version, and values.yaml every value.
Next steps
Channel developer apps
Each network’s app, variables and redirect URI.
Resend or SMTP, so password resets and invitations arrive.
Uploads and storage
Media on the local disk, or in Cloudflare R2.
Backups and upgrades
The volumes to back up, and how to move to a newer image.