Documentation Index
Fetch the complete documentation index at: https://docs.postiz.com/llms.txt
Use this file to discover all available pages before exploring further.
pnpm heap out of memory during install
The Postiz monorepo is large enough that the default Node heap can
overflow during pnpm install on small VMs.
Fix
--max-old-space-size=8192. Don’t set the heap higher than your VM’s
available memory — that just trades OOM in Node for OOM-killed by the
kernel. If you’re stuck on a 2 GB VM, build the image elsewhere and
deploy the prebuilt artifact instead. See
System requirements for minimum RAM.
postgres ECONNREFUSED
Backend can’t reach Postgres.
Checklist
DATABASE_URLhost: is itlocalhostwhen the backend is in a container that doesn’t share host networking? Use the service name (postgres) or the container IP instead.- Postgres ready?
docker compose logs postgresshould showdatabase system is ready to accept connections. - Port mapping: if you exposed Postgres only on the Docker network,
external
psqlwon’t work but the backend will. That’s fine.
”Hide a provider from the UI”
There is no env-var-based way to hide a provider from the frontend today. The only mechanism is to set the per-organisationdisabled
field on the Integration row in the database after a channel is
connected. We’re tracking the request — see the GitHub issues tagged
enhancement.
Default ports
It depends on how you’re running Postiz. Official Docker image (ghcr.io/gitroomhq/postiz-app): the
container bundles frontend + backend and exposes a single port 5000.
The official compose maps that to host 4007:5000 — so you reach Postiz
at http://localhost:4007/.
Running from source (pnpm dev / pnpm start): frontend listens
on 4200, backend on 3000 (overridable via PORT). Connect a reverse
proxy in front to give your users a single URL — see
Reverse Proxies.
Temporal listens on 7233 (gRPC) and the Temporal UI on 8080 in
either mode.
Mounting the uploads volume
IfSTORAGE_PROVIDER=local, point UPLOAD_DIRECTORY at the path Postiz
should write to, mount that path into your container, and also set
NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY so the frontend knows where the
files are served from. The Next.js config rewrites /uploads/:path* to
/api/uploads/:path* when local storage is active. See
Uploads & storage.
For multi-container deployments, either share the same volume across all
containers that need to read or write, or move to Cloudflare R2.
Can I deploy Postiz on Vercel?
Frontend: yes — it’s a standard Next.js app and deploys cleanly to Vercel. Backend: no. The Postiz backend is a NestJS server that also embeds a Temporal worker. It needs a long-running Node host (Fly.io, Render, Railway, a VM, a Kubernetes pod, etc.) — serverless functions won’t work.Email isn’t sending
By default, Postiz uses Resend (EMAIL_PROVIDER=resend) and only
becomes active when RESEND_API_KEY is set. To use SMTP instead, set
EMAIL_PROVIDER=nodemailer and provide EMAIL_HOST, EMAIL_PORT,
EMAIL_USER, EMAIL_PASS, EMAIL_SECURE. See
Email configuration.
If no email provider is configured, user activation emails won’t go
out — but Postiz auto-activates users in that mode, so signup still
works.
Temporal isn’t reachable
Since v2.12.0, Postiz schedules posts through Temporal. The backend needs to reach the Temporal frontend onTEMPORAL_ADDRESS. If you’re
upgrading from v1.x, follow the migration guide
— it walks through running both stacks side by side while you copy
Postgres data over.
