# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Postiz
spec:
    description: All-in-one open-source platform to schedule, publish, and manage content across 19+ social media platforms — with AI assistance, powerful scheduling, and full self-hosting control.
    coverImage: https://cdn.zeabur.com/postiz-banner.jpg
    icon: https://cdn.zeabur.com/postiz.png
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Public Domain
          description: The main public domain used to access your Postiz instance.
    readme: |-
        # Postiz

        Your ultimate social media scheduling tool: Features seamless integration with various social media platforms, advanced scheduling options, analytics, and more. Completely open-source for self-hosting.

        **Version:** v2.11.3 (Stable, no Temporal dependency)

        **Upgrade Notice:** Postiz v2.12+ introduces Temporal workflow engine which requires additional services (Temporal, Elasticsearch, separate PostgreSQL). Direct upgrade to v2.12+ is not supported due to architecture changes. For v2.12+, use the **Postiz v2.12** template instead.

        ---

        **Recommended Resources:** 2C4G (2 vCPU, 4GB RAM) for postiz service

        **Startup Check:** Check the **postiz** service logs for: `Backend is running on: http://localhost:3000`

        **AI Chat Setup (Optional):** To enable AI chat functionality, set `OPENAI_API_KEY` in the postiz service environment variables.

        **Email Notifications (Optional):** To enable email notifications, configure SMTP settings in the postiz service: `EMAIL_PROVIDER`, `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, `EMAIL_FROM`.
    services:
        - name: redis
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/redis.svg
          template: PREBUILT_V2
          spec:
            source:
                image: redis:7.2
                command:
                    - redis-server
                    - /usr/local/etc/redis/redis.conf
            ports:
                - id: database
                  port: 6379
                  type: TCP
            volumes:
                - id: data
                  dir: /data
                - id: config
                  dir: /usr/local/etc/redis
            instructions:
                - title: Redis connection string
                  content: redis://:${REDIS_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}
                - title: Redis connect command
                  content: redis-cli -h ${PORT_FORWARDED_HOSTNAME} -p ${DATABASE_PORT_FORWARDED_PORT} -a ${REDIS_PASSWORD}
                - title: Redis username
                  content: ${REDIS_USER}
                - title: Redis password
                  content: ${REDIS_PASSWORD}
            env:
                REDIS_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                REDIS_URI:
                    default: redis://:${REDIS_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}
                    expose: true
                REDIS_URI_INTERNAL:
                    default: redis://:${REDIS_PASSWORD}@${CONTAINER_HOSTNAME}:6379
                    expose: true
            configs:
                - path: /usr/local/etc/redis/redis.conf
                  template: |
                    port 6379
                    daemonize no
                    requirepass ${REDIS_PASSWORD}
                    maxmemory 512mb
                    maxmemory-policy noeviction
                  permission: null
                  envsubst: true
        - name: postgres
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/postgresql.svg
          template: PREBUILT_V2
          spec:
            source:
                image: postgres:17-alpine
            ports:
                - id: database
                  port: 5432
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/postgresql/data
            instructions:
                - title: PostgreSQL connection string
                  content: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}/${POSTGRES_DB}
                - title: PostgreSQL connect command
                  content: psql "postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}/${POSTGRES_DB}"
                - title: PostgreSQL username
                  content: ${POSTGRES_USER}
                - title: PostgreSQL password
                  content: ${POSTGRES_PASSWORD}
                - title: PostgreSQL database
                  content: ${POSTGRES_DB}
            env:
                POSTGRES_CONNECTION_STRING:
                    default: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}/${POSTGRES_DB}
                    expose: true
                POSTGRES_CONNECTION_STRING_INTERNAL:
                    default: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${CONTAINER_HOSTNAME}:5432/${POSTGRES_DB}
                    expose: true
                POSTGRES_DB:
                    default: postiz
                POSTGRES_PASSWORD:
                    default: ${PASSWORD}
                POSTGRES_USER:
                    default: postiz
            configs:
                - path: /etc/postgresql/postgresql.conf
                  template: |
                    # https://github.com/postgres/postgres/blob/master/src/backend/utils/misc/postgresql.conf.sample
                    listen_addresses = '*'
                    max_connections = 100
                    shared_buffers = 128MB
                    dynamic_shared_memory_type = posix
                    max_wal_size = 1GB
                    min_wal_size = 80MB
                    log_timezone = 'Etc/UTC'
                    datestyle = 'iso, mdy'
                    timezone = 'Etc/UTC'
                    lc_messages = 'en_US.utf8'
                    lc_monetary = 'en_US.utf8'
                    lc_numeric = 'en_US.utf8'
                    lc_time = 'en_US.utf8'
                    default_text_search_config = 'pg_catalog.english'
                  permission: null
                  envsubst: null
            healthCheck:
                type: TCP
                port: database
        - name: postiz
          icon: https://cdn.zeabur.com/postiz.png
          dependencies:
            - redis
            - postgres
          template: PREBUILT_V2
          spec:
            source:
                image: ghcr.io/gitroomhq/postiz-app:v2.11.3
            ports:
                - id: web
                  port: 5000
                  type: HTTP
            volumes:
                - id: config
                  dir: /config/
                - id: uploads
                  dir: /uploads/
            env:
                BACKEND_INTERNAL_URL:
                    default: http://localhost:3000
                DATABASE_URL:
                    default: ${POSTGRES_CONNECTION_STRING_INTERNAL}
                DISABLE_REGISTRATION:
                    default: "false"
                FRONTEND_URL:
                    default: https://${ZEABUR_WEB_DOMAIN}
                IS_GENERAL:
                    default: "true"
                JWT_SECRET:
                    default: ${PASSWORD}
                MAIN_URL:
                    default: https://${ZEABUR_WEB_DOMAIN}
                NEXT_PUBLIC_BACKEND_URL:
                    default: https://${ZEABUR_WEB_DOMAIN}/api
                NEXT_PUBLIC_UPLOAD_DIRECTORY:
                    default: /uploads
                NOT_SECURED:
                    default: "true"
                OPENAI_API_KEY:
                    default: ""
                REDIS_URL:
                    default: ${REDIS_URI_INTERNAL}
                STORAGE_PROVIDER:
                    default: local
                UPLOAD_DIRECTORY:
                    default: /uploads
            configs:
                - path: /app/apps/backend/dist/libraries/helpers/src/subdomain/subdomain.management.js
                  template: |
                    "use strict";
                    Object.defineProperty(exports, "__esModule", { value: true });
                    exports.getCookieUrlFromDomain = getCookieUrlFromDomain;
                    const tldts_1 = require("tldts");
                    function getCookieUrlFromDomain(domain) {
                        const url = (0, tldts_1.parse)(domain);
                        return url.hostname;
                    }
                    //# sourceMappingURL=subdomain.management.js.map
                  permission: null
                  envsubst: null
            healthCheck:
                type: TCP
                port: web
          domainKey: PUBLIC_DOMAIN
localization:
    en-US:
        description: All-in-one open-source platform to schedule, publish, and manage content across 19+ social media platforms — with AI assistance, powerful scheduling, and full self-hosting control.
        readme: "# Postiz\n\nPostiz is your all-in-one open-source social media scheduling platform.\n\nSeamlessly schedule, publish, and manage content across over 19 platforms — including Threads, X (Twitter), Facebook, Instagram, Reddit, Telegram, and more.\n\n**Version:** v2.11.3 (Stable, no Temporal dependency)\n\n**Upgrade Notice:** Postiz v2.12+ introduces Temporal workflow engine which requires additional services (Temporal, Elasticsearch, separate PostgreSQL). Direct upgrade to v2.12+ is not supported due to architecture changes. For v2.12+, use the **Postiz v2.12** template instead.\n\n---\n\n## Key Features\n\n- Built-in AI Assistant\n- Advanced Scheduling (visual calendar, post repeats, time zone support)\n- Platform Integration (19+ platforms)\n- Basic Analytics\n- Fully Open-Source & Self-Hosted\n- Team Collaboration\n\n**Recommended Resources:** 2C4G (2 vCPU, 4GB RAM) for postiz service\n\n**Startup Check:** Check the **postiz** service logs for: `Backend is running on: http://localhost:3000`\n\n**AI Chat Setup (Optional):** To enable AI chat functionality, set `OPENAI_API_KEY` in the postiz service environment variables.\n\n**Email Notifications (Optional):** To enable email notifications, configure SMTP settings: `EMAIL_PROVIDER`, `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, `EMAIL_FROM`.\n\n→ Website: https://postiz.com  \n→ Source Code: https://github.com/gitroomhq/postiz-app"
    es-ES:
        description: Plataforma todo-en-uno y de código abierto para programar, publicar y gestionar contenido en más de 19 redes sociales — con IA integrada y control total de autoalojamiento.
        readme: "# Postiz\n\nPostiz es una plataforma de programación de redes sociales todo-en-uno, completamente de código abierto y autoalojada.\n\n**Versión:** v2.11.3 (Estable, sin dependencia de Temporal)\n\n**Aviso de actualización:** Postiz v2.12+ introduce el motor de flujo de trabajo Temporal que requiere servicios adicionales (Temporal, Elasticsearch, PostgreSQL separado). No se admite la actualización directa a v2.12+ debido a cambios en la arquitectura. Para v2.12+, use la plantilla **Postiz v2.12**.\n\n---\n\n## Funcionalidades clave\n\n- Asistente de IA integrado\n- Programación avanzada (calendario visual, zonas horarias)\n- Integración multiplataforma (19+ plataformas)\n- Análisis básico\n- Código abierto y autoalojado\n- Colaboración en equipo\n\n**Recursos recomendados:** 2C4G (2 vCPU, 4GB RAM) para el servicio postiz\n\n**Verificación de inicio:** Verifique en los logs del servicio **postiz**: `Backend is running on: http://localhost:3000`\n\n**Configuración de chat IA (Opcional):** Para habilitar la funcionalidad de chat IA, configure `OPENAI_API_KEY` en las variables de entorno del servicio postiz.\n\n**Notificaciones por correo (Opcional):** Para habilitar notificaciones por correo, configure los ajustes SMTP: `EMAIL_PROVIDER`, `SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, `EMAIL_FROM`.\n\n→ Sitio web: https://postiz.com  \n→ Código fuente: https://github.com/gitroomhq/postiz-app"
    ja-JP:
        description: 19以上のSNSに対応した、AI搭載・セルフホスト可能なオールインワンのオープンソース投稿管理プラットフォーム。
        readme: "# Postiz\n\nPostiz は、オープンソースで自分でホスティングできるソーシャルメディアスケジューリングツールです。\n\n**バージョン:** v2.11.3（安定版、Temporal依存なし）\n\n**アップグレード注意:** Postiz v2.12+ は追加サービス（Temporal、Elasticsearch、別の PostgreSQL）を必要とする Temporal ワークフローエンジンを導入しています。アーキテクチャの変更により、v2.12+ への直接アップグレードはサポートされていません。v2.12+ の場合は **Postiz v2.12** テンプレートをご利用ください。\n\n---\n\n## 主な機能\n\n- AI アシスタント内蔵\n- 高度なスケジューリング（ビジュアルカレンダー、タイムゾーン対応）\n- マルチプラットフォーム統合（19+ プラットフォーム）\n- 基本的な分析機能\n- 完全オープンソース & セルフホスティング\n- チームコラボレーション\n\n**推奨リソース:** postizサービスに2C4G（2 vCPU, 4GB RAM）\n\n**起動確認:** **postiz** サービスのログで `Backend is running on: http://localhost:3000` が表示されていることを確認してください。\n\n**AIチャット設定（オプション）：** AIチャット機能を有効にするには、postizサービスの環境変数で `OPENAI_API_KEY` を設定してください。\n\n**メール通知（オプション）：** メール通知を有効にするには、SMTP設定を行ってください：`EMAIL_PROVIDER`、`SMTP_HOST`、`SMTP_PORT`、`SMTP_USER`、`SMTP_PASS`、`EMAIL_FROM`。\n\n→ Webサイト: https://postiz.com  \n→ ソースコード: https://github.com/gitroomhq/postiz-app"
    zh-CN:
        description: 开源一体化平台，支持跨 19+ 社交平台智能排程、自动发布和内容管理，搭载 AI 助手，完全可自托管。
        readme: "# Postiz\n\nPostiz 是一款开源的社交媒体排程工具，支持自托管部署。\n\n**版本：** v2.11.3（稳定版，无 Temporal 依赖）\n\n**升级提示：** Postiz v2.12+ 引入了 Temporal 工作流引擎，需要额外的服务（Temporal、Elasticsearch、独立 PostgreSQL）。由于架构变更，不支持直接升级到 v2.12+。如需 v2.12+，请使用 **Postiz v2.12** 模板。\n\n---\n\n## 核心功能\n\n- 内建 AI 助手\n- 高级排程系统（可视化日历、时区支持）\n- 多平台整合（19+ 平台）\n- 贴文分析\n- 完全开源 + 自托管\n- 团队协作\n\n**推荐配置：** postiz 服务需 2C4G（2 vCPU, 4GB RAM）\n\n**启动确认：** 请在 **postiz** 服务日志中确认出现 `Backend is running on: http://localhost:3000` 信息。\n\n**AI 聊天设置（可选）：** 如需启用 AI 聊天功能，请在 postiz 服务的环境变量中设置 `OPENAI_API_KEY`。\n\n**邮件通知（可选）：** 如需启用邮件通知，请设置 SMTP 相关变量：`EMAIL_PROVIDER`、`SMTP_HOST`、`SMTP_PORT`、`SMTP_USER`、`SMTP_PASS`、`EMAIL_FROM`。\n\n→ 官网：https://postiz.com  \n→ 源码：https://github.com/gitroomhq/postiz-app"
    zh-TW:
        description: 開源的一站式平台，支援跨 19+ 社群平台智能排程、自動發布與內容管理，搭載 AI 助手並支援完全自架。
        readme: "# Postiz\n\nPostiz 是一款完全開源、可自架設的社群媒體排程平台。\n\n**版本：** v2.11.3（穩定版，無 Temporal 依賴）\n\n**升級提示：** Postiz v2.12+ 引入了 Temporal 工作流引擎，需要額外的服務（Temporal、Elasticsearch、獨立 PostgreSQL）。由於架構變更，不支援直接升級到 v2.12+。如需 v2.12+，請使用 **Postiz v2.12** 模板。\n\n---\n\n## 主要特色\n\n- 內建 AI 助手\n- 進階排程功能（可視化日曆、時區處理）\n- 多平台整合（19+ 平台）\n- 數據分析\n- 完全開源與自架設\n- 團隊協作\n\n**建議配置：** postiz 服務需 2C4G（2 vCPU, 4GB RAM）\n\n**啟動確認：** 請在 **postiz** 服務日誌中確認出現 `Backend is running on: http://localhost:3000` 訊息。\n\n**AI 聊天設定（可選）：** 如需啟用 AI 聊天功能，請在 postiz 服務的環境變數中設定 `OPENAI_API_KEY`。\n\n**郵件通知（可選）：** 如需啟用郵件通知，請設定 SMTP 相關變數：`EMAIL_PROVIDER`、`SMTP_HOST`、`SMTP_PORT`、`SMTP_USER`、`SMTP_PASS`、`EMAIL_FROM`。\n\n→ 官方網站：https://postiz.com  \n→ 原始碼：https://github.com/gitroomhq/postiz-app"
