# documentation: https://docs.postiz.com # slogan: Open source social media scheduling tool. # tags: post everywhere, social media, planning # logo: svgs/postiz.svg # port: 5000 services: postiz: image: ghcr.io/gitroomhq/postiz-app:latest environment: - SERVICE_FQDN_POSTIZ_5000 - MAIN_URL=${SERVICE_FQDN_POSTIZ} - FRONTEND_URL=${SERVICE_FQDN_POSTIZ} - NEXT_PUBLIC_BACKEND_URL=${SERVICE_FQDN_POSTIZ}/api - JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET} - DATABASE_URL=postgresql://postgres:${SERVICE_PASSWORD_POSTGRESQL}@postgres:5432/${POSTGRESQL_DATABASE:-postiz-db} - REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379 - BACKEND_INTERNAL_URL=http://localhost:3000 # Cloudflare R2 Settings - CLOUDFLARE_ACCOUNT_ID=${CLOUDFLARE_ACCOUNT_ID} - CLOUDFLARE_ACCESS_KEY=${CLOUDFLARE_ACCESS_KEY} - CLOUDFLARE_SECRET_ACCESS_KEY=${CLOUDFLARE_SECRET_ACCESS_KEY} - CLOUDFLARE_BUCKETNAME=${CLOUDFLARE_BUCKETNAME} - CLOUDFLARE_BUCKET_URL=${CLOUDFLARE_BUCKET_URL} - CLOUDFLARE_REGION=${CLOUDFLARE_REGION} # Storage Settings - STORAGE_PROVIDER=${STORAGE_PROVIDER:-local} - UPLOAD_DIRECTORY=${UPLOAD_DIRECTORY:-/uploads} - NEXT_PUBLIC_UPLOAD_DIRECTORY=${NEXT_PUBLIC_UPLOAD_DIRECTORY:-/uploads} - NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY=${NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY} # Email Settings - RESEND_API_KEY=${RESEND_API_KEY} - EMAIL_FROM_ADDRESS=${EMAIL_FROM_ADDRESS} - EMAIL_FROM_NAME=${EMAIL_FROM_NAME} - EMAIL_PROVIDER=${EMAIL_PROVIDER} # Social Media API Settings - X_API_KEY=${SERVICE_X_API} - X_API_SECRET=${SERVICE_X_SECRET} - LINKEDIN_CLIENT_ID=${SERVICE_LINKEDIN_ID} - LINKEDIN_CLIENT_SECRET=${SERVICE_LINKEDIN_SECRET} - REDDIT_CLIENT_ID=${SERVICE_REDDIT_API} - REDDIT_CLIENT_SECRET=${SERVICE_REDDIT_SECRET} - GITHUB_CLIENT_ID=${SERVICE_GITHUB_ID} - GITHUB_CLIENT_SECRET=${SERVICE_GITHUB_SECRET} - THREADS_APP_ID=${SERVICE_THREADS_ID} - THREADS_APP_SECRET=${SERVICE_THREADS_SECRET} - FACEBOOK_APP_ID=${SERVICE_FACEBOOK_ID} - FACEBOOK_APP_SECRET=${SERVICE_FACEBOOK_SECRET} - YOUTUBE_CLIENT_ID=${SERVICE_YOUTUBE_ID} - YOUTUBE_CLIENT_SECRET=${SERVICE_YOUTUBE_SECRET} - TIKTOK_CLIENT_ID=${SERVICE_TIKTOK_ID} - TIKTOK_CLIENT_SECRET=${SERVICE_TIKTOK_SECRET} - PINTEREST_CLIENT_ID=${SERVICE_PINTEREST_ID} - PINTEREST_CLIENT_SECRET=${SERVICE_PINTEREST_SECRET} - DRIBBBLE_CLIENT_ID=${SERVICE_DRIBBLE_ID} - DRIBBBLE_CLIENT_SECRET=${SERVICE_DRIBBLE_SECRET} - DISCORD_CLIENT_ID=${SERVICE_DISCORD_ID} - DISCORD_CLIENT_SECRET=${SERVICE_DISCORD_SECRET} - DISCORD_BOT_TOKEN_ID=${SERVICE_DISCORD_TOKEN} - SLACK_ID=${SERVICE_SLACK_ID} - SLACK_SECRET=${SERVICE_SLACK_SECRET} - SLACK_SIGNING_SECRET=${SLACK_SIGNING_SECRET} - MASTODON_CLIENT_ID=${SERVICE_MASTODON_ID} - MASTODON_CLIENT_SECRET=${SERVICE_MASTODON_SECRET} # Integration APIs - BEEHIIVE_API_KEY=${SERVICE_BEEHIIVE_KEY} - BEEHIIVE_PUBLICATION_ID=${SERVICE_BEEHIIVE_PUBID} - OPENAI_API_KEY=${SERVICE_OPENAI_KEY} # Misc Settings - NEXT_PUBLIC_DISCORD_SUPPORT=${NEXT_PUBLIC_DISCORD_SUPPORT} - NEXT_PUBLIC_POLOTNO=${NEXT_PUBLIC_POLOTNO} - IS_GENERAL=true - NX_ADD_PLUGINS=${NX_ADD_PLUGINS:-false} # Payment Settings - FEE_AMOUNT=${FEE_AMOUNT:-0.05} - STRIPE_PUBLISHABLE_KEY=${STRIPE_PUBLISHABLE_KEY} - STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY} - STRIPE_SIGNING_KEY=${STRIPE_SIGNING_KEY} - STRIPE_SIGNING_KEY_CONNECT=${STRIPE_SIGNING_KEY_CONNECT} volumes: - postiz_config:/config/ - postiz_uploads:/uploads/ depends_on: postgres: condition: service_healthy redis: condition: service_healthy healthcheck: test: - CMD-SHELL - wget -qO- http://127.0.0.1:5000/ interval: 5s timeout: 20s retries: 10 postgres: image: postgres:14.5 volumes: - postiz_postgresql_data:/var/lib/postgresql/data environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} - POSTGRES_DB=${POSTGRESQL_DATABASE:-postiz-db} healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB:-postiz-db}"] interval: 5s timeout: 20s retries: 10 redis: image: redis:7.2 environment: - REDIS_PASSWORD=${SERVICE_PASSWORD_REDIS} command: redis-server --requirepass ${SERVICE_PASSWORD_REDIS} volumes: - postiz_redis_data:/data healthcheck: test: - CMD - redis-cli - -a - ${SERVICE_PASSWORD_REDIS} - ping interval: 5s timeout: 10s retries: 20