Postiz writes user-uploaded media (post images, avatars, generated content) through a single storage abstraction. Pick one of two backends.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.
Pick a backend
Local filesystem
Set the path where Postiz should write:UPLOAD_DIRECTORY— where the backend writes files on disk.NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY— the URL prefix the frontend uses to reference those files. Default/uploads.
/uploads/:path* to /api/uploads/:path*
on the backend (only active when STORAGE_PROVIDER=local), so the
public URL stays /uploads/... while the actual file is served from
the backend.
Docker volume mount
Indocker-compose.yaml:
Caveat: some providers need public HTTPS URLs
TikTok (and a few others) fetch media via “pull from URL” rather than multipart upload. Your local/uploads path must therefore be
reachable from the public internet over HTTPS for those providers to
work. If your deployment is internet-facing through a reverse proxy
with TLS, you’re fine. If Postiz is on a private network, those
providers will fail and you should use Cloudflare R2
or a CDN instead.
Cloudflare R2
SetSTORAGE_PROVIDER=cloudflare and configure the R2 credentials. See
the dedicated R2 setup guide for the OAuth and
bucket-permissions walkthrough.
Public-API uploads
Both/public/v1/upload and /public/v1/upload-from-url write through
the configured STORAGE_PROVIDER. The accepted MIME types and body-size
limits are documented in troubleshooting/uploads.
