> ## Documentation Index
> Fetch the complete documentation index at: https://firecrawl.web3doc.top/llms.txt
> Use this file to discover all available pages before exploring further.

# 本地运行

> 了解如何本地运行Firecrawl，以便自行运行和/或为项目做出贡献。

欢迎来到[Firecrawl](https://firecrawl.dev) 🔥! 以下是一些关于如何本地获取项目的说明，这样您就可以自行运行并做出贡献了。

如果您想做出贡献，请注意，这个过程与其他开源仓库类似，即：fork Firecrawl，做出更改，运行测试，提交PR。

如果您有任何问题或希望得到帮助，请加入我们的Discord社区 [这里](https://discord.gg/gSmWdAkdwd) 以获取更多信息，或者在GitHub上提交问题 [这里](https://github.com/mendableai/firecrawl/issues/new/choose)!

## 本地运行项目

首先，从安装依赖开始：

1. node.js [说明](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs)
2. pnpm [说明](https://pnpm.io/installation)
3. redis [说明](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)

在 `/apps/api/` 目录中设置环境变量。您可以复制 `.env.example` 中的模板。

一开始，我们不会设置身份验证，也不会设置任何可选的子服务（PDF解析、JS阻塞支持、AI功能）。

```
# ./apps/api/.env

# ===== 必需的ENV变量 ======
NUM_WORKERS_PER_QUEUE=8 
PORT=3002
HOST=0.0.0.0

#自托管使用docker时，使用redis://redis:6379。本地运行时，使用redis://localhost:6379
REDIS_URL=redis://localhost:6379

#自托管使用docker时，使用redis://redis:6379。本地运行时，使用redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://localhost:6379 
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html

## 要开启数据库身份验证，需要设置supabase。
USE_DB_AUTHENTICATION=false

# ===== 可选的ENV变量 ======

# Supabase 设置（用于支持数据库身份验证、高级日志记录等）
SUPABASE_ANON_TOKEN= 
SUPABASE_URL= 
SUPABASE_SERVICE_TOKEN=

# 其他可选设置
# 如果您已经设置了身份验证并想用真实的API密钥进行测试
TEST_API_KEY=
# 如果您想测试抓取速率限制
RATE_LIMIT_TEST_API_KEY_SCRAPE=
# 如果您想测试爬取速率限制
RATE_LIMIT_TEST_API_KEY_CRAWL=
# 如果您想使用Scraping Bee处理JS阻塞
SCRAPING_BEE_API_KEY=
# 为LLM相关功能添加（图像alt生成等）
OPENAI_API_KEY=
BULL_AUTH_KEY=@
# 如果您正在配置基本日志记录与logtail
LOGTAIL_KEY=
# 如果您有llamaparse密钥并想用来解析PDF文件
LLAMAPARSE_API_KEY=
# 如果您想发送Slack服务器健康状态消息
SLACK_WEBHOOK_URL=
# 如果您想发送posthog事件，如作业日志
POSTHOG_API_KEY=
# 如果您想发送posthog事件，如作业日志
POSTHOG_HOST=

# 如果您想使用Fire Engine封闭测试版
FIRE_ENGINE_BETA_URL=

# Playwright的代理设置（另一种选择是使用oxylabs这样的代理服务，它会在每次请求时为您轮换IP）
PROXY_SERVER=
PROXY_USERNAME=
PROXY_PASSWORD=
# 如果您想阻止媒体请求以节省代理带宽
BLOCK_MEDIA=

# 当使用FireCrawl的自托管版本时，将其设置为您的webhook的URL
SELF_HOSTED_WEBHOOK_URL=

# 用于事务性电子邮件的Resend API密钥
RESEND_API_KEY=

# LOGGING_LEVEL决定了系统将输出的日志详细程度。
# 可用级别包括：
# NONE - 不输出日志。
# ERROR - 用于记录指示特定操作失败的错误消息。
# WARN - 用于记录可能有害但不一定是错误的情况。
# INFO - 用于记录突出显示应用程序进度的信息性消息。
# DEBUG - 用于记录有关系统流程的详细信息，主要用于调试。
# TRACE - 用于记录比DEBUG级别更详细的信息。
# 将LOGGING_LEVEL设置为上述选项之一来控制日志输出。
LOGGING_LEVEL=INFO
```

### 安装依赖

首先，使用pnpm安装依赖。

```bash theme={null}
# cd apps/api # 确保您在正确的文件夹中
pnpm install # 确保您使用的是pnpm版本9+!
```

### 运行项目

您需要打开3个终端来运行服务。这里有[一个截至2024年10月的视频指南](https://youtu.be/LHqg5QNI4UY)（可选：4个终端用于运行服务和测试）。

### 终端1 - 设置redis

在项目的任意位置运行以下命令：

```bash theme={null}
redis-server
```

### 终端2 - 设置工作进程

现在，导航到 `apps/api/` 目录并运行：

```bash theme={null}
pnpm run workers
# 如果您打算使用[llm-extract功能](https://github.com/mendableai/firecrawl/pull/586/)，您还应该导出OPENAI_API_KEY=sk-______
```

这将启动负责处理爬取任务的工作进程。

### 终端3 - 设置主服务器

为此，导航到 `apps/api/` 目录。如果您还没有安装pnpm，可以在这里安装：[https://pnpm.io/installation](https://pnpm.io/installation)

接下来，运行您的服务器：

```bash theme={null}
pnpm run start
```

### *(可选)* 终端4 - 发送我们的第一个请求

好的，现在让我们发送我们的第一个请求。

```curl theme={null}
curl -X GET http://localhost:3002/test
```

这应该会返回响应Hello, world!

如果您想测试爬取端点，可以运行这个：

```curl theme={null}
curl -X POST http://localhost:3002/v0/crawl \
    -H 'Content-Type: application/json' \
    -d '{
      "url": "https://docs.firecrawl.dev"
    }'
```

## 测试：

最好通过运行 `npm run test:local-no-auth` 来进行测试，如果您希望在没有身份验证的情况下运行测试。

如果您想在有身份验证的情况下运行测试，请运行 `npm run test:prod`
