feat: add portkey-gateway/libreoffice/jodconverter/bolt-diy

This commit is contained in:
Sun-ZhenXing
2025-10-28 14:10:10 +08:00
parent af55ba73c0
commit c8b9335e74
23 changed files with 1334 additions and 132 deletions

View File

@@ -6,39 +6,66 @@
## 服务
- `firecrawl`: Firecrawl API 主服务器
- `redis`: 用于作业队列和缓存的 Redis
- `playwright`: 用于浏览器自动化的 Playwright 服务
- `api`: Firecrawl API 主服务器,集成了工作进程
- `redis`: 用于作业队列和缓存的 Redis
- `playwright-service`: 用于浏览器自动化的 Playwright 服务
- `nuq-postgres`: 用于队列管理和数据存储的 PostgreSQL 数据库
## 环境变量
| 变量名 | 说明 | 默认值 |
| ------------------------------------- | ---------------------- | -------------- |
| FIRECRAWL_VERSION | Firecrawl 镜像版本 | `v1.16.0` |
| REDIS_VERSION | Redis 镜像版本 | `7.4.2-alpine` |
| PLAYWRIGHT_VERSION | Playwright 服务版本 | `latest` |
| REDIS_PASSWORD | Redis 密码 | `firecrawl` |
| NUM_WORKERS_PER_QUEUE | 每个队列的工作进程数 | `8` |
| SCRAPE_RATE_LIMIT_TOKEN_BUCKET_SIZE | 速率限制的令牌桶大小 | `20` |
| SCRAPE_RATE_LIMIT_TOKEN_BUCKET_REFILL | 每秒令牌填充速率 | `1` |
| PROXY_SERVER | 代理服务器 URL可选 | `""` |
| PROXY_USERNAME | 代理用户名(可选) | `""` |
| PROXY_PASSWORD | 代理密码(可选) | `""` |
| BLOCK_MEDIA | 阻止媒体内容 | `true` |
| FIRECRAWL_PORT_OVERRIDE | Firecrawl API 端口 | `3002` |
| 变量名 | 说明 | 默认值 |
| ----------------------- | ----------------------------- | ---------- |
| FIRECRAWL_VERSION | Firecrawl 镜像版本 | `latest` |
| REDIS_VERSION | Redis 镜像版本 | `alpine` |
| PLAYWRIGHT_VERSION | Playwright 服务版本 | `latest` |
| NUQ_POSTGRES_VERSION | NUQ PostgreSQL 镜像版本 | `latest` |
| POSTGRES_USER | PostgreSQL 用户名 | `postgres` |
| POSTGRES_PASSWORD | PostgreSQL 密码 | `postgres` |
| POSTGRES_DB | PostgreSQL 数据库名称 | `postgres` |
| POSTGRES_PORT_OVERRIDE | PostgreSQL 端口映射 | `5432` |
| INTERNAL_PORT | 内部 API 端口 | `3002` |
| FIRECRAWL_PORT_OVERRIDE | 外部 API 端口映射 | `3002` |
| EXTRACT_WORKER_PORT | 提取工作进程端口 | `3004` |
| WORKER_PORT | 工作进程端口 | `3005` |
| USE_DB_AUTHENTICATION | 启用数据库身份验证 | `false` |
| OPENAI_API_KEY | OpenAI API 密钥(可选) | `""` |
| OPENAI_BASE_URL | OpenAI API 基础 URL可选 | `""` |
| MODEL_NAME | AI 模型名称(可选) | `""` |
| MODEL_EMBEDDING_NAME | 嵌入模型名称(可选) | `""` |
| OLLAMA_BASE_URL | Ollama 基础 URL可选 | `""` |
| BULL_AUTH_KEY | Bull 队列管理面板身份验证密钥 | `@` |
| TEST_API_KEY | 测试 API 密钥(可选) | `""` |
| SLACK_WEBHOOK_URL | Slack Webhook 通知(可选) | `""` |
| POSTHOG_API_KEY | PostHog API 密钥(可选) | `""` |
| POSTHOG_HOST | PostHog 主机(可选) | `""` |
| SUPABASE_ANON_TOKEN | Supabase 匿名令牌(可选) | `""` |
| SUPABASE_URL | Supabase URL可选 | `""` |
| SUPABASE_SERVICE_TOKEN | Supabase 服务令牌(可选) | `""` |
| SELF_HOSTED_WEBHOOK_URL | 自托管 Webhook URL可选 | `""` |
| SERPER_API_KEY | Serper 搜索 API 密钥(可选) | `""` |
| SEARCHAPI_API_KEY | SearchAPI 密钥(可选) | `""` |
| LOGGING_LEVEL | 日志级别 | `info` |
| PROXY_SERVER | 代理服务器 URL可选 | `""` |
| PROXY_USERNAME | 代理用户名(可选) | `""` |
| PROXY_PASSWORD | 代理密码(可选) | `""` |
| BLOCK_MEDIA | 阻止媒体内容 | `true` |
| SEARXNG_ENDPOINT | SearXNG 端点(可选) | `""` |
| SEARXNG_ENGINES | SearXNG 引擎(可选) | `""` |
| SEARXNG_CATEGORIES | SearXNG 分类(可选) | `""` |
请根据实际需求修改 `.env` 文件。
## 卷
- `redis_data`: 用于作业队列和缓存的 Redis 数据存储
- `redis_data`: 用于作业队列和缓存的 Redis 数据存储
- `postgres_data`: 用于队列管理和元数据的 PostgreSQL 数据存储
## 使用方法
### 启动服务
```bash
docker-compose up -d
docker compose up -d
```
### 访问 API
@@ -49,12 +76,22 @@ Firecrawl API 可在以下地址访问:
http://localhost:3002
```
### 管理面板
访问 Bull 队列管理面板:
```text
http://localhost:3002/admin/@/queues
```
如果修改了 `BULL_AUTH_KEY`,请将 `@` 替换为您的值。
### API 调用示例
**抓取单个页面:**
```bash
curl -X POST http://localhost:3002/v0/scrape \
curl -X POST http://localhost:3002/v1/scrape \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com"
@@ -64,12 +101,27 @@ curl -X POST http://localhost:3002/v0/scrape \
**爬取网站:**
```bash
curl -X POST http://localhost:3002/v0/crawl \
curl -X POST http://localhost:3002/v1/crawl \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"crawlerOptions": {
"limit": 100
"limit": 100
}'
```
**提取结构化数据:**
```bash
curl -X POST http://localhost:3002/v1/extract \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://example.com"],
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"description": {"type": "string"}
}
}
}'
```
@@ -80,16 +132,31 @@ curl -X POST http://localhost:3002/v0/crawl \
- **网站爬取**: 递归爬取整个网站
- **JavaScript 渲染**: 完全支持动态 JavaScript 渲染的页面
- **Markdown 输出**: 将网页内容清晰地转换为 markdown
- **速率限制**: 内置速率限制以防止滥用
- **结构化数据提取**: 使用 JSON Schema 提取数据
- **队列管理**: 内置 Bull 作业队列
- **速率限制**: 可配置的速率限制
- **代理支持**: 所有请求的可选代理配置
- **AI 驱动功能**: 可选的 OpenAI 集成以进行高级提取
## 架构
此部署使用官方 Firecrawl 架构:
- **API 服务器**: 处理 HTTP 请求并管理作业队列
- **工作进程**: 内置于主容器中,处理抓取作业
- **PostgreSQL**: 存储队列元数据和作业信息
- **Redis**: 处理作业队列和缓存
- **Playwright 服务**: 提供浏览器自动化功能
## 注意事项
- 该服务使用 Playwright 进行浏览器自动化,支持复杂的网页
- Redis 用于作业队列和缓存
- 速率限制可通过环境变量配置
- 对于生产环境,考虑扩展工作进程数量
- BLOCK_MEDIA 可以通过阻止图像/视频来减少内存使用
- 该服务使用官方的 `ghcr.io/firecrawl/firecrawl` 镜像
- PostgreSQL 使用官方的 `ghcr.io/firecrawl/nuq-postgres` 镜像进行队列管理NUQ - Not Quite Bull
- Redis 默认不使用密码(运行在私有网络上)
- 对于生产环境,启用 `USE_DB_AUTHENTICATION` 并配置 Supabase
- 在生产部署中应更改 `BULL_AUTH_KEY`
- AI 功能需要 `OPENAI_API_KEY``OLLAMA_BASE_URL`
- 所有工作进程都在单个 API 容器中使用 harness 模式运行
## 许可证