2024-11-08 03:39:47 +00:00
|
|
|
# documentation: https://docs.postiz.com
|
|
|
|
|
# slogan: Open source social media scheduling tool.
|
|
|
|
|
# tags: post everywhere, social media, planning
|
|
|
|
|
# logo: svgs/postiz.svg
|
2024-11-02 19:46:33 +00:00
|
|
|
# port: 5000
|
2024-09-23 08:46:30 +00:00
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
postiz:
|
2024-11-21 15:05:55 +00:00
|
|
|
image: 'ghcr.io/gitroomhq/postiz-app:latest'
|
2024-09-23 08:46:30 +00:00
|
|
|
environment:
|
2024-11-21 15:05:55 +00:00
|
|
|
# Required Settings
|
2024-11-02 19:46:33 +00:00
|
|
|
- SERVICE_FQDN_POSTIZ_5000
|
2024-11-21 15:05:55 +00:00
|
|
|
- 'MAIN_URL=${SERVICE_FQDN_POSTIZ}'
|
|
|
|
|
- 'FRONTEND_URL=${SERVICE_FQDN_POSTIZ}'
|
|
|
|
|
- 'NEXT_PUBLIC_BACKEND_URL=${SERVICE_FQDN_POSTIZ}/api'
|
|
|
|
|
- 'DATABASE_URL=postgresql://${SERVICE_USER_POSTGRESQL}:${SERVICE_PASSWORD_POSTGRESQL}@postgres:5432/${POSTGRESQL_DATABASE:-postiz-db}'
|
|
|
|
|
- 'REDIS_URL=redis://${SERVICE_USER_REDIS}:${SERVICE_PASSWORD_REDIS}@redis:6379'
|
|
|
|
|
- 'JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET}'
|
|
|
|
|
- '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}'
|
|
|
|
|
|
|
|
|
|
# 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=${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}'
|
|
|
|
|
|
2024-09-23 08:46:30 +00:00
|
|
|
volumes:
|
2024-11-21 15:05:55 +00:00
|
|
|
- 'postiz_config:/config/'
|
|
|
|
|
- 'postiz_uploads:/uploads/'
|
2024-09-23 08:46:30 +00:00
|
|
|
depends_on:
|
2024-11-08 20:11:18 +00:00
|
|
|
postgres:
|
2024-11-08 13:07:01 +00:00
|
|
|
condition: service_healthy
|
2024-11-08 20:11:18 +00:00
|
|
|
redis:
|
2024-09-23 08:46:30 +00:00
|
|
|
condition: service_healthy
|
2024-11-08 13:07:01 +00:00
|
|
|
healthcheck:
|
2024-11-21 15:05:55 +00:00
|
|
|
test:
|
|
|
|
|
- CMD-SHELL
|
|
|
|
|
- 'wget -qO- http://127.0.0.1:5000/'
|
2024-11-08 13:07:01 +00:00
|
|
|
interval: 5s
|
|
|
|
|
timeout: 20s
|
|
|
|
|
retries: 10
|
|
|
|
|
|
2024-11-08 20:11:18 +00:00
|
|
|
postgres:
|
2024-11-21 15:05:55 +00:00
|
|
|
image: 'postgres:14.5'
|
2024-09-23 08:46:30 +00:00
|
|
|
volumes:
|
2024-11-21 15:05:55 +00:00
|
|
|
- 'postiz_postgresql_data:/var/lib/postgresql/data'
|
2024-09-23 08:46:30 +00:00
|
|
|
environment:
|
2024-11-21 15:05:55 +00:00
|
|
|
- 'POSTGRES_USER=${SERVICE_USER_POSTGRESQL}'
|
|
|
|
|
- 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}'
|
|
|
|
|
- 'POSTGRES_DB=${POSTGRESQL_DATABASE:-postiz-db}'
|
2024-09-23 08:46:30 +00:00
|
|
|
healthcheck:
|
2024-11-21 15:05:55 +00:00
|
|
|
test:
|
|
|
|
|
- CMD-SHELL
|
|
|
|
|
- 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'
|
2024-09-23 08:46:30 +00:00
|
|
|
interval: 5s
|
|
|
|
|
timeout: 20s
|
|
|
|
|
retries: 10
|
2024-11-08 13:07:01 +00:00
|
|
|
|
2024-11-08 20:11:18 +00:00
|
|
|
redis:
|
2024-11-21 15:05:55 +00:00
|
|
|
image: 'redis:7.2'
|
|
|
|
|
command: >
|
|
|
|
|
redis-server
|
|
|
|
|
--port 6379
|
|
|
|
|
--save 60 1
|
|
|
|
|
--loglevel warning
|
|
|
|
|
--protected-mode yes
|
|
|
|
|
--aclfile /data/users.acl
|
2024-09-23 08:46:30 +00:00
|
|
|
volumes:
|
2024-11-21 15:05:55 +00:00
|
|
|
- 'postiz_redis_data:/data'
|
|
|
|
|
- type: tmpfs
|
|
|
|
|
target: /tmp
|
2024-09-23 08:46:30 +00:00
|
|
|
healthcheck:
|
2024-11-08 03:39:47 +00:00
|
|
|
test:
|
|
|
|
|
- CMD
|
|
|
|
|
- redis-cli
|
2024-11-21 15:05:55 +00:00
|
|
|
- '-u'
|
|
|
|
|
- 'redis://${SERVICE_USER_REDIS}:${SERVICE_PASSWORD_REDIS}@localhost:6379'
|
|
|
|
|
- ping
|
2024-09-23 08:46:30 +00:00
|
|
|
interval: 5s
|
2024-11-08 13:07:01 +00:00
|
|
|
timeout: 10s
|
|
|
|
|
retries: 20
|
2024-11-21 15:05:55 +00:00
|
|
|
deploy:
|
|
|
|
|
resources:
|
|
|
|
|
limits:
|
|
|
|
|
memory: 256M
|
|
|
|
|
entrypoint: >
|
|
|
|
|
sh -c "
|
|
|
|
|
echo 'user default off' > /data/users.acl &&
|
|
|
|
|
echo 'user ${SERVICE_USER_REDIS} on >${SERVICE_PASSWORD_REDIS} ~* &* +@all' >> /data/users.acl &&
|
|
|
|
|
redis-server --aclfile /data/users.acl
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
postiz_config:
|
|
|
|
|
driver: local
|
|
|
|
|
postiz_uploads:
|
|
|
|
|
driver: local
|
|
|
|
|
postiz_postgresql_data:
|
|
|
|
|
driver: local
|
|
|
|
|
postiz_redis_data:
|
|
|
|
|
driver: local
|