# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Domain Locker
spec:
    description: A comprehensive domain management tool, allowing you to easily view and manage your domains in one place.
    coverImage: https://domain-locker.com/screenshots/homepage.png
    icon: https://domain-locker.com/favicon.ico
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Domain Locker Domain
          description: The domain for accessing your Domain Locker application.
    tags:
        - Tool
    readme: |
        # [Domain Locker](https://github.com/lissy93/domain-locker)

        A comprehensive domain management tool, allowing you to easily view and manage your domains in one place.

        ## Tutorial

        1. Click "Deploy" to deploy Domain Locker on Zeabur.

        2. After deployment, add a domain to Domain Locker.

        3. Go to the website, click "Get Started," and begin adding and managing your domains.
    services:
        - name: postgresql
          icon: https://cdn.zeabur.com/marketplace/postgresql.svg
          template: PREBUILT_V2
          spec:
            source:
                image: postgres:18
                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/18/docker
            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/18/docker/pgdata
                    expose: false
                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
                    expose: false
                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
                    expose: true
                POSTGRES_USERNAME:
                    default: ${POSTGRES_USER}
                    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 = 256
                    shared_buffers = 256MB
                    dynamic_shared_memory_type = posix
                    max_wal_size = 1GB
                    min_wal_size = 80MB
                    log_timezone = 'UTC'
                    datestyle = 'iso, mdy'
                    timezone = 'UTC'
                    lc_messages = 'en_US.UTF-8'
                    lc_monetary = 'en_US.UTF-8'
                    lc_numeric = 'en_US.UTF-8'
                    lc_time = 'en_US.UTF-8'
                    default_text_search_config = 'pg_catalog.english'
                  permission: null
                  envsubst: null
            portForwarding:
                enabled: true
        - name: domain-locker
          icon: https://domain-locker.com/favicon.ico
          template: PREBUILT_V2
          spec:
            source:
                image: lissy93/domain-locker:latest
            ports:
                - id: port3000
                  port: 3000
                  type: HTTP
            env:
                DL_ENV_TYPE:
                    default: selfHosted
                    expose: false
                DL_PG_HOST:
                    default: ${POSTGRES_HOST}
                    expose: false
                DL_PG_NAME:
                    default: ${POSTGRES_DATABASE}
                    expose: false
                DL_PG_PASSWORD:
                    default: ${POSTGRES_PASSWORD}
                    expose: false
                DL_PG_PORT:
                    default: ${POSTGRES_PORT}
                    expose: false
                DL_PG_USER:
                    default: root
                    expose: false
            configs: []
            portForwarding:
                enabled: false
          domainKey: PUBLIC_DOMAIN
localization:
    zh-TW:
        description: 域名管理的全方位工具，輕鬆在一處查看和管理域名。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: Domain Locker 網域
              description: 用於訪問您的 Domain Locker 應用的網域。
        readme: |-
            # [Domain Locker](https://github.com/lissy93/domain-locker)

            域名管理的全方位工具，輕鬆在一處查看和管理域名。

            ## 使用教學

            1. 點擊「部署」，即可在 Zeabur 上部署 Domain Locker。
            2. 部署完成後，為 【Domain Locker】 新增網域。
            3. 進入網站，點擊 Get Started，開始新增並管理你的域名。
