## 一键部署 ### Linux ```bash git clone https://git.51easyai.com/wangbo/easyai.git && cd easyai && chmod +x start.sh && ./start.sh ``` ### Windows ```powershell git clone https://git.51easyai.com/wangbo/easyai.git; cd easyai; powershell -ExecutionPolicy Bypass -File .\start.ps1 ``` > **Windows 脚本权限说明**:PowerShell 默认禁止运行脚本,直接双击 `start.ps1` 会闪退。 > > - **推荐**:使用 `powershell -ExecutionPolicy Bypass -File .\start.ps1` 执行,无需修改系统策略 > - **或**:以管理员身份打开 PowerShell,执行 `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`,之后可直接运行 `.\start.ps1` --- ## 更新升级 ### 老客户(旧版本部署包)升级教程 如果你当前使用的是较早版本的部署包,**无法在旧包目录里直接执行 `git pull`** 来获取配置文件,建议按下面流程升级: 1. 先停止并下线旧项目容器: ```bash cd ~/easyai docker compose down ``` 如果你的环境使用的是旧命令,请改用: ```bash docker-compose down ``` 2. 将旧目录重命名备份(示例改名为 `easyai2`): ```bash cd ~ mv easyai easyai2 ``` 3. 重新执行一键部署命令,按脚本提示完成初始化输入。 4. 当脚本询问是否启用 HTTPS 时: - 如果你之前已经有可用证书,填写 `N`(不生成新证书)。 - 只有在需要新申请证书时,才选择启用并生成证书。 5. 完成上述迁移后,后续若有新的配置文件或版本更新,可直接在新的 `easyai` 目录中执行 `./update.sh` 进行更新。 update.sh 脚本用于自动更新 EasyAI 应用,包含以下功能: - **拉取整个仓库**:执行 `git pull` 获取最新代码(docker-compose.yml、start.sh、.env.*.sample 等全部文件) - 自动补齐缺失的环境配置文件(.env、.env.tools、.env.ASG、.env.AMS,从 .sample 生成且不覆盖已有文件) - 兼容 `docker compose` 和 `docker-compose` 两种命令格式 - 自动拉取最新镜像并重启服务 ### 使用步骤 1. [首次执行,后续无需重复执行]添加执行权限,命令: ```bash chmod +x update.sh ``` 2. 执行更新(默认会 `git pull` 拉取整个仓库) ```bash ./update.sh ``` > **注意**:update.sh 需要在 Git 克隆的目录下运行。若通过 zip 下载而非 git clone,请先使用 `git clone` 获取项目。 ### 使用方式 - 执行 `./update.sh` 后会**命令行内选择**更新方式: - `[1]` 更新并拉取仓库(git pull)+ 更新镜像并重启(**默认**,回车即选) - `[2]` 仅更新镜像并重启(跳过 git pull,适用于有本地修改不想被覆盖的场景) - 如果本次**不涉及配置文件更新**(如 `.env*`、`docker-compose.yml`、`easyai-proxy.conf*` 无变更),可直接选择 `[2]`,仅更新后台服务镜像并重启即可。 - **查看帮助**:`./update.sh -h` 或 `./update.sh --help` ### 更新说明 - 脚本会执行 `git pull` 拉取整个仓库最新代码 - 拉取后会检查并补齐缺失的 .env、.env.tools、.env.ASG、.env.AMS(不会覆盖已有文件) - 最后执行 `docker compose pull` 和 `docker compose up -d` 拉取镜像并重启服务 ### Windows 用户(update.ps1) Windows 下使用 `update.ps1`,功能与 Linux 版一致: ```powershell .\update.ps1 ``` - 执行后会**命令行内选择**:`[1]` 更新并拉取仓库 + 更新镜像(默认);`[2]` 仅更新镜像 - 需在 Git 克隆的 easyai 目录下运行 --- ## 重要更新记录: ### 2026.3.20 1. **新增 Agent 记忆服务(AMS)模块**:新增 `agent-memory`(Agent 长期记忆)容器,复用 `easyai-pgvector` 数据库(需 pgvector 扩展),用于支持 Agent 对话记忆、向量召回与反馈能力。 2. **新增环境变量文件**:新增 `.env.AMS.sample` 文件,包含记忆服务所需的全部环境变量。 3. 主服务 `comfy-server` 新增 `MEMORY_TCP_HOST` 和 `MEMORY_TCP_PORT` 环境变量,用于内部 TCP 微服务通信。 4. **Nginx 代理**:`easyai-proxy.conf.sample` 中新增 `/ams-api/` 路径代理(可选)。 #### 升级步骤 **步骤一:更新文件** 将以下文件更新到最新版本: - `docker-compose.yml` - `easyai-proxy.conf.sample` - `docker/postgres/init-pgvector.sql`(PostgreSQL 首次启动时创建 vector 扩展) 新增文件复制到部署目录: - `.env.AMS.sample` → 复制为 `.env.AMS` 并根据实际环境修改 **步骤二:配置 `.env.AMS`** ```bash cp .env.AMS.sample .env.AMS ``` 根据实际环境修改 `.env.AMS` 中的关键配置: ```dotenv # PostgreSQL 连接(独立库 easyai_memory,与 .env.ASG 中账号密码一致) MEMORY_DATABASE_URL=postgresql://easyai:easyai2025@easyai-pgvector:5432/easyai_memory?schema=public # 主服务 API 地址(用于 Embedding 与对话压缩) MEMORY_AI_BASE_URL=http://comfy-server:3001 # Embedding 模型与维度(需与主服务一致) MEMORY_EMBEDDING_DIMENSION=1024 MEMORY_EMBEDDING_MODEL=text-embedding-v4 ``` **步骤三:启动服务** 记忆服务使用 Docker Compose Profile,需显式启用: ```bash cd ~/easyai # 启动全部服务(含记忆服务) docker compose --profile memory up -d # 或仅启动基础服务(不含记忆) docker compose up -d ``` 新增容器:`agent-memory`(Agent 记忆服务),复用 `easyai-pgvector`,使用独立库 `easyai_memory`。初始化流程与 ASG 一致: - **PostgreSQL 首次启动**:`docker/postgres/init-pgvector.sql` 创建 `vector`、`pgcrypto` 扩展 - **easyai-asg 启动**:entrypoint 执行 `prisma migrate deploy`,创建治理相关表 - **agent-memory 启动**:entrypoint 执行 `prisma migrate deploy`,创建 `memory_records` 等表 **注意**:`easyai-pgvector` 使用 `registry.cn-shanghai.aliyuncs.com/easyaigc/pgvector:0.8.2-pg18-trixie`(含 pgvector 扩展)。若此前使用其他镜像且已有数据,升级前请备份 `asg_postgres_data` 卷。 **步骤四:验证** ```bash # 检查容器状态 docker compose ps agent-memory # 检查记忆服务健康状态 curl http://127.0.0.1:3004/health # 通过 Nginx 代理访问(配置 Nginx 后) curl https://<你的域名>/ams-api/health ``` > **注意**:记忆服务默认不启动,使用 `docker compose --profile memory up -d` 显式启用。若不需要 Agent 记忆功能,保持 `docker compose up -d` 即可,主服务会正常运行(记忆相关能力不可用)。 --- ### 2026.3.2 1. **新增 Agent 服务治理(ASG)模块**:新增 `easyai-asg`(Agent 服务治理)容器和独立的 `easyai-pgvector`(PostgreSQL 18)数据库容器,用于支持 Agent 自动化治理能力。 2. **新增 Nginx 反向代理**:在 `easyai-proxy.conf.sample` 中新增 `/asg-api/` 路径代理,用于暴露 ASG 服务的 REST API。 3. **新增环境变量文件**:新增 `.env.ASG.sample` 文件,包含 ASG 服务所需的全部环境变量。 4. 主服务 `comfy-server` 新增 `ASG_TCP_HOST` 和 `ASG_TCP_PORT` 环境变量,用于内部 TCP 微服务通信。 5. **前端新增环境变量**:`.env` 中新增 `NUXT_PUBLIC_SG_APIURL`,用于前端治理管理页面调用 ASG API。 #### 升级步骤 **步骤一:更新文件** 将以下文件更新到最新版本: - `docker-compose.yml` - `easyai-proxy.conf.sample` - `.env.sample`(新增 `NUXT_PUBLIC_SG_APIURL`) 新增文件复制到部署目录: - `.env.ASG.sample` → 复制为 `.env.ASG` 并根据实际环境修改 **步骤 1.5:配置 `.env` 新增变量** 在 `.env` 文件中添加 ASG 前端 API 地址: ```dotenv # IP 直接访问方式 NUXT_PUBLIC_SG_APIURL=http://<你的服务器IP>:3003 # 域名 + Nginx 代理方式(需要配置步骤三的 Nginx 代理) #NUXT_PUBLIC_SG_APIURL=/asg-api ``` **步骤二:配置 `.env.ASG`** ```bash cp .env.ASG.sample .env.ASG ``` 根据实际环境修改 `.env.ASG` 中的关键配置: ```dotenv # PostgreSQL 连接(默认使用容器内网地址,一般无需修改) ASG_DATABASE_URL=postgresql://easyai:easyai2025@easyai-pgvector:5432/agent_governance?schema=public ASG_POSTGRES_USER=easyai ASG_POSTGRES_PASSWORD=easyai2025 # Redis(复用主服务 Redis,使用独立 DB 隔离) ASG_REDIS_HOST=redis ASG_REDIS_PASSWORD= # 与主服务 Redis 密码保持一致 # 主服务连接地址(容器内网地址) ASG_MAIN_BACKEND_URL=http://comfy-server:3001 # 管理员账号(用于 Agent 调用时登录获取 token) ASG_ADMIN_USERNAME=admin ASG_ADMIN_PASSWORD=123456 ``` **步骤三:更新 Nginx 配置,暴露创建任务治理相关接口** 在 nginx 配置文件(`/etc/nginx/conf.d/easyai-proxy.conf`)中添加 ASG API 代理,具体位置参考 `easyai-proxy.conf.sample`: ```nginx location /asg-api/ { proxy_pass http://127.0.0.1:3003/; proxy_read_timeout 300s; client_max_body_size 20M; proxy_redirect off; proxy_set_header X-Original-Prefix '/asg-api'; 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 Host $host; } ``` 添加后重载 Nginx: ```bash nginx -t && nginx -s reload ``` **步骤四:启动服务** ```bash cd ~/easyai docker compose up -d ``` 新增容器:`easyai-pgvector`(PostgreSQL)和 `easyai-asg`(Agent 服务治理),数据库会在首次启动时自动完成初始化和迁移。 **步骤五:验证** ```bash # 检查容器状态 docker compose ps easyai-pgvector easyai-asg # 检查 ASG 服务健康状态 curl http://127.0.0.1:3003/health # 通过 Nginx 代理访问(配置 Nginx 后) curl https://<你的域名>/asg-api/health ``` > **注意**:如果不需要 Agent 服务治理功能,可以不执行以上步骤,不影响主服务正常运行。需要开放 3003 端口(或通过 Nginx 代理访问)。 ### 2025.2.4 1. 增加脚本沙箱环境容器,需要更新`docker-compose.yml`,用以支持SKILL中的脚本运行 2. 增加环境变量配置 ```dotenv SANDBOX_PORT=8081 #对外暴露沙箱环境的端口,不建议暴露,权限较高 SANDBOX_SERVICE_BASE_URL= #脚本运行环境使用的服务地址,默认为通过内网直接访问http://sandbox:8000,不需要配置。当将sandbox部署在其他外部网络才需要配置 ``` ### 2025.1.29 1. 优化日志管理功能,使用单独的容器和模块来进行管理,不占用主进程文件写入性能 2. 更新步骤: - 本次`docker-compose.yml`新增dozzle容器,将`docker-compose.yml`文件更新到最新 - 在nginx配置文件中(/etc/nginx/conf.d/easyai-proxy.conf)添加如下配置,具体添加位置参考`easyai-proxy.conf.sample` ```nginx configuration location /logs-web/ { proxy_pass http://127.0.0.1:8080/logs-web/; proxy_redirect off; proxy_set_header X-Original-Prefix '/logs-web'; 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 Host $host; } ``` 3. 默认不启用密码(有风险⚠️,别人可以任意访问你的应用日志)。如果启用密码,取消`docker-compose.yml`中的`DOZZLE_AUTH_PROVIDER: simple`的注释,默认密码为`123456`,用户名为`admin`。 4. 修改默认密码,使用下面的命令生成密码:(替换admin和密码为实际的用户名和密码) ```bash docker run -it --rm registry.cn-shanghai.aliyuncs.com/easyaigc/dozzle:latest generate admin --password 密码 ``` 5. 用生成的密码填入/data/users.yml中的password,并保存后,密码即刻生效 ### 2025.12.27 1. 修复挂载报错问题 ### 2025.12.26 1. 增加临时文件目录挂载,解决只读文件系统问题 2. 增加后端日志目录挂载,便于日志管理和查看 ### 2025.12.05 1. 更新新的视频编辑容器,支持更多视频处理功能 ### 2025.11.12 1. 删除redis内存限制配置 ### 2025.11.11 1. 增加redis内存限制配置 ### 2025.09.22 1. 更新配置文件中的密钥设置,用于平台对接 2. 优化docker环境变量配置,直接在docker中引入env file,避免每次都需要手动增加环境变量 ### 2025.09.20 1. 优化redis和MQ的云端配置 ### 2025.08.31 1. 优化nginx配置,支持插件功能 ### 2025.08.19 1. 更新部署相关文件 ### 2025.08.08 1. 优化部署方式为pm2,提升应用稳定性 ### 2025.07.28 1. 增加缓存目录挂载,让nodeJS执行子进程有操作缓存的权限 ### 2025.07.12 1. 优化docker重启策略 2. 增加minio相关配置说明 ### 2025.07.05 1. 优化安装docker-compose的脚本,增加本地docker-compose的兜底方案 2. 兼容 `docker compose` 和 `docker-compose` 两种命令格式 ### 2025.07.04 1. 适配新的文件上传功能 2. 增加后端文件上传目录的挂载 3. 增加二级域名的取消域名重定向注释说明 ### 2025.06.24 1. 增加禁用文档的环境变量和配置选项 ### 2025.06.12 1. 增加CentOS系统兼容性支持 ### 2025.06.06 1. 删除MCP server的配置 ### 2025.06.04 1. 删除newAPI相关配置 ### 2025.05.26 1. 删除旧websocket MCP环境变量配置 ### 2025.05.15 1. 优化MCP消息转发Nginx配置文件 ### 2025.05.14 1. 删除原MCP旧配置,增加新的MCP配置 2. 修改easyai-proxy文件,删除原来旧的MCP转发,新增新的标准SSE的代理优化 3. 更新README文档 ### 2025.05.13 1. 增加docker-compose文件 ### 2025.03.11 1. 增加了redis的配置文件,提升了生产环境的稳定性 ### 早期版本 1. 升级了mongoDB的数据挂载方式,使用volume挂载,避免跨平台的一些数据挂载问题 2. .env增加了版本、日志和token参数的配置 ## 其他功能配置 其他各项需要的功能配置可以自行查阅环境变量中的配置说明,下面是一些比较常用的功能配置 ### 配置PDF图文解析Markdown功能 如果需要启用PDF图文解析Markdown功能,需要`env.tools`中的OSS环境变量,具体参考文件中的配置说明:自动解析PDF图文,将图片文件上传到OSS,并解析成Markdown格式,并返回 ## 常见问题 1. 某个服务无法运行 解决方案:重启docker(可以解决99%的问题) ```bash # cd easyai && docker compose down && docker compose up -d #如果提示docker "compose" is not a docker command,则使用下面的命令 cd easyai && docker-compose down && docker-compose up -d ``` 2. 启动时提示`Error: listen EADDRINUSE: address already in use :::3000` 端口占用,请检查端口3000是否被其他程序占用 3. invalid interpolation format for services.mongo.ports.[]. You may need to escape any $ with another $ 等关于docker-compose文件格式的报错 解决方案:docker-compose 版本太低,一般为服务器之前自己使用apt安装低版本的docker-compose,需要卸载重新安装 ```bash # 卸载docker-compose apt remove docker-compose #重新安装 ./start.sh ```