Skip to main content

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.

Hardware

Recommended starting point for a small team (≤ 20 users):
ComponentSupported floorRecommended
CPU2 vCPU4 vCPU
RAM2 GB (all-in-one, light use)8 GB
Disk20 GB50 GB + persistent volume for uploads
The official Docker Compose has been tested on a 2 GB / 2 vCPU Ubuntu VM running everything on one host (see Docker Compose). That works for a single-user install with occasional posting, but leaves no headroom — once you have multiple users, scheduled workflows, or external Postgres/Redis on the same host, plan for 4 GB or more. The build step (pnpm install / pnpm build from source) is the most memory-hungry part and can OOM on 2 GB VMs. Bump the Node heap if it fails:
NODE_OPTIONS="--max-old-space-size=4096" pnpm install
The canonical self-host setup is the official Docker Compose repo:

postiz-docker-compose

Pre-wired Postiz + Postgres + Redis + Temporal. The fastest way to a working install.
If you’d rather build from source or use Kubernetes, see Docker Compose, Docker, or Kubernetes / Helm.

Required services

Postiz needs four external services:
ServiceMinimum version
PostgreSQL14
Redis6
Temporalbundled with official docker-compose; required since v2.12.0
Object storageOptional — local filesystem works (STORAGE_PROVIDER=local), Cloudflare R2 supported (STORAGE_PROVIDER=cloudflare)
The official docker-compose ships Postgres, Redis, and Temporal pre-wired. If you’re running them externally, point Postiz at them via DATABASE_URL, REDIS_URL, and TEMPORAL_ADDRESS.

Default ports

ServicePortWhen
Postiz container (bundled FE + BE)5000Official Docker image (ghcr.io/gitroomhq/postiz-app) — exposed for you to map. The bundled compose maps host 4007:5000.
Backend (Nest)3000Running from source (pnpm dev / pnpm start). Override via PORT.
Frontend (Next.js)4200Running from source.
Temporal frontend7233gRPC; both modes.
Temporal UI8080If bundled compose is used.

Filesystem

If STORAGE_PROVIDER=local, set UPLOAD_DIRECTORY to a host path and mount that path into the backend container. The frontend serves the same files through /uploads/:path*. See Uploads & storage. If you’d rather offload media: configure Cloudflare R2.

Outbound network

Postiz initiates outbound HTTPS to every social provider you connect. Strict egress firewalls will break OAuth — make sure the backend can reach:
  • api.twitter.com, upload.twitter.com
  • graph.facebook.com, graph.instagram.com, graph.threads.net
  • linkedin.com, api.linkedin.com
  • openapi.tiktok.com, open.tiktokapis.com
  • googleapis.com (YouTube + GMB)
  • the Mastodon instance you configure via MASTODON_URL
  • any other provider you intend to use
If your environment requires a proxy, set HTTPS_PROXY and HTTP_PROXY on the backend.

Inbound network

The frontend talks to the backend from the browser, so NEXT_PUBLIC_BACKEND_URL must be reachable from your users’ browsers, not just from the frontend SSR server. A reverse proxy in front of both ports is the typical setup — see Reverse Proxies.