Skip to main content
The things that catch people out on their own install. Find your symptom and open it.
The monorepo is large enough to overflow the default Node heap on a small VM.
Do not set the heap above the VM’s actual memory. That trades an OOM in Node for being killed by the kernel. On a 2 GB box, build the image elsewhere and deploy the artifact. System requirements has the minimums.
The backend cannot reach Postgres.
Temporal listens on 7233, and its UI on 8080, either way.
She sends no email at all unless EMAIL_PROVIDER is exactly resend or nodemailer. Unset means the no-op provider.
Check this before anything else, because it also decides activation. EMAIL_PROVIDER=resend with no RESEND_API_KEY still counts as a provider, so new signups are created inactive and wait for a mail that can never arrive.
With no provider configured at all she auto-activates users instead, so signup still works. SMTP setup and the full variable list: Email configuration.
With STORAGE_PROVIDER=local, point UPLOAD_DIRECTORY at the path she should write to, mount it into the container, and set NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY so the frontend knows where the files are served from. Next rewrites /uploads/:path* to /api/uploads/:path* when local storage is active.Running more than one container? Share the volume across all of them, or move to Cloudflare R2. Detail: Uploads and storage.
Frontend, yes. It is a standard Next.js app.Backend, no. It is a NestJS server that also embeds a Temporal worker, so it needs a long-running Node host: Fly.io, Render, Railway, a VM, a Kubernetes pod. Serverless functions will not work.
There is no environment variable for this today. The only way is to set the per-organization disabled field on the Integration row in the database after connecting the channel.
She schedules every post through Temporal, so the backend must reach the Temporal frontend at TEMPORAL_ADDRESS. If it cannot, posts are accepted and never publish.

Next steps

Configuration reference

Every environment variable she reads

Domain and HTTPS

The reverse proxy step, done with you