Postiz
★ 37.0kA self-hosted alternative to Buffer
GNU Affero General Public License v3.0Open Source — No Paywall9 Containers — 9 containers — heavy hosting footprintDockerNeeds Postgres3+ active committers (12mo)
About
Postiz is a social media management platform aimed at individuals and teams that need to schedule, automate, and analyze social content. It supports publishing across multiple social networks and...
Community Ratings
No ratings yetNew this week
Read recap →Weekly Recap — Oct 2, 2026 – Oct 9, 2026Oct 9, 2026
Features
- social media post scheduling
- analytics
- team collaboration
- post exchange and buying
- comments and scheduling for team members
- API automation
- cross-posting
- repeated posts
- RSS auto-post
- AI features
Details
- Last Updated
- Oct 12, 2026
- Created
- Jul 8, 2023
- Install Methods
- docker
- Requirements
- PostgreSQLRedisstorageenvironment variables
- API
- REST
- Runtime / Stack
- Docker
- Privacy & Independence
- Cloud: Optional
- User Model
- Multi-User
- Deployment
Deployment: Docker Compose ✓9 Containers — heavy hosting footprintRuns as 9 containers
Run Postiz with Docker Compose
Compose file from the Postiz project repository.
9 services · database: postgres · infra: postgres, redis, elasticsearch · 4 unclassified (spotlight, auto-setup, admin-tools, ui)
no resource limits declared
needs persistent storage (7 volumes)
docker-compose.yaml · @ 7229c33 · scanned Sep 28, 2026
services:
postiz:
image: ghcr.io/gitroomhq/postiz-app:latest
container_name: postiz
restart: always
environment:
# === Required Settings
MAIN_URL: 'http://localhost:4007'
FRONTEND_URL: 'http://localhost:4007'
NEXT_PUBLIC_BACKEND_URL: 'http://localhost:4007/api'
JWT_SECRET: 'random string that is unique to every install - just type random characters here!'
DATABASE_URL: 'postgresql://postiz-user:postiz-password@postiz-postgres:5432/postiz-db-local'
REDIS_URL: 'redis://postiz-redis:6379'
BACKEND_INTERNAL_URL: 'http://localhost:3000'
TEMPORAL_ADDRESS: 'temporal:7233'
IS_GENERAL: 'true'
DISABLE_REGISTRATION: 'false'
# === Storage Settings
STORAGE_PROVIDER: 'local'
UPLOAD_DIRECTORY: '/uploads'
NEXT_PUBLIC_UPLOAD_DIRECTORY: '/uploads'
# === Cloudflare (R2) Settings
# STORAGE_PROVIDER: 'cloudflare'
# CLOUDFLARE_ACCOUNT_ID: 'your-account-id'
# CLOUDFLARE_ACCESS_KEY: 'your-access-key'
# CLOUDFLARE_SECRET_ACCESS_KEY: 'your-secret-access-key'
# CLOUDFLARE_BUCKETNAME: 'your-bucket-name'
# CLOUDFLARE_BUCKET_URL: 'https://your-bucket-url.r2.cloudflarestorage.com/'
# CLOUDFLARE_REGION: 'auto'
# === Social Media API Settings
X_URL: ''
X_API_KEY: ''
X_API_SECRET: ''
LINKEDIN_CLIENT_ID: ''
LINKEDIN_CLIENT_SECRET: ''
REDDIT_CLIENT_ID: ''
REDDIT_CLIENT_SECRET: ''
GITHUB_CLIENT_ID: ''
GITHUB_CLIENT_SECRET: ''
APPLE_CLIENT_ID: ''
APPLE_TEAM_ID: ''
APPLE_KEY_ID: ''
APPLE_PRIVATE_KEY: ''
BEEHIIVE_API_KEY: ''
BEEHIIVE_PUBLICATION_ID: ''
THREADS_APP_ID: ''
THREADS_APP_SECRET: ''
FACEBOOK_APP_ID: ''
FACEBOOK_APP_SECRET: ''
YOUTUBE_CLIENT_ID: ''
YOUTUBE_CLIENT_SECRET: ''
TIKTOK_CLIENT_ID: ''
TIKTOK_CLIENT_SECRET: ''
TIKTOK_BUSINESS_CLIENT_ID: ''
TIKTOK_BUSINESS_CLIENT_SECRET: ''
PINTEREST_CLIENT_ID: ''
PINTEREST_CLIENT_SECRET: ''
DRIBBBLE_CLIENT_ID: ''
DRIBBBLE_CLIENT_SECRET: ''
TUMBLR_CLIENT_ID: ''
TUMBLR_CLIENT_SECRET: ''
DISCORD_CLIENT_ID: ''
DISCORD_CLIENT_SECRET: ''
DISCORD_BOT_TOKEN_ID: ''
SLACK_ID: ''
SLACK_SECRET: ''
SLACK_SIGNING_SECRET: ''
MASTODON_URL: 'https://mastodon.social'
MASTODON_CLIENT_ID: ''
MASTODON_CLIENT_SECRET: ''
# === OAuth & Authentik Settings
# NEXT_PUBLIC_POSTIZ_OAUTH_DISPLAY_NAME: 'Authentik'
# NEXT_PUBLIC_POSTIZ_OAUTH_LOGO_URL: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/master/png/authentik.png'
# POSTIZ_GENERIC_OAUTH: 'false'
# POSTIZ_OAUTH_URL: 'https://auth.example.com'
# POSTIZ_OAUTH_AUTH_URL: 'https://auth.example.com/application/o/authorize'
# POSTIZ_OAUTH_TOKEN_URL: 'https://auth.example.com/application/o/token'
# POSTIZ_OAUTH_USERINFO_URL: 'https://authentik.example.com/application/o/userinfo'
# POSTIZ_OAUTH_CLIENT_ID: ''
# POSTIZ_OAUTH_CLIENT_SECRET: ''
# POSTIZ_OAUTH_SCOPE: "openid profile email" # Optional: uncomment to override default scope
# === Sentry
# NEXT_PUBLIC_SENTRY_DSN: 'http://spotlight:8969/stream'
# SENTRY_SPOTLIGHT: '1'
# === Misc Settings
OPENAI_API_KEY: ''
# Only this OAuth client can receive verified user email claims via OIDC.
OPENAI_OAUTH_CLIENT_ID: ''
NEXT_PUBLIC_DISCORD_SUPPORT: ''
NEXT_PUBLIC_POLOTNO: ''
API_LIMIT: 30
# === Payment / Stripe Settings
FEE_AMOUNT: 0.05
STRIPE_PUBLISHABLE_KEY: ''
STRIPE_SECRET_KEY: ''
STRIPE_SIGNING_KEY: ''
STRIPE_SIGNING_KEY_CONNECT: ''
# === Developer Settings
NX_ADD_PLUGINS: false
# === Short Link Service Settings (Optional - leave blank if unused)
# DUB_TOKEN: ""
# DUB_API_ENDPOINT: "https://api.dub.co"
# DUB_SHORT_LINK_DOMAIN: "dub.sh"
# SHORT_IO_SECRET_KEY: ""
# KUTT_API_KEY: ""
# KUTT_API_ENDPOINT: "https://kutt.it/api/v2"
# KUTT_SHORT_LINK_DOMAIN: "kutt.it"
# LINK_DRIP_API_KEY: ""
# LINK_DRIP_API_ENDPOINT: "https://api.linkdrip.com/v1/"
# LINK_DRIP_SHORT_LINK_DOMAIN: "dripl.ink"
volumes:
- postiz-config:/config/
- postiz-uploads:/uploads/
ports:
- '4007:5000'
networks:
- postiz-network
- temporal-network
depends_on:
postiz-postgres:
condition: service_healthy
postiz-redis:
condition: service_healthy
postiz-postgres:
image: postgres:17-alpine
container_name: postiz-postgres
restart: always
environment:
POSTGRES_PASSWORD: postiz-password
POSTGRES_USER: postiz-user
POSTGRES_DB: postiz-db-local
volumes:
- postgres-volume:/var/lib/postgresql/data
networks:
- postiz-network
healthcheck:
test: pg_isready -U postiz-user -d postiz-db-local
interval: 10s
timeout: 3s
retries: 3
postiz-redis:
image: redis:7.2
container_name: postiz-redis
restart: always
healthcheck:
test: redis-cli ping
interval: 10s
timeout: 3s
retries: 3
volumes:
- postiz-redis-data:/data
networks:
- postiz-network
# For Application Monitoring / Debugging
spotlight:
pull_policy: always
container_name: spotlight
ports:
- 8969:8969/tcp
image: ghcr.io/getsentry/spotlight:latest
networks:
- postiz-network
# -----------------------
# Temporal Stack
# -----------------------
temporal-elasticsearch:
container_name: temporal-elasticsearch
image: elasticsearch:7.17.27
environment:
- cluster.routing.allocation.disk.threshold_enabled=true
- cluster.routing.allocation.disk.watermark.low=512mb
- cluster.routing.allocation.disk.watermark.high=256mb
- cluster.routing.allocation.disk.watermark.flood_stage=128mb
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms256m -Xmx256m
- xpack.security.enabled=false
networks:
- temporal-network
expose:
- 9200
volumes:
- /var/lib/elasticsearch/data
temporal-postgresql:
container_name: temporal-postgresql
image: postgres:16
environment:
POSTGRES_PASSWORD: temporal
POSTGRES_USER: temporal
networks:
- temporal-network
expose:
- 5432
volumes:
- /var/lib/postgresql/data
temporal:
container_name: temporal
ports:
- '7233:7233'
image: temporalio/auto-setup:1.28.1
depends_on:
- temporal-postgresql
- temporal-elasticsearch
environment:
- DB=postgres12
- DB_PORT=5432
- POSTGRES_USER=temporal
- POSTGRES_PWD=temporal
- POSTGRES_SEEDS=temporal-postgresql
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development-sql.yaml
- ENABLE_ES=true
- ES_SEEDS=temporal-elasticsearch
- ES_VERSION=v7
- TEMPORAL_NAMESPACE=default
networks:
- temporal-network
volumes:
- ./dynamicconfig:/etc/temporal/config/dynamicconfig
labels:
kompose.volume.type: configMap
temporal-admin-tools:
container_name: temporal-admin-tools
image: temporalio/admin-tools:1.28.1-tctl-1.18.4-cli-1.4.1
environment:
- TEMPORAL_ADDRESS=temporal:7233
- TEMPORAL_CLI_ADDRESS=temporal:7233
networks:
- temporal-network
stdin_open: true
depends_on:
- temporal
tty: true
temporal-ui:
container_name: temporal-ui
image: temporalio/ui:2.34.0
environment:
- TEMPORAL_ADDRESS=temporal:7233
- TEMPORAL_CORS_ORIGINS=http://127.0.0.1:3000
networks:
- temporal-network
ports:
- '8080:8080'
volumes:
postgres-volume:
external: false
postiz-redis-data:
external: false
postiz-config:
external: false
postiz-uploads:
external: false
networks:
postiz-network:
external: false
temporal-network:
driver: bridge
name: temporal-network
This file may be out of date. Check the Postiz documentation for current setup steps.
Tags
Track your self-hosted stack
Bookmark software to try, rate tools you've used, and keep your collection in one place.
Metadata extracted from README on Sep 28, 2026
Related Software
Socioboard
1.5k
Socioboard is a social media management and content marketing platform for planning, scheduling, managing, and reporting on social media activity.
Analytics ToolsSocial MediaAutomation Tools+3
Open Core
Mixpost
133
Mixpost is a social media management platform for scheduling content, managing accounts, and collaborating with teams.
Analytics ToolsAutomation ToolsSocial Media+4
Open Core
Upvote RSS
505
Generates rich RSS feeds from popular posts on social aggregation sites like Reddit, Hacker News, Lemmy, Lobsters, PieFed, Mbin, and GitHub.
RSS Feed ReadersSelf Hosting SolutionsAutomation Tools+3
Dreeve
2.1k
Dreeve is a self-hosted, open-source dashboard for sports and fitness data.
Health & FitnessPersonal DashboardsAnalytics Tools+4
3 ContainersFully FOSS
TuxSEO
59
TuxSEO is an open-source, self-hostable platform for automated blog content creation and SEO-focused content ideation.
Blogging PlatformsArtificial IntelligenceSEO Tools+5
FeedCord
321
FeedCord is a self-hosted RSS and YouTube feed reader that posts updates to Discord channels via webhooks.
RSS Feed ReadersPermissive LicenseAutomation Tools+2
OpenExecutive
5.6k
An AI executive assistant platform that provides a unified virtual leadership voice backed by specialist agents for strategy, finance, HR, legal, operations, marketing, product, and board communications.
Artificial IntelligenceAI AgentsAI RAG Systems+4
2 ContainersCloud Required
Fork Recipes
69
A Django-based frontend web application for managing food recipe collections through ForkApi.
Recipe ManagersArtificial IntelligencePermissive License+2
Cloud Required
MintHCM
439
MintHCM is an open-source, AI-native HCM platform for building and deploying customizable HR systems powered by AI agents.
HR ManagementTime TrackingSelf Hosting Solutions+3
3 Containers
EventSchedule
87
An open-source platform for publishing calendars, taking registrations, selling tickets, and managing event communities.
Polls and EventsScheduling and BookingsCalendar and Contacts+3
Fully FOSS
Youtarr
1.7k
A self-hosted YouTube downloader that auto-downloads videos from subscribed channels and playlists, then organizes and syncs them with media servers like Plex, Jellyfin, and Emby.
Media ManagementMedia ServersAutomation Tools+2
2 Containers
Cronicle
5.9k
A multi-server task scheduler and runner with a web-based UI for scheduled, repeating, and on-demand jobs.
Automation ToolsTask RunnersScheduling and Bookings+2
