# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Firecrawl
spec:
    description: Open-source web crawler and scraper API for AI applications, knowledge bases, and data pipelines.
    icon: https://cdn-console.zeabur.com/f/xrty/firecrawl_logo-removebg-preview.png
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Domain
          description: Domain for the Firecrawl API endpoint.
        - key: ZEABUR_AI_HUB_API_KEY
          type: AI_HUB_KEY
          name: Zeabur AI Hub API Key (Optional)
          description: Optional — only needed for LLM-powered features (llm-extract, summary, /v2/extract, /v2/agent). Click Generate to mint an AI Hub key on the spot; the api service will be auto-configured to use AI Hub (claude-sonnet-4-5 by default). Leave blank to deploy without LLM, or set OPENAI_API_KEY directly on the api service after deploy for non-AI-Hub providers.
    tags:
        - Crawler
        - AI
        - Web
    readme: "# Firecrawl\n\n\U0001F680 [Firecrawl](https://github.com/firecrawl/firecrawl) is an open-source web crawler and scraper API for AI applications, knowledge bases, and data pipelines.\n\nThis template deploys the full self-hosted Firecrawl stack:\n\n- **api** — main Firecrawl process. Runs `harness.js --start-docker`, which manages the API server plus worker, extract-worker, and several NUQ queue worker subprocesses inside the same container.\n- **playwright** — browser automation microservice for JS-rendered pages.\n- **redis** — cache and rate-limit store.\n- **rabbitmq** — broker for the NUQ task queue.\n- **postgres** — Postgres 17 + pg_cron, pre-loaded with the NUQ queue schema.\n\n## Resource recommendation\n\nFirecrawl is resource-intensive. The upstream `docker-compose.yaml` recommends **at least 4 vCPU / 8 GB RAM** for the `api` service and **2 vCPU / 4 GB RAM** for `playwright`. We recommend deploying this template on a Pro plan or a dedicated server.\n\n## Configuration\n\nOnly the public domain is required. The deploy form also offers an optional **Zeabur AI Hub API Key** field — click **Generate** to mint one on the spot, and the api container auto-configures itself to use [AI Hub](https://zeabur.com/ai-hub) on first start: `OPENAI_BASE_URL=https://hnd1.aihub.zeabur.ai/v1`, `MODEL_NAME=claude-sonnet-4-5`. AI Hub bills against your Zeabur credits, no separate OpenAI signup needed.\n\n**Other LLM providers (OpenAI direct, OpenRouter, xAI, Ollama, …):** leave the AI Hub field blank, deploy, then set `OPENAI_API_KEY` (and optionally `OPENAI_BASE_URL`, `MODEL_NAME`) on the api service env tab. The auto-config only fires when AI Hub is chosen at deploy time, so user-set values are never overwritten. The full list of supported variables lives in [`apps/api/src/config.ts`](https://github.com/firecrawl/firecrawl/blob/main/apps/api/src/config.ts).\n\n**Already deployed with AI Hub and want to switch later?** Just set `OPENAI_API_KEY` (your own key) on the api env tab and restart the api service — the wrapper sees the user-set value and skips the AI Hub auto-config.\n\n**Caveats when running on AI Hub:**\n- AI Hub does not currently provide embedding models. Crawl link relevance ranking falls back to no-ranking — the rest of the LLM features (extract, agent, summary) are unaffected.\n- A few Firecrawl features (interactive browser-agent, direct-quote handling) call Google Gemini directly via `@ai-sdk/google` rather than through `OPENAI_BASE_URL`. To enable them, also set `GOOGLE_GENERATIVE_AI_API_KEY` on the api service.\n\n`BULL_AUTH_KEY` (which protects the internal Bull queue dashboard) is auto-generated; you can find it on the api service env tab.\n\nAuthentication is **disabled** by default (`USE_DB_AUTHENTICATION=false`). The API endpoint is public — protect your domain with Cloudflare, an auth proxy, or a network ACL if exposed to the internet.\n\n## Quick test\n\nAfter deployment finishes, hit the scrape endpoint:\n\n```bash\ncurl -X POST https://<your-domain>/v1/scrape \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"https://docs.firecrawl.dev\"}'\n```\n\n## Queue dashboard\n\nFirecrawl has no end-user UI — it is an API-only service. For operators, a built-in [Bull Dashboard](https://github.com/felixmosh/bull-board) is mounted at:\n\n```\nhttps://<your-domain>/admin/<BULL_AUTH_KEY>/queues\n```\n\nUse it to monitor queue throughput, inspect active / completed / failed jobs, and replay errors. Find your `BULL_AUTH_KEY` on the **api** service env tab.\n\n## Versioning\n\nFirecrawl upstream does not publish semver tags — only `:latest`, which is rebuilt every time `main` advances. To give you reproducible deploys, this template pins each image by digest (`@sha256:...`). The current pin corresponds to the build of **2026-05-04**. Updates ship as new template revisions.\n\n## Reference\n\n- GitHub: https://github.com/firecrawl/firecrawl\n- Docs: https://docs.firecrawl.dev/\n- License: AGPL-3.0"
    services:
        - name: postgres
          icon: https://cdn.zeabur.com/marketplace/postgresql.svg
          template: PREBUILT
          spec:
            id: postgres
            source:
                image: ghcr.io/firecrawl/nuq-postgres@sha256:f9388bd25ae2e1f1d034518236f993ce236173c1d8800ce24092ea6643a95a33
            ports:
                - id: database
                  port: 5432
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/postgresql/data
            env:
                POSTGRES_DB:
                    default: postgres
                    expose: true
                POSTGRES_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                POSTGRES_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                POSTGRES_PORT:
                    default: ${DATABASE_PORT}
                    expose: true
                POSTGRES_USER:
                    default: postgres
                    expose: true
            healthCheck:
                type: TCP
                port: database
        - name: redis
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/redis.svg
          template: PREBUILT
          spec:
            id: redis
            source:
                image: redis:7-alpine
                command:
                    - redis-server
                    - --bind
                    - 0.0.0.0
            ports:
                - id: database
                  port: 6379
                  type: TCP
            volumes:
                - id: data
                  dir: /data
            env:
                REDIS_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                REDIS_PORT:
                    default: ${DATABASE_PORT}
                    expose: true
                REDIS_URL:
                    default: redis://${REDIS_HOST}:${REDIS_PORT}
                    expose: true
            healthCheck:
                type: TCP
                port: database
        - name: rabbitmq
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/rabbitmq.svg
          template: PREBUILT
          spec:
            id: rabbitmq
            source:
                image: rabbitmq:3-management
            ports:
                - id: amqp
                  port: 5672
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/rabbitmq
            env:
                NUQ_RABBITMQ_URL:
                    default: amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@${RABBITMQ_HOST}:${RABBITMQ_PORT}
                    expose: true
                RABBITMQ_DEFAULT_PASS:
                    default: ${PASSWORD}
                    expose: true
                RABBITMQ_DEFAULT_USER:
                    default: firecrawl
                    expose: true
                RABBITMQ_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                RABBITMQ_PORT:
                    default: ${AMQP_PORT}
                    expose: true
            healthCheck:
                type: TCP
                port: amqp
        - name: playwright
          icon: https://raw.githubusercontent.com/github/explore/60cd2530141f67f07a947fa2d310c482e287e387/topics/playwright/playwright.png
          template: PREBUILT
          spec:
            id: playwright
            source:
                image: ghcr.io/firecrawl/playwright-service@sha256:9e0737bc09df28275aab29726b1c0824a7725113945434e843385d487b7f7ec6
            ports:
                - id: web
                  port: 3000
                  type: TCP
            env:
                BLOCK_MEDIA:
                    default: "false"
                MAX_CONCURRENT_PAGES:
                    default: "10"
                PLAYWRIGHT_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                PLAYWRIGHT_MICROSERVICE_URL:
                    default: http://${PLAYWRIGHT_HOST}:${PLAYWRIGHT_PORT}/scrape
                    expose: true
                PLAYWRIGHT_PORT:
                    default: ${WEB_PORT}
                    expose: true
                PORT:
                    default: "3000"
            healthCheck:
                type: TCP
                port: web
        - name: api
          icon: https://cdn-console.zeabur.com/f/xrty/firecrawl_logo-removebg-preview.png
          dependencies:
            - postgres
            - redis
            - rabbitmq
            - playwright
          template: PREBUILT
          spec:
            id: api
            source:
                image: ghcr.io/firecrawl/firecrawl@sha256:3ad8dfb4a4826a187a90a6154c1e9ec253f7dad55756172e094e66df32d75586
                command:
                    - /bin/sh
                    - -c
                    - |
                      # If the deploy form's AI Hub key field was filled, wire OpenAI-compat env vars to AI Hub.
                      # This only runs when the user explicitly chose AI Hub; OPENAI_* vars set by the user are never overwritten.
                      if [ -n "$ZEABUR_AI_HUB_API_KEY" ] && [ -z "$OPENAI_API_KEY" ]; then
                        export OPENAI_API_KEY="$ZEABUR_AI_HUB_API_KEY"
                        : "${OPENAI_BASE_URL:=https://hnd1.aihub.zeabur.ai/v1}"
                        : "${MODEL_NAME:=claude-sonnet-4-5}"
                        export OPENAI_BASE_URL MODEL_NAME
                      fi
                      exec node dist/src/harness.js --start-docker
            ports:
                - id: web
                  port: 3002
                  type: HTTP
            instructions:
                - title: Firecrawl API URL
                  content: https://${ZEABUR_WEB_DOMAIN}
                - title: Bull Queue Dashboard
                  content: https://${ZEABUR_WEB_DOMAIN}/admin/${BULL_AUTH_KEY}/queues
                - title: Quick scrape (curl)
                  content: |-
                    curl -X POST https://${ZEABUR_WEB_DOMAIN}/v1/scrape \
                      -H 'Content-Type: application/json' \
                      -d '{"url":"https://docs.firecrawl.dev"}'
            env:
                BROWSER_POOL_SIZE:
                    default: "5"
                BULL_AUTH_KEY:
                    default: ${PASSWORD}
                CRAWL_CONCURRENT_REQUESTS:
                    default: "10"
                ENV:
                    default: local
                HARNESS_STARTUP_TIMEOUT_MS:
                    default: "120000"
                HOST:
                    default: 0.0.0.0
                INTERNAL_PORT:
                    default: ${WEB_PORT}
                LOGGING_LEVEL:
                    default: info
                MAX_CONCURRENT_JOBS:
                    default: "5"
                NUM_WORKERS_PER_QUEUE:
                    default: "8"
                OPENAI_API_KEY:
                    default: ""
                PORT:
                    default: ${WEB_PORT}
                REDIS_RATE_LIMIT_URL:
                    default: ${REDIS_URL}
                USE_DB_AUTHENTICATION:
                    default: "false"
                ZEABUR_AI_HUB_API_KEY:
                    default: ${ZEABUR_AI_HUB_API_KEY}
            healthCheck:
                type: TCP
                port: web
          domainKey: PUBLIC_DOMAIN
localization:
    es-ES:
        description: API de rastreo y extracción web de código abierto para aplicaciones de IA, bases de conocimiento y pipelines de datos.
        readme: "# Firecrawl\n\n\U0001F680 [Firecrawl](https://github.com/firecrawl/firecrawl) es una API de rastreo y extracción web de código abierto para aplicaciones de IA, bases de conocimiento y pipelines de datos.\n\nEsta plantilla despliega la pila completa de Firecrawl autoalojada:\n\n- **api** — proceso principal de Firecrawl. Ejecuta `harness.js --start-docker`, que gestiona el servidor API, worker, extract-worker y varios subprocesos worker de la cola NUQ dentro del mismo contenedor.\n- **playwright** — microservicio de automatización del navegador para páginas con JavaScript.\n- **redis** — almacén para caché y limitación de velocidad.\n- **rabbitmq** — broker para la cola de tareas NUQ.\n- **postgres** — Postgres 17 + pg_cron, con el esquema de cola NUQ precargado.\n\n## Recursos recomendados\n\nFirecrawl consume muchos recursos. El `docker-compose.yaml` upstream recomienda al menos **4 vCPU / 8 GB RAM** para el servicio `api` y **2 vCPU / 4 GB RAM** para `playwright`. Recomendamos desplegar en un plan Pro o un servidor dedicado.\n\n## Configuración\n\nSolo el dominio es obligatorio. El formulario de despliegue también incluye un campo opcional **Zeabur AI Hub API Key** — pulsa **Generate** para crear una clave al instante, y el contenedor api se autoconfigura para usar [AI Hub](https://zeabur.com/ai-hub) en su primer arranque (`OPENAI_BASE_URL=https://hnd1.aihub.zeabur.ai/v1`, `MODEL_NAME=claude-sonnet-4-5`). AI Hub se factura contra tus créditos de Zeabur, sin necesidad de registrarte en OpenAI.\n\n**Otros proveedores LLM (OpenAI directo, OpenRouter, xAI, Ollama, …):** deja el campo de AI Hub en blanco, despliega y luego define `OPENAI_API_KEY` (y opcionalmente `OPENAI_BASE_URL`, `MODEL_NAME`) en la pestaña env del servicio api. La autoconfiguración solo se activa cuando se elige AI Hub al desplegar, por lo que los valores definidos por el usuario nunca se sobreescriben. La lista completa de variables soportadas está en [`apps/api/src/config.ts`](https://github.com/firecrawl/firecrawl/blob/main/apps/api/src/config.ts).\n\n**¿Ya desplegaste con AI Hub y quieres cambiar luego?** Define `OPENAI_API_KEY` (tu propia clave) en la pestaña env del servicio api y reinicia el servicio api — el wrapper detecta el valor definido por el usuario y omite la autoconfiguración de AI Hub.\n\n**Consideraciones al ejecutar sobre AI Hub:**\n- AI Hub no proporciona modelos de embedding actualmente. La ordenación de relevancia de enlaces durante el crawl se desactiva (los enlaces se devuelven sin ordenar); el resto de funciones LLM (extract, agent, summary) no se ven afectadas.\n- Algunas funciones de Firecrawl (browser-agent interactivo, manejo de citas directas) llaman a Google Gemini directamente vía `@ai-sdk/google` sin pasar por `OPENAI_BASE_URL`. Para habilitarlas, define también `GOOGLE_GENERATIVE_AI_API_KEY` en el servicio api.\n\n`BULL_AUTH_KEY` (que protege el panel interno Bull queue) se genera automáticamente; puedes verlo en la pestaña env del servicio api.\n\nLa autenticación está **deshabilitada** por defecto (`USE_DB_AUTHENTICATION=false`). El endpoint de la API es público — protege tu dominio con Cloudflare, un auth proxy o una ACL de red si está expuesto a Internet.\n\n## Prueba rápida\n\nTras el despliegue, llama al endpoint scrape:\n\n```bash\ncurl -X POST https://<your-domain>/v1/scrape \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"https://docs.firecrawl.dev\"}'\n```\n\n## Panel de cola\n\nFirecrawl no tiene UI para usuarios finales — es un servicio solo de API. Para operadores, hay un [Bull Dashboard](https://github.com/felixmosh/bull-board) incorporado en:\n\n```\nhttps://<your-domain>/admin/<BULL_AUTH_KEY>/queues\n```\n\nÚsalo para monitorear el rendimiento de la cola, inspeccionar trabajos active / completed / failed y reintentar errores. Encuentra tu `BULL_AUTH_KEY` en la pestaña env del servicio **api**.\n\n## Versionado\n\nFirecrawl upstream no publica etiquetas semver — solo `:latest`, que se reconstruye cada vez que avanza la rama `main`. Para que tu despliegue sea reproducible, esta plantilla fija cada imagen por digest (`@sha256:...`). El pin actual corresponde a la build del **2026-05-04**. Las actualizaciones se publican como nuevas revisiones de la plantilla.\n\n## Referencias\n\n- GitHub: https://github.com/firecrawl/firecrawl\n- Documentación oficial: https://docs.firecrawl.dev/\n- Licencia: AGPL-3.0"
    id-ID:
        description: API web crawler dan scraper open-source untuk aplikasi AI, basis pengetahuan, dan pipeline data.
        readme: "# Firecrawl\n\n\U0001F680 [Firecrawl](https://github.com/firecrawl/firecrawl) adalah API web crawler dan scraper open-source untuk aplikasi AI, basis pengetahuan, dan pipeline data.\n\nTemplate ini men-deploy seluruh stack Firecrawl self-hosted:\n\n- **api** — proses utama Firecrawl. Menjalankan `harness.js --start-docker`, yang mengelola server API, worker, extract-worker, dan beberapa subproses worker antrian NUQ di dalam container yang sama.\n- **playwright** — microservice otomasi browser untuk halaman ber-JavaScript.\n- **redis** — penyimpanan cache dan rate-limit.\n- **rabbitmq** — broker untuk antrian tugas NUQ.\n- **postgres** — Postgres 17 + pg_cron, sudah di-load dengan skema antrian NUQ.\n\n## Rekomendasi sumber daya\n\nFirecrawl membutuhkan banyak sumber daya. `docker-compose.yaml` upstream merekomendasikan minimal **4 vCPU / 8 GB RAM** untuk service `api` dan **2 vCPU / 4 GB RAM** untuk `playwright`. Disarankan deploy di paket Pro atau dedicated server.\n\n## Konfigurasi\n\nHanya domain yang wajib diisi. Form deploy juga menyediakan field opsional **Zeabur AI Hub API Key** — klik **Generate** untuk membuat key langsung di sana, container api akan otomatis terkonfigurasi untuk pakai [AI Hub](https://zeabur.com/ai-hub) saat pertama kali start (`OPENAI_BASE_URL=https://hnd1.aihub.zeabur.ai/v1`, `MODEL_NAME=claude-sonnet-4-5`). AI Hub ditagih ke kredit Zeabur Anda, tidak perlu daftar OpenAI terpisah.\n\n**Provider LLM lain (OpenAI langsung, OpenRouter, xAI, Ollama, …):** kosongkan field AI Hub saat deploy, lalu set `OPENAI_API_KEY` (dan opsional `OPENAI_BASE_URL`, `MODEL_NAME`) di tab env service api setelah deploy. Auto-config hanya aktif kalau AI Hub dipilih saat deploy, jadi nilai yang user set sendiri tidak akan ditimpa. Daftar lengkap variabel yang didukung ada di [`apps/api/src/config.ts`](https://github.com/firecrawl/firecrawl/blob/main/apps/api/src/config.ts).\n\n**Sudah deploy dengan AI Hub tapi mau ganti nanti?** Cukup set `OPENAI_API_KEY` (key Anda sendiri) di tab env service api lalu restart service api — wrapper akan mendeteksi nilai yang user set dan melewatkan AI Hub auto-config.\n\n**Catatan saat menjalankan di AI Hub:**\n- AI Hub saat ini tidak menyediakan embedding model. Ranking relevansi link saat crawl akan fallback ke \"tanpa ranking\"; fitur LLM lain (extract, agent, summary) tidak terpengaruh.\n- Beberapa fitur Firecrawl (browser-agent interaktif, penanganan direct-quote) memanggil Google Gemini langsung via `@ai-sdk/google` tanpa melalui `OPENAI_BASE_URL`. Untuk mengaktifkannya, set juga `GOOGLE_GENERATIVE_AI_API_KEY` di service api.\n\n`BULL_AUTH_KEY` (untuk melindungi Bull queue dashboard internal) dibuat otomatis; bisa dilihat di tab env service api.\n\nAutentikasi API **dinonaktifkan** secara default (`USE_DB_AUTHENTICATION=false`). Endpoint API bersifat publik — lindungi domain Anda dengan Cloudflare, auth proxy, atau ACL jaringan jika dipublikasikan ke internet.\n\n## Tes cepat\n\nSetelah deploy selesai, panggil endpoint scrape:\n\n```bash\ncurl -X POST https://<your-domain>/v1/scrape \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"https://docs.firecrawl.dev\"}'\n```\n\n## Dashboard antrian\n\nFirecrawl tidak punya UI untuk pengguna akhir — ini adalah service API saja. Untuk operator, tersedia [Bull Dashboard](https://github.com/felixmosh/bull-board) bawaan di:\n\n```\nhttps://<your-domain>/admin/<BULL_AUTH_KEY>/queues\n```\n\nGunakan untuk memantau throughput antrian, melihat job active / completed / failed, dan menjalankan ulang error. `BULL_AUTH_KEY` bisa ditemukan di tab env service **api**.\n\n## Versi\n\nFirecrawl upstream tidak menerbitkan tag semver — hanya `:latest`, yang di-build ulang setiap kali branch `main` maju. Agar deploy Anda reprodusibel, template ini mengunci setiap image dengan digest (`@sha256:...`). Pin saat ini sesuai dengan build pada **2026-05-04**. Update dirilis sebagai revisi template baru.\n\n## Referensi\n\n- GitHub: https://github.com/firecrawl/firecrawl\n- Dokumentasi resmi: https://docs.firecrawl.dev/\n- Lisensi: AGPL-3.0"
    ja-JP:
        description: AI アプリケーション、ナレッジベース、データパイプライン向けのオープンソース Web クローラー / スクレイピング API。
        readme: "# Firecrawl\n\n\U0001F680 [Firecrawl](https://github.com/firecrawl/firecrawl) は AI アプリケーション、ナレッジベース、データパイプライン向けのオープンソース Web クローラー / スクレイピング API です。\n\nこのテンプレートはセルフホスト版 Firecrawl のフルスタックをデプロイします:\n\n- **api** — Firecrawl のメインプロセス。`harness.js --start-docker` を実行し、同一コンテナ内で API サーバー、worker、extract-worker、複数の NUQ キュー worker サブプロセスを管理します。\n- **playwright** — JavaScript レンダリングページ向けのブラウザ自動化マイクロサービス。\n- **redis** — キャッシュとレート制限用のストア。\n- **rabbitmq** — NUQ タスクキューのブローカー。\n- **postgres** — Postgres 17 + pg_cron、NUQ キュースキーマをプリロード済み。\n\n## リソース推奨値\n\nFirecrawl はリソース集約型のサービスです。upstream の `docker-compose.yaml` は `api` に最低 **4 vCPU / 8 GB RAM**、`playwright` に最低 **2 vCPU / 4 GB RAM** を推奨しています。Pro プランまたは専用サーバーへのデプロイを推奨します。\n\n## 設定\n\n必須項目はドメイン名のみです。デプロイフォームには **Zeabur AI Hub API Key** のオプション欄があり、**Generate** をクリックすればその場でキーを発行できます。api コンテナは初回起動時に自動的に [AI Hub](https://zeabur.com/ai-hub) を使うように設定されます（`OPENAI_BASE_URL=https://hnd1.aihub.zeabur.ai/v1`、`MODEL_NAME=claude-sonnet-4-5`）。AI Hub は Zeabur のクレジットから直接課金されるため、別途 OpenAI のサインアップは不要です。\n\n**OpenAI 以外のプロバイダ（OpenAI 直接、OpenRouter、xAI、Ollama …）を使う場合：** デプロイ時に AI Hub 欄を空のままにし、デプロイ完了後に api サービスの env タブで `OPENAI_API_KEY`（必要に応じて `OPENAI_BASE_URL`、`MODEL_NAME`）を設定してください。auto-config はデプロイ時に AI Hub を選択した場合のみ作動するため、ユーザーが設定した値は上書きされません。サポートされる変数の完全なリストは [`apps/api/src/config.ts`](https://github.com/firecrawl/firecrawl/blob/main/apps/api/src/config.ts) を参照してください。\n\n**AI Hub でデプロイ済みで後から切り替えたい場合：** api サービスの env タブに `OPENAI_API_KEY`（自前のキー）を設定して api サービスを再起動するだけです。wrapper はユーザー設定値を検知し、AI Hub auto-config をスキップします。\n\n**AI Hub で運用する際の注意点：**\n- AI Hub は現在 embedding model を提供していません。Crawl のリンク関連度ランキングは「ランキングなし」にフォールバックしますが、その他の LLM 機能（extract、agent、summary）には影響しません。\n- 一部の Firecrawl 機能（インタラクティブ browser-agent、direct-quote 処理）は `OPENAI_BASE_URL` を経由せず、`@ai-sdk/google` 経由で直接 Google Gemini を呼び出します。これらを有効化するには、api サービスに `GOOGLE_GENERATIVE_AI_API_KEY` も設定してください。\n\n`BULL_AUTH_KEY`（内蔵 Bull queue dashboard を保護する認証キー）は自動生成されます。api サービスの env タブから確認できます。\n\nAPI 認証はデフォルトで **無効** です（`USE_DB_AUTHENTICATION=false`）。API エンドポイントは公開状態のため、インターネットに公開する場合は Cloudflare、認証プロキシ、ネットワーク ACL などでドメインを保護してください。\n\n## クイックテスト\n\nデプロイ完了後、scrape エンドポイントを呼び出します:\n\n```bash\ncurl -X POST https://<your-domain>/v1/scrape \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"https://docs.firecrawl.dev\"}'\n```\n\n## キュー管理ダッシュボード\n\nFirecrawl にはエンドユーザー向け UI はなく、API のみのサービスです。運用者向けに [Bull Dashboard](https://github.com/felixmosh/bull-board) が組み込まれており、以下の URL でアクセスできます:\n\n```\nhttps://<your-domain>/admin/<BULL_AUTH_KEY>/queues\n```\n\nキューのスループット監視、active / completed / failed ジョブの確認、失敗ジョブのリトライが可能です。`BULL_AUTH_KEY` は **api** サービスの env タブから確認できます。\n\n## バージョン情報\n\nFirecrawl upstream は semver タグを公開していません — `:latest` のみで、main ブランチが進むたびに再ビルドされます。再現性のあるデプロイのために、このテンプレートでは各 image を digest（`@sha256:...`）で固定しており、現在は **2026-05-04** のビルドに対応します。アップデートは新しいテンプレートリビジョンとして公開されます。\n\n## 参考資料\n\n- GitHub: https://github.com/firecrawl/firecrawl\n- 公式ドキュメント: https://docs.firecrawl.dev/\n- ライセンス: AGPL-3.0"
    zh-CN:
        description: 开源网页爬虫与抓取 API，专为 AI 应用、知识库和数据管道设计。
        readme: "# Firecrawl\n\n\U0001F680 [Firecrawl](https://github.com/firecrawl/firecrawl) 是一个开源的网页爬虫与抓取 API，专为 AI 应用、知识库和数据管道设计。\n\n此模板部署完整的自托管 Firecrawl 堆栈：\n\n- **api** — Firecrawl 主程序。执行 `harness.js --start-docker`，在同一容器内管理 API 服务器、worker、extract-worker，以及多个 NUQ queue worker 子进程。\n- **playwright** — 处理 JavaScript 渲染页面的浏览器自动化微服务。\n- **redis** — 缓存与速率限制存储。\n- **rabbitmq** — NUQ 任务队列的 broker。\n- **postgres** — Postgres 17 + pg_cron，预载 NUQ queue schema。\n\n## 资源建议\n\nFirecrawl 是资源密集型服务。upstream 的 `docker-compose.yaml` 建议 `api` 服务至少配置 **4 vCPU / 8 GB RAM**，`playwright` 至少 **2 vCPU / 4 GB RAM**。建议部署在 Pro 套餐或 dedicated server 上。\n\n## 配置\n\n必填的只有域名。部署表单还提供一个可选的 **Zeabur AI Hub API Key** 字段——点击 **Generate** 当场生成一个 key，api 容器启动时会自动接入 [AI Hub](https://zeabur.com/ai-hub)：`OPENAI_BASE_URL=https://hnd1.aihub.zeabur.ai/v1`、`MODEL_NAME=claude-sonnet-4-5`。AI Hub 直接从 Zeabur credit 扣费，无需另外注册 OpenAI 账号。\n\n**想用其他 provider（OpenAI 直连、OpenRouter、xAI、Ollama…）：** 部署时 AI Hub 字段留空，完成后到 api 服务 env tab 设置 `OPENAI_API_KEY`（可选 `OPENAI_BASE_URL`、`MODEL_NAME`）。auto-config 仅在部署时选择 AI Hub 才会触发，用户自己设置的值不会被覆盖。完整支持的变量清单见 [`apps/api/src/config.ts`](https://github.com/firecrawl/firecrawl/blob/main/apps/api/src/config.ts)。\n\n**已经用 AI Hub 部署完想换成自己的？** 直接在 api env tab 设置 `OPENAI_API_KEY`（您自己的 key）然后 restart api 服务即可——wrapper 看到 user 已设值就会跳过 AI Hub auto-config。\n\n**AI Hub 上运行的注意事项：**\n- AI Hub 目前没有 embedding model。Crawl 链接相关度排序会退化为原顺序，其他 LLM 功能（extract、agent、summary）不受影响。\n- 少数 Firecrawl 功能（交互式 browser-agent、direct-quote 处理）写死通过 `@ai-sdk/google` 调用 Google Gemini，不走 `OPENAI_BASE_URL`。若要启用，请在 api 服务额外设置 `GOOGLE_GENERATIVE_AI_API_KEY`。\n\n`BULL_AUTH_KEY`（保护内置 Bull queue dashboard）会自动生成，可在 api 服务 env tab 查看。\n\n默认 **不启用** API 认证（`USE_DB_AUTHENTICATION=false`）。API 端点是公开的——若部署于公网，请使用 Cloudflare、auth proxy 或网络 ACL 保护您的域名。\n\n## 快速测试\n\n部署完成后，调用 scrape 端点：\n\n```bash\ncurl -X POST https://<your-domain>/v1/scrape \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"https://docs.firecrawl.dev\"}'\n```\n\n## Queue 管理面板\n\nFirecrawl 没有给终端用户的 UI，它是 API-only 服务。运维用的内置 [Bull Dashboard](https://github.com/felixmosh/bull-board) 挂载于：\n\n```\nhttps://<your-domain>/admin/<BULL_AUTH_KEY>/queues\n```\n\n可监控 queue 吞吐量、查看 active / completed / failed jobs、重跑失败任务。`BULL_AUTH_KEY` 可在 **api** 服务的 env tab 查到。\n\n## 版本信息\n\nFirecrawl upstream 没有发布 semver 标签——只有 `:latest`，每次 main 分支推进就会重建。为了让您的部署可复现，本模板将每个 image 通过 digest（`@sha256:...`）固定，当前对应 **2026-05-04** 的 build。后续更新会以新版模板的形式发布。\n\n## 参考资料\n\n- GitHub: https://github.com/firecrawl/firecrawl\n- 官方文档: https://docs.firecrawl.dev/\n- License: AGPL-3.0"
    zh-TW:
        description: 開源網頁爬蟲與擷取 API，專為 AI 應用、知識庫和資料管線設計。
        readme: "# Firecrawl\n\n\U0001F680 [Firecrawl](https://github.com/firecrawl/firecrawl) 是一個開源的網頁爬蟲與擷取 API，專為 AI 應用、知識庫和資料管線設計。\n\n此模板部署完整的自架 Firecrawl 堆疊：\n\n- **api** — Firecrawl 主程式。執行 `harness.js --start-docker`，在同一個容器內管理 API 伺服器、worker、extract-worker，以及多個 NUQ queue worker 子行程。\n- **playwright** — 處理 JavaScript 渲染頁面的瀏覽器自動化微服務。\n- **redis** — 快取與速率限制儲存。\n- **rabbitmq** — NUQ 任務佇列的 broker。\n- **postgres** — Postgres 17 + pg_cron，預載 NUQ queue schema。\n\n## 資源建議\n\nFirecrawl 是資源密集型服務。upstream 的 `docker-compose.yaml` 建議 `api` 服務至少配置 **4 vCPU / 8 GB RAM**，`playwright` 至少 **2 vCPU / 4 GB RAM**。建議部署在 Pro 方案或 dedicated server 上。\n\n## 設定\n\n必填的只有網域。部署表單還提供一個可選的 **Zeabur AI Hub API Key** 欄位——按 **Generate** 當場生一把 key，api 容器啟動時會自動把自己接到 [AI Hub](https://zeabur.com/ai-hub)：`OPENAI_BASE_URL=https://hnd1.aihub.zeabur.ai/v1`、`MODEL_NAME=claude-sonnet-4-5`。AI Hub 直接從 Zeabur credit 扣費，不用另外申請 OpenAI 帳號。\n\n**想用其他 provider（OpenAI 直連、OpenRouter、xAI、Ollama…）：** 部署時 AI Hub 欄位留空，完成後到 api 服務 env tab 設 `OPENAI_API_KEY`（可選 `OPENAI_BASE_URL`、`MODEL_NAME`）。auto-config 只有在部署時選了 AI Hub 才會觸發，使用者自己設的值不會被覆寫。完整支援的變數清單見 [`apps/api/src/config.ts`](https://github.com/firecrawl/firecrawl/blob/main/apps/api/src/config.ts)。\n\n**已經用 AI Hub 部署完想換成自己的？** 直接在 api env tab 設 `OPENAI_API_KEY`（你自己的 key）然後 restart api 服務即可——wrapper 看到 user 已設值就會跳過 AI Hub auto-config。\n\n**AI Hub 上跑的注意事項：**\n- AI Hub 目前沒有 embedding model。Crawl 連結相關度排序會退化為原順序，其他 LLM 功能（extract、agent、summary）不受影響。\n- 少數 Firecrawl 功能（互動式 browser-agent、direct-quote 處理）寫死透過 `@ai-sdk/google` 呼叫 Google Gemini，不走 `OPENAI_BASE_URL`。若要啟用，請另外在 api 服務設 `GOOGLE_GENERATIVE_AI_API_KEY`。\n\n`BULL_AUTH_KEY`（保護內建 Bull queue dashboard）會自動生成，可在 api 服務 env tab 查看。\n\n預設 **不啟用** API 認證（`USE_DB_AUTHENTICATION=false`）。API 端點是公開的——若部署於公開網路，請使用 Cloudflare、auth proxy 或網路 ACL 保護你的網域。\n\n## 快速測試\n\n部署完成後，呼叫 scrape 端點：\n\n```bash\ncurl -X POST https://<your-domain>/v1/scrape \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"url\": \"https://docs.firecrawl.dev\"}'\n```\n\n## Queue 管理面板\n\nFirecrawl 沒有給終端用戶的 UI，它是 API-only 服務。維運用的內建 [Bull Dashboard](https://github.com/felixmosh/bull-board) 掛在：\n\n```\nhttps://<your-domain>/admin/<BULL_AUTH_KEY>/queues\n```\n\n可監控 queue 吞吐量、檢視 active / completed / failed jobs、重跑失敗任務。`BULL_AUTH_KEY` 可在 **api** 服務的 env tab 查到。\n\n## 版本資訊\n\nFirecrawl upstream 沒有發行 semver 標籤——只有 `:latest`，每次 main 分支推進就會重建。為了讓你的部署可重現，這個模板把每個 image 用 digest（`@sha256:...`）釘住，目前釘的是 **2026-05-04** 那個 build。後續更新會以新版模板的形式釋出。\n\n## 參考資料\n\n- GitHub: https://github.com/firecrawl/firecrawl\n- 官方文件: https://docs.firecrawl.dev/\n- License: AGPL-3.0"
