# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Picsur
spec:
    description: Self-hostable image sharing service like Imgur with built-in converting. Ships with a Postgres dependency.
    coverImage: https://raw.githubusercontent.com/CaramelFur/Picsur/master/branding/text/picsur_light.svg
    icon: https://raw.githubusercontent.com/CaramelFur/Picsur/master/branding/logo/picsur.svg
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Domain
          description: Domain to bind to the Picsur web service.
        - key: ADMIN_PASSWORD
          type: STRING
          name: Admin Password
          description: Sets PICSUR_ADMIN_PASSWORD for the default admin user (username is 'admin'). Required.
        - key: DB_PASSWORD
          type: STRING
          name: Postgres Password
          description: Password for the bundled Postgres instance (POSTGRES_PASSWORD). Required.
        - key: JWT_SECRET
          type: STRING
          name: JWT Secret (optional)
          description: Optional PICSUR_JWT_SECRET; a random one will be generated if left blank.
        - key: MAX_FILE_SIZE
          type: STRING
          name: Max Upload Size (bytes, optional)
          description: Optional PICSUR_MAX_FILE_SIZE (e.g., 128000000).
    tags:
        - Tool
        - Image Hosting
        - Website
    readme: "# Picsur\n\nPicsur is an easy to use, self-hostable image sharing service like Imgur with built-in converting.  \n**Status:** The upstream repository currently states \"NOT MAINTAINED\" (see FAQ). Consider this before production use.  \nDefault admin username: `admin`; set the password via `PICSUR_ADMIN_PASSWORD`.  \nThe app listens on port `8080` and uses Postgres as its database.\n\n## Deploy on Zeabur\n1) Click **Deploy**.  \n2) Provide **Domain**, **Admin Password**, and **Postgres Password**.  \n3) (Optional) Set **JWT Secret** and **Max Upload Size**.  \n4) Open your domain to access Picsur.\n\n## Notes\n- Port: 8080 (HTTP)  \n- DB: Postgres sidecar (17-alpine), data is persisted via a volume.  \n- Key environment variables:  \n  - `PICSUR_ADMIN_PASSWORD` (admin password)  \n  - `PICSUR_DB_HOST`, `PICSUR_DB_PORT`, `PICSUR_DB_USERNAME`, `PICSUR_DB_PASSWORD`, `PICSUR_DB_DATABASE`  \n  - Optional: `PICSUR_JWT_SECRET`, `PICSUR_JWT_EXPIRY`, `PICSUR_MAX_FILE_SIZE`  \n- To allow user self-registration, adjust roles in the UI as documented in the README FAQ.\n\n## References\n- GitHub: https://github.com/CaramelFur/Picsur"
    services:
        - name: postgres
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/postgresql.svg
          template: PREBUILT
          spec:
            id: postgres
            source:
                image: postgres:17-alpine
            ports:
                - id: db
                  port: 5432
                  type: TCP
            volumes:
                - id: pgdata
                  dir: /var/lib/postgresql/data
            instructions:
                - title: Postgres Connection (external)
                  content: postgres://picsur:${DB_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DB_PORT_FORWARDED_PORT}/picsur
            env:
                POSTGRES_DB:
                    default: picsur
                    expose: true
                POSTGRES_PASSWORD:
                    default: ${DB_PASSWORD}
                    expose: true
                POSTGRES_USER:
                    default: picsur
                    expose: true
        - name: picsur
          icon: https://raw.githubusercontent.com/CaramelFur/Picsur/master/branding/logo/picsur.svg
          template: PREBUILT
          spec:
            id: picsur
            source:
                image: ghcr.io/caramelfur/picsur:latest
            ports:
                - id: web
                  port: 8080
                  type: HTTP
            instructions:
                - title: Open Picsur
                  content: https://${PUBLIC_DOMAIN}
            env:
                PICSUR_ADMIN_PASSWORD:
                    default: ${ADMIN_PASSWORD}
                    expose: true
                PICSUR_DB_DATABASE:
                    default: ${POSTGRES_DB}
                    expose: true
                PICSUR_DB_HOST:
                    default: ${POSTGRES_HOST}
                    expose: true
                PICSUR_DB_PASSWORD:
                    default: ${POSTGRES_PASSWORD}
                    expose: true
                PICSUR_DB_PORT:
                    default: ${POSTGRES_PORT}
                    expose: true
                PICSUR_DB_USERNAME:
                    default: ${POSTGRES_USER}
                    expose: true
                PICSUR_JWT_SECRET:
                    default: ${JWT_SECRET}
                    expose: true
                PICSUR_MAX_FILE_SIZE:
                    default: ${MAX_FILE_SIZE}
                    expose: true
          domainKey: PUBLIC_DOMAIN
localization:
    zh-TW:
        description: Picsur 是一款可自架、類似 Imgur 的圖床服務，支援圖片轉檔與編輯。此模板包含 Postgres 依賴服務。
        variables:
            - key: PUBLIC_DOMAIN
              type: DOMAIN
              name: 網域
              description: 綁定至 Picsur 網站服務的網域。
            - key: ADMIN_PASSWORD
              type: STRING
              name: 管理員密碼
              description: 設定管理者帳號（admin）的登入密碼（PICSUR_ADMIN_PASSWORD）。
            - key: DB_PASSWORD
              type: STRING
              name: Postgres 密碼
              description: 內建 Postgres 的密碼（POSTGRES_PASSWORD）。
            - key: JWT_SECRET
              type: STRING
              name: JWT 密鑰（選填）
              description: PICSUR_JWT_SECRET；若不填，系統會隨機產生。
            - key: MAX_FILE_SIZE
              type: STRING
              name: 上傳大小上限（位元組，選填）
              description: 例：128000000。對應 PICSUR_MAX_FILE_SIZE。
        readme: "# Picsur\n\nPicsur 是一個易於使用、可自行託管的圖床服務，支援多種格式、轉檔與編輯功能。  \n**注意：上游專案目前於 README 註明「未維護（NOT MAINTAINED）」**，若要長期使用，請評估風險或考慮 fork。  \n管理者預設帳號為 `admin`，密碼由 `PICSUR_ADMIN_PASSWORD` 指定。服務監聽 `8080` 埠，並使用 Postgres。\n\n## 佈署步驟\n1. 按 **Deploy** 建立服務。  \n2. 填寫 **網域**、**管理員密碼**、**Postgres 密碼**。  \n3. （選填）設定 **JWT 密鑰** 與 **上傳大小上限**。  \n4. 開啟網域後即可登入使用。\n\n## 重要環境變數\n- `PICSUR_ADMIN_PASSWORD`（管理員密碼）  \n- `PICSUR_DB_HOST`、`PICSUR_DB_PORT`、`PICSUR_DB_USERNAME`、`PICSUR_DB_PASSWORD`、`PICSUR_DB_DATABASE`  \n- 選填：`PICSUR_JWT_SECRET`、`PICSUR_JWT_EXPIRY`、`PICSUR_MAX_FILE_SIZE`  \n\n※ 若需開放使用者自行註冊，可於後台：**設定 → 角色 → guest → edit**，賦予「Register」權限（詳見 README FAQ）。\n\n## References\n- GitHub: https://github.com/CaramelFur/Picsur"
