# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Anubis
spec:
    description: |
        Anubis is a reverse proxy that protects upstream services from scraper bots and AI crawlers using a proof-of-work challenge. Lightweight, stateless, and easy to deploy in front of any web application.
    coverImage: https://avatars.githubusercontent.com/u/200652845
    icon: https://avatars.githubusercontent.com/u/200652845
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Domain
          description: The domain to access Anubis
    tags:
        - Tool
        - Security
    readme: |
        # Anubis

        A reverse proxy that challenges bots with a proof-of-work puzzle before allowing access to your upstream service. Blocks AI scrapers, content thieves, and abusive crawlers without CAPTCHAs or JavaScript fingerprinting.

        ## What You Can Do After Deployment

        Place Anubis in front of any web application. Legitimate users solve the challenge automatically in their browser (typically under 1 second). Bots that cannot execute JavaScript or complete the proof-of-work are blocked.

        **Bot protection:** Serves a SHA-256 proof-of-work challenge page. Real browsers solve it transparently. Headless scrapers and AI crawlers that skip JavaScript are stopped.

        **Configurable difficulty:** Adjust `DIFFICULTY` to control how hard the challenge is (higher = more CPU work for the client). Default of 4 is suitable for most use cases.

        **Transparent to users:** Once the challenge is solved, a cookie is set and subsequent requests pass through without delay. Users experience a brief loading screen on first visit only.

        **Stateless:** No database, no session storage. The challenge cookie is cryptographically verified. Deploy multiple instances without coordination.

        ## Configuration

        - **Target URL:** Set `TARGET` to the upstream service URL that Anubis should protect (e.g., `http://my-app:3000`)
        - **Difficulty:** Set `DIFFICULTY` to control proof-of-work difficulty (default: `4`). Higher values = harder challenge.
        - **Metrics:** Prometheus metrics are available at the metrics endpoint when enabled

        ## How It Works

        1. Client requests a page through Anubis
        2. Anubis serves a challenge page with a SHA-256 proof-of-work puzzle
        3. The browser's JavaScript solves the puzzle and submits the solution
        4. Anubis verifies the solution, sets a signed cookie, and proxies the request to the target
        5. Subsequent requests with a valid cookie pass through directly

        ## License

        MIT — [GitHub](https://github.com/TecharoHQ/anubis)
    services:
        - name: anubis
          icon: https://avatars.githubusercontent.com/u/200652845
          template: PREBUILT_V2
          spec:
            source:
                image: ghcr.io/techarohq/anubis:v1.25.0
            ports:
                - id: web
                  port: 8923
                  type: HTTP
            env:
                DIFFICULTY:
                    default: "4"
                TARGET:
                    default: http://localhost:8080
          domainKey: PUBLIC_DOMAIN
localization:
    es-ES:
        description: |
            Anubis es un proxy inverso que protege servicios upstream de bots scrapers y rastreadores de IA mediante un desafío de prueba de trabajo. Ligero, sin estado y fácil de desplegar.
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: Dominio
              description: El dominio para acceder a Anubis
        readme: |
            # Anubis

            Proxy inverso que desafía a los bots con un rompecabezas de prueba de trabajo antes de permitir el acceso a tu servicio upstream. Bloquea scrapers de IA sin CAPTCHAs.

            ## Qué puedes hacer después del despliegue

            Coloca Anubis frente a cualquier aplicación web. Los usuarios reales resuelven el desafío automáticamente (menos de 1 segundo). Los bots que no ejecutan JavaScript son bloqueados.

            **Protección contra bots:** Desafío SHA-256 de prueba de trabajo. Navegadores reales lo resuelven de forma transparente.

            **Dificultad ajustable:** Configura `DIFFICULTY` para controlar la dificultad del desafío.

            **Sin estado:** Sin base de datos. La cookie del desafío se verifica criptográficamente.

            ## Configuración

            - URL objetivo: establece `TARGET` a la URL del servicio upstream
            - Dificultad: establece `DIFFICULTY` (default: `4`)

            ## Licencia

            MIT — [GitHub](https://github.com/TecharoHQ/anubis)
    id-ID:
        description: |
            Anubis adalah reverse proxy yang melindungi layanan upstream dari bot scraper dan crawler AI menggunakan tantangan proof-of-work. Ringan, stateless, dan mudah di-deploy.
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: Domain
              description: Domain untuk mengakses Anubis
        readme: |
            # Anubis

            Reverse proxy yang menantang bot dengan teka-teki proof-of-work sebelum mengizinkan akses ke layanan upstream. Memblokir scraper AI tanpa CAPTCHA.

            ## Apa yang bisa dilakukan setelah deploy

            Tempatkan Anubis di depan aplikasi web. Pengguna asli menyelesaikan tantangan secara otomatis (kurang dari 1 detik). Bot yang tidak bisa menjalankan JavaScript diblokir.

            **Perlindungan bot:** Tantangan SHA-256 proof-of-work. Browser asli menyelesaikannya secara transparan.

            **Tingkat kesulitan:** Atur `DIFFICULTY` untuk mengontrol kesulitan tantangan.

            **Stateless:** Tidak perlu database. Cookie tantangan diverifikasi secara kriptografis.

            ## Konfigurasi

            - URL target: atur `TARGET` ke URL layanan upstream
            - Kesulitan: atur `DIFFICULTY` (default: `4`)

            ## Lisensi

            MIT — [GitHub](https://github.com/TecharoHQ/anubis)
    ja-JP:
        description: |
            Anubisはリバースプロキシで、Proof-of-WorkチャレンジによりスクレイパーボットやAIクローラーからアップストリームサービスを保護します。軽量、ステートレス、簡単にデプロイ可能。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: ドメイン
              description: Anubisにアクセスするためのドメイン
        readme: |
            # Anubis

            アップストリームサービスへのアクセスを許可する前にProof-of-Workパズルでボットにチャレンジするリバースプロキシ。CAPTCHAやJavaScriptフィンガープリントなしでAIスクレイパーをブロック。

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

            任意のWebアプリケーションの前にAnubisを配置。正規ユーザーのブラウザは自動的にチャレンジを解決（通常1秒以内）。JavaScriptを実行できないボットはブロックされます。

            **ボット保護：** SHA-256 Proof-of-Workチャレンジ。正規ブラウザは透過的に解決。

            **調整可能な難易度：** `DIFFICULTY`でチャレンジの難易度を制御。

            **ステートレス：** データベース不要。チャレンジCookieは暗号学的に検証。

            ## 設定

            - ターゲットURL：`TARGET`をアップストリームサービスURLに設定
            - 難易度：`DIFFICULTY`を設定（デフォルト：`4`）

            ## ライセンス

            MIT — [GitHub](https://github.com/TecharoHQ/anubis)
    ko-KR:
        description: |
            Anubis는 작업 증명(proof-of-work) 챌린지를 사용하여 스크래퍼 봇과 AI 크롤러로부터 업스트림 서비스를 보호하는 리버스 프록시입니다. 경량, 무상태, 배포 간편.
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 도메인
              description: Anubis에 접속할 도메인
        readme: |
            # Anubis

            업스트림 서비스 접근을 허용하기 전에 봇에게 작업 증명 퍼즐을 제시하는 리버스 프록시. CAPTCHA 없이 AI 스크래퍼를 차단합니다.

            ## 배포 후 할 수 있는 것

            Anubis를 웹 애플리케이션 앞에 배치하세요. 실제 사용자는 브라우저에서 자동으로 챌린지를 해결합니다(보통 1초 미만). JavaScript를 실행할 수 없는 봇은 차단됩니다.

            **봇 보호:** SHA-256 작업 증명 챌린지. 실제 브라우저는 투명하게 해결.

            **난이도 조절:** `DIFFICULTY`로 챌린지 난이도 제어.

            **무상태:** 데이터베이스 불필요. 챌린지 쿠키는 암호학적으로 검증.

            ## 설정

            - 대상 URL: `TARGET`을 업스트림 서비스 URL로 설정
            - 난이도: `DIFFICULTY` 설정 (기본값: `4`)

            ## 라이선스

            MIT — [GitHub](https://github.com/TecharoHQ/anubis)
    th-TH:
        description: |
            Anubis คือ reverse proxy ที่ปกป้องบริการ upstream จากบอทสแครปเปอร์และ AI crawler ด้วยการท้าทาย proof-of-work น้ำหนักเบา ไม่เก็บสถานะ ติดตั้งง่าย
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: โดเมน
              description: โดเมนสำหรับเข้าถึง Anubis
        readme: |
            # Anubis

            Reverse proxy ที่ท้าทายบอทด้วยปริศนา proof-of-work ก่อนอนุญาตให้เข้าถึงบริการ upstream บล็อก AI scraper โดยไม่ต้องใช้ CAPTCHA

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

            วาง Anubis ไว้หน้าเว็บแอปพลิเคชัน ผู้ใช้จริงแก้ปัญหาอัตโนมัติ (น้อยกว่า 1 วินาที) บอทที่ไม่สามารถรัน JavaScript ถูกบล็อก

            **การป้องกันบอท:** ท้าทาย SHA-256 proof-of-work เบราว์เซอร์จริงแก้ปัญหาอย่างโปร่งใส

            **ปรับระดับความยาก:** ตั้ง `DIFFICULTY` เพื่อควบคุมความยากของการท้าทาย

            **ไม่เก็บสถานะ:** ไม่ต้องใช้ฐานข้อมูล คุกกี้ถูกตรวจสอบด้วยการเข้ารหัส

            ## การตั้งค่า

            - URL เป้าหมาย: ตั้ง `TARGET` เป็น URL ของบริการ upstream
            - ระดับความยาก: ตั้ง `DIFFICULTY` (ค่าเริ่มต้น: `4`)

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

            MIT — [GitHub](https://github.com/TecharoHQ/anubis)
    zh-CN:
        description: |
            Anubis 是反向代理，通过工作量证明（proof-of-work）挑战保护上游服务免受爬虫机器人和 AI 爬取器的侵害。轻量、无状态、易于部署。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 域名
              description: 访问 Anubis 的域名
        readme: |
            # Anubis

            反向代理，在允许访问上游服务之前，要求机器人完成工作量证明挑战。无需 CAPTCHA 即可阻挡 AI 爬虫和恶意爬取器。

            ## 部署后可以做什么

            将 Anubis 放在任何 Web 应用前方。真实用户的浏览器自动完成挑战（通常不到 1 秒）。无法执行 JavaScript 的机器人被阻挡。

            **机器人防护：** SHA-256 工作量证明挑战。真实浏览器透明完成，无头爬虫被阻挡。

            **可调难度：** 调整 `DIFFICULTY` 控制挑战难度。

            **无状态：** 无需数据库。挑战 cookie 以密码学方式验证。

            ## 设置

            - 目标 URL：设置 `TARGET` 为上游服务 URL
            - 难度：设置 `DIFFICULTY`（默认：`4`）

            ## 授权

            MIT — [GitHub](https://github.com/TecharoHQ/anubis)
    zh-TW:
        description: |
            Anubis 是反向代理，透過工作量證明（proof-of-work）挑戰保護上游服務免受爬蟲機器人和 AI 爬取器的侵害。輕量、無狀態、易於部署。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 網域
              description: 存取 Anubis 的網域
        readme: |
            # Anubis

            反向代理，在允許存取上游服務之前，要求機器人完成工作量證明（proof-of-work）挑戰。無需 CAPTCHA 或 JavaScript 指紋辨識即可阻擋 AI 爬蟲和惡意爬取器。

            ## 部署後可以做什麼

            將 Anubis 放在任何網頁應用前方。真實使用者的瀏覽器會自動完成挑戰（通常不到 1 秒）。無法執行 JavaScript 的機器人會被阻擋。

            **機器人防護：** 提供 SHA-256 工作量證明挑戰頁面。真實瀏覽器透明地完成挑戰，無頭爬蟲和 AI 爬取器被阻擋。

            **可調難度：** 調整 `DIFFICULTY` 控制挑戰難度（更高 = 客戶端需要更多 CPU 運算）。

            **對使用者透明：** 挑戰完成後設定 cookie，後續請求直接通過。使用者僅在首次造訪時看到短暫的載入畫面。

            **無狀態：** 無需資料庫或工作階段儲存。挑戰 cookie 以密碼學方式驗證。

            ## 設定

            - **目標 URL：** 設定 `TARGET` 為 Anubis 要保護的上游服務 URL
            - **難度：** 設定 `DIFFICULTY` 控制挑戰難度（預設：`4`）

            ## 授權

            MIT — [GitHub](https://github.com/TecharoHQ/anubis)
