# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Sub2API
spec:
    description: |
        Sub2API is a powerful API gateway for subscription management. It provides a unified interface for managing subscriptions, with support for multiple backends and advanced features like rate limiting and analytics.
    icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/api.svg
    variables:
        - key: ADMIN_EMAIL
          type: STRING
          name: Admin Email
          description: Admin email for initial setup
        - key: ADMIN_PASSWORD
          type: STRING
          name: Admin Password
          description: Admin password for initial setup
        - key: TZ
          type: STRING
          name: Timezone
          description: Timezone for the application
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Public Domain
          description: Public domain for Sub2API
    tags:
        - API
        - Gateway
        - Subscription
    readme: |
        # Sub2API

        Sub2API is a powerful API gateway for subscription management with support for multiple backends and advanced features.

        ## Features

        - Unified subscription management interface
        - Multiple backend support
        - Rate limiting and analytics
        - Admin dashboard
        - 2FA support

        ## Getting Started

        1. After deployment, access the application at your configured domain
        2. Log in with the admin credentials you set during deployment
        3. Configure your subscription backends in the admin panel

        ## Important Notes

        - **JWT_SECRET and TOTP_ENCRYPTION_KEY**: These are automatically generated and fixed to prevent session invalidation and 2FA issues on restart
        - **Database**: PostgreSQL is automatically provisioned and configured
        - **Cache**: Redis is used for caching and session management

        ## Support

        For more information, visit: https://github.com/Wei-Shaw/sub2api
    services:
        - name: postgresql
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/postgresql.svg
          template: PREBUILT_V2
          spec:
            id: postgresql
            source:
                image: postgres:18-alpine
            ports:
                - id: db
                  port: 5432
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/postgresql/data
            env:
                PGDATA:
                    default: /var/lib/postgresql/data
                POSTGRES_DB:
                    default: sub2api
                    expose: true
                POSTGRES_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                POSTGRES_USER:
                    default: sub2api
                    expose: true
                TZ:
                    default: ${TZ}
        - name: redis
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/redis.svg
          template: PREBUILT_V2
          spec:
            id: redis
            source:
                image: redis:8-alpine
                command:
                    - sh
                    - -c
                    - redis-server --save 60 1 --appendonly yes --appendfsync everysec
            ports:
                - id: cache
                  port: 6379
                  type: TCP
            volumes:
                - id: data
                  dir: /data
            env:
                TZ:
                    default: ${TZ}
        - name: sub2api
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/api.svg
          dependencies:
            - postgresql
            - redis
          template: PREBUILT_V2
          spec:
            id: sub2api
            source:
                image: weishaw/sub2api:latest
            ports:
                - id: web
                  port: 8080
                  type: HTTP
            volumes:
                - id: data
                  dir: /app/data
            env:
                ADMIN_EMAIL:
                    default: ${ADMIN_EMAIL}
                ADMIN_PASSWORD:
                    default: ${ADMIN_PASSWORD}
                AUTO_SETUP:
                    default: "true"
                DATABASE_CONN_MAX_IDLE_TIME_MINUTES:
                    default: "5"
                DATABASE_CONN_MAX_LIFETIME_MINUTES:
                    default: "30"
                DATABASE_DBNAME:
                    default: sub2api
                DATABASE_HOST:
                    default: ${postgresql_CONTAINER_HOSTNAME}
                DATABASE_MAX_IDLE_CONNS:
                    default: "10"
                DATABASE_MAX_OPEN_CONNS:
                    default: "50"
                DATABASE_PASSWORD:
                    default: ${postgresql_POSTGRES_PASSWORD}
                DATABASE_PORT:
                    default: "5432"
                DATABASE_SSLMODE:
                    default: disable
                DATABASE_USER:
                    default: sub2api
                JWT_EXPIRE_HOUR:
                    default: "24"
                JWT_SECRET:
                    default: ${PASSWORD}
                REDIS_DB:
                    default: "0"
                REDIS_ENABLE_TLS:
                    default: "false"
                REDIS_HOST:
                    default: ${redis_CONTAINER_HOSTNAME}
                REDIS_MIN_IDLE_CONNS:
                    default: "10"
                REDIS_PASSWORD:
                    default: ""
                REDIS_POOL_SIZE:
                    default: "1024"
                REDIS_PORT:
                    default: "6379"
                RUN_MODE:
                    default: standard
                SECURITY_URL_ALLOWLIST_ALLOW_INSECURE_HTTP:
                    default: "false"
                SECURITY_URL_ALLOWLIST_ALLOW_PRIVATE_HOSTS:
                    default: "false"
                SECURITY_URL_ALLOWLIST_ENABLED:
                    default: "false"
                SERVER_HOST:
                    default: 0.0.0.0
                SERVER_MODE:
                    default: release
                SERVER_PORT:
                    default: "8080"
                TOTP_ENCRYPTION_KEY:
                    default: ${PASSWORD}
                TZ:
                    default: ${TZ}
            healthCheck:
                type: HTTP
                port: web
                http:
                    path: /health
localization:
    es-ES:
        description: |
            Sub2API es una poderosa puerta de enlace de API para la gestión de suscripciones. Proporciona una interfaz unificada para administrar suscripciones, con soporte para múltiples backends y características avanzadas como limitación de velocidad y análisis.
        variables:
            - key: ADMIN_EMAIL
              type: STRING
              name: Correo electrónico del administrador
              description: Correo electrónico del administrador para la configuración inicial
            - key: ADMIN_PASSWORD
              type: STRING
              name: Contraseña del administrador
              description: Contraseña del administrador para la configuración inicial
            - key: TZ
              type: STRING
              name: Zona horaria
              description: Zona horaria de la aplicación
            - key: PUBLIC_DOMAIN
              type: STRING
              name: Dominio público
              description: Dominio público para Sub2API
        readme: |
            # Sub2API

            Sub2API es una poderosa puerta de enlace de API para la gestión de suscripciones con soporte para múltiples backends y características avanzadas.

            ## Características

            - Interfaz unificada de gestión de suscripciones
            - Soporte para múltiples backends
            - Limitación de velocidad y análisis
            - Panel de administración
            - Soporte para 2FA

            ## Primeros pasos

            1. Después de la implementación, acceda a la aplicación en su dominio configurado
            2. Inicie sesión con las credenciales de administrador que estableció durante la implementación
            3. Configure sus backends de suscripción en el panel de administración

            ## Notas importantes

            - **JWT_SECRET y TOTP_ENCRYPTION_KEY**: Se generan automáticamente y se fijan para evitar invalidación de sesión e invalidación de 2FA al reiniciar
            - **Base de datos**: PostgreSQL se aprovisiona y configura automáticamente
            - **Caché**: Redis se utiliza para almacenamiento en caché y gestión de sesiones

            ## Soporte

            Para más información, visite: https://github.com/Wei-Shaw/sub2api
    id-ID:
        description: |
            Sub2API adalah gateway API yang kuat untuk manajemen langganan. Ini menyediakan antarmuka terpadu untuk mengelola langganan, dengan dukungan untuk beberapa backend dan fitur canggih seperti pembatasan laju dan analitik.
        variables:
            - key: ADMIN_EMAIL
              type: STRING
              name: Email admin
              description: Email admin untuk pengaturan awal
            - key: ADMIN_PASSWORD
              type: STRING
              name: Kata sandi admin
              description: Kata sandi admin untuk pengaturan awal
            - key: TZ
              type: STRING
              name: Zona waktu
              description: Zona waktu untuk aplikasi
            - key: PUBLIC_DOMAIN
              type: STRING
              name: Domain publik
              description: Domain publik untuk Sub2API
        readme: |
            # Sub2API

            Sub2API adalah gateway API yang kuat untuk manajemen langganan dengan dukungan untuk beberapa backend dan fitur canggih.

            ## Fitur

            - Antarmuka manajemen langganan terpadu
            - Dukungan backend ganda
            - Pembatasan laju dan analitik
            - Dasbor admin
            - Dukungan 2FA

            ## Memulai

            1. Setelah penyebaran, akses aplikasi di domain yang dikonfigurasi
            2. Masuk dengan kredensial admin yang Anda atur selama penyebaran
            3. Konfigurasikan backend langganan Anda di panel admin

            ## Catatan Penting

            - **JWT_SECRET dan TOTP_ENCRYPTION_KEY**: Ini secara otomatis dihasilkan dan diperbaiki untuk mencegah invalidasi sesi dan masalah 2FA saat restart
            - **Basis Data**: PostgreSQL secara otomatis disediakan dan dikonfigurasi
            - **Cache**: Redis digunakan untuk caching dan manajemen sesi

            ## Dukungan

            Untuk informasi lebih lanjut, kunjungi: https://github.com/Wei-Shaw/sub2api
    ja-JP:
        description: |
            Sub2API は、サブスクリプション管理用の強力な API ゲートウェイです。複数のバックエンドをサポートし、レート制限と分析などの高度な機能を提供します。
        variables:
            - key: ADMIN_EMAIL
              type: STRING
              name: 管理者メールアドレス
              description: 初期設定用の管理者メールアドレス
            - key: ADMIN_PASSWORD
              type: STRING
              name: 管理者パスワード
              description: 初期設定用の管理者パスワード
            - key: TZ
              type: STRING
              name: タイムゾーン
              description: アプリケーションのタイムゾーン
            - key: PUBLIC_DOMAIN
              type: STRING
              name: パブリックドメイン
              description: Sub2API のパブリックドメイン
        readme: |
            # Sub2API

            Sub2API は、複数のバックエンドと高度な機能をサポートするサブスクリプション管理用の強力な API ゲートウェイです。

            ## 機能

            - 統一されたサブスクリプション管理インターフェース
            - 複数のバックエンドサポート
            - レート制限と分析
            - 管理者ダッシュボード
            - 2FA サポート

            ## はじめに

            1. デプロイ後、設定したドメインでアプリケーションにアクセスします
            2. デプロイ時に設定した管理者認証情報でログインします
            3. 管理者パネルでサブスクリプションバックエンドを設定します

            ## 重要な注意事項

            - **JWT_SECRET と TOTP_ENCRYPTION_KEY**：これらは自動生成され固定されており、再起動時のセッション無効化と 2FA の問題を防ぎます
            - **データベース**：PostgreSQL は自動的にプロビジョニングされます
            - **キャッシュ**：Redis はキャッシングとセッション管理に使用されます

            ## サポート

            詳細については、https://github.com/Wei-Shaw/sub2api を参照してください
    zh-CN:
        description: |
            Sub2API 是一个强大的订阅管理 API 网关。它提供统一的订阅管理界面，支持多个后端和高级功能，如速率限制和分析。
        variables:
            - key: ADMIN_EMAIL
              type: STRING
              name: 管理员电子邮件
              description: 初始设置的管理员电子邮件
            - key: ADMIN_PASSWORD
              type: STRING
              name: 管理员密码
              description: 初始设置的管理员密码
            - key: TZ
              type: STRING
              name: 时区
              description: 应用程序的时区
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 公开域名
              description: Sub2API 的公开域名
        readme: |
            # Sub2API

            Sub2API 是一个强大的订阅管理 API 网关，支持多个后端和高级功能。

            ## 功能

            - 统一的订阅管理界面
            - 多个后端支持
            - 速率限制和分析
            - 管理员仪表板
            - 2FA 支持

            ## 开始使用

            1. 部署后，在配置的域名访问应用程序
            2. 使用部署期间设置的管理员凭证登录
            3. 在管理员面板中配置您的订阅后端

            ## 重要注意事项

            - **JWT_SECRET 和 TOTP_ENCRYPTION_KEY**：这些会自动生成并固定，以防止重启时会话失效和 2FA 问题
            - **数据库**：PostgreSQL 会自动配置
            - **缓存**：Redis 用于缓存和会话管理

            ## 支持

            更多信息，请访问：https://github.com/Wei-Shaw/sub2api
    zh-TW:
        description: |
            Sub2API 是一個強大的訂閱管理 API 網關。它提供統一的訂閱管理介面，支援多個後端和進階功能，如速率限制和分析。
        variables:
            - key: ADMIN_EMAIL
              type: STRING
              name: 管理員電子郵件
              description: 初始設定的管理員電子郵件
            - key: ADMIN_PASSWORD
              type: STRING
              name: 管理員密碼
              description: 初始設定的管理員密碼
            - key: TZ
              type: STRING
              name: 時區
              description: 應用程式的時區
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 公開網域
              description: Sub2API 的公開網域
        readme: |
            # Sub2API

            Sub2API 是一個強大的訂閱管理 API 網關，支援多個後端和進階功能。

            ## 功能

            - 統一的訂閱管理介面
            - 多個後端支援
            - 速率限制和分析
            - 管理員儀表板
            - 2FA 支援

            ## 開始使用

            1. 部署後，在配置的網域存取應用程式
            2. 使用部署期間設定的管理員認證登入
            3. 在管理員面板中配置您的訂閱後端

            ## 重要注意事項

            - **JWT_SECRET 和 TOTP_ENCRYPTION_KEY**：這些會自動生成並固定，以防止重啟時會話失效和 2FA 問題
            - **資料庫**：PostgreSQL 會自動配置
            - **快取**：Redis 用於快取和會話管理

            ## 支援

            更多資訊，請訪問：https://github.com/Wei-Shaw/sub2api
