# 主干AI实验室 ## 一、技术栈 - ### 前端 - **Vue**:Vben Admin作为框架 - 开发语言:**TypeScript/JavaScript** - ### 后端 - **Ktor**:业务后端 - 开发语言:**Java/Kotlin** - **FastAPI**:实验室AI模块后端程序 - 开发语言:**Python** - **RabbitMQ**:消息队列 - ### 人工智能 - **LangChain**:自定义LLM流程核心 - **LangGraph**:Agent构建核心 - **YOLO**:目标检测模型 - **DeepStream**:视频流分析框架 - ### 数据库 - **Redis**:内存数据库 - **PostgreSQL**:实验室业务数据库 - **Milvus**:实验室向量数据库 - **SQLServer**:F8业务数据库 - ### 对象存储服务器 - **MinIO**:实验室对象存储服务器 - ### 运维 - **Docker**:项目部署 - **Nginx**:前端项目(AI实验室、机器人测试)部署 - **Kong**: 网关 - **Prometheus**:服务监控 - **Grafana**:数据可视化 ## 二、端口使用 | 键 | 值 | | ------------------------- | --------------- | | **公网域名** | ai.ronsunny.cn | | **公网IP** | 171.212.101.200 | | **内网地址** | 10.10.12.101 | | **虚拟机管理地址**,root: | 10.10.12.100 | | 公网端口 | 内网端口 | docker端口 | docker服务/Host | 技术栈 | 功能作用 | | --------- | -------- | ---------- | -------------------- | -------------------- | ------------------------------------------ | | **13011** | 13011 | 13011 | Harbor | Harbor | Harbor**管理界面**,admin:Bbit000000 | | | | 8091 | ce_vue | Vue | Vue前端服务-AI实验室 | | | | 8093 | ce_vue_data | Vue | Vue前端服务-大数据可视化平台 | | | 8089 | | | Ktor | 实验室业务后端,使用systemctl启动 | | | | 13011 | ce_pybackend | FastAPI | 实验室AI后端 | | | 5432 | 5432 | ce_postgres | PostgreSQL | PostgreSQL数据库 | | | 6379 | 6379 | ce_redis | Redis | Radis数据库 | | | | 2379 | ce_etcd | Etcd | Etcd,Key-Value 存储,给ce_milvus使用 | | **9000** | 9000 | 9000 | ce_minio | MinIO | MinIO数据访问 | | | 9001 | 9001 | ce_minio | MinIO | MinIO**管理界面**,minioadmin:minioadmin | | | 19530 | 19530 | ce_milvus | Milvus | Minvus数据访问 | | | 9091 | 9091 | ce_milvus | Milvus | Minvus**管理界面**,需要加/webui,无需登录 | | | 3000 | 3000 | ce_attu | Attu | Minvus Attu**管理界面**,无需密码 | | **8090** | 8090 | 8090 | ce_kong | Kong | Kong网关 | | | 8001 | 8001 | ce_kong | Kong | Kong Admin API | | | 8002 | 8002 | ce_kong | Kong | Kong**管理界面**,无需登录 | | | 8444 | 8444 | ce_kong | Kong | Kong Admin API 的 HTTPS 端口 | | | 8088 | | | ws-scrcpy | Android远程框架 | | | 5672 | 5672 | ce_rabbitmq | RabbitMQ | RabbitMQ 客户端连接端口 | | | 15672 | 15672 | ce_rabbitmq | RabbitMQ | RabbitMQ**管理界面**,admin:123456 | | | 9323 | 9323 | | Docker | Docker debug端口 | | | 3001 | 3001 | ce_grafana | Grafana | Grafana**管理界面**,admin:123456 | | | 9090 | 9090 | ce_prometheus | Prometheus | Prometheus监控/**管理界面**,无需登录 | | | | 9121 | ce_redis_exporter | Prometheus | Prometheus监控Radis的工具 | | | | 9187 | ce_postgres_exporter | Prometheus | Prometheus监控PostgreSQL的工具 | | | 9100 | host | ce_node_exporter | Prometheus | Prometheus监控主机的工具 | | | 8000 | 8000 | ce_bot_server | xiaozhi-esp32-server | 小智AI服务ws端口 | | | 8003 | 8003 | ce_bot_server | xiaozhi-esp32-server | 小智AI服务http端口 | | | 8005 | 8002 | ce_bot_web | xiaozhi-esp32-server | 小智**管理界面**,admin:Bbit000000 | | | 8092 | 8092 | ce_bot_test | xiaozhi-esp32-server | 小智服务器测试页面 | | | 8004 | 8004 | ce_bot_mcp | mcp-endpoint-server | 小智MCP接入点 | | **8094** | 8094 | 8080 | CVAT | CVAT | CVAT**管理界面**,bbit:bbit | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## 三、新部署 ### 3.1 ktor 1. 将Ktor程序运行installDist打包程序。 2. 将程序覆盖于服务器/opt/final/ktor文件夹 3. 重启服务 ``` sudo systemctl restart ktor.service sudo systemctl status ktor.service ``` ### 3.2 FastAPI 1. 打包镜像:运行Dockerfile ``` docker build -t ce_pybackend . ``` 2. 打标签 ``` docker tag ce_pybackend:latest s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:latest docker tag ce_pybackend:latest s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:1.5 ``` 3. 推送镜像 ``` docker push s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:1.5 docker push s1.ronsunny.cn:13011/bbit_ai/ce_pybackend:latest ``` 4. (服务器)重启Compose ``` docker-compose pull backend docker compose up -d ``` ### 3.3 Vue 1. 打包项目 ``` pnpm build:antd ``` 2. 打包镜像:运行Dockerfile ``` docker build -t ce_vue . ``` 3. 打标签 ``` docker tag ce_vue:latest s1.ronsunny.cn:13011/bbit_ai/ce_vue:latest docker tag ce_vue:latest s1.ronsunny.cn:13011/bbit_ai/ce_vue:1.1.0 ``` 4. 推送镜像 ``` docker push s1.ronsunny.cn:13011/bbit_ai/ce_vue:1.1.0 docker push s1.ronsunny.cn:13011/bbit_ai/ce_vue:latest ``` 5. (服务器)重启Compose ``` docker-compose pull vue docker compose up -d ``` ### 3.4 更新并重启Compose ``` docker compose down docker compose pull vue backend docker compose up -d docker image prune -f ``` ## 四、配置 - 安装顺序 1. 安装docker 2. 运行基本环境infra-compose.yaml 3. 安装Harbor 4. 推送镜像 5. 运行前后端程序docker-compose.yaml - Harbor 1. 添加用户 2. 添加仓库 3. 添加仓库用户使用权限 4. (2x客户端)登录 ``` docker login ai.ronsunny.cn:13011 ``` - Prometheus 1. 设置docker metrics配置文件 ``` { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://mirror.baidubce.com", "https://docker.nju.edu.cn" ], "metrics-addr": "10.10.10.9:9323", "experimental": true, "insecure-registries": ["s1.ronsunny.cn:13011"] } ``` 2. 重启docker ``` sudo systemctl restart docker ``` - RabbitMQ 1. 添加用户 2. 添加Vhost - [Grafana][https://grafana.com/grafana/dashboards/] 1. 创建Prometheus数据源 2. 增加配置 | 项目 | 代码 | 描述 | | ----------- | ----- | ---- | | MinIO | 13502 | | | Docker | 9621 | | | PostgreSQL | 9628 | | | 主机 | 1860 | | | RabbitMQ | 10991 | | | Redis | 11835 | | | Prometheus | 19268 | | | 主机 中文版 | 8919 | | | Kong | 7424 | | - MinIO ``` Minio 交换机路由配置 交换机video_exchange 路由/sca 队列/sca_queue ``` ## 五、其他 docker 权限 sudo groupadd docker sudo usermod -aG docker kaijihar newgrp docker ### 旧部署 后端 ktor 1. 将Ktor程序运行installDist打包程序。 2. 将程序覆盖于服务器/opt/final/ktor文件夹 3. 将项目目录server/service的ktor.service文件置于服务器/etc/systemd/system/目录 4. 输入命令使服务开机自启 ```shell sudo systemctl enable ktor.service sudo systemctl status ktor.service sudo systemctl restart ktor.service ``` python 1. 打包Docker ``` docker build -t ce_pybackend . ``` 2. 保存Image为文件 ``` docker save -o ce-pybackend.tar ce_pybackend ``` 3. 将保存好的Image`ce-pybackend.tar`上传到服务器 4. 删除服务器的旧版镜像 ``` docker rmi ce_pybackend:latest ``` 5. **读取上传的新镜像** ``` docker load -i ce_pybackend.tar ``` 其他命令: - 测试运行docker ``` docker run -d -p 13011:13011 ce_pybackend ``` - 调试运行项目 ``` uvicorn app:app --reload --host 0.0.0.0 --port 13011 ``` - docker日志查看 ``` docker logs -f ce_pybackend ``` 前端 直接在wsl中build,不要install 1. 在vue目录运行docker打包命令 ```shell pnpm build:docker ``` 2. 将Image保存为文件 ```shell docker save -o vue.tar ce_vue ``` 3. 将保存好的Image`vue.tar`上传到服务器 4. 停掉之前的docker compose ``` docker-compose down ``` 5. 删除之前的Image ```shell docker rmi ce_vue:latest ``` 6. 在服务器读取Image ```shell docker load -i vue.tar ``` 7. 重新运行 ``` docker compose up -d ``` ### docker #### 内网地址 windows:host.docker.internal Linux:ip addr show docker0 查看 #### 相关命令 查看所有镜像 ``` docker images ``` 删除镜像 ``` docker rm ``` 删除容器 ``` docker rmi 镜像名:Tag ``` 删除无用镜像 ``` docker image prune ``` ### Vue项目使用 - 本地运行dist文件夹 ```shell npm install -g http-server cd dist http-server -p 8080 ``` - VBen项目运行方法 1. 下载最新node 2. 开发 ```shell # 进入项目目录 cd vue-vben-admin # 使用项目指定的pnpm版本进行依赖安装 npm i -g corepack # 安装依赖 pnpm install # 启动项目 pnpm dev ``` 3. 本地部署 ```shell 构建 pnpm build 预览 pnpm preview ``` [https://grafana.com/grafana/dashboards/]: