# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Super Magic
spec:
    description: Super Magic is an open-source AI chat platform with intelligent workflows, supporting multiple AI models and embedding capabilities.
    coverImage: https://camo.githubusercontent.com/fb0f4bfb01fdfd685d43249855345a72f969b9b580c8269973fa07e8ba46506a/68747470733a2f2f7075626c69632d63646e2e6c6574736d616769632e61692f7374617469632f696d672f73757065722d6d616769632d7075626c6973682d6865616465722d656e2e706e673f763d3230323530383139
    icon: https://avatars.githubusercontent.com/u/144179893?s=48&v=4
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Super Magic Domain
          description: The domain for accessing your Super Magic application.
        - key: QDRANT_API_KEY
          type: STRING
          name: Qdrant API Key
          description: 'API key for Qdrant vector database (default: magic123456)'
    tags:
        - AI
        - Chat
        - LLM
        - Workflow
        - Magic
    readme: |-
        # Super Magic

        Super Magic is an open-source AI chat platform that provides intelligent workflows and supports multiple AI models including OpenAI, Azure OpenAI, DeepSeek, and more.

        ## Features

        - **Multi-Model Support**: Seamless integration with various AI models including GPT-4, Claude, DeepSeek, and more
        - **Intelligent Workflows**: Build and manage complex AI workflows with visual interface
        - **Vector Database**: Powered by Qdrant for advanced semantic search and embedding capabilities
        - **File Management**: Support for multiple file storage drivers including local, Aliyun OSS, and Volcengine TOS
        - **Message Queue**: RabbitMQ integration for reliable message processing
        - **Caching**: Redis integration for high-performance caching
        - **Web Interface**: Modern web application for easy interaction

        ## Services Included

        - **Magic Service**: Main API service handling AI interactions
        - **Magic Service Daemon**: Background service for scheduled tasks
        - **Magic Web**: Frontend web application
        - **Super Magic**: Additional AI capabilities service
        - **Magic Gateway**: API gateway service
        - **Sandbox Gateway**: Secure sandbox environment for code execution
        - **Caddy**: File server and reverse proxy
        - **MySQL**: Primary database for application data
        - **Redis**: Caching and session management
        - **RabbitMQ**: Message queue for asynchronous processing
        - **Qdrant**: Vector database for embeddings and semantic search

        ## Default Credentials

        After deployment, you can access the web interface with these default accounts:
        - Account: `13812345678`, Password: `letsmagic.ai`
        - Account: `13912345678`, Password: `letsmagic.ai`

        ## Configuration

        The template includes sensible defaults for all services. You may want to configure:
        - AI model API keys in the Magic Service environment variables
        - File storage drivers if using cloud storage
        - Custom domain settings
        - Resource limits based on your usage

        ## Access Points

        - **Web Application**: Main domain (configured via PUBLIC_DOMAIN)
        - **API Service**: `{domain}/api/v1/`
        - **RabbitMQ Management**: `{domain}:15672` (admin/magic123456)
        - **File Server**: `{domain}/files`

        ## Usage

        1. Deploy the template and configure your domain
        2. Access the web interface using the default credentials
        3. Configure your AI model API keys in the service settings
        4. Start building your AI workflows and chat applications
    services:
        - name: mysql
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/mysql.svg
          template: PREBUILT
          spec:
            source:
                image: mysql:8.0
            ports:
                - id: database
                  port: 3306
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/mysql
            instructions:
                - title: Command to connect to your MySQL
                  content: mysqlsh --sql --host=${PORT_FORWARDED_HOSTNAME} --port=${DATABASE_PORT_FORWARDED_PORT} --user=${MYSQL_USERNAME} --password=${MYSQL_PASSWORD} --schema=${MYSQL_DATABASE}
                - title: MySQL username
                  content: ${MYSQL_USERNAME}
                - title: MySQL password
                  content: ${MYSQL_PASSWORD}
                - title: MySQL database
                  content: ${MYSQL_DATABASE}
                - title: MySQL host
                  content: ${PORT_FORWARDED_HOSTNAME}
                - title: MySQL port
                  content: ${DATABASE_PORT_FORWARDED_PORT}
            env:
                MYSQL_DATABASE:
                    default: magic
                    expose: true
                MYSQL_HOST:
                    default: mysql
                    expose: true
                MYSQL_PASSWORD:
                    default: magic123456
                    expose: true
                MYSQL_PORT:
                    default: "3306"
                    expose: true
                MYSQL_ROOT_PASSWORD:
                    default: magic123456
                MYSQL_USERNAME:
                    default: root
                    expose: true
            configs:
                - path: /etc/my.cnf
                  template: |
                    [mysqld]
                    default-authentication-plugin=mysql_native_password
                    host-cache-size=0
                    skip-name-resolve
                    datadir=/var/lib/mysql
                    socket=/var/run/mysqld/mysqld.sock
                    secure-file-priv=/var/lib/mysql-files
                    user=mysql
                    max_allowed_packet=10M
                    performance_schema=off

                    pid-file=/var/run/mysqld/mysqld.pid
                    [client]
                    socket=/var/run/mysqld/mysqld.sock

                    !includedir /etc/mysql/conf.d/
                  permission: null
                  envsubst: null
            healthCheck:
                type: TCP
                port: database
        - name: redis
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/redis.svg
          template: PREBUILT
          spec:
            source:
                image: redis:6-alpine
                command:
                    - redis-server
                    - --requirepass
                    - magic123456
            ports:
                - id: database
                  port: 6379
                  type: TCP
            volumes:
                - id: data
                  dir: /data
            instructions:
                - title: Redis Connection String
                  content: redis://:${REDIS_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}
                - title: Redis Command
                  content: redis-cli -h ${PORT_FORWARDED_HOSTNAME} -p ${DATABASE_PORT_FORWARDED_PORT} -a ${REDIS_PASSWORD}
                - title: Redis Password
                  content: ${REDIS_PASSWORD}
            env:
                REDIS_CONNECTION_STRING:
                    default: redis://:magic123456@redis:6379
                    expose: true
                REDIS_HOST:
                    default: redis
                    expose: true
                REDIS_PASSWORD:
                    default: magic123456
                    expose: true
                REDIS_PORT:
                    default: "6379"
                    expose: true
                REDISCLI_AUTH:
                    default: magic123456
            healthCheck:
                type: TCP
                port: database
        - name: rabbitmq
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/rabbitmq.svg
          template: PREBUILT
          spec:
            source:
                image: rabbitmq:4.1-management-alpine
            ports:
                - id: amqp
                  port: 5672
                  type: TCP
                - id: management
                  port: 15672
                  type: HTTP
            volumes:
                - id: data
                  dir: /var/lib/rabbitmq
                - id: logs
                  dir: /var/log/rabbitmq
            instructions:
                - title: RabbitMQ Management URL
                  content: http://${PORT_FORWARDED_HOSTNAME}:${MANAGEMENT_PORT_FORWARDED_PORT}
                - title: RabbitMQ Username
                  content: admin
                - title: RabbitMQ Password
                  content: magic123456
                - title: RabbitMQ VHost
                  content: magic-chat
            env:
                AMQP_HOST:
                    default: rabbitmq
                    expose: true
                AMQP_PASSWORD:
                    default: magic123456
                    expose: true
                AMQP_PORT:
                    default: "5672"
                    expose: true
                AMQP_USER:
                    default: admin
                    expose: true
                AMQP_VHOST:
                    default: magic-chat
                    expose: true
                RABBITMQ_DEFAULT_PASS:
                    default: magic123456
                RABBITMQ_DEFAULT_USER:
                    default: admin
                RABBITMQ_DEFAULT_VHOST:
                    default: magic-chat
            healthCheck:
                type: TCP
                port: amqp
        - name: qdrant
          icon: https://avatars.githubusercontent.com/u/73504361?v=4
          template: PREBUILT
          spec:
            source:
                image: qdrant/qdrant:latest
            ports:
                - id: http
                  port: 6333
                  type: HTTP
                - id: grpc
                  port: 6334
                  type: TCP
            volumes:
                - id: storage
                  dir: /qdrant/storage
            instructions:
                - title: Qdrant API URL
                  content: http://${PORT_FORWARDED_HOSTNAME}:${HTTP_PORT_FORWARDED_PORT}
                - title: Qdrant API Key
                  content: ${QDRANT_API_KEY}
            env:
                ODIN_QDRANT_API_KEY:
                    default: ${QDRANT_API_KEY}
                    expose: true
                ODIN_QDRANT_BASE_URI:
                    default: http://qdrant:6333
                    expose: true
                QDRANT_API_KEY:
                    default: ${QDRANT_API_KEY}
            healthCheck:
                type: HTTP
                port: http
                http:
                    path: /healthz
        - name: caddy
          icon: https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Caddyserver_logo_-_no_wordmark.svg/800px-Caddyserver_logo_-_no_wordmark.svg.png
          template: PREBUILT
          spec:
            source:
                image: caddy:2.7-alpine
                command:
                    - caddy
                    - run
                    - --config
                    - /etc/caddy/Caddyfile
            ports:
                - id: http
                  port: 80
                  type: HTTP
                - id: https
                  port: 443
                  type: HTTP
            volumes:
                - id: files
                  dir: /srv/files
                - id: data
                  dir: /data
                - id: config
                  dir: /config
            configs:
                - path: /etc/caddy/Caddyfile
                  template: ":80 {\n    handle_path /files/* {\n        file_server {\n            root /srv/files\n            browse\n        }\n    }\n    \n    handle /api/* {\n        reverse_proxy magic-service:9501\n    }\n    \n    handle /v1/* {\n        reverse_proxy magic-service:9501\n    }\n    \n    handle /* {\n        reverse_proxy magic-web:8080\n    }\n}\n"
                  permission: null
                  envsubst: null
          domainKey: PUBLIC_DOMAIN
        - name: magic-service
          icon: https://avatars.githubusercontent.com/u/144179893?s=48&v=4
          template: PREBUILT
          spec:
            source:
                image: ghcr.io/dtyq/magic-service:latest
                command:
                    - /bin/sh
                    - -c
                    - |
                      # Wait for database to be ready
                      while ! nc -z mysql 3306; do
                        echo "Waiting for database..."
                        sleep 2
                      done

                      # Run database migrations and seeders
                      php bin/hyperf.php migrate --seed
                      php bin/hyperf.php db:seed --path=seeders/initial_account_and_user_seeder.php
                      php bin/hyperf.php db:seed --path=seeders/initial_environment_seeder.php
                      php bin/hyperf.php file:init

                      # Start the main service
                      php bin/hyperf.php start
            ports:
                - id: api
                  port: 9501
                  type: HTTP
                - id: socket
                  port: 9502
                  type: TCP
            volumes:
                - id: storage
                  dir: /opt/www/storage/files
            env:
                AMQP_HOST:
                    default: rabbitmq
                AMQP_PASSWORD:
                    default: magic123456
                AMQP_PORT:
                    default: "5672"
                AMQP_USER:
                    default: admin
                AMQP_VHOST:
                    default: magic-chat
                APP_ENV:
                    default: production
                APP_HOST:
                    default: ${ZEABUR_WEB_URL}
                APP_NAME:
                    default: magic_service
                CRONTAB_ENABLE:
                    default: "false"
                DB_CHARSET:
                    default: utf8mb4
                DB_COLLATION:
                    default: utf8mb4_unicode_ci
                DB_DATABASE:
                    default: ${MYSQL_DATABASE}
                DB_DRIVER:
                    default: mysql
                DB_HOST:
                    default: ${MYSQL_HOST}
                DB_PASSWORD:
                    default: magic123456
                DB_PORT:
                    default: ${MYSQL_PORT}
                DB_USERNAME:
                    default: ${MYSQL_USERNAME}
                ENABLE_CHAT_MESSAGE:
                    default: "true"
                ENABLE_CHAT_SEQ:
                    default: "true"
                ENABLE_CONSUME:
                    default: "true"
                ENABLE_MAGIC_WATCHDOG:
                    default: "false"
                FILE_DRIVER:
                    default: local
                FILE_LOCAL_DOCKER_READ_HOST:
                    default: ${ZEABUR_WEB_URL}/files
                FILE_LOCAL_DOCKER_WRITE_HOST:
                    default: http://magic-service:9501/api/v1/file/upload
                FILE_LOCAL_READ_HOST:
                    default: ${ZEABUR_WEB_URL}/files
                FILE_LOCAL_ROOT:
                    default: /opt/www/storage/files
                FILE_LOCAL_WRITE_HOST:
                    default: ${ZEABUR_WEB_URL}
                MAGIC_EDITION:
                    default: open-source
                MAGIC_ENV_ID:
                    default: "10000"
                ODIN_QDRANT_API_KEY:
                    default: ${QDRANT_API_KEY}
                ODIN_QDRANT_BASE_URI:
                    default: http://qdrant:6333
                REDIS_AUTH:
                    default: magic123456
                REDIS_DB:
                    default: "0"
                REDIS_HOST:
                    default: redis
                REDIS_PASSWORD:
                    default: magic123456
                REDIS_PORT:
                    default: "6379"
                SUFFIX:
                    default: -open
                TYPE:
                    default: main
            healthCheck:
                type: TCP
                port: api
        - name: magic-service-daemon
          icon: https://avatars.githubusercontent.com/u/144179893?s=48&v=4
          template: PREBUILT
          spec:
            source:
                image: ghcr.io/dtyq/magic-service:latest
            volumes:
                - id: storage
                  dir: /opt/www/storage/files
            env:
                AMQP_HOST:
                    default: rabbitmq
                AMQP_PASSWORD:
                    default: magic123456
                AMQP_PORT:
                    default: "5672"
                AMQP_USER:
                    default: admin
                AMQP_VHOST:
                    default: magic-chat
                APP_ENV:
                    default: production
                APP_HOST:
                    default: ${ZEABUR_WEB_URL}
                APP_NAME:
                    default: magic_service
                CRONTAB_ENABLE:
                    default: "true"
                DB_CHARSET:
                    default: utf8mb4
                DB_COLLATION:
                    default: utf8mb4_unicode_ci
                DB_DATABASE:
                    default: ${MYSQL_DATABASE}
                DB_DRIVER:
                    default: mysql
                DB_HOST:
                    default: ${MYSQL_HOST}
                DB_PASSWORD:
                    default: magic123456
                DB_PORT:
                    default: ${MYSQL_PORT}
                DB_USERNAME:
                    default: ${MYSQL_USERNAME}
                ENABLE_CHAT_MESSAGE:
                    default: "true"
                ENABLE_CHAT_SEQ:
                    default: "true"
                ENABLE_CONSUME:
                    default: "true"
                ENABLE_MAGIC_WATCHDOG:
                    default: "false"
                FILE_DRIVER:
                    default: local
                FILE_LOCAL_DOCKER_READ_HOST:
                    default: ${ZEABUR_WEB_URL}/files
                FILE_LOCAL_DOCKER_WRITE_HOST:
                    default: http://magic-service:9501/api/v1/file/upload
                FILE_LOCAL_READ_HOST:
                    default: ${ZEABUR_WEB_URL}/files
                FILE_LOCAL_ROOT:
                    default: /opt/www/storage/files
                FILE_LOCAL_WRITE_HOST:
                    default: ${ZEABUR_WEB_URL}
                MAGIC_EDITION:
                    default: open-source
                MAGIC_ENV_ID:
                    default: "10000"
                ODIN_QDRANT_API_KEY:
                    default: ${QDRANT_API_KEY}
                ODIN_QDRANT_BASE_URI:
                    default: http://qdrant:6333
                REDIS_AUTH:
                    default: magic123456
                REDIS_DB:
                    default: "0"
                REDIS_HOST:
                    default: redis
                REDIS_PASSWORD:
                    default: magic123456
                REDIS_PORT:
                    default: "6379"
                SUFFIX:
                    default: -daemon
                TYPE:
                    default: daemon
        - name: magic-web
          icon: https://avatars.githubusercontent.com/u/144179893?s=48&v=4
          template: PREBUILT
          spec:
            source:
                image: ghcr.io/dtyq/magic-web:latest
            ports:
                - id: web
                  port: 8080
                  type: HTTP
            env:
                MAGIC_EDITION:
                    default: open-source
                MAGIC_SERVICE_BASE_URL:
                    default: ${ZEABUR_WEB_URL}
                MAGIC_SOCKET_BASE_URL:
                    default: ws://${ZEABUR_WEB_DOMAIN}:9502
            healthCheck:
                type: HTTP
                port: web
                http:
                    path: /
localization:
    zh-CN:
        description: Super Magic 是一个开源的AI聊天平台，支持智能工作流和多种AI模型集成。
        readme: |
            # Super Magic

            Super Magic 是一个开源的AI聊天平台，提供智能工作流程，支持包括OpenAI、Azure OpenAI、DeepSeek等多种AI模型。

            ## 功能特性

            - **多模型支持**: 无缝集成各种AI模型，包括GPT-4、Claude、DeepSeek等
            - **智能工作流**: 通过可视化界面构建和管理复杂的AI工作流程
            - **向量数据库**: 基于Qdrant提供高级语义搜索和嵌入功能
            - **文件管理**: 支持多种文件存储驱动，包括本地存储、阿里云OSS和火山引擎TOS
            - **消息队列**: RabbitMQ集成确保可靠的消息处理
            - **缓存系统**: Redis集成提供高性能缓存
            - **Web界面**: 现代化的Web应用程序，便于交互使用

            ## 默认凭据

            部署后，您可以使用以下默认账户访问Web界面：
            - 账户: `13812345678`, 密码: `letsmagic.ai`
            - 账户: `13912345678`, 密码: `letsmagic.ai`

            ## 使用方法

            1. 部署模板并配置您的域名
            2. 使用默认凭据访问Web界面
            3. 在服务设置中配置您的AI模型API密钥
            4. 开始构建您的AI工作流程和聊天应用程序
    zh-TW:
        description: Super Magic 是一個開源的AI聊天平台，支援智慧工作流程和多種AI模型整合。
        readme: |-
            # Super Magic

            Super Magic 是一個開源的AI聊天平台，提供智慧工作流程，支援包括OpenAI、Azure OpenAI、DeepSeek等多種AI模型。

            ## 功能特色

            - **多模型支援**: 無縫整合各種AI模型，包括GPT-4、Claude、DeepSeek等
            - **智慧工作流程**: 透過視覺化介面建構和管理複雜的AI工作流程
            - **向量資料庫**: 基於Qdrant提供進階語義搜尋和嵌入功能
            - **檔案管理**: 支援多種檔案儲存驅動，包括本地儲存、阿里雲OSS和火山引擎TOS
            - **訊息佇列**: RabbitMQ整合確保可靠的訊息處理
            - **快取系統**: Redis整合提供高效能快取
            - **Web介面**: 現代化的Web應用程式，便於互動使用

            ## 預設憑證

            部署後，您可以使用以下預設帳戶存取Web介面：
            - 帳戶: `13812345678`, 密碼: `letsmagic.ai`
            - 帳戶: `13912345678`, 密碼: `letsmagic.ai`

            ## 使用方式

            1. 部署範本並設定您的網域
            2. 使用預設憑證存取Web介面
            3. 在服務設定中設定您的AI模型API金鑰
            4. 開始建構您的AI工作流程和聊天應用程式
