上一篇 下一篇 分享链接 返回 返回顶部

从零搭建 AI 浏览器:Docker 部署、模型接入与配置文件全流程指南

发布人:慈云数据-客服中心 发布时间:6小时前 阅读量:0

AI浏览器 部署完整教程|附配置文件

随着大模型能力的不断增强,“AI浏览器”正在成为一种非常实用的工具形态。它并不是传统意义上只用来打开网页的浏览器,而是结合了大语言模型、浏览器自动化、网页理解、任务规划和执行能力的智能代理系统。

简单来说,AI浏览器可以帮你完成以下任务:

  • 自动打开网页并阅读内容;
  • 根据你的指令搜索资料;
  • 自动点击按钮、填写表单;
  • 提取网页中的关键信息;
  • 批量处理网页任务;
  • 结合大模型完成总结、分析、比对和整理;
  • 在一定程度上实现“让AI替你操作浏览器”。

本文将以一个常见的开源方案为例,介绍如何在本地或服务器上部署一个可用的 AI 浏览器环境。教程包含完整部署流程、环境准备、Docker 部署方式、配置文件示例、常见问题以及优化建议。

说明:本文中的“AI浏览器”指的是基于大语言模型与浏览器自动化能力构建的智能浏览器代理系统,例如基于 Playwright、Chromium、Browser Use、OpenAI 兼容接口等技术组合实现的应用。


一、AI浏览器的基本架构

在正式部署之前,先了解一下 AI 浏览器的大致组成。

一个完整的 AI 浏览器通常包含以下几个核心模块:

用户指令
   ↓
Web UI / API 服务
   ↓
大语言模型 LLM
   ↓
任务规划 Agent
   ↓
浏览器自动化引擎 Playwright / Chromium
   ↓
网页访问、点击、输入、提取数据

其中:

模块 作用
Web UI 提供网页端操作界面
LLM 理解用户任务、制定操作步骤
Agent 将大模型输出转换为浏览器操作
Playwright 控制 Chromium 浏览器执行点击、输入等动作
Chromium 实际访问网页的浏览器内核
配置文件 管理模型接口、浏览器参数、代理、日志等

二、部署前准备

本文推荐使用 Docker Compose 部署,这样环境更干净,也更容易迁移。

1. 服务器配置建议

如果只是个人体验,本地电脑即可运行。

如果部署到服务器,建议配置如下:

用途 推荐配置
个人测试 2核 CPU / 4GB 内存
稳定使用 4核 CPU / 8GB 内存
多用户使用 8核 CPU / 16GB 内存以上
系统 Ubuntu 22.04 LTS
硬盘 30GB 以上

如果你使用本地大模型,例如 Qwen、DeepSeek、Llama 等,还需要额外准备 GPU 或者高性能 CPU。

如果使用 OpenAI、DeepSeek API、通义千问、智谱、月之暗面等在线模型接口,则服务器本身不需要太高配置。


三、安装 Docker 和 Docker Compose

如果你的系统还没有安装 Docker,可以执行以下命令。

1. 更新系统软件包

sudo apt update
sudo apt upgrade -y

2. 安装基础依赖

sudo apt install -y ca-certificates curl gnupg lsb-release

3. 安装 Docker

curl -fsSL https://get.docker.com | bash

4. 启动 Docker

sudo systemctl enable docker
sudo systemctl start docker

5. 检查 Docker 版本

docker version

6. 检查 Docker Compose

docker compose version

如果能够正常输出版本号,说明 Docker 环境已经准备完成。


四、创建项目目录

为了方便管理,我们先创建一个单独目录。

mkdir -p /opt/ai-browser
cd /opt/ai-browser

推荐的目录结构如下:

/opt/ai-browser
├── docker-compose.yml
├── .env
├── config
│   └── browser-config.yaml
├── data
├── logs
└── nginx
    └── ai-browser.conf

创建目录:

mkdir -p config data logs nginx

五、编写环境变量配置文件

在项目根目录创建 .env 文件:

vim .env

写入以下内容:

# =========================
# AI Browser 基础配置
# =========================

APP_NAME=AI-Browser
APP_ENV=production
APP_HOST=0.0.0.0
APP_PORT=7788

# =========================
# 大模型接口配置
# 支持 OpenAI 兼容接口
# =========================

LLM_PROVIDER=openai
LLM_MODEL=gpt-4o-mini
LLM_API_KEY=你的API_KEY
LLM_BASE_URL=https://api.openai.com/v1

# 如果你使用 DeepSeek,可参考:
# LLM_PROVIDER=openai
# LLM_MODEL=deepseek-chat
# LLM_API_KEY=你的DeepSeek_API_KEY
# LLM_BASE_URL=https://api.deepseek.com/v1

# 如果你使用通义千问 OpenAI 兼容接口,可参考:
# LLM_PROVIDER=openai
# LLM_MODEL=qwen-plus
# LLM_API_KEY=你的DashScope_API_KEY
# LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

# =========================
# 浏览器配置
# =========================

BROWSER_HEADLESS=true
BROWSER_TYPE=chromium
BROWSER_TIMEOUT=60000
BROWSER_VIEWPORT_WIDTH=1280
BROWSER_VIEWPORT_HEIGHT=900

# 是否保存浏览器会话数据
BROWSER_PERSISTENT_CONTEXT=true
BROWSER_USER_DATA_DIR=/app/data/browser-profile

# =========================
# 安全配置
# =========================

AUTH_ENABLED=true
AUTH_USERNAME=admin
AUTH_PASSWORD=请修改为强密码

# =========================
# 日志配置
# =========================

LOG_LEVEL=info
LOG_DIR=/app/logs

# =========================
# 代理配置,可选
# 如果不需要代理,保持为空
# =========================

HTTP_PROXY=
HTTPS_PROXY=
NO_PROXY=localhost,127.0.0.1

注意事项:

  1. LLM_API_KEY 必须替换成你自己的模型 API Key;
  2. 如果部署到公网,一定要开启认证;
  3. AUTH_PASSWORD 不要使用弱密码;
  4. 如果你使用国产大模型,只要它支持 OpenAI 兼容接口,通常都可以通过 LLM_BASE_URL 接入。

六、编写 AI 浏览器配置文件

创建配置文件:

vim config/browser-config.yaml

写入以下内容:

app:
  name: "AI-Browser"
  host: "0.0.0.0"
  port: 7788
  environment: "production"

llm:
  provider: "openai"
  model: "${LLM_MODEL}"
  api_key: "${LLM_API_KEY}"
  base_url: "${LLM_BASE_URL}"
  temperature: 0.2
  max_tokens: 4096
  timeout: 120

browser:
  type: "chromium"
  headless: true
  timeout: 60000
  viewport:
    width: 1280
    height: 900
  persistent_context: true
  user_data_dir: "/app/data/browser-profile"

agent:
  max_steps: 30
  max_retries: 3
  step_timeout: 60
  enable_screenshot: true
  enable_dom_analysis: true
  enable_action_validation: true

security:
  auth_enabled: true
  username: "${AUTH_USERNAME}"
  password: "${AUTH_PASSWORD}"
  allow_file_download: true
  download_dir: "/app/data/downloads"
  allowed_domains: []
  blocked_domains:
    - "localhost"
    - "127.0.0.1"
    - "0.0.0.0"

logging:
  level: "info"
  dir: "/app/logs"
  save_task_history: true
  save_screenshots: true

proxy:
  http: "${HTTP_PROXY}"
  https: "${HTTPS_PROXY}"
  no_proxy: "${NO_PROXY}"

这个配置文件主要控制以下内容:

  • 应用监听地址;
  • 大模型接口;
  • 浏览器是否无头运行;
  • Agent 最大执行步骤;
  • 是否保存截图和任务历史;
  • 登录认证;
  • 代理设置;
  • 黑白名单域名。

其中 blocked_domains 建议保留,防止 AI 浏览器访问服务器本地地址,降低 SSRF 等安全风险。


七、编写 Docker Compose 文件

在项目根目录创建 docker-compose.yml

vim docker-compose.yml

写入以下内容:

services:
  ai-browser:
    image: python:3.11-slim
    container_name: ai-browser
    restart: unless-stopped
    working_dir: /app
    env_file:
      - .env
    ports:
      - "${APP_PORT}:7788"
    volumes:
      - ./config:/app/config
      - ./data:/app/data
      - ./logs:/app/logs
    command: >
      bash -c "
      apt-get update &&
      apt-get install -y curl wget git build-essential &&
      pip install --no-cache-dir browser-use playwright gradio openai python-dotenv pyyaml &&
      playwright install --with-deps chromium &&
      python -m browser_use
      "
    shm_size: "2gb"
    environment:
      - PYTHONUNBUFFERED=1
      - APP_HOST=${APP_HOST}
      - APP_PORT=${APP_PORT}
      - LLM_PROVIDER=${LLM_PROVIDER}
      - LLM_MODEL=${LLM_MODEL}
      - LLM_API_KEY=${LLM_API_KEY}
      - LLM_BASE_URL=${LLM_BASE_URL}
      - BROWSER_HEADLESS=${BROWSER_HEADLESS}
      - BROWSER_TIMEOUT=${BROWSER_TIMEOUT}
      - AUTH_ENABLED=${AUTH_ENABLED}
      - AUTH_USERNAME=${AUTH_USERNAME}
      - AUTH_PASSWORD=${AUTH_PASSWORD}
    networks:
      - ai-browser-net

networks:
  ai-browser-net:
    driver: bridge

上面的配置使用 python:3.11-slim 作为基础镜像,容器启动时会安装相关依赖。

不过需要说明:这种方式适合快速体验,但每次首次启动都需要安装依赖,启动速度较慢。正式环境建议自己构建镜像。


八、推荐:使用 Dockerfile 构建正式镜像

为了让部署更稳定,建议创建一个 Dockerfile

vim Dockerfile

写入以下内容:

FROM python:3.11-slim

WORKDIR /app

ENV PYTHONUNBUFFERED=1
ENV PIP_NO_CACHE_DIR=1

RUN apt-get update && apt-get install -y \
    curl \
    wget \
    git \
    build-essential \
    ca-certificates \
    fonts-noto-cjk \
    fonts-noto-color-emoji \
    && rm -rf /var/lib/apt/lists/*

RUN pip install --upgrade pip

RUN pip install \
    browser-use \
    playwright \
    gradio \
    openai \
    python-dotenv \
    pyyaml

RUN playwright install --with-deps chromium

COPY config /app/config

EXPOSE 7788

CMD ["python", "-m", "browser_use"]

然后修改 docker-compose.yml

services:
  ai-browser:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ai-browser
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "${APP_PORT}:7788"
    volumes:
      - ./config:/app/config
      - ./data:/app/data
      - ./logs:/app/logs
    shm_size: "2gb"
    environment:
      - PYTHONUNBUFFERED=1
      - APP_HOST=${APP_HOST}
      - APP_PORT=${APP_PORT}
      - LLM_PROVIDER=${LLM_PROVIDER}
      - LLM_MODEL=${LLM_MODEL}
      - LLM_API_KEY=${LLM_API_KEY}
      - LLM_BASE_URL=${LLM_BASE_URL}
      - BROWSER_HEADLESS=${BROWSER_HEADLESS}
      - BROWSER_TIMEOUT=${BROWSER_TIMEOUT}
      - AUTH_ENABLED=${AUTH_ENABLED}
      - AUTH_USERNAME=${AUTH_USERNAME}
      - AUTH_PASSWORD=${AUTH_PASSWORD}
    networks:
      - ai-browser-net

networks:
  ai-browser-net:
    driver: bridge

构建并启动:

docker compose up -d --build

查看日志:

docker logs -f ai-browser

如果日志中没有明显报错,说明服务已经启动。


九、访问 AI 浏览器

默认端口是 7788

如果是本地部署,可以访问:

http://localhost:7788

如果部署在服务器上,可以访问:

http://服务器IP:7788

如果开启了用户名密码认证,需要输入 .env 中配置的:

AUTH_USERNAME
AUTH_PASSWORD

首次使用时,可以尝试输入以下任务:

打开百度,搜索“人工智能浏览器是什么”,提取前三条搜索结果的标题和链接。

或者:

访问某个新闻网站,帮我总结首页最重要的5条科技新闻。

再或者:

打开一个电商网站,搜索机械键盘,对比前5个商品的价格、品牌和主要卖点。

十、配置 Nginx 反向代理

如果你希望使用域名访问,例如:

https://browser.example.com

可以使用 Nginx 做反向代理。

1. 安装 Nginx

sudo apt install -y nginx

2. 创建站点配置

sudo vim /etc/nginx/conf.d/ai-browser.conf

写入:

server {
    listen 80;
    server_name browser.example.com;

    client_max_body_size 50m;

    location / {
        proxy_pass http://127.0.0.1:7788;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

测试配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

十一、配置 HTTPS 证书

推荐使用 Certbot 免费申请 Let’s Encrypt 证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

sudo certbot --nginx -d browser.example.com

按提示输入邮箱并同意协议即可。

完成后访问:

https://browser.example.com

十二、接入不同大模型的配置示例

1. OpenAI

LLM_PROVIDER=openai
LLM_MODEL=gpt-4o-mini
LLM_API_KEY=sk-xxxxxxxx
LLM_BASE_URL=https://api.openai.com/v1

2. DeepSeek

LLM_PROVIDER=openai
LLM_MODEL=deepseek-chat
LLM_API_KEY=sk-xxxxxxxx
LLM_BASE_URL=https://api.deepseek.com/v1

3. 通义千问

LLM_PROVIDER=openai
LLM_MODEL=qwen-plus
LLM_API_KEY=sk-xxxxxxxx
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

4. 智谱 GLM

LLM_PROVIDER=openai
LLM_MODEL=glm-4-flash
LLM_API_KEY=xxxxxxxx
LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4

5. 本地 Ollama

如果你想使用本地模型,可以部署 Ollama。

安装 Ollama:

curl -fsSL https://ollama.com/install.sh | sh

拉取模型:

ollama pull qwen2.5:7b

.env 配置示例:

LLM_PROVIDER=openai
LLM_MODEL=qwen2.5:7b
LLM_API_KEY=ollama
LLM_BASE_URL=http://host.docker.internal:11434/v1

如果是在 Linux Docker 中访问宿主机 Ollama,可能需要在 docker-compose.yml 中增加:

extra_hosts:
  - "host.docker.internal:host-gateway"

十三、常见问题排查

1. 容器启动后无法访问页面

先查看容器状态:

docker ps

再查看日志:

docker logs -f ai-browser

常见原因包括:

  • 端口没有开放;
  • 应用没有监听 0.0.0.0
  • 服务器安全组没有放行端口;
  • 容器启动失败;
  • 模型 API Key 配置错误。

如果是云服务器,需要在安全组中放行 7788 或者 Nginx 的 80/443 端口。


2. Playwright 或 Chromium 启动失败

如果日志中出现浏览器依赖问题,可以进入容器执行:

docker exec -it ai-browser bash
playwright install --with-deps chromium

如果仍然失败,确认 Dockerfile 中已经包含:

RUN playwright install --with-deps chromium

同时建议保留:

shm_size: "2gb"

因为 Chromium 在 Docker 中运行时需要较大的共享内存。


3. AI 能打开网页,但不会点击或执行错误

这通常与模型能力有关。建议:

  • 使用更强的模型;
  • 降低任务复杂度;
  • 把指令写得更清楚;
  • 增加最大执行步数;
  • 开启截图分析;
  • 避免一次性要求完成太多动作。

例如,不推荐这样写:

帮我找资料并整理成完整报告。

更推荐这样写:

打开百度,搜索“AI浏览器部署教程”,读取前5个结果的标题、链接和摘要,并整理成表格。

4. 模型接口报错 401

通常是 API Key 错误。

检查 .env

LLM_API_KEY=你的API_KEY

确认没有多余空格,也不要加引号。


5. 模型接口报错 404

通常是模型名称或接口地址错误。

例如 DeepSeek 应该类似:

LLM_MODEL=deepseek-chat
LLM_BASE_URL=https://api.deepseek.com/v1

通义千问兼容模式一般是:

LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

6. 中文网页显示乱码

在 Dockerfile 中安装中文字体:

RUN apt-get update && apt-get install -y fonts-noto-cjk fonts-noto-color-emoji

然后重新构建镜像:

docker compose up -d --build

十四、安全加固建议

AI 浏览器本质上具备“自动访问网页、点击和提交表单”的能力,因此部署到公网时必须注意安全。

1. 必须开启登录认证

.env 中建议设置:

AUTH_ENABLED=true
AUTH_USERNAME=admin
AUTH_PASSWORD=复杂强密码

密码至少包含:

  • 大写字母;
  • 小写字母;
  • 数字;
  • 特殊符号;
  • 长度不少于 12 位。

2. 不要直接暴露 Docker 端口

更推荐:

  • Docker 服务只监听本机;
  • 使用 Nginx 反代;
  • 使用 HTTPS;
  • 开启访问认证。

如果想让容器端口只绑定本机,可以这样写:

ports:
  - "127.0.0.1:${APP_PORT}:7788"

这样外部无法直接通过 服务器IP:7788 访问,只能经过 Nginx。


3. 限制可访问域名

如果你的 AI 浏览器只用于固定业务,可以设置白名单:

security:
  allowed_domains:
    - "example.com"
    - "docs.example.com"

并禁止访问内网地址:

blocked_domains:
  - "localhost"
  - "127.0.0.1"
  - "0.0.0.0"
  - "169.254.169.254"

其中 169.254.169.254 是云服务器元数据地址,建议务必屏蔽。


4. 控制下载权限

如果不需要下载文件,可以关闭:

security:
  allow_file_download: false

如果需要下载,建议指定目录:

download_dir: "/app/data/downloads"

十五、性能优化建议

1. 选择合适的大模型

AI 浏览器对模型的推理、规划和视觉理解能力要求较高。一般来说:

场景 推荐模型
简单网页搜索 gpt-4o-mini、deepseek-chat、qwen-plus
复杂网页操作 gpt-4o、claude、qwen-max
本地低成本测试 qwen2.5:7b、llama3.1:8b
高准确率任务 多模态强模型

如果网页结构复杂,建议使用具备更强推理能力的模型。


2. 调整 Agent 步数

如果任务经常未完成,可以增加:

agent:
  max_steps: 50

但步数越高,消耗的 Token 和时间也会增加。


3. 开启持久化浏览器上下文

browser:
  persistent_context: true

这样可以保存 Cookie、登录状态和部分浏览器数据,适合需要登录的网站。


4. 使用无头模式

服务器环境建议保持:

BROWSER_HEADLESS=true

如果是在本地调试,可以改成:

BROWSER_HEADLESS=false

这样可以看到浏览器实际操作过程,方便排查问题。


十六、升级与维护

1. 更新代码和镜像

如果使用 Dockerfile 构建:

cd /opt/ai-browser
docker compose down
docker compose build --no-cache
docker compose up -d

2. 查看日志

docker logs -f ai-browser

或者查看挂载日志目录:

ls -lh logs

3. 备份数据

建议定期备份:

tar -czvf ai-browser-backup.tar.gz data config .env docker-compose.yml

其中:

  • data 保存浏览器状态和下载文件;
  • config 保存配置;
  • .env 保存模型密钥和认证信息。

.env 文件包含敏感信息,不要上传到 GitHub。


十七、一个完整的最终配置示例

下面给出一套比较适合生产环境的最终配置。

.env

APP_NAME=AI-Browser
APP_ENV=production
APP_HOST=0.0.0.0
APP_PORT=7788

LLM_PROVIDER=openai
LLM_MODEL=deepseek-chat
LLM_API_KEY=sk-请替换为你的Key
LLM_BASE_URL=https://api.deepseek.com/v1

BROWSER_HEADLESS=true
BROWSER_TYPE=chromium
BROWSER_TIMEOUT=60000
BROWSER_VIEWPORT_WIDTH=1280
BROWSER_VIEWPORT_HEIGHT=900
BROWSER_PERSISTENT_CONTEXT=true
BROWSER_USER_DATA_DIR=/app/data/browser-profile

AUTH_ENABLED=true
AUTH_USERNAME=admin
AUTH_PASSWORD=请替换为复杂强密码

LOG_LEVEL=info
LOG_DIR=/app/logs

HTTP_PROXY=
HTTPS_PROXY=
NO_PROXY=localhost,127.0.0.1

docker-compose.yml

services:
  ai-browser:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ai-browser
    restart: unless-stopped
    env_file:
      - .env
    ports:
      - "127.0.0.1:${APP_PORT}:7788"
    volumes:
      - ./config:/app/config
      - ./data:/app/data
      - ./logs:/app/logs
    shm_size: "2gb"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    networks:
      - ai-browser-net

networks:
  ai-browser-net:
    driver: bridge

Dockerfile

FROM python:3.11-slim

WORKDIR /app

ENV PYTHONUNBUFFERED=1
ENV PIP_NO_CACHE_DIR=1

RUN apt-get update && apt-get install -y \
    curl \
    wget \
    git \
    build-essential \
    ca-certificates \
    fonts-noto-cjk \
    fonts-noto-color-emoji \
    && rm -rf /var/lib/apt/lists/*

RUN pip install --upgrade pip

RUN pip install \
    browser-use \
    playwright \
    gradio \
    openai \
    python-dotenv \
    pyyaml

RUN playwright install --with-deps chromium

COPY config /app/config

EXPOSE 7788

CMD ["python", "-m", "browser_use"]

nginx 配置

server {
    listen 80;
    server_name browser.example.com;

    client_max_body_size 50m;

    location / {
        proxy_pass http://127.0.0.1:7788;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

十八、总结

通过本文的步骤,你已经可以完成一个 AI 浏览器的基本部署。整体流程可以概括为:

  1. 准备服务器和 Docker 环境;
  2. 创建项目目录;
  3. 编写 .env 环境变量;
  4. 编写浏览器和 Agent 配置;
  5. 使用 Docker Compose 启动服务;
  6. 配置 Nginx 和 HTTPS;
  7. 接入 OpenAI、DeepSeek、通义千问或本地 Ollama;
  8. 做好认证、域名限制和安全加固。

AI 浏览器非常适合用于网页资料收集、网页自动化测试、竞品信息整理、搜索结果提取、内容摘要、表单辅助填写等场景。不过需要注意,它并不是完全可靠的“无人值守机器人”。在涉及账号安全、支付、重要表单提交、敏感信息处理时,仍然建议人工确认。

如果只是个人使用,可以从简单的 Docker Compose 部署开始;如果要在团队或生产环境中使用,则建议配合域名、HTTPS、访问认证、日志审计和域名访问限制一起部署。这样既能发挥 AI 浏览器的自动化能力,也能保证系统的稳定性和安全性。

目录结构
全文