How to Self-Host Postiz on Docker: The Complete 2026 Setup Guide

Published September 13, 2026 · Social Media Tools · 12 min read

Postiz is the open-source social media scheduling tool that indie creators and small teams are choosing over expensive SaaS platforms like Buffer and Hootsuite. With Postiz, you can schedule posts across YouTube, TikTok, Instagram, Facebook, X (Twitter), LinkedIn, Reddit, Pinterest, Google Business, and GitLab — all from a single dashboard, running on a server you own for less than $10/month. In this guide, you'll learn exactly how to self-host Postiz on Docker, step by step.

Want to skip the server setup? Try the hosted Postiz free trial — same features, zero maintenance.

Try Postiz Free →

What Is Postiz?

Postiz is an open-source, agentic social media scheduling and automation platform released under the AGPL-3.0 license. It started as a self-hostable alternative to commercial tools like Buffer and Later, and has since evolved into a full-featured social media OS with AI capabilities.

Unlike hosted-only tools, Postiz gives you two options:

Critically, the Postiz team states that "there is no difference between the hosted version and the self-hosted version" in terms of features. You get 100% of the functionality either way.

Why Self-Host Postiz on Docker?

Running Postiz on Docker gives you several advantages over the hosted version and every commercial alternative:

Postiz vs. Buffer vs. Hootsuite vs. Later (2026)

Here's how Postiz stacks up against the established paid tools:

Feature Postiz Buffer Hootsuite Later
Price (monthly) Free (self-hosted) $6+/platform $99+/month $18+/month
Open source ✅ AGPL-3.0
Self-hostable ✅ Docker
AI caption generation ✅ Built-in ✅ Add-on Limited
Team collaboration
Public API Limited
N8N/Make integration ✅ Native Zapier only Zapier only Zapier only
AI Agent CLI

Minimum Requirements for Self-Hosting Postiz

Before starting, make sure your server meets these requirements:

Component Minimum Recommended
CPU1 core2+ cores
RAM1 GB2 GB
Disk10 GB20+ GB
OSLinux (Ubuntu 20.04+)Ubuntu 22.04 LTS
Docker20.10+Latest stable
Docker Composev2v2 latest

A budget VPS such as Hetzner Cloud (CX11 — ~$5/month), DigitalOcean Basic ($4–$6/month), or Oracle Cloud Free Tier all easily handle a personal Postiz installation.

Note: If you want to connect many social media accounts or have a team using the same instance, scale up RAM and CPU accordingly. A media-heavy workflow (uploading lots of video) will also need more disk space.

Step-by-Step: Installing Postiz on Docker

Step 1: Spin Up a VPS

Create a new Ubuntu 22.04 LTS server. You'll connect via SSH as root or a sudo user. If you're using Oracle Cloud Free Tier, use the always-free Ampere A1 shape (4 cores, 24GB RAM) — it's more than sufficient for Postiz and many other self-hosted projects.

ssh root@your-server-ip
apt update && apt upgrade -y

Step 2: Install Docker and Docker Compose

Postiz distributes as a Docker image, so you need Docker Engine and Docker Compose installed. The easiest method is using the official convenience script:

curl -fsSL https://get.docker.com | sh
docker --version
docker compose version

If docker compose isn't available after install, install the plugin separately:

apt install docker-compose-plugin -y

Step 3: Create the Postiz Directory

mkdir -p /opt/postiz
cd /opt/postiz

Step 4: Create the Docker Compose File

Create a file named docker-compose.yml inside /opt/postiz. This is the standard Postiz Docker Compose configuration:

version: "3.8"

services:
  postiz:
    image: ghcr.io/gitroomhq/postiz-app/frontend:latest
    container_name: postiz_frontend
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - FRONTEND_URL=http://localhost:3000
      - BACKEND_URL=http://postiz_backend:3001
      - NEXTAUTH_SECRET=your-secret-here
      - NEXTAUTH_URL=http://localhost:3000
    depends_on:
      - postiz_backend
    networks:
      - postiz_network

  postiz_backend:
    image: ghcr.io/gitroomhq/postiz-app/backend:latest
    container_name: postiz_backend
    restart: unless-stopped
    ports:
      - "3001:3001"
    environment:
      - FRONTEND_URL=http://localhost:3000
      - DATABASE_URL=postgresql://postiz:change_password@postiz_db:5432/postiz
      - REDIS_URL=redis://postiz_redis:6379
      - NEXTAUTH_SECRET=your-secret-here
      - NEXTAUTH_URL=http://localhost:3000
    depends_on:
      - postiz_db
      - postiz_redis
    networks:
      - postiz_network

  postiz_db:
    image: postgres:16-alpine
    container_name: postiz_db
    restart: unless-stopped
    environment:
      - POSTGRES_USER=postiz
      - POSTGRES_PASSWORD=change_password
      - POSTGRES_DB=postiz
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - postiz_network

  postiz_redis:
    image: redis:7-alpine
    container_name: postiz_redis
    restart: unless-stopped
    volumes:
      - redis_data:/data
    networks:
      - postiz_network

volumes:
  postgres_data:
  redis_data:

networks:
  postiz_network:
    driver: bridge
Security tip: Change change_password and generate a strong NEXTAUTH_SECRET using openssl rand -base64 32. In production, use environment files or a secrets manager instead of hardcoding values in the compose file.

Step 5: Launch Postiz

With the compose file in place, start all containers:

cd /opt/postiz
docker compose up -d

Docker will pull the Postiz frontend, backend, PostgreSQL, and Redis images, then start them all. This takes 2–5 minutes on a fresh VPS. Check the status:

docker compose ps
docker compose logs -f

When you see logs indicating the backend and frontend are responding, Postiz is running.

Step 6: Set Up a Reverse Proxy (Recommended)

Direct access on ports 3000/3001 is fine for testing, but for a production setup you want HTTPS and a clean domain. Install Caddy as a reverse proxy — it automatically handles Let's Encrypt certificates:

apt install -y caddy

Edit /etc/caddy/Caddyfile:

postiz.yourdomain.com {
    reverse_proxy localhost:3000
}

Then:

caddy fmt /etc/caddy/Caddyfile --overwrite
systemctl reload caddy

Now navigate to https://postiz.yourdomain.com — you'll see the Postiz login screen. Register your first account. The first user registered becomes the admin.

Want the hosted version instead? Skip the server setup and start scheduling in minutes with the Postiz cloud trial.

Try Postiz Free →

How to Update Postiz Docker Installation

Postiz releases updates regularly. To update your self-hosted instance to the latest version:

cd /opt/postiz
docker compose pull
docker compose up -d

Docker pulls the new images and recreates the containers, preserving your volumes (database and Redis data). Updates typically take under 2 minutes.

To check which version you're running:

docker compose images

Connecting Your Social Media Accounts

Once logged in to your Postiz dashboard, connecting platforms is straightforward:

  1. Go to Settings → Channels
  2. Click Add Channel and select your platform (YouTube, TikTok, Instagram, Facebook, X, LinkedIn, Reddit, Pinterest, Google Business, or GitLab)
  3. Authenticate with OAuth — Postiz never stores your passwords, only OAuth tokens
  4. Assign the channel to your workspace

Postiz supports connecting multiple accounts per platform, making it practical for agencies and creators managing several brands.

Using the Postiz AI Agent CLI

One of Postiz's most forward-looking features is its Agent CLI — a structured tool interface that lets AI agents interact with your social media scheduler. This is useful for automated workflows where an AI decides what to post based on data it analyzes.

To set up the Agent CLI, install it in your automation environment and point it at your self-hosted Postiz instance's API endpoint. The Postiz GitHub repository has full documentation for the agent interface and available tools.

Popular use cases include:

Backing Up Your Postiz Data

Because Postiz stores everything in PostgreSQL and Redis (both with Docker volumes), a simple backup script protects your data:

#!/bin/bash
BACKUP_DIR="/opt/postiz_backups"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)
docker compose exec -T postiz_db pg_dump -U postiz postiz > $BACKUP_DIR/postiz_db_$DATE.sql
find $BACKUP_DIR -name "postiz_db_*.sql" -mtime +7 -delete
echo "Backup saved: postiz_db_$DATE.sql"

Run this daily via cron. Store backups on a separate volume or off-server for disaster recovery.

Troubleshooting Common Postiz Docker Issues

Postiz won't start after a reboot

Ensure Docker is set to start on boot: systemctl enable docker. With restart: unless-stopped in the compose file, containers should restart automatically after a server reboot.

Out of memory errors

Postiz (especially the Node.js backend) needs adequate RAM. 1GB works for light use; 2GB is the safe minimum for a VPS with other processes. Add swap if you're tight on RAM:

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Database connection errors

If the backend shows ECONNREFUSED errors, the database container may not be fully ready when the backend starts. The depends_on directive waits for the container to start but not for PostgreSQL to be fully initialized. Add a healthcheck to the database service or simply restart the backend after 30 seconds: docker compose restart postiz_backend.

Social media posts not publishing

Check the Redis and backend logs: docker compose logs postiz_backend | grep ERROR. Many publishing failures trace back to expired OAuth tokens — reconnect the channel in Settings → Channels.

Conclusion

Self-hosting Postiz on Docker is one of the smartest moves a creator, marketer, or small team can make in 2026. You get a professional-grade social media scheduling platform — with AI caption generation, team collaboration, multi-account support, an open API, and native N8N/Make.com integrations — for the cost of a budget VPS. There's no monthly per-seat fee, no vendor lock-in, and full data ownership.

The setup takes under 30 minutes, updates are a two-command operation, and the Postiz community is active on GitHub and Reddit's r/selfhosted. Whether you're a solo creator posting to three platforms or a team managing a dozen client accounts, Postiz on Docker scales to fit.

Prefer to skip the server maintenance? Try the hosted version of Postiz — all the same features, deployed and managed for you.

Get Started with Postiz Free →

Frequently Asked Questions

What is Postiz and why self-host it?

Postiz is an open-source, agentic social media scheduling tool that supports YouTube, TikTok, Instagram, Facebook, X, LinkedIn, Reddit, Pinterest, and more. Self-hosting it on Docker gives you full data ownership, zero monthly fees, and a setup that runs on a $5 VPS or even a NAS in your closet.

What are the minimum requirements to self-host Postiz on Docker?

Postiz requires a Linux server with Docker and Docker Compose installed, at least 1GB RAM (2GB recommended), 10GB disk space, and Docker version 20.10 or later. A $5–10/month VPS from providers like Hetzner, DigitalOcean, or Oracle Free Tier works well.

How long does it take to set up Postiz on Docker?

A typical Docker-based Postiz installation takes 10–20 minutes on a fresh VPS. The official one-click deploy via Railway or the Docker Compose method both get you from zero to a fully working dashboard in well under half an hour.

Can I use Postiz with AI agents and automation tools?

Yes. Postiz includes a public API and SDKs for Node.js, N8N, Make.com, and Zapier. The new Agent CLI also lets AI agents like Claude or OpenClaw schedule posts directly through a structured tool interface — making it a powerful hub for AI-driven social media workflows.

How does Postiz compare to Buffer or Hootsuite?

Buffer and Hootsuite charge $6–$99/month per platform or per seat. Postiz is free and open-source under the AGPL-3.0 license. It supports nearly all the same platforms (YouTube, TikTok, Instagram, Facebook, X, LinkedIn, Reddit, Pinterest, Google Business, GitLab), adds AI caption generation, team collaboration, and self-hosting — all for the cost of your own server.

Does self-hosting Postiz mean I lose updates?

No. The self-hosted version receives the same feature updates as the hosted version — there is no difference in functionality between the two, according to the Postiz team. You pull the latest Docker image to update, keeping your instance current with every release.