手动安装

通过手动安装 BuildingAI

环境准备

安装好之后验证是否安装成功

node -v
npm -v
psql --version
redis-cli --version

拉取代码到本地

# Gitee仓库
git clone https://gitee.com/BidingCC/BuildingAI.git

# or Github仓库
git clone https://github.com/BidingCC/BuildingAI.git

安装依赖

如果网络慢,可以先配置淘宝镜像:

npm config set registry https://registry.npmmirror.com
# 如果没有pnpm,需要先安装pnpm
npm install -g pnpm

# 进入项目目录
cd BuildingAI

# 安装依赖
pnpm install

配置环境变量

cp .env.example .env

根据你的实际环境配置,编辑 .env 文件,配置数据库连接、Redis连接等环境变量配置

# 示例
# Base
# 应用名称(用于日志、PM2等标识)
APP_NAME=BuildingAI
# 应用版本号(用于信息展示或灰度控制)
APP_VERSION=25.0.0

# Extension
# 扩展 API 服务地址
EXTENSION_API_URL=http://cloud.buildingai.cc/api

# Server
# 后端服务监听端口
SERVER_PORT=4090
# 是否启用 CORS(跨域资源共享)
SERVER_CORS_ENABLED=true
# CORS 允许的来源,* 表示允许任意来源(生产环境建议指定具体域名)
SERVER_CORS_ORIGIN=*
# 是否显示详细错误信息(仅建议在开发环境开启)
SERVER_SHOW_DETAILED_ERRORS=false
# 是否演示环境(开启后可能限制写入/危险操作)
SERVER_IS_DEMO_ENV=false

# PM2
# PM2 进程名称(使用 pm2 启动/管理时的标识)
PM2_APP_NAME=buildingai
# PM2 启动实例数量
PM2_INSTANCES=1
# PM2 执行模式(cluster 集群模式,fork 单进程模式)
PM2_EXEC_MODE=cluster
# PM2 最大内存限制(超过此值会自动重启)
PM2_MAX_MEMORY=1G
# PM2 是否监听文件变化自动重启
PM2_WATCH=false
# PM2 日志文件目录
PM2_LOG_DIR=../../logs/pm2
# PM2 是否自动重启(进程异常退出时)
PM2_AUTORESTART=true
# PM2 日志时间格式
PM2_LOG_DATE_FORMAT=YYYY-MM-DD HH:mm:ss Z

# JWT
# JWT 签名密钥(请在生产环境务必更换为强随机值)
JWT_SECRET=buildingai
# JWT 过期时间(如:60s, 10m, 1h, 1d)
JWT_EXPIRES_IN=1d

# Database
# 数据库类型(例如:postgres、mysql)
DB_TYPE=postgres
# 数据库主机地址
DB_HOST=localhost
# 数据库端口
DB_PORT=5432
# 数据库用户名
DB_USERNAME=postgres
# 数据库密码
DB_PASSWORD=postgres
# 数据库名称
DB_DATABASE=buildingai
# 是否自动同步实体到数据库(生产环境谨慎开启,建议设为 false)
DB_SYNCHRONIZE=false
# 开发环境是否自动同步(开发时可设为 true)
DB_DEV_SYNCHRONIZE=true
# 是否输出 SQL 日志
DB_LOGGING=true

# Redis
# Redis 主机地址
REDIS_HOST=localhost
# Redis 端口
REDIS_PORT=6379
# Redis 用户名(如未启用 ACL 可留空)
REDIS_USERNAME=
# Redis 密码(如无密码可留空)
REDIS_PASSWORD=
# Redis 数据库索引(0-15)
REDIS_DB=0
# 缓存默认过期时间(秒),支持表达式:60*60*24 表示 1 天
REDIS_TTL=60*60*24
# Redis 最大重连尝试次数
REDIS_MAX_RECONNECT_ATTEMPTS=5
# Redis 重连延迟时间(毫秒)
REDIS_RECONNECT_DELAY=3000

# Cache
# 缓存过期时间(秒)
CACHE_TTL=86400
# 缓存最大条目数
CACHE_MAX_ITEMS=1000

# Logs
# 日志级别类型:"log" | "error" | "warn" | "debug" | "verbose" | "fatal"
# 输出的日志级别(逗号分隔,按需选择)
LOG_LEVELS=error,warn,debug,fatal
# 写入文件的日志级别(逗号分隔)
LOG_WRITE_LEVELS=error,warn,debug,fatal,log
# 是否将日志写入文件(需确保有写入权限)
LOG_TO_FILE=true
# 是否打印数据库 schema 变更信息(用于调试)
LOG_DATABASE_SCHEMA=false
# 日志清理间隔(天)
LOG_CLEAN_INTERVAL=3

# Web
# 前端接口请求域名(如果部署到生产环境,请设置为真实 URL)
VITE_APP_BASE_URL=http://localhost:4090
# Web 与服务端通讯的 API 前缀
VITE_APP_WEB_API_PREFIX=/api
# 控制台管理端 API 前缀
VITE_APP_CONSOLE_API_PREFIX=/consoleapi

# Docker
# 是否使用快速启动模式(可能跳过部分检查/初始化)
QUICK_START_MODE=false
# 容器名称后缀(便于区分不同环境/开发者)
DOCKER_CONTAINER_SUFFIX=
# 此选项将使 Docker 容器中的数据库和 Redis 端口固定
# 数据库外部映射端口(用于将容器内 5432 暴露到宿主机)
DB_EXTERNAL_PORT=5432
# Redis 外部映射端口(用于将容器内 6379 暴露到宿主机)
REDIS_EXTERNAL_PORT=6379

启动服务

数据库实体会自动同步,无需单独操作

一键启动所有服务

cd /BuildingAI
pnpm start

单独启动服务

# 单独启动server

cd /BuildingAI/packages/api
pnpm dev

# 单独启动web

cd /BuildingAI/packages/web/buildingai-ui
pnpm dev

访问地址

本地部署访问地址:http://localhost:4090

手动安装 | BuildingAI