Files
social/docker-compose.yaml
zeekay fea2a2612f rebrand: full identifier sweep — @social/ paths, social-* pkgs, zero postiz/gitroom
Complete rebrand. Code now reads as a first-party Hanzo project, not
a forked codebase with upstream identifiers leaking through.

tsconfig path aliases (9 entries):
  @gitroom/backend          → @social/backend
  @gitroom/frontend         → @social/frontend
  @gitroom/helpers          → @social/helpers
  @gitroom/nestjs-libraries → @social/nestjs-libraries
  @gitroom/react            → @social/react
  @gitroom/plugins          → @social/plugins
  @gitroom/orchestrator     → @social/orchestrator
  @gitroom/extension        → @social/extension

Workspace package names (apps/*/package.json):
  postiz-backend       → social-backend
  postiz-frontend      → social-frontend
  postiz-orchestrator  → social-orchestrator
  postiz-extension     → social-extension
  postiz-command       → social-command
  @postiz/node         → @social/node

Swept across 477 files: every import statement, env var (POSTIZ_*→SOCIAL_*),
identifier (featured_by_gitroom→featured_by_social, FEATURED_BY_GITROOM enum
key→FEATURED_BY_SOCIAL), prose mention, FAQ string, and i18n value in all
23 locale JSONs.

Preserved (required by AGPL-3.0): upstream-fork attribution in SECURITY.md,
README.md, CLAUDE.md ("hard fork of gitroomhq/postiz-app"). Required for
license compliance; not used by any code path.

Preserved (external npm dep): @postiz/wallets — this is a published wallet
provider package, not workspace code. We pull it as a normal dependency.

Verification: `grep -riE "postiz|gitroom" --include={ts,tsx,json,mjs,js,md,yaml,yml}`
excluding node_modules + legal docs + i18n.lock returns 0.
2026-06-10 21:39:29 -07:00

270 lines
7.5 KiB
YAML

services:
social:
image: ghcr.io/hanzoai/social:latest
container_name: social
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://social-user:social-password@social-postgres:5432/social-db-local'
REDIS_URL: 'redis://social-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: ''
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: ''
PINTEREST_CLIENT_ID: ''
PINTEREST_CLIENT_SECRET: ''
DRIBBBLE_CLIENT_ID: ''
DRIBBBLE_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_SOCIAL_OAUTH_DISPLAY_NAME: 'Authentik'
# NEXT_PUBLIC_SOCIAL_OAUTH_LOGO_URL: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/master/png/authentik.png'
# SOCIAL_GENERIC_OAUTH: 'false'
# SOCIAL_OAUTH_URL: 'https://auth.example.com'
# SOCIAL_OAUTH_AUTH_URL: 'https://auth.example.com/application/o/authorize'
# SOCIAL_OAUTH_TOKEN_URL: 'https://auth.example.com/application/o/token'
# SOCIAL_OAUTH_USERINFO_URL: 'https://authentik.example.com/application/o/userinfo'
# SOCIAL_OAUTH_CLIENT_ID: ''
# SOCIAL_OAUTH_CLIENT_SECRET: ''
# SOCIAL_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: ''
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:
- social-config:/config/
- social-uploads:/uploads/
ports:
- "4007:5000"
networks:
- social-network
- temporal-network
depends_on:
social-postgres:
condition: service_healthy
social-redis:
condition: service_healthy
social-postgres:
image: postgres:17-alpine
container_name: social-postgres
restart: always
environment:
POSTGRES_PASSWORD: social-password
POSTGRES_USER: social-user
POSTGRES_DB: social-db-local
volumes:
- postgres-volume:/var/lib/postgresql/data
networks:
- social-network
healthcheck:
test: pg_isready -U social-user -d social-db-local
interval: 10s
timeout: 3s
retries: 3
social-redis:
image: redis:7.2
container_name: social-redis
restart: always
healthcheck:
test: redis-cli ping
interval: 10s
timeout: 3s
retries: 3
volumes:
- social-redis-data:/data
networks:
- social-network
# For Application Monitoring / Debugging
spotlight:
pull_policy: always
container_name: spotlight
ports:
- 8969:8969/tcp
image: ghcr.io/getsentry/spotlight:latest
networks:
- social-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
social-redis-data:
external: false
social-config:
external: false
social-uploads:
external: false
networks:
social-network:
external: false
temporal-network:
driver: bridge
name: temporal-network