# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Firecrawl
spec:
    description: "\U0001F680 Firecrawl is a powerful web crawler and scraper service 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: The domain for your Firecrawl service
        - key: OPENAI_API_KEY
          type: STRING
          name: OPENAI API Key
          description: API key for LLM features (OpenAI)
        - key: ZEABUR_AIHUB_API_KEY
          type: STRING
          name: ZEABUR AI HUB API Key
          description: API key for Zeabur AI Hub (Zeabur)
    tags:
        - Crawler
        - AI
        - Web
    readme: "# Firecrawl\n\n## Introduction\n\n\U0001F680 Firecrawl is a powerful web crawler and scraper service for AI applications, knowledge bases, and data pipelines.\n\n## Features\n\n- **Advanced Web Crawling**: Sophisticated web crawling capabilities\n- **AI-Powered Processing**: Intelligent content processing with AI\n- **High Performance**: Scalable and efficient architecture\n- **Easy Deployment**: Simple setup and configuration\n- **Multiple Services**: API, Worker, and Playwright microservices\n\n## Quick Start\n\n1. Fill in the required API keys and configuration\n2. After deployment, visit the API endpoint for the interactive crawler UI\n\n## Configuration\n\nAfter deployment, you can customize Firecrawl by modifying environment variables in your Zeabur service settings.\n\n### Required Environment Variables\n\n- **OPENAI_API_KEY**: API key for LLM features (OpenAI)\n- **PUBLIC_DOMAIN**: The domain for your Firecrawl service\n\n### Optional Configuration\n\n- **MODEL_NAME**: LLM model name (default: gpt-4)\n- **MODEL_EMBEDDING_NAME**: Embedding model name (default: text-embedding-ada-002)\n- **OLLAMA_BASE_URL**: Ollama API base URL\n- **REDIS_PASSWORD**: Redis authentication password\n\n## Architecture\n\nThis template deploys multiple services:\n\n- **API Service**: Main Firecrawl API server\n- **Worker Service**: Background job processing\n- **Playwright Service**: Browser automation for complex scraping\n- **Redis**: In-memory data store for caching and job queues\n\n## Reference\n\n- [GitHub Repository](https://github.com/firecrawl/firecrawl)\n- [Official Documentation](https://docs.firecrawl.ai/)\n- [Zeabur Environment Variable Guide](https://zeabur.com/docs/configuration/env)\n\n## License\n\nMIT"
    services:
        - name: api
          icon: https://cdn-console.zeabur.com/f/xrty/firecrawl_logo-removebg-preview.png
          template: PREBUILT
          spec:
            source:
                image: ghcr.io/firecrawl/firecrawl:latest
                command:
                    - node
                    - dist/src/index.js
            ports:
                - id: web
                  port: 3002
                  type: HTTP
            env:
                BULL_AUTH_KEY:
                    default: ${BULL_AUTH_KEY}
                FLY_PROCESS_GROUP:
                    default: app
                HOST:
                    default: 0.0.0.0
                MODEL_EMBEDDING_NAME:
                    default: ${MODEL_EMBEDDING_NAME}
                MODEL_NAME:
                    default: ${MODEL_NAME}
                OLLAMA_BASE_URL:
                    default: ${OLLAMA_BASE_URL}
                OPENAI_API_KEY:
                    default: ${OPENAI_API_KEY}
                PLAYWRIGHT_MICROSERVICE_URL:
                    default: http://playwright:3000/scrape
                PORT:
                    default: ${WEB_PORT}
                POSTHOG_API_KEY:
                    default: ${POSTHOG_API_KEY}
                POSTHOG_HOST:
                    default: ${POSTHOG_HOST}
                PROXY_PASSWORD:
                    default: ${PROXY_PASSWORD}
                PROXY_SERVER:
                    default: ${PROXY_SERVER}
                PROXY_USERNAME:
                    default: ${PROXY_USERNAME}
                REDIS_RATE_LIMIT_URL:
                    default: redis://:${REDIS_PASSWORD}@redis:6379
                REDIS_URL:
                    default: redis://:${REDIS_PASSWORD}@redis:6379
                SEARCHAPI_API_KEY:
                    default: ${SEARCHAPI_API_KEY}
                SEARXNG_CATEGORIES:
                    default: ${SEARXNG_CATEGORIES}
                SEARXNG_ENDPOINT:
                    default: ${SEARXNG_ENDPOINT}
                SEARXNG_ENGINES:
                    default: ${SEARXNG_ENGINES}
                SERPER_API_KEY:
                    default: ${SERPER_API_KEY}
                SLACK_WEBHOOK_URL:
                    default: ${SLACK_WEBHOOK_URL}
                SUPABASE_ANON_TOKEN:
                    default: ${SUPABASE_ANON_TOKEN}
                SUPABASE_SERVICE_TOKEN:
                    default: ${SUPABASE_SERVICE_TOKEN}
                SUPABASE_URL:
                    default: ${SUPABASE_URL}
          domainKey: PUBLIC_DOMAIN
        - name: worker
          icon: https://cdn-console.zeabur.com/f/xrty/firecrawl_logo-removebg-preview.png
          template: PREBUILT
          spec:
            source:
                image: ghcr.io/firecrawl/firecrawl:latest
                command:
                    - node
                    - dist/src/services/queue-worker.js
            env:
                BULL_AUTH_KEY:
                    default: ${BULL_AUTH_KEY}
                FLY_PROCESS_GROUP:
                    default: worker
                MODEL_EMBEDDING_NAME:
                    default: ${MODEL_EMBEDDING_NAME}
                MODEL_NAME:
                    default: ${MODEL_NAME}
                OLLAMA_BASE_URL:
                    default: ${OLLAMA_BASE_URL}
                OPENAI_API_KEY:
                    default: ${OPENAI_API_KEY}
                PLAYWRIGHT_MICROSERVICE_URL:
                    default: http://playwright:3000/scrape
                POSTHOG_API_KEY:
                    default: ${POSTHOG_API_KEY}
                POSTHOG_HOST:
                    default: ${POSTHOG_HOST}
                PROXY_PASSWORD:
                    default: ${PROXY_PASSWORD}
                PROXY_SERVER:
                    default: ${PROXY_SERVER}
                PROXY_USERNAME:
                    default: ${PROXY_USERNAME}
                REDIS_RATE_LIMIT_URL:
                    default: redis://:${REDIS_PASSWORD}@redis:6379
                REDIS_URL:
                    default: redis://:${REDIS_PASSWORD}@redis:6379
                SEARCHAPI_API_KEY:
                    default: ${SEARCHAPI_API_KEY}
                SEARXNG_CATEGORIES:
                    default: ${SEARXNG_CATEGORIES}
                SEARXNG_ENDPOINT:
                    default: ${SEARXNG_ENDPOINT}
                SEARXNG_ENGINES:
                    default: ${SEARXNG_ENGINES}
                SERPER_API_KEY:
                    default: ${SERPER_API_KEY}
                SLACK_WEBHOOK_URL:
                    default: ${SLACK_WEBHOOK_URL}
                SUPABASE_ANON_TOKEN:
                    default: ${SUPABASE_ANON_TOKEN}
                SUPABASE_SERVICE_TOKEN:
                    default: ${SUPABASE_SERVICE_TOKEN}
                SUPABASE_URL:
                    default: ${SUPABASE_URL}
        - name: playwright
          icon: https://raw.githubusercontent.com/github/explore/60cd2530141f67f07a947fa2d310c482e287e387/topics/playwright/playwright.png
          template: PREBUILT
          spec:
            source:
                image: ghcr.io/firecrawl/playwright-service:latest
            ports:
                - id: playwright
                  port: 3000
                  type: HTTP
            env:
                BLOCK_MEDIA:
                    default: ${BLOCK_MEDIA}
                PORT:
                    default: "3000"
                PROXY_PASSWORD:
                    default: ${PROXY_PASSWORD}
                PROXY_SERVER:
                    default: ${PROXY_SERVER}
                PROXY_USERNAME:
                    default: ${PROXY_USERNAME}
        - name: redis
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/redis.svg
          template: PREBUILT
          spec:
            source:
                image: redis/redis-stack-server:latest
            ports:
                - id: database
                  port: 6379
                  type: TCP
            volumes:
                - id: data
                  dir: /data
            instructions:
                - title: Command to connect to your Redis
                  content: redis-cli -h ${PORT_FORWARDED_HOSTNAME} -p ${DATABASE_PORT_FORWARDED_PORT} -a ${REDIS_PASSWORD}
                - title: Redis Connection String
                  content: redis://:${REDIS_PASSWORD}@${PORT_FORWARDED_HOSTNAME}:${DATABASE_PORT_FORWARDED_PORT}
                - title: Redis password
                  content: ${REDIS_PASSWORD}
                - title: Redis host
                  content: ${PORT_FORWARDED_HOSTNAME}
                - title: Redis port
                  content: ${DATABASE_PORT_FORWARDED_PORT}
            env:
                REDIS_ARGS:
                    default: --requirepass ${REDIS_PASSWORD}
                REDIS_CONNECTION_STRING:
                    default: redis://:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}
                    expose: true
                REDIS_HOST:
                    default: ${CONTAINER_HOSTNAME}
                    expose: true
                REDIS_PASSWORD:
                    default: ${PASSWORD}
                    expose: true
                REDIS_PORT:
                    default: ${DATABASE_PORT}
                    expose: true
                REDIS_URI:
                    default: ${REDIS_CONNECTION_STRING}
                    expose: true
localization:
    zh-TW:
        description: "\U0001F680 Firecrawl 是一個強大的網頁爬蟲和資料擷取服務，專為 AI 應用、知識庫和資料管線設計。"
        readme: "# Firecrawl\n\n## 簡介\n\n\U0001F680 Firecrawl 是一個強大的網頁爬蟲和資料擷取服務，專為 AI 應用、知識庫和資料管線設計。\n\n## 主要特點\n\n- **進階網頁爬蟲**: 複雜的網頁爬蟲功能\n- **AI 驅動處理**: 智慧內容處理\n- **高效能**: 可擴展且高效的架構\n- **簡易部署**: 簡單的設定和配置\n- **多重服務**: API、Worker 和 Playwright 微服務\n\n## 快速開始\n\n1. 填寫必要的 API 金鑰和配置\n2. 部署後，造訪 API 端點以使用互動式爬蟲 UI\n\n## 配置\n\n部署後，您可以透過修改 Zeabur 服務設定中的環境變數來自訂 Firecrawl。\n\n### 必要的環境變數\n\n- **OPENAI_API_KEY**: LLM 功能的 API 金鑰 (OpenAI)\n- **PUBLIC_DOMAIN**: 您的 Firecrawl 服務網域\n\n### 可選配置\n\n- **MODEL_NAME**: LLM 模型名稱 (預設: gpt-4)\n- **MODEL_EMBEDDING_NAME**: 嵌入模型名稱 (預設: text-embedding-ada-002)\n- **OLLAMA_BASE_URL**: Ollama API 基礎 URL\n- **REDIS_PASSWORD**: Redis 認證密碼\n\n## 架構\n\n此模板部署多個服務：\n\n- **API 服務**: 主要的 Firecrawl API 伺服器\n- **Worker 服務**: 背景工作處理\n- **Playwright 服務**: 複雜爬蟲的瀏覽器自動化\n- **Redis**: 用於快取和工作佇列的記憶體內資料儲存\n\n## 參考\n\n- [GitHub 專案](https://github.com/firecrawl/firecrawl)\n- [官方文件](https://docs.firecrawl.ai/)\n- [Zeabur 環境變數指南](https://zeabur.com/docs/configuration/env)\n\n## License\n\nMIT"
