Deploy Postiz [with Temporal] | Open-Source Buffer Alternative
1 Click Self-Host Postiz. Schedule posts in 30+ social platforms with AI.
Postiz
postiz_postgres
Just deployed
/var/lib/postgresql/data
postiz-app
Just deployed
/uploads
postiz_redis
Just deployed
/data
Temporal Setup
temporal_server
Just deployed
temporal-postgres
Just deployed
/var/lib/postgresql/data
elasticsearch-railway
Just deployed
/esdata
temporal-ui
Just deployed
temporal-admin-tools
Just deployed
Deploy and Host Postiz [with Temporal]
Deploy a fully self-hosted social media scheduling platform on Railway with one click. This template provisions all 8 required services — Postiz app, two Postgres databases, Redis, Temporal workflow engine, Temporal UI, admin tools, and Elasticsearch — pre-wired with private networking and auto-generated secrets.

About Hosting Postiz [with Temporal]
Postiz is an open-source alternative to Buffer and Hootsuite, supporting 30+ platforms including X, Instagram, LinkedIn, Threads, Bluesky, Mastodon, TikTok, Reddit, and YouTube. Since v2.12.0, Postiz replaced BullMQ with Temporal for all background job processing — scheduled posting, token refresh, email digests, and streak tracking.
Key features:
- Visual content calendar with AI writing assistant
- Multi-platform publishing (30+ networks)
- Team collaboration and approval workflows
- Built-in analytics dashboard
- Fully open-source (
ghcr.io/gitroomhq/postiz-app:latest)
Architecture (8 services):
postiz → postiz-postgres + redis + temporal-server → temporal-postgres + elasticsearch + temporal-ui + temporal-admin-tools
The Elasticsearch service uses a custom-wrapped image because Railway rejects dotted env var names like cluster.routing.allocation.disk.watermark.low. The wrapper bakes config into elasticsearch.yml at build time and fixes volume permissions at runtime via a custom entrypoint.
Why Deploy Postiz [with Temporal]
Standing up this 8-service stack manually on a VPS means writing Docker Compose files, managing inter-service DNS, handling secrets, and debugging Temporal's Elasticsearch integration from scratch. On Railway:
- All services communicate over private networking — no exposed ports between internal services
- Secrets like
JWT_SECRETare auto-generated at deploy time - Environment variable references (
${{service.VAR}}) wire services together automatically - Zero-downtime redeploys and persistent volumes are managed for you
- The Elasticsearch permission-fix complexity is already solved in the template
Common Use Cases of Postiz [with Temporal]
- Marketing agencies managing multiple client social accounts from one dashboard with team-based access controls
- Content creators automating cross-platform publishing schedules while tracking engagement analytics
- Developer teams building agent/API-driven publishing workflows using Postiz's public API and MCP tools
- Privacy-conscious businesses that need full data ownership and can't use SaaS tools due to compliance requirements
Dependencies for Postiz [with Temporal]
- PostgreSQL (×2 — one for Postiz, one for Temporal)
- Redis (session state and caching)
- Temporal Server (
temporalio/auto-setup) - Elasticsearch (Temporal workflow visibility backend)
Environment Variables Reference
| Variable | Service | Description | Required |
|---|---|---|---|
MAIN_URL | postiz | Primary public URL | ✅ |
JWT_SECRET | postiz | Auth token signing secret | ✅ |
DATABASE_URL | postiz | Postiz Postgres connection string | ✅ |
REDIS_URL | postiz | Redis connection for queues | ✅ |
TEMPORAL_ADDRESS | postiz | Temporal server endpoint | ✅ |
IS_GENERAL | postiz | Enable multi-user mode | ✅ |
DISABLE_REGISTRATION | postiz | Lock signups after setup | Optional |
STORAGE_PROVIDER | postiz | local or cloudflare-r2 | ✅ |
OPENAI_API_KEY | postiz | Enable AI assistant | Optional |
ELASTIC_PASSWORD | elasticsearch | Elasticsearch auth password | ✅ |
ES_JAVA_OPTS | elasticsearch | JVM heap (-Xms256m -Xmx512m) | ✅ |
ENABLE_ES | temporal-server | Enable Elasticsearch visibility | ✅ |
POSTGRES_SEEDS | temporal-server | Temporal Postgres host | ✅ |
Deployment Dependencies
- Docker images:
ghcr.io/gitroomhq/postiz-app:latest,temporalio/auto-setup,temporalio/admin-tools,ghcr.io/temporalio/ui:latest - Source: github.com/gitroomhq/postiz-app
- Docs: docs.postiz.com
- Minimum recommended resources: 2 vCPU, 4 GB RAM for the Postiz service
Postiz vs Buffer vs Hootsuite
| Postiz (self-hosted) | Buffer | Hootsuite | |
|---|---|---|---|
| Cost | Free (infra only) | $6–$120/mo | $99+/mo |
| Open source | ✅ | ❌ | ❌ |
| Bluesky/Mastodon | ✅ | ❌ | ❌ |
| AI content tools | ✅ | Limited | Limited |
| Data ownership | Full | ❌ | ❌ |
| Temporal workflows | ✅ v2.12+ | N/A | N/A |
Postiz is the only option if you need Fediverse platform support, full data sovereignty, or programmatic publishing via API/MCP.
Getting Started After Deployment
Once Railway finishes provisioning all 8 services, open the Postiz public URL (your MAIN_URL). Register the first admin account — set DISABLE_REGISTRATION="true" afterward to lock signups. Navigate to Settings → Providers and add OAuth credentials for each social platform you want to connect. Create your first post from the calendar view and verify it appears in the Temporal UI (exposed on port 8080) as a scheduled workflow.
Troubleshooting
Postiz crashes on startup — Check that TEMPORAL_ADDRESS resolves. Temporal's auto-setup takes 30–60 seconds; Postiz may need a manual restart after Temporal is healthy.
Elasticsearch fails to start — The custom entrypoint runs chown on the mounted volume. If the volume mount races ahead of the entrypoint, restart the elasticsearch service once.
Temporal UI shows no workflows — Confirm ENABLE_ES=true and that ES_SEEDS points to the correct private domain. Check elasticsearch logs for heap errors; increase ES_JAVA_OPTS if needed.
Is Postiz Free to Self-Host?
Postiz is fully open-source (Apache 2.0). There are no licensing fees. Your only cost is Railway infrastructure — typically $20–$40/month for this 8-service stack depending on usage. A managed Temporal Cloud option exists at temporal.io/cloud if you want to reduce operational overhead, but this template runs everything self-contained.
FAQ
Is Postiz a self-hosted alternative to Buffer? Yes. Postiz is an open-source social media scheduler with self-hosting capabilities, designed as a drop-in replacement for tools like Buffer, Hootsuite, and Hypefury — with no per-seat fees and full data ownership.
Why does Postiz need Temporal? Since v2.12.0, Postiz uses Temporal as its workflow orchestration engine for all async operations: scheduling posts, refreshing OAuth tokens, sending emails, and tracking streaks. Temporal provides durable execution with automatic retries — if a post fails, Temporal retries it without data loss.
Can I disable user registration after setup?
Yes. Set DISABLE_REGISTRATION="true" in the Postiz service environment variables after creating your admin account.
What's the difference between this template and the Postiz App template (without Temporal)?
The simpler template runs Postiz v2.11.x without Temporal. You can find that one here -
This template targets v2.12+ and includes the full Temporal stack. You cannot run v2.12+ without Temporal — the app will fail to start.
Can I use Cloudflare R2 instead of local storage?
Yes. Set STORAGE_PROVIDER="cloudflare" and add CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_ACCESS_KEY, CLOUDFLARE_SECRET_ACCESS_KEY, and CLOUDFLARE_BUCKETNAME to the Postiz service.
How do I enable the AI assistant in Postiz?
Add OPENAI_API_KEY=sk-... to the Postiz service environment variables. The AI chat feature activates automatically.
Template Content
postiz_postgres
ghcr.io/railwayapp-templates/postgres-ssl:17temporal_server
temporalio/auto-setuptemporal-postgres
ghcr.io/railwayapp-templates/postgres-ssl:17postiz-app
ghcr.io/gitroomhq/postiz-app:latestelasticsearch-railway
praveen-ks-2001/elasticsearch-railwaytemporal-ui
temporalio/uipostiz_redis
redis:8.2.1temporal-admin-tools
temporalio/admin-tools
