# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Mercure
spec:
    description: |
        Mercure is an open, easy, fast, reliable, and battery-efficient solution for real-time communications. It is a protocol and a reference implementation of a server (hub) allowing to push data updates to web browsers and other HTTP clients using Server-Sent Events (SSE).
    coverImage: https://avatars.githubusercontent.com/u/57224
    icon: https://avatars.githubusercontent.com/u/57224
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Domain
          description: The domain to access Mercure Hub
        - key: MERCURE_PUBLISHER_JWT_KEY
          type: PASSWORD
          name: Publisher JWT Key
          description: Secret key used to sign publisher JWTs
        - key: MERCURE_SUBSCRIBER_JWT_KEY
          type: PASSWORD
          name: Subscriber JWT Key
          description: Secret key used to sign subscriber JWTs
    tags:
        - Tool
        - Development
    readme: |
        # Mercure

        An open, easy, fast, reliable, and battery-efficient solution for real-time communications. Push data updates to web browsers and other HTTP clients using Server-Sent Events (SSE).

        ## Getting Started

        1. **Visit your domain** -- the Mercure Hub welcome page appears
        2. **Configure JWT keys** -- use the Publisher and Subscriber JWT keys to authenticate
        3. **Start publishing** -- send POST requests to the hub to push updates to subscribers

        ## What You Can Do After Deployment

        1. **Push real-time updates** -- publish events to topics that subscribers receive instantly
        2. **Subscribe to topics** -- connect via SSE to receive live data updates
        3. **Use authorization** -- control access with JWT-based publisher and subscriber authentication
        4. **Enable auto-discovery** -- let clients automatically find the hub via Link headers
        5. **Retrieve missed events** -- reconnecting subscribers can catch up on events they missed

        ## Key Features

        - Server-Sent Events (SSE) for real-time push notifications
        - JWT-based authorization for publishers and subscribers
        - Topic-based publish/subscribe model
        - Auto-discovery via HTTP Link headers
        - Event history and reconnection support
        - Built-in BoltDB for embedded storage -- no external database needed
        - Written in Go as a single binary for high performance
        - Compatible with any programming language or framework

        ## License

        AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
    services:
        - name: mercure
          icon: https://avatars.githubusercontent.com/u/57224
          template: PREBUILT_V2
          spec:
            source:
                image: dunglas/mercure:v0.21.11
            ports:
                - id: web
                  port: 80
                  type: HTTP
            volumes:
                - id: data
                  dir: /data
                - id: config
                  dir: /config
            env:
                MERCURE_EXTRA_DIRECTIVES:
                    default: cors_origins *
                MERCURE_PUBLISHER_JWT_KEY:
                    default: ${MERCURE_PUBLISHER_JWT_KEY}
                MERCURE_SUBSCRIBER_JWT_KEY:
                    default: ${MERCURE_SUBSCRIBER_JWT_KEY}
                SERVER_NAME:
                    default: :80
          domainKey: PUBLIC_DOMAIN
localization:
    es-ES:
        description: |
            Mercure es una solucion abierta, facil, rapida, fiable y eficiente en energia para comunicaciones en tiempo real. Envia actualizaciones de datos a navegadores web y otros clientes HTTP usando Server-Sent Events (SSE).
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: Dominio
              description: El dominio para acceder a Mercure Hub
            - key: MERCURE_PUBLISHER_JWT_KEY
              type: STRING
              name: Clave JWT del publicador
              description: Clave secreta usada para firmar los JWT del publicador
            - key: MERCURE_SUBSCRIBER_JWT_KEY
              type: STRING
              name: Clave JWT del suscriptor
              description: Clave secreta usada para firmar los JWT del suscriptor
        readme: |
            # Mercure

            Solucion abierta, facil, rapida, fiable y eficiente para comunicaciones en tiempo real. Envia actualizaciones via SSE a navegadores y clientes HTTP.

            ## Primeros pasos

            1. **Visita tu dominio** -- aparece la pagina de bienvenida de Mercure Hub
            2. **Configura las claves JWT** -- usa las claves JWT de publicador y suscriptor para autenticar
            3. **Comienza a publicar** -- envia solicitudes POST al hub para enviar actualizaciones a suscriptores

            ## Que puedes hacer despues del despliegue

            1. **Enviar actualizaciones en tiempo real** -- publica eventos en temas que los suscriptores reciben al instante
            2. **Suscribirse a temas** -- conecta via SSE para recibir actualizaciones de datos en vivo
            3. **Usar autorizacion** -- controla el acceso con autenticacion JWT para publicadores y suscriptores
            4. **Habilitar auto-descubrimiento** -- permite que los clientes encuentren el hub automaticamente via encabezados Link
            5. **Recuperar eventos perdidos** -- los suscriptores que se reconectan pueden ponerse al dia con eventos perdidos

            ## Licencia

            AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
    id-ID:
        description: |
            Mercure adalah solusi terbuka, mudah, cepat, andal, dan hemat energi untuk komunikasi real-time. Kirim pembaruan data ke browser web dan klien HTTP lainnya menggunakan Server-Sent Events (SSE).
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: Domain
              description: Domain untuk mengakses Mercure Hub
            - key: MERCURE_PUBLISHER_JWT_KEY
              type: STRING
              name: Kunci JWT Penerbit
              description: Kunci rahasia yang digunakan untuk menandatangani JWT penerbit
            - key: MERCURE_SUBSCRIBER_JWT_KEY
              type: STRING
              name: Kunci JWT Pelanggan
              description: Kunci rahasia yang digunakan untuk menandatangani JWT pelanggan
        readme: |
            # Mercure

            Solusi terbuka, mudah, cepat, andal, dan hemat energi untuk komunikasi real-time. Kirim pembaruan data via SSE ke browser dan klien HTTP.

            ## Memulai

            1. **Buka domain Anda** -- halaman sambutan Mercure Hub muncul
            2. **Konfigurasi kunci JWT** -- gunakan kunci JWT penerbit dan pelanggan untuk autentikasi
            3. **Mulai menerbitkan** -- kirim permintaan POST ke hub untuk mendorong pembaruan ke pelanggan

            ## Apa yang bisa dilakukan setelah deploy

            1. **Kirim pembaruan real-time** -- terbitkan event ke topik yang langsung diterima pelanggan
            2. **Berlangganan topik** -- terhubung via SSE untuk menerima pembaruan data langsung
            3. **Gunakan otorisasi** -- kontrol akses dengan autentikasi JWT untuk penerbit dan pelanggan
            4. **Aktifkan penemuan otomatis** -- biarkan klien menemukan hub secara otomatis via header Link
            5. **Ambil event yang terlewat** -- pelanggan yang terhubung kembali dapat mengejar event yang terlewat

            ## Lisensi

            AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
    ja-JP:
        description: |
            Mercure はオープンで簡単、高速、信頼性が高く、省電力のリアルタイム通信ソリューションです。Server-Sent Events (SSE) を使用してブラウザやその他の HTTP クライアントにデータ更新をプッシュします。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: ドメイン
              description: Mercure Hub にアクセスするためのドメイン
            - key: MERCURE_PUBLISHER_JWT_KEY
              type: STRING
              name: パブリッシャー JWT キー
              description: パブリッシャー JWT の署名に使用する秘密鍵
            - key: MERCURE_SUBSCRIBER_JWT_KEY
              type: STRING
              name: サブスクライバー JWT キー
              description: サブスクライバー JWT の署名に使用する秘密鍵
        readme: |
            # Mercure

            オープンで簡単、高速、信頼性が高く、省電力のリアルタイム通信ソリューション。SSE でブラウザや HTTP クライアントにデータ更新をプッシュ。

            ## はじめに

            1. **ドメインにアクセス** -- Mercure Hub のウェルカムページが表示されます
            2. **JWT キーを設定** -- パブリッシャーとサブスクライバーの JWT キーで認証
            3. **パブリッシュ開始** -- Hub に POST リクエストを送信してサブスクライバーに更新をプッシュ

            ## デプロイ後にできること

            1. **リアルタイム更新をプッシュ** -- トピックにイベントを発行し、サブスクライバーが即座に受信
            2. **トピックをサブスクライブ** -- SSE 経由で接続しリアルタイムデータ更新を受信
            3. **認可を使用** -- JWT ベースでパブリッシャーとサブスクライバーのアクセスを制御
            4. **自動検出を有効化** -- Link ヘッダーでクライアントが自動的に Hub を検出
            5. **見逃したイベントを取得** -- 再接続したサブスクライバーが見逃したイベントをキャッチアップ

            ## ライセンス

            AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
    ko-KR:
        description: |
            Mercure는 개방적이고 간단하며 빠르고 안정적이며 배터리 효율적인 실시간 통신 솔루션입니다. Server-Sent Events (SSE)를 사용하여 웹 브라우저 및 기타 HTTP 클라이언트에 데이터 업데이트를 푸시합니다.
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 도메인
              description: Mercure Hub에 접속할 도메인
            - key: MERCURE_PUBLISHER_JWT_KEY
              type: STRING
              name: 게시자 JWT 키
              description: 게시자 JWT 서명에 사용되는 비밀 키
            - key: MERCURE_SUBSCRIBER_JWT_KEY
              type: STRING
              name: 구독자 JWT 키
              description: 구독자 JWT 서명에 사용되는 비밀 키
        readme: |
            # Mercure

            개방적이고 간단하며 빠르고 안정적인 실시간 통신 솔루션. SSE를 사용하여 브라우저 및 HTTP 클라이언트에 데이터 업데이트를 푸시합니다.

            ## 시작하기

            1. **도메인 접속** -- Mercure Hub 환영 페이지가 표시됩니다
            2. **JWT 키 설정** -- 게시자 및 구독자 JWT 키로 인증
            3. **게시 시작** -- Hub에 POST 요청을 보내 구독자에게 업데이트 푸시

            ## 배포 후 할 수 있는 것

            1. **실시간 업데이트 푸시** -- 토픽에 이벤트를 게시하면 구독자가 즉시 수신
            2. **토픽 구독** -- SSE를 통해 연결하여 실시간 데이터 업데이트 수신
            3. **인가 사용** -- JWT 기반으로 게시자와 구독자의 접근 제어
            4. **자동 검색 활성화** -- Link 헤더로 클라이언트가 자동으로 Hub 검색
            5. **놓친 이벤트 검색** -- 재접속한 구독자가 놓친 이벤트를 따라잡기

            ## 라이선스

            AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
    th-TH:
        description: |
            Mercure เป็นโซลูชันแบบเปิด ง่าย รวดเร็ว เชื่อถือได้ และประหยัดพลังงานสำหรับการสื่อสารแบบเรียลไทม์ ส่งข้อมูลอัปเดตไปยังเบราว์เซอร์และไคลเอนต์ HTTP อื่น ๆ โดยใช้ Server-Sent Events (SSE)
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: โดเมน
              description: โดเมนสำหรับเข้าถึง Mercure Hub
            - key: MERCURE_PUBLISHER_JWT_KEY
              type: STRING
              name: คีย์ JWT ผู้เผยแพร่
              description: คีย์ลับที่ใช้ลงนาม JWT ของผู้เผยแพร่
            - key: MERCURE_SUBSCRIBER_JWT_KEY
              type: STRING
              name: คีย์ JWT ผู้สมัครสมาชิก
              description: คีย์ลับที่ใช้ลงนาม JWT ของผู้สมัครสมาชิก
        readme: |
            # Mercure

            โซลูชันแบบเปิด ง่าย รวดเร็ว เชื่อถือได้ และประหยัดพลังงานสำหรับการสื่อสารแบบเรียลไทม์ ส่งข้อมูลอัปเดตผ่าน SSE ไปยังเบราว์เซอร์และไคลเอนต์ HTTP

            ## เริ่มต้นใช้งาน

            1. **เข้าสู่โดเมน** -- หน้าต้อนรับ Mercure Hub จะปรากฏ
            2. **ตั้งค่าคีย์ JWT** -- ใช้คีย์ JWT ของผู้เผยแพร่และผู้สมัครสมาชิกเพื่อยืนยันตัวตน
            3. **เริ่มเผยแพร่** -- ส่งคำขอ POST ไปยัง Hub เพื่อส่งอัปเดตไปยังผู้สมัครสมาชิก

            ## สิ่งที่ทำได้หลังจากติดตั้ง

            1. **ส่งอัปเดตแบบเรียลไทม์** -- เผยแพร่อีเวนต์ไปยังหัวข้อที่ผู้สมัครสมาชิกได้รับทันที
            2. **สมัครสมาชิกหัวข้อ** -- เชื่อมต่อผ่าน SSE เพื่อรับอัปเดตข้อมูลสด
            3. **ใช้การอนุญาต** -- ควบคุมการเข้าถึงด้วยการยืนยันตัวตน JWT สำหรับผู้เผยแพร่และผู้สมัครสมาชิก
            4. **เปิดใช้การค้นพบอัตโนมัติ** -- ให้ไคลเอนต์ค้นพบ Hub โดยอัตโนมัติผ่านเฮดเดอร์ Link
            5. **ดึงอีเวนต์ที่พลาด** -- ผู้สมัครสมาชิกที่เชื่อมต่อใหม่สามารถรับอีเวนต์ที่พลาดไป

            ## สัญญาอนุญาต

            AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
    zh-CN:
        description: |
            Mercure 是开放、简单、快速、可靠且省电的实时通信解决方案。通过 Server-Sent Events (SSE) 将数据更新推送至网页浏览器和其他 HTTP 客户端。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 域名
              description: 访问 Mercure Hub 的域名
            - key: MERCURE_PUBLISHER_JWT_KEY
              type: STRING
              name: 发布者 JWT 密钥
              description: 用于签署发布者 JWT 的密钥
            - key: MERCURE_SUBSCRIBER_JWT_KEY
              type: STRING
              name: 订阅者 JWT 密钥
              description: 用于签署订阅者 JWT 的密钥
        readme: |
            # Mercure

            开放、简单、快速、可靠且省电的实时通信解决方案。通过 Server-Sent Events (SSE) 将数据更新推送至浏览器和其他 HTTP 客户端。

            ## 开始使用

            1. **打开域名** -- Mercure Hub 欢迎页面会显示
            2. **配置 JWT 密钥** -- 使用发布者和订阅者 JWT 密钥进行认证
            3. **开始发布** -- 向 Hub 发送 POST 请求以推送更新给订阅者

            ## 部署后可以做什么

            1. **推送实时更新** -- 发布事件至主题，订阅者即时接收
            2. **订阅主题** -- 通过 SSE 连接接收实时数据更新
            3. **使用授权** -- 通过 JWT 控制发布者和订阅者的访问权限
            4. **启用自动发现** -- 让客户端通过 Link 标头自动找到 Hub
            5. **取回遗漏事件** -- 重新连接的订阅者可补回遗漏的事件

            ## 授权

            AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
    zh-TW:
        description: |
            Mercure 是開放、簡單、快速、可靠且省電的即時通訊解決方案。透過 Server-Sent Events (SSE) 將資料更新推送至網頁瀏覽器和其他 HTTP 用戶端。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 網域
              description: 存取 Mercure Hub 的網域
            - key: MERCURE_PUBLISHER_JWT_KEY
              type: STRING
              name: 發布者 JWT 金鑰
              description: 用於簽署發布者 JWT 的密鑰
            - key: MERCURE_SUBSCRIBER_JWT_KEY
              type: STRING
              name: 訂閱者 JWT 金鑰
              description: 用於簽署訂閱者 JWT 的密鑰
        readme: |
            # Mercure

            開放、簡單、快速、可靠且省電的即時通訊解決方案。透過 Server-Sent Events (SSE) 將資料更新推送至瀏覽器和其他 HTTP 用戶端。

            ## 開始使用

            1. **開啟網域** -- Mercure Hub 歡迎頁面會顯示
            2. **設定 JWT 金鑰** -- 使用發布者和訂閱者 JWT 金鑰進行認證
            3. **開始發布** -- 向 Hub 發送 POST 請求以推送更新給訂閱者

            ## 部署後可以做什麼

            1. **推送即時更新** -- 發布事件至主題，訂閱者即時接收
            2. **訂閱主題** -- 透過 SSE 連接接收即時資料更新
            3. **使用授權** -- 透過 JWT 控制發布者和訂閱者的存取權限
            4. **啟用自動發現** -- 讓用戶端透過 Link 標頭自動找到 Hub
            5. **取回遺漏事件** -- 重新連線的訂閱者可補回遺漏的事件

            ## 授權

            AGPL-3.0 -- [GitHub](https://github.com/dunglas/mercure)
