跳转至

本地 Docker Compose

仓库现在已经内置了一套干净的本地 Docker 部署结构,放在 deploy/ 目录下。

包含的文件

  • Dockerfile — 面向本地运行的镜像构建文件
  • deploy/ohmycaptcha/compose.yml — 应用服务
  • deploy/ohmycaptcha/.env.example — 应用环境变量模板
  • deploy/caddy/compose.yml — 反向代理服务
  • deploy/caddy/Caddyfile — HTTPS 反代配置
  • deploy/caddy/.env.example — Caddy 环境变量模板

推荐拓扑

推荐使用两个独立的 Compose 项目:

  • ohmycaptcha 负责应用本体
  • caddy 负责 TLS 和公网入口

两个项目通过一个共享的外部 Docker 网络互通。

1. 创建共享网络

docker network create caddy_public

2. 启动 Caddy

cd deploy/caddy
cp .env.example .env
docker compose up -d

.env 中配置 DOMAINEMAIL。如果你不想使用 caddy_public,可以改 EDGE_NETWORK

3. 启动 OhMyCaptcha

cd deploy/ohmycaptcha
cp .env.example .env
docker compose up -d --build

至少要配置:

  • CLIENT_KEY
  • LOCAL_BASE_URL
  • LOCAL_API_KEY
  • LOCAL_MODEL
  • CLOUD_BASE_URL
  • CLOUD_API_KEY
  • CLOUD_MODEL

4. 验证服务

curl http://127.0.0.1:8000/api/v1/health
curl https://your-domain.example/api/v1/health

远端模型配置

你不需要在同一台主机上运行大模型。两个模型后端都可以指向远端 OpenAI-compatible 服务:

LOCAL_BASE_URL=https://your-openai-compatible-endpoint/v1
LOCAL_API_KEY=your-api-key
LOCAL_MODEL=gpt-5.4

CLOUD_BASE_URL=https://your-openai-compatible-endpoint/v1
CLOUD_API_KEY=your-api-key
CLOUD_MODEL=gpt-5.4

重要限制

  • 任务状态只保存在内存中,所以这套部署默认应保持单实例,除非你另外改造任务存储。
  • 浏览器类任务依然依赖 Playwright、Chromium、运行内存、IP 质量和目标站点行为。
  • 当前代码里的 reCAPTCHA v2 音频 fallback 会以特定请求格式调用 CLOUD_* 后端,并非所有 OpenAI-compatible 服务都能原样兼容。

小内存 VPS 建议

  • 只跑一个应用容器
  • 保持 Chromium 为 headless
  • 保留 shm_size: "512m"
  • 2 GB RAM 主机上优先使用远端多模态模型,而不是本地推理