# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Apache Superset
spec:
    description: Powerful data exploration and visualization platform.
    coverImage: https://superset.apache.org/img/hero-screenshot.jpg
    icon: https://avatars.githubusercontent.com/u/42724554?s=200&v=4
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Superset Domain
          description: The domain for accessing your Superset application.
        - key: SUPERSET_ADMIN_USERNAME
          type: STRING
          name: Admin Username
          description: Username for the Superset admin account
        - key: SUPERSET_ADMIN_PASSWORD
          type: STRING
          name: Admin Password
          description: Password for the Superset admin account
        - key: SUPERSET_ADMIN_FIRSTNAME
          type: STRING
          name: Admin First Name
          description: First name for the Superset admin account
        - key: SUPERSET_ADMIN_LASTNAME
          type: STRING
          name: Admin Last Name
          description: Last name for the Superset admin account
        - key: SUPERSET_ADMIN_EMAIL
          type: STRING
          name: Admin Email
          description: Email for the Superset admin account
    tags:
        - BI
        - Visualization
        - Data
    readme: |-
        # Apache Superset

        Superset is a modern data exploration and data visualization platform. Superset can replace or augment proprietary business intelligence tools for many teams. Superset integrates well with a variety of data sources.

        Superset provides:

        - A **no-code interface** for building charts quickly
        - A powerful, web-based **SQL Editor** for advanced querying
        - A **lightweight semantic layer** for quickly defining custom dimensions and metrics
        - Out of the box support for **nearly any SQL** database or data engine
        - A wide array of **beautiful visualizations** to showcase your data, ranging from simple bar charts to geospatial visualizations
        - Lightweight, configurable **caching layer** to help ease database load
        - Highly extensible **security roles and authentication** options
        - An **API** for programmatic customization
        - A **cloud-native architecture** designed from the ground up for scale

        ## Log in using the Username and Password you entered at the beginning.
        1. Visit the Superset website
        2. Log in with the following credentials:
           - Username: ${SUPERSET_ADMIN_USERNAME}
           - Password: ${SUPERSET_ADMIN_PASSWORD}

        ## When you see the log like below, you can access your Superset application:
          [2025-09-19 14:17:30 +0000] [1126] [INFO] Listening at: http://0.0.0.0:8088 (1126)

        ## Docs
        - [Superset Documentation](https://superset.apache.org/)
    services:
        - name: postgresql
          icon: https://cdn.zeabur.com/marketplace/postgresql.svg
          template: PREBUILT
          spec:
            source:
                image: postgres:17
                command:
                    - docker-entrypoint.sh
                    - -c
                    - config_file=/etc/postgresql/postgresql.conf
            ports:
                - id: database
                  port: 5432
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/postgresql/data
            instructions:
                - title: Connection String
                  content: postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}/${POSTGRES_DATABASE}
                - title: PostgreSQL Connect Command
                  content: psql "postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}/${POSTGRES_DATABASE}"
                - title: PostgreSQL username
                  content: ${POSTGRES_USERNAME}
                - title: PostgresSQL password
                  content: ${POSTGRES_PASSWORD}
                - title: PostgresSQL database
                  content: ${POSTGRES_DATABASE}
                - title: PostgreSQL host
                  content: ${PORT_FORWARDED_HOSTNAME}
                - title: PostgreSQL port
                  content: ${DATABASE_PORT_FORWARDED_PORT}
            env:
                PGDATA:
                    default: /var/lib/postgresql/data/pgdata
                POSTGRES_CONNECTION_STRING:
                    default: postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DATABASE}
                    expose: true
                POSTGRES_DATABASE:
                    default: ${POSTGRES_DB}
                    expose: true
                POSTGRES_DB:
                    default: zeabur
                POSTGRES_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                POSTGRES_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                POSTGRES_PORT:
                    default: ${DATABASE_PORT}
                    expose: true
                POSTGRES_URI:
                    default: ${POSTGRES_CONNECTION_STRING}
                    expose: true
                POSTGRES_USER:
                    default: root
                POSTGRES_USERNAME:
                    default: ${POSTGRES_USER}
                    expose: true
                SUPERSET__SQLALCHEMY_DATABASE_URI:
                    default: postgresql://${POSTGRES_USERNAME}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DATABASE}
                    expose: true
            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
        - name: superset
          icon: https://avatars.githubusercontent.com/u/42724554?s=200&v=4
          dependencies:
            - postgresql
          template: PREBUILT
          spec:
            source:
                image: apache/superset:latest
                command:
                    - bash
                    - -c
                    - |
                      apt-get update && apt-get install -y postgresql-client

                      uv pip install psycopg2-binary

                      if [ -z "$SUPERSET_SECRET_KEY" ]; then
                        export SUPERSET_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(42))")
                        echo "Generated secure random SECRET_KEY"
                      fi

                      until pg_isready -h ${POSTGRES_HOST} -p ${POSTGRES_PORT} -U ${POSTGRES_USERNAME}; do
                        echo "Waiting for PostgreSQL to be ready..."
                        sleep 2
                      done

                      superset db upgrade
                      superset init
                      superset fab create-admin \
                        --username "${SUPERSET_ADMIN_USERNAME}" \
                        --firstname "${SUPERSET_ADMIN_FIRSTNAME}" \
                        --lastname "${SUPERSET_ADMIN_LASTNAME}" \
                        --email "${SUPERSET_ADMIN_EMAIL}" \
                        --password "${SUPERSET_ADMIN_PASSWORD}"

                      /app/docker/entrypoints/run-server.sh
            ports:
                - id: web
                  port: 8088
                  type: HTTP
            volumes:
                - id: data
                  dir: /var/lib/superset/data
            instructions:
                - title: Superset username
                  content: ${SUPERSET_ADMIN_USERNAME}
                - title: Superset password
                  content: ${SUPERSET_ADMIN_PASSWORD}
            env:
                SUPERSET_ADMIN_EMAIL:
                    default: ${SUPERSET_ADMIN_EMAIL}
                SUPERSET_ADMIN_FIRSTNAME:
                    default: ${SUPERSET_ADMIN_FIRSTNAME}
                SUPERSET_ADMIN_LASTNAME:
                    default: ${SUPERSET_ADMIN_LASTNAME}
                SUPERSET_ADMIN_PASSWORD:
                    default: ${SUPERSET_ADMIN_PASSWORD}
                SUPERSET_ADMIN_USERNAME:
                    default: ${SUPERSET_ADMIN_USERNAME}
                SUPERSET_SECRET_KEY:
                    default: ${SUPERSET_SECRET_KEY}
          domainKey: PUBLIC_DOMAIN
localization:
    ja-JP:
        description: Apache Supersetは、強力なデータ探索および視覚化プラットフォームです。
        readme: |-
            # Apache Superset

            Supersetは、現代的なデータ探索およびデータ視覚化プラットフォームです。Supersetは、多くのチームの専有ビジネスインテリジェンスツールを置き換えたり、補完したりすることができます。Supersetは、さまざまなデータソースとよく統合されています。

            Supersetは以下を提供します：

            - チャートを迅速に構築するための**コード不要のインターフェース**
            - 高度なクエリのための強力なWebベースの**SQLエディター**
            - カスタムディメンションとメトリックを迅速に定義するための**軽量セマンティックレイヤー**
            - ほぼすべてのSQLデータベースまたはデータエンジンに対する**即時サポート**
            - 単純な棒グラフから地理空間視覚化まで、データを表示するための**美しい視覚化の幅広い配列**
            - データベースの負荷を軽減するのに役立つ**軽量で構成可能なキャッシュレイヤー**
            - 高度に拡張可能な**セキュリティロールと認証オプション**
            - プログラムによるカスタマイズのための**API**
            - スケールのためにゼロから設計された**クラウドネイティブアーキテクチャ**

            ## 入力したユーザー名とパスワードでログインしてください。
            1. Supersetのウェブサイトにアクセスします
            2. 以下の認証情報でログインします:
              - ユーザー名: ${SUPERSET_ADMIN_USERNAME}
              - パスワード: ${SUPERSET_ADMIN_PASSWORD}

            ## Supersetアプリケーションにアクセスできるようになるログの例：
              [2025-09-19 14:17:30 +0000] [1126] [INFO] Listening at: http://0.0.0.0:8088 (1126)

            ## ドキュメント
            - [Superset公式ドキュメント](https://superset.apache.org/)
    ko-KR:
        description: Apache Superset는 강력한 데이터 탐색 및 시각화 플랫폼입니다.
        readme: |-
            # Apache Superset

            Superset는 현대적인 데이터 탐색 및 데이터 시각화 플랫폼입니다. Superset는 많은 팀의 전용 비즈니스 인텔리전스 도구를 대체하거나 보완할 수 있습니다. Superset는 다양한 데이터 소스와 잘 통합됩니다.

            Superset는 다음을 제공합니다:

            - 차트를 신속하게 구축하기 위한 **코드 없는 인터페이스**
            - 고급 쿼리를 위한 강력한 웹 기반 **SQL 편집기**
            - 사용자 정의 차원 및 메트릭을 신속하게 정의하기 위한 **경량 시맨틱 레이어**
            - 거의 모든 SQL 데이터베이스 또는 데이터 엔진에 대한 **즉각적인 지원**
            - 단순한 막대 그래프에서 지리 공간 시각화에 이르기까지 데이터를 표시하기 위한 **아름다운 시각화의 폭넓은 배열**
            - 데이터베이스의 부하를 줄이는 데 도움이 되는 **경량 구성 가능 캐시 레이어**
            - 고도로 확장 가능한 **보안 역할 및 인증** 옵션
            - 프로그래밍 방식의 사용자 지정을 위한 **API**
            - 확장을 위해 처음부터 설계된 **클라우드 네이티브 아키텍처**

            ## 입력한 사용자명과 비밀번호로 로그인하세요.
            1. Superset 웹사이트에 접속합니다
            2. 다음 자격 증명으로 로그인합니다:
              - 사용자명: ${SUPERSET_ADMIN_USERNAME}
              - 비밀번호: ${SUPERSET_ADMIN_PASSWORD}

            ## Superset 애플리케이션에 액세스할 수 있게 되는 로그 예:
              [2025-09-19 14:17:30 +0000] [1126] [INFO] Listening at: http://0.0.0.0:8088 (1126)

            ## 문서
            - [Superset 공식 문서](https://superset.apache.org/)
    zh-TW:
        description: Apache Superset 是現代化的資料探索與視覺化平台。
        readme: |-
            # Apache Superset

            Superset 是一個現代化的資料探索與視覺化平台。Superset 可以取代或增強許多團隊的專有商業智慧工具。Superset 與各種資料來源整合良好。

            Superset 提供：

            - 一個 **無編碼的介面**，可以快速建立圖表
            - 一個強大的、基於網頁的 **SQL 編輯器**，用於進行高級查詢
            - 一個 **輕量級的語義層**，可以快速定義自訂維度和指標
            - 開箱即用的支援 **幾乎所有 SQL** 數據庫或數據引擎
            - 一系列 **美觀的視覺化**，可以展示您的數據，範圍從簡單的條形圖到地理空間視覺化
            - 輕量級、可配置的 **快取層**，幫助減輕資料庫負擔
            - 高度可擴展的 **安全角色和身份驗證** 選項
            - 一個 **API**，用於程式化自訂
            - 一個 **雲原生架構**，從一開始就為擴展而設計

            ## 使用您一開始輸入的帳號與密碼登入。
            1. 前往 Superset 網站
            2. 使用以下憑證資訊登入：
              - 帳號：${SUPERSET_ADMIN_USERNAME}
              - 密碼：${SUPERSET_ADMIN_PASSWORD}

            ## 當你看到類似以下的日誌時，就可以訪問你的 Superset 應用程式了：
              [2025-09-19 14:17:30 +0000] [1126] [INFO] Listening at: http://0.0.0.0:8088 (1126)

            ## 文件
            - [Superset 官方文件](https://superset.apache.org/)
