Overview
This guide covers self-hosting Postiz using Docker Compose. The self-hosted version has no feature limitations compared to the cloud version—you get the complete platform with full control over your data.Prefer cloud hosting? Sign up at platform.postiz.com for instant access with zero setup.
Prerequisites
Before you begin, ensure you have:Docker & Docker Compose
Docker Engine 20.10+ and Docker Compose v2.0+Install Docker
System Requirements
Minimum:
- 2 CPU cores
- 4GB RAM
- 20GB disk space
- 4 CPU cores
- 8GB RAM
- 50GB SSD storage
Domain & DNS
A domain name with DNS configured (for production)Optional for local testing
Platform Credentials
OAuth credentials for platforms you want to connectSee platform setup section
Quick Installation
Get Postiz running in 3 commands:Configure Environment
Copy the example environment file and update required settings:Edit Minimum Required Configuration:
.env with your preferred editor:.env
Launch Postiz
Start all services with Docker Compose:This will start:Check service status:All services should show
- postiz - Main application (port 4007)
- postiz-postgres - PostgreSQL database
- postiz-redis - Redis cache
- temporal - Workflow orchestrator
- temporal-postgresql - Temporal database
- temporal-elasticsearch - Temporal search
- temporal-ui - Temporal dashboard (port 8080)
First launch takes 3-5 minutes to download images and initialize databases.
running status.Access Postiz
Once all services are running:Main Application
URL: http://localhost:4007Your Postiz dashboard and UI
Temporal UI
URL: http://localhost:8080Monitor background jobs and workflows
Open Postiz
Navigate to http://localhost:4007 in your browser
Create Admin Account
On first visit, you’ll see the registration page:
- Enter your name
- Email address
- Password (min 8 characters)
- Click Create Account
If
RESEND_API_KEY is not configured, your account is immediately active. Otherwise, check your email for verification.Configure Social Platform Credentials
To connect social platforms, you need OAuth credentials from each platform’s developer portal. Add these to your.env file:
X (Twitter)
X (Twitter)
Developer Portal: https://developer.twitter.com/en/portal/dashboardRequired Permissions:Environment Variables:
- Read and write tweets
- Read user profile
LinkedIn (Personal)
LinkedIn (Personal)
Developer Portal: https://www.linkedin.com/developers/Required Products:Environment Variables:
- Share on LinkedIn
- Sign In with LinkedIn
Facebook & Instagram
Facebook & Instagram
Developer Portal: https://developers.facebook.com/Required Products:Environment Variables:
- Facebook Login
- Instagram Basic Display
- Instagram Graph API (for business accounts)
YouTube
YouTube
Developer Portal: https://console.cloud.google.com/Required APIs:Environment Variables:
- YouTube Data API v3
TikTok
TikTok
Developer Portal: https://developers.tiktok.com/Required Permissions:Environment Variables:
- Video upload
- User info
Reddit
Developer Portal: https://www.reddit.com/prefs/appsApp Type: Web AppCallback URL:Environment Variables:
Discord
Discord
Developer Portal: https://discord.com/developers/applicationsRequired Scopes:Environment Variables:
- bot
- applications.commands
- Send Messages
Slack
Slack
Developer Portal: https://api.slack.com/appsRequired Scopes:Environment Variables:
- channels:read
- chat:write
- users:read
- groups:read
- channels:join
Threads
Threads
Developer Portal: https://developers.facebook.com/Note: Threads uses Meta’s developer platformCallback URL:Environment Variables:
Pinterest
Developer Portal: https://developers.pinterest.com/Required Scopes:Environment Variables:
- boards:read
- pins:read
- pins:write
Mastodon
Mastodon
Setup: No developer account needed - instance-level OAuthDefault Instance: https://mastodon.social (configurable)Environment Variables:
Mastodon credentials are generated when you first connect. You can connect to any Mastodon instance.
integration.manager.ts:40-74:
- X (Twitter)
- LinkedIn (Personal & Pages)
- Instagram (Business & Standalone)
- Threads
- YouTube
- Google My Business
- TikTok
- Dribbble
- Discord
- Slack
- Kick
- Twitch
- Mastodon
- Bluesky
- Lemmy
- Farcaster
- Telegram
- Nostr
- VK
- Medium
- Dev.to
- Hashnode
- WordPress
- Listmonk
- Moltbook
- Whop
- Skool
Optional Configuration
AI Content Generation
Enable AI-powered content creation with OpenAI:.env
- Generate engaging posts from prompts
- Create thread content automatically
- Optimize post length for platforms
- Convert text to natural voice
Email Notifications
Configure Resend for user email verification and notifications:.env
If
RESEND_API_KEY is not set, users are auto-activated without email verification.Cloudflare R2 Storage
For production, use Cloudflare R2 instead of local storage:.env
Stripe Payments (Optional)
If you want to offer paid plans:.env
Disable Registration
For private instances, disable new user signups:.env
API Rate Limiting
Configure public API rate limits (requests per hour):.env
Production Deployment
For production environments, follow these additional steps:Update OAuth Callbacks
Update all platform OAuth redirect URIs from This must be done in each platform’s developer console.
http://localhost:4007 to your production domain:Set Up Backups
Backup PostgreSQL database regularly:Consider automated backups with cron or cloud backup services.
Updating Postiz
To update to the latest version:Troubleshooting
Services won't start
Services won't start
Check Docker status:Common fixes:
- Ensure ports 4007, 8080, 7233 are not in use
- Check Docker has enough memory (4GB minimum)
- Verify
.envfile exists and is properly formatted
Database connection errors
Database connection errors
Error: Look for “database system is ready to accept connections”Restart Postiz service:
Error: connect ECONNREFUSEDSolution: Wait for PostgreSQL to initialize:OAuth redirect errors
OAuth redirect errors
Error: Redirect URI mismatchSolution: Ensure callback URLs match exactly:
- Check your
.envFRONTEND_URL - Verify platform developer console callback URLs
- Format:
{FRONTEND_URL}/integrations/social/{platform} - No trailing slashes
Posts not publishing
Posts not publishing
Problem: Scheduled posts remain in queueSolution: Check Temporal services:Ensure Temporal UI shows workflows executing:Restart orchestrator if needed:
High memory usage
High memory usage
Problem: Docker consuming too much RAMSolution: Limit container resources in Or disable Elasticsearch for Temporal (uses less memory):
docker-compose.yaml:File upload failures
File upload failures
Problem: Cannot upload media filesSolution: Check storage configuration:Local storage:Cloudflare R2:
- Verify credentials are correct
- Check bucket permissions
- Test connectivity to R2 endpoint
Development Setup
For local development without Docker:
Project Structure:
Next Steps
Quick Start
Learn how to create your first scheduled post
Configuration Reference
Explore all configuration options
Public API
Integrate Postiz with external tools
GitHub
Contribute to the project
Need help? Join our Discord community or open an issue on GitHub.