CHECKING STATUS
I AM LISTENING TO
|

Day 45: Postiz – Open-Source Social Media Scheduling with AI – 7 Days of Docker

25. April 2026
.SHARE

Table of Contents

Managing multiple social media accounts is exhausting. Between juggling different platforms, scheduling posts at optimal times, and keeping up with analytics, it’s easy to feel overwhelmed. Commercial tools like Buffer and Hootsuite work well but come with hefty subscription fees and feature limitations. Enter Postiz – an open-source, self-hosted social media scheduling platform that puts you in complete control without the recurring costs.

What Does This Thing Actually Do?

Postiz is a comprehensive social media management tool that lets you schedule, publish, and analyze content across 18 different platforms from a single dashboard. Think of it as your personal social media command center – schedule posts weeks in advance, collaborate with your team, and use AI to optimize your content.

Built with NextJS, NestJS, and Prisma, Postiz offers:

  • 18 Platform Support – Instagram, Facebook, TikTok, Reddit, LinkedIn, X (Twitter), Threads, BlueSky, Mastodon, YouTube, Pinterest, Dribbble, Slack, Discord, Warpcast, Lemmy, Telegram, and Nostr
  • AI-Powered Content Creation – Generate posts, optimize content, and create stunning visuals with built-in AI tools
  • Cross-Platform Publishing – Schedule the same post across multiple channels simultaneously
  • Team Collaboration – Invite team members to collaborate, comment, and manage posts together
  • Analytics Dashboard – Track performance metrics and engagement across all platforms
  • Automation Features – Auto-post, auto-like, and auto-comment based on milestones
  • Visual Editor – Canva-like interface for creating social media graphics
  • Repeated Posts – Set posts to repeat automatically at specified intervals
  • Customer Separation – Group accounts per customer for agency workflows
  • API Access – Integrate with automation platforms like N8N, Make.com, and Zapier
  • Webhooks – Trigger actions when posts are published
  • Tagging System – Organize posts with colored tags for easy calendar filtering

Unlike hosted solutions, Postiz gives you complete data ownership and unlimited accounts without artificial limits. The self-hosted version has the exact same features as the cloud offering – no paywalls or premium tiers.

Docker Compose Setup

Postiz uses a multi-container setup with PostgreSQL for data storage and Redis for job queuing. Here’s the complete configuration:

Installation Steps

Getting Postiz running is straightforward with Docker Compose:

1. System Requirements

Ensure your system meets these minimum requirements:

  • Docker and Docker Compose installed
  • 2GB RAM minimum (tested on Ubuntu 24.04)
  • 2 vCPUs
  • Adequate disk space for media uploads

2. Generate JWT Secret

Create a secure random string for JWT authentication:

Copy this value and update the JWT_SECRET environment variable in your compose file.

3. Configure Your URLs

Update these environment variables with your actual domain or server IP:

4. Configure Database Credentials

Update the PostgreSQL password in both the database service and the DATABASE_URL:

5. Launch Postiz

6. Access the Interface

Open your browser and navigate to http://your-server-ip:5000 or your configured domain.

7. Important: HTTPS Configuration

Security Note: Postiz marks login cookies as secure, requiring HTTPS in production. Set up a reverse proxy (Nginx, Caddy, Traefik) with SSL certificates before using in production.

For development/testing without HTTPS, add this environment variable:

Warning: Never use NOT_SECURED=true in production environments.

Environment Variables Explained

MAIN_URL

Purpose: The primary URL where users access Postiz.

Format: Full URL with protocol

Example: https://postiz.yourdomain.com

This should match how users will access your Postiz installation.

FRONTEND_URL

Purpose: The public-facing frontend URL.

Format: Full URL with protocol

Example: https://postiz.yourdomain.com

Typically matches MAIN_URL for single-domain deployments.

NEXT_PUBLIC_BACKEND_URL

Purpose: Backend API endpoint accessible from web browsers.

Format: Full URL with protocol and /api path

Example: https://postiz.yourdomain.com/api

This variable is exposed to the browser, so it must be publicly accessible.

BACKEND_INTERNAL_URL

Purpose: Internal backend URL for service-to-service communication within Docker network.

Format: HTTP URL with port

Default: http://localhost:3000

Used for internal container communication. Keep as localhost when using Docker Compose.

JWT_SECRET

Purpose: Secures JWT authentication tokens.

Format: Random string, minimum 32 characters recommended

Security: Critical – must be unique for every installation

Generate with: openssl rand -base64 32

DATABASE_URL

Purpose: PostgreSQL connection string for data persistence.

Format: postgresql://user:password@host:port/database

Example: postgresql://postiz-user:postiz-password@postiz-postgres:5432/postiz-db-local

Must match the PostgreSQL service credentials in your docker-compose file.

REDIS_URL

Purpose: Redis connection for job queue management.

Format: redis://host:port

Example: redis://postiz-redis:6379

Redis handles background job processing and scheduled posts.

IS_GENERAL

Purpose: Required flag for self-hosted installations.

Format: Boolean string

Required Value: true

This must be set to “true” for self-hosted deployments to work correctly.

DISABLE_REGISTRATION

Purpose: Controls whether new users can register accounts.

Format: Boolean string

Default: false

Set to true to restrict registration after creating your initial account.

STORAGE_PROVIDER

Purpose: Defines where uploaded media files are stored.

Format: String (local or cloudflare)

Default: local

Use local for filesystem storage or cloudflare for Cloudflare R2 object storage.

UPLOAD_DIRECTORY

Purpose: Server-side path where uploads are stored.

Format: Absolute path

Default: /uploads

NEXT_PUBLIC_UPLOAD_DIRECTORY

Purpose: Public-facing path for accessing uploaded files.

Format: Path relative to web root

Default: /uploads

Should match UPLOAD_DIRECTORY for local storage.

OPENAI_API_KEY (Optional)

Purpose: Enables AI-powered content generation features.

Format: OpenAI API key string

Required for AI features like post generation and content optimization.

DISABLE_IMAGE_COMPRESSION (Optional)

Purpose: Disables automatic image optimization.

Format: Boolean string

Default: false

Set to true if you want to preserve original image quality.

Volume Mounts Explained

postiz-config

Purpose: Stores Postiz configuration files.

Mount Point: /config/

Alternative configuration method: mount a postiz.env file here instead of using docker-compose environment variables.

postiz-uploads

Purpose: Stores uploaded media files (images, videos).

Mount Point: /uploads/

Critical for preserving your media library across container restarts.

postgres-volume

Purpose: PostgreSQL database storage.

Mount Point: /var/lib/postgresql/data

Contains all your posts, schedules, accounts, and user data. Back this up regularly.

postiz-redis-data

Purpose: Redis job queue persistence.

Mount Point: /data

Preserves scheduled posts and background jobs during restarts.

Common Use Cases

Personal Brand Management

Schedule posts across all your social channels from one interface. Create content once, publish everywhere. Use AI to optimize post timing and content for maximum engagement.

Small Business Marketing

Manage multiple business accounts without expensive subscriptions. Schedule promotional campaigns, track analytics, and maintain consistent social presence without hiring an agency.

Social Media Agency

The customer separation feature makes Postiz perfect for agencies. Group client accounts, collaborate with team members, and manage dozens of brands from a single installation.

Content Creator Workflows

Plan content calendars weeks in advance. Use the visual editor to create graphics, schedule repeated posts for evergreen content, and leverage webhooks to trigger workflows when posts go live.

Developer Integration

Access the API to integrate Postiz with your custom applications, automate posting through N8N or Make.com, and build custom workflows around your social media strategy.

Configuring Social Media Platforms

To connect social media accounts, you’ll need API credentials from each platform. Add these to your environment variables:

Postiz uses official OAuth flows for all platforms – it never stores API keys or scrapes content. Users authenticate directly with each social network.

Useful Links

Conclusion

Postiz delivers enterprise-level social media management without the enterprise price tag. By self-hosting, you gain complete control over your data, avoid monthly subscription fees, and get unlimited accounts and team members. The AI-powered features rival commercial platforms, while the open-source nature means you can customize anything you need.

Whether you’re managing a personal brand, running a small business, or operating a full-service agency, Postiz scales to meet your needs. The comprehensive platform support means you can truly manage all your social media from one place, and the automation features free you from the constant grind of manual posting.

Set it up once with Docker Compose, configure your social accounts, and you’re ready to streamline your entire social media workflow.

FAQ

What is Postiz?

Postiz is an open-source, self-hosted social media scheduling and management platform that supports 18 different social networks. It provides AI-powered content creation, team collaboration, analytics, and automation features.

Is Postiz really free?

Yes, Postiz is released under the AGPL-3.0 license and is completely free to use. You only pay for your server hosting and any optional API services you choose to integrate (like OpenAI for AI features).

How does self-hosted Postiz compare to the cloud version?

There is no difference in features between the self-hosted and cloud versions. Both have identical functionality with no paywalls or premium tiers.

What are the system requirements?

Minimum 2GB RAM and 2 vCPUs are recommended. The setup has been tested on Ubuntu 24.04 but should work on any system supporting Docker.

Which social media platforms are supported?

Postiz supports Instagram, Facebook, TikTok, Reddit, LinkedIn, X (Twitter), Threads, BlueSky, Mastodon, YouTube, Pinterest, Dribbble, Slack, Discord, Warpcast, Lemmy, Telegram, and Nostr.

Do I need API keys for every platform?

Yes, to connect accounts from each platform, you’ll need to create OAuth applications and obtain API credentials. Postiz uses official OAuth flows for security.

Can I use Postiz without HTTPS?

For development/testing, you can set NOT_SECURED=true. However, production deployments require HTTPS because Postiz marks login cookies as secure for security reasons.

How do I set up HTTPS?

Use a reverse proxy like Nginx, Caddy, or Traefik in front of Postiz to handle SSL/TLS termination. Configure your proxy to forward requests to Postiz on port 5000.

Why is port 5000 the only exposed port?

Port 5000 is the unified entry point that handles both frontend and backend traffic. The internal services (frontend on 4200, backend on 3000) communicate within the Docker network and don’t need external exposure.

Can I change the PostgreSQL password?

Yes, update both the POSTGRES_PASSWORD environment variable in the postgres service and the password in the DATABASE_URL connection string.

What database does Postiz use?

Postiz uses PostgreSQL by default, but Prisma (the ORM) supports other databases like MariaDB and MySQL. PostgreSQL is recommended for best compatibility.

How do I enable AI features?

Add your OpenAI API key to the OPENAI_API_KEY environment variable. This enables AI-powered content generation and optimization features.

Can I disable user registration?

Yes, set DISABLE_REGISTRATION=true after creating your initial account. This prevents additional users from signing up.

How do I invite team members?

Through the Postiz interface, you can invite team members who can collaborate on posts, leave comments, and manage scheduled content.

What is customer separation?

Customer separation allows you to group social accounts by client/customer. This is particularly useful for agencies managing multiple clients from one installation.

Can I schedule the same post to multiple platforms?

Yes, Postiz supports cross-platform publishing. Create your content once and select multiple platforms to publish simultaneously.

What are repeated posts?

Repeated posts automatically republish at specified intervals. Perfect for evergreen content that should be shared regularly.

How do webhooks work in Postiz?

You can configure webhooks to trigger when posts are published. This allows integration with external systems and automation workflows.

Can I integrate Postiz with automation tools?

Yes, Postiz provides an API that works with N8N, Make.com, Zapier, and other automation platforms.

What storage options are available?

Postiz supports local filesystem storage (default) or Cloudflare R2 object storage for uploaded media files.

How do I switch to Cloudflare R2 storage?

Set STORAGE_PROVIDER=cloudflare and add your Cloudflare R2 credentials (CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_ACCESS_KEY, CLOUDFLARE_SECRET_ACCESS_KEY, CLOUDFLARE_BUCKETNAME, etc.).

Where are uploaded images stored?

By default, uploads are stored in the postiz-uploads Docker volume mounted at /uploads. This persists across container restarts.

Can I use an external PostgreSQL database?

Yes, update the DATABASE_URL to point to your external PostgreSQL instance and remove the postgres service from docker-compose.yml.

Can I use an external Redis instance?

Yes, update REDIS_URL to point to your external Redis server and remove the redis service from docker-compose.yml.

How do I update Postiz?

Pull the latest image and recreate containers: docker compose pull && docker compose up -d

How do I view logs?

View real-time logs with docker compose logs -f postiz or check specific services like docker compose logs -f postiz-postgres

What happens if Redis goes down?

Scheduled posts won’t be processed until Redis is back online. The healthcheck ensures Postiz waits for Redis to be healthy before starting.

How do I back up my data?

Back up the postgres-volume (contains all data), postiz-uploads (media files), and postiz-config (configuration). Use Docker volume backup tools or database dumps.

Does Postiz store my social media passwords?

No, Postiz never stores passwords or API keys. It uses official OAuth flows where users authenticate directly with each social platform.

Can I run Postiz on a Raspberry Pi?

Potentially, but performance may be limited. The Docker images should support ARM architectures, but you’ll need adequate RAM (minimum 2GB).

What license is Postiz under?

Postiz is licensed under AGPL-3.0, which means you can use, modify, and distribute it freely, but any modifications must also be open-sourced.

How do I configure OAuth for social platforms?

Each platform requires creating an OAuth application in their developer portal. Check the Postiz documentation for platform-specific guides.

Can I customize the Postiz interface?

Yes, since it’s open-source, you can modify the frontend code. The project is built with NextJS and SvelteKit.

Let’s Talk!

Looking for a reliable partner to bring your project to the next level? Whether it’s development, design, security, or ongoing support—I’d love to chat and see how I can help.

Get in touch,
and let’s create something amazing together!

RELATED POSTS

Font licensing is wild. Proxima Nova — one of the most-used typefaces on the entire web — will run you $65 per style, and a full family license easily clears $300. Futura? Brandon Grotesque? Circular (yes, Spotify’s font)? We’re talking hundreds of dollars before you’ve typed a single character. For personal projects, indie dev work, […]

So you want to set up email on a subdomain. Maybe you’re trying to route support@help.yourdomain.com to your helpdesk, or you want newsletters@mail.yourdomain.com to run through your ESP without torching your main domain’s reputation. Whatever the reason, you’ve landed on the right page. MX records for subdomains are one of those DNS topics that seem […]

If you have ever embedded an audio player on a podcast site, a music portfolio, or a media archive, you have probably noticed that pretty rendered waveform behind the playhead. Libraries like Wavesurfer.js and Peaks.js can draw those visuals on the client, but decoding a 60-minute MP3 in the browser is slow, memory-hungry, and unreliable […]

Alexander

I am a full-stack developer. My expertise include:

  • Server, Network and Hosting Environments
  • Data Modeling / Import / Export
  • Business Logic
  • API Layer / Action layer / MVC
  • User Interfaces
  • User Experience
  • Understand what the customer and the business needs


I have a deep passion for programming, design, and server architecture—each of these fuels my creativity, and I wouldn’t feel complete without them.

With a broad range of interests, I’m always exploring new technologies and expanding my knowledge wherever needed. The tech world evolves rapidly, and I love staying ahead by embracing the latest innovations.

Beyond technology, I value peace and surround myself with like-minded individuals.

I firmly believe in the principle: Help others, and help will find its way back to you when you need it.