A scheduler you can own
Postiz puts a publishing calendar, composer, media library, analytics, team access, and automation in one application. It connects to mainstream social networks as well as services such as Mastodon, Bluesky, Discord, and Slack. A team can write one base post, adjust it for each channel, schedule it, and inspect the published result from the calendar. The self-hosted edition has no plan limits when billing variables are absent.
This is useful for an agency that dislikes copying the same campaign between browser tabs, or for an internal media team that needs a shared queue. The public API and integrations with n8n, Make, and Zapier give developers a route around the interface. Postiz also exposes an MCP endpoint, so an agent can work with the publishing system under the permissions you configure.
The breadth has a cost. Social publishing is a pile of provider rules, OAuth callbacks, media constraints, expiring credentials, and background jobs. Postiz gathers that work into one codebase, but self-hosting does not make it disappear. You become the operator of the scheduler and the party responsible for each provider relationship.
What happened when we ran it
We tested commit 81af6c9 in an unprivileged Node 22 container with 3 CPUs, 8 GB RAM, and no secrets. The checkout contained 943 files and about 126,258 source lines, with an 18 MB repository footprint. The pnpm installation succeeded in 126 seconds. It reported 1 package installed and consumed 3,180 MB on disk, which is a striking expansion from the checkout size.
The production build succeeded in 141 seconds. That is useful evidence that the main frontend, backend, and orchestrator build path can complete in a clean environment. The repository is a pnpm workspace monorepo, and we found seven CI workflow files. There was no Dockerfile and no tests directory in the measured checkout.
The test step failed after 7 seconds, before any tests ran. Jest tried to read the TypeScript configuration at jest.config.ts, then TypeScript reported that it could not find @nx/jest or its type declarations. The log does not establish why that module was absent, so we will not turn it into a dependency diagnosis. The practical finding is narrower: the root test command did not produce a passing test run from this fresh checkout.
Docker gets the services running, not the channels
The main README sends operators to a separate quick-start guide. Postiz recommends its dedicated Docker Compose repository for a normal deployment, while this repository is the source monorepo. The Compose setup brings up the application with PostgreSQL, Redis, and Temporal. Media can remain on a mounted local directory or move to Cloudflare R2. Production also needs a reverse proxy and HTTPS because the application uses secure cookies.
Configuration is entirely environment based. Six core values are required, covering the database, Redis, session signing, the public frontend and backend addresses, and the backend's internal address. Temporal handles scheduled posts and background workflows. A backup plan therefore has to cover the database and uploaded media, while monitoring has to include the workflow service as well as the web application.
Connecting accounts is the slower part. A small group of providers accepts credentials directly from each user, making them suitable for a first check. Most networks require the operator to register a developer app and add its keys. The documentation warns that every provider remains visible even when its keys are missing; clicking an unconfigured one produces a failed connection. That is a poor failure mode for users and an extra support burden for administrators.
The product scope is genuinely useful
Postiz covers more than timed text posts. Its calendar supports channel-specific edits and previews, required fields for services such as YouTube or Reddit, drafts, immediate publication, and error status after a scheduled attempt. The README says the hosted and self-hosted products currently have the same feature set. Self-hosted installations without Stripe configuration behave as the top tier, which makes the software appealing to teams with many channels.
Recent engineering work addresses problems that matter in a publishing queue. Release v2.23.0, published on August 4, 2026, added streamed media uploads, duplicate-post protection for interrupted publishing, SSRF protections, and MCP connection fixes. Those are operational fixes, not decorative additions. Duplicate publication and memory spikes during video upload can both become expensive mistakes.
Current issue activity shows why ongoing maintenance still matters. On August 23, reports and pull requests covered scheduled posts shifting by an hour, Reddit publishing failures, Telegram caption limits, and attachment validation. Social APIs change underneath the scheduler, so a self-hosted team should expect upgrades and should test its important channels after them.
Health, license, and the decision
The repository was pushed on August 24, 2026, the same day we reviewed it. Its GitHub page showed 35,078 stars and 274 open issues and pull requests combined. Recent pull requests and issue updates were active across publishing fixes and integrations. The queue is substantial, but the push date and daily activity show a maintained project rather than an abandoned one.
Documentation is one of Postiz's better parts. Separate pages cover system requirements, Compose, standalone Docker, Kubernetes, environment variables, storage, reverse proxies, provider keys, and platform posting rules. The AGPL-3.0 license deserves an early legal check if a company plans to modify Postiz and offer it over a network.
Choose Postiz when control over hosting and a full editorial calendar justify owning the stack. Start with the official Compose repository, connect one low-friction provider, and verify scheduled delivery before migrating a campaign. If your team has no appetite for OAuth registrations, Temporal, storage, backups, and upgrades, Buffer or another hosted scheduler is the more sensible purchase.

