Files
compose-files/postiz/compose.yaml
T
Arnout van Westen 03b1607e79 revert(infra): back to bridge networking, remove TNC dependency
Per request: TNC removed, all stacks back on default bridge with legacy
links for inter-container DNS (default bridge has no embedded DNS —
verified: nameserver passthrough to AdGuard). Kept: traefik router labels
(dnsweaver records), dawarich prod + SECRET_KEY_BASE, teslamate/bookorbit
hostport removals (service DNS now via links), komodo periphery as
separate project with 8120 hostport + server address change.
2026-10-05 10:15:39 +02:00

178 lines
5.9 KiB
YAML

services:
postiz:
image: ghcr.io/gitroomhq/postiz-app:v2.25.0
container_name: postiz
restart: always
network_mode: bridge
environment:
# === Required Settings
MAIN_URL: "https://postiz.arnoutvw.nl"
FRONTEND_URL: "https://postiz.arnoutvw.nl"
NEXT_PUBLIC_BACKEND_URL: "https://postiz.arnoutvw.nl/api"
JWT_SECRET: "2d711fd7f902226ec94dae306b99d825a8f7f419"
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"
IS_GENERAL: "true"
DISABLE_REGISTRATION: "false"
# === Storage Settings
STORAGE_PROVIDER: "local"
UPLOAD_DIRECTORY: "/uploads"
NEXT_PUBLIC_UPLOAD_DIRECTORY: "/uploads"
# CLOUDFLARE_ACCOUNT_ID: "RIoS13p4D5weDFO0pB6beC5N5zZERraPM0SDs69l"
CLOUDFLARE_ACCOUNT_ID: "65245d061028bfeb62872506ccf105fd"
CLOUDFLARE_ACCESS_KEY: "4cdebc61c768bce891a4127910b192ff"
CLOUDFLARE_SECRET_ACCESS_KEY: "55e968043c88845ded942e201dd2f04eed31e6e88b575b89a4125dba477982cf"
CLOUDFLARE_BUCKETNAME: "tieriq-postiz"
CLOUDFLARE_REGION: "weur"
CLOUDFLARE_BUCKET_URL: "https://r2.arnoutvw.nl"
# === Social Media API Settings
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: "636250446120038"
FACEBOOK_APP_SECRET: "aa494b4f129943d4449d916d65e44353"
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_POSTIZ_OAUTH_DISPLAY_NAME: "PocketId"
NEXT_PUBLIC_POSTIZ_OAUTH_LOGO_URL: "https://raw.githubusercontent.com/walkxcode/dashboard-icons/master/png/pocketid.png"
POSTIZ_GENERIC_OAUTH: "false"
POSTIZ_OAUTH_URL: "https://pass.arnoutvw.nl"
POSTIZ_OAUTH_AUTH_URL: "https://pass.arnoutvw.nl/authorize"
POSTIZ_OAUTH_TOKEN_URL: "https://pass.arnoutvw.nl/api/oidc/token"
POSTIZ_OAUTH_USERINFO_URL: "https://pass.arnoutvw.nl/api/oidc/userinfo"
POSTIZ_OAUTH_CLIENT_ID: "0b5c7ddf-1d68-4ce7-bfd2-3c9bf93fe623"
POSTIZ_OAUTH_CLIENT_SECRET: "fUeSC7KoH4sPqM2UHS9kqT15zRdiVofU"
# POSTIZ_OAUTH_SCOPE: "openid profile email" # Optional: uncomment to override default scope
# === Misc Settings
OPENAI_API_KEY: "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 "
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"
#EMAIL
EMAIL_FROM_NAME: "Postiz Emailer"
EMAIL_FROM_ADDRESS: "postiz@arnoutvw.nl"
EMAIL_PROVIDER: "nodemailer"
EMAIL_HOST: "smtp.gmail.com" # smtp host if you choose nodemailer
EMAIL_PORT: "465" # smtp port if you choose nodemailer
EMAIL_SECURE: "true" # smtp secure if you choose nodemailer
EMAIL_USER: "arnoutvw@arnoutvw.nl" # smtp user if you choose nodemailer
EMAIL_PASS: "klxh wmsc slbq sqhg" # smtp pass if you choose nodemailer
volumes:
- postiz-config:/config/
- postiz-uploads:/uploads/
ports:
- "5000:5000"
labels:
- "traefik.http.routers.postiz.rule=Host(`postiz.arnoutvw.nl`)" # Replace with your domain
- "traefik.http.services.postiz.loadbalancer.server.port=5000" # Internal port for postiz
- "traefik.http.routers.postiz.entrypoints=https" # Postiz requires HTTPS
- "traefik.http.routers.postiz.tls=true"
links:
- postiz-postgres
- postiz-redis
depends_on:
postiz-postgres:
condition: service_healthy
postiz-redis:
condition: service_healthy
postiz-postgres:
image: postgres:17-alpine
container_name: postiz-postgres
restart: always
network_mode: bridge
environment:
POSTGRES_PASSWORD: postiz-password
POSTGRES_USER: postiz-user
POSTGRES_DB: postiz-db-local
volumes:
- postgres-volume:/var/lib/postgresql/data
healthcheck:
test: pg_isready -U postiz-user -d postiz-db-local
interval: 10s
timeout: 3s
retries: 3
postiz-redis:
image: redis:7.4
container_name: postiz-redis
restart: always
network_mode: bridge
healthcheck:
test: redis-cli ping
interval: 10s
timeout: 3s
retries: 3
volumes:
- postiz-redis-data:/data
volumes:
postgres-volume:
external: false
postiz-redis-data:
external: false
postiz-config:
external: false
postiz-uploads:
external: false
networks:
postiz-network:
external: false