[{"data":1,"prerenderedAt":1137},["ShallowReactive",2],{"docs-/docs/introduction/manual-installation":3,"docs-surround-/docs/introduction/manual-installation":1066,"sidebar-docs":1077},{"id":4,"title":5,"body":6,"category":1055,"description":1056,"extension":1057,"links":1058,"meta":1059,"navigation":1060,"order":1058,"path":1062,"seo":1063,"stem":1064,"__hash__":1065},"docs/docs/introduction/11.manual-installation.md","手动安装",{"type":7,"value":8,"toc":1041},"minimark",[9,12,16,19,23,51,54,57,124,127,131,150,154,157,229,233,252,255,950,954,957,961,983,986,1027,1030,1037],[10,11,5],"h2",{"id":5},[13,14,15],"p",{},"通过手动安装 蓝网AI",[10,17,18],{"id":18},"环境准备",[20,21,22],"h3",{"id":22},"依赖要求",[24,25,26,37,44],"ul",{},[27,28,29,30],"li",{},"NodeJS ≥22 ",[31,32,36],"a",{"href":33,"rel":34},"https://nodejs.org/",[35],"nofollow","官网下载地址",[27,38,39,40],{},"PostgreSQL ≥15 ",[31,41,36],{"href":42,"rel":43},"https://www.postgresql.org/",[35],[27,45,46,47],{},"Redis ≥6.2 ",[31,48,36],{"href":49,"rel":50},"https://redis.io/",[35],[20,52,53],{"id":53},"验证安装",[13,55,56],{},"安装好之后验证是否安装成功：",[58,59,60,84,97,111],"code-group",{},[61,62,68],"pre",{"className":63,"code":64,"filename":65,"language":66,"meta":67,"style":67},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","node -v\n","验证 NodeJS 版本","bash","",[69,70,71],"code",{"__ignoreMap":67},[72,73,76,80],"span",{"class":74,"line":75},"line",1,[72,77,79],{"class":78},"sBMFI","node",[72,81,83],{"class":82},"sfazB"," -v\n",[61,85,88],{"className":63,"code":86,"filename":87,"language":66,"meta":67,"style":67},"npm -v\n","验证 npm 版本",[69,89,90],{"__ignoreMap":67},[72,91,92,95],{"class":74,"line":75},[72,93,94],{"class":78},"npm",[72,96,83],{"class":82},[61,98,101],{"className":63,"code":99,"filename":100,"language":66,"meta":67,"style":67},"psql --version\n","验证 PostgreSQL 版本",[69,102,103],{"__ignoreMap":67},[72,104,105,108],{"class":74,"line":75},[72,106,107],{"class":78},"psql",[72,109,110],{"class":82}," --version\n",[61,112,115],{"className":63,"code":113,"filename":114,"language":66,"meta":67,"style":67},"redis-cli --version\n","验证 Redis 版本",[69,116,117],{"__ignoreMap":67},[72,118,119,122],{"class":74,"line":75},[72,120,121],{"class":78},"redis-cli",[72,123,110],{"class":82},[10,125,126],{"id":126},"部署步骤",[20,128,130],{"id":129},"_1-拉取代码到本地","1. 拉取代码到本地",[58,132,133],{},[61,134,137],{"className":63,"code":135,"filename":136,"language":66,"meta":67,"style":67},"git clone https://gitee.com/agaox/NanwAI.git\n","Gitee仓库",[69,138,139],{"__ignoreMap":67},[72,140,141,144,147],{"class":74,"line":75},[72,142,143],{"class":78},"git",[72,145,146],{"class":82}," clone",[72,148,149],{"class":82}," https://gitee.com/agaox/NanwAI.git\n",[20,151,153],{"id":152},"_2-安装依赖","2. 安装依赖",[13,155,156],{},"如果网络慢，可以先配置淘宝镜像：",[58,158,159,181,200,215],{},[61,160,163],{"className":63,"code":161,"filename":162,"language":66,"meta":67,"style":67},"npm config set registry https://registry.npmmirror.com\n","配置淘宝镜像",[69,164,165],{"__ignoreMap":67},[72,166,167,169,172,175,178],{"class":74,"line":75},[72,168,94],{"class":78},[72,170,171],{"class":82}," config",[72,173,174],{"class":82}," set",[72,176,177],{"class":82}," registry",[72,179,180],{"class":82}," https://registry.npmmirror.com\n",[61,182,185],{"className":63,"code":183,"filename":184,"language":66,"meta":67,"style":67},"npm install -g pnpm\n","安装 pnpm",[69,186,187],{"__ignoreMap":67},[72,188,189,191,194,197],{"class":74,"line":75},[72,190,94],{"class":78},[72,192,193],{"class":82}," install",[72,195,196],{"class":82}," -g",[72,198,199],{"class":82}," pnpm\n",[61,201,204],{"className":63,"code":202,"filename":203,"language":66,"meta":67,"style":67},"cd NanwAI\n","进入项目目录",[69,205,206],{"__ignoreMap":67},[72,207,208,212],{"class":74,"line":75},[72,209,211],{"class":210},"s2Zo4","cd",[72,213,214],{"class":82}," NanwAI\n",[61,216,219],{"className":63,"code":217,"filename":218,"language":66,"meta":67,"style":67},"pnpm install\n","安装依赖",[69,220,221],{"__ignoreMap":67},[72,222,223,226],{"class":74,"line":75},[72,224,225],{"class":78},"pnpm",[72,227,228],{"class":82}," install\n",[20,230,232],{"id":231},"_3-配置环境变量","3. 配置环境变量",[58,234,235],{},[61,236,239],{"className":63,"code":237,"filename":238,"language":66,"meta":67,"style":67},"cp .env.example .env\n","复制环境变量配置文件",[69,240,241],{"__ignoreMap":67},[72,242,243,246,249],{"class":74,"line":75},[72,244,245],{"class":78},"cp",[72,247,248],{"class":82}," .env.example",[72,250,251],{"class":82}," .env\n",[13,253,254],{},"根据你的实际环境配置，编辑 .env 文件，配置数据库连接、Redis连接等环境变量配置。",[61,256,260],{"className":257,"code":258,"language":259,"meta":67,"style":67},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Base\n# 项目名称\nAPP_NAME=蓝网AI\n# if you deploy to production, please set this to real url\n# 项目域名\nAPP_DOMAIN=\n# Server\n# 后端服务端口\nSERVER_PORT=4090\n# 是否启用 CORS\nSERVER_CORS_ENABLED=true\n# CORS 允许的来源\nSERVER_CORS_ORIGIN=*\n# 是否显示详细的错误信息\nSERVER_SHOW_DETAILED_ERRORS=false\n# 是否是演示环境\nSERVER_IS_DEMO_ENV=false\n# PM2\n# PM2 应用名称\nPM2_APP_NAME=蓝网AI\n# PM2 实例数量\nPM2_INSTANCES=1\n# PM2 执行模式\nPM2_EXEC_MODE=cluster\n# PM2 最大内存\nPM2_MAX_MEMORY=1G\n# PM2 是否监控\nPM2_WATCH=false\n# PM2 日志目录\nPM2_LOG_DIR=../../logs/pm2\n# PM2 自动重启\nPM2_AUTORESTART=true\n# PM2 日志日期格式\nPM2_LOG_DATE_FORMAT=YYYY-MM-DD HH:mm:ss Z\n# JWT\n# JWT 密钥\nJWT_SECRET=蓝网AI\n# JWT 过期时间\nJWT_EXPIRES_IN=1d\n# Database\n# 数据库类型\nDB_TYPE=postgres\n# 数据库主机\nDB_HOST=localhost\n# 数据库端口\nDB_PORT=5432\n# 数据库用户名\nDB_USERNAME=postgres\n# 数据库密码\nDB_PASSWORD=postgres\n# 数据库名称\nDB_DATABASE=蓝网AI\n# 自动同步数据库（生产环境请勿开启）\nDB_SYNCHRONIZE=false\n# 自动同步数据库（开发环境）\nDB_DEV_SYNCHRONIZE=true\n# 是否记录数据库日志\nDB_LOGGING=true\n# Redis\n# Redis 主机\nREDIS_HOST=localhost\n# Redis 端口\nREDIS_PORT=6379\n# Redis 用户名\nREDIS_USERNAME=\n# Redis 密码\nREDIS_PASSWORD=\n# Redis 数据库\nREDIS_DB=0\n# Redis 最大重连次数\nREDIS_MAX_RECONNECT_ATTEMPTS=5\n# Redis 重连延迟\nREDIS_RECONNECT_DELAY=3000\n# Cache\n# 缓存过期时间\nCACHE_TTL=86400\n# 缓存最大项数\nCACHE_MAX_ITEMS=1000\n# Logs\n# \"log\" | \"error\" | \"warn\" | \"debug\" | \"verbose\" | \"fatal\"\n# 日志级别\nLOG_LEVELS=error,warn,debug,fatal\n# 写入日志级别\nLOG_WRITE_LEVELS=error,warn,debug,fatal,log\n# 是否写入日志\nLOG_TO_FILE=true\n# 是否打印数据库结构\nLOG_DATABASE_SCHEMA=false\n# 日志清理间隔\nLOG_CLEAN_INTERVAL=3\n# Web\n# 开发环境前端地址\nVITE_DEVELOP_APP_BASE_URL=http://localhost:4090\n# if you deploy to production, please set this to real url\nVITE_PRODUCTION_APP_BASE_URL=\n# 前端 API 前缀\nVITE_APP_WEB_API_PREFIX=/api\n# 后端 API 前缀\nVITE_APP_CONSOLE_API_PREFIX=/consoleapi\n# Docker\n# NPM 镜像地址\nNPM_REGISTRY_URL=https://registry.npmmirror.com\n# Docker 容器后缀\nDOCKER_CONTAINER_SUFFIX=\n# Docker 内存限制\nDOCKER_MEMORY_LIMIT=6144M\n# Docker CPU 限制\nDOCKER_CPU_LIMIT=2.0\n# Docker 内存保留\nDOCKER_MEMORY_RESERVATION=512M\n# This option will make the database and Redis ports in the Docker container fixed.\n# 固定数据库端口\nPOSTGRES_EXTERNAL_PORT=\n# 固定 Redis 端口\nREDIS_EXTERNAL_PORT=\n","env",[69,261,262,267,273,279,285,291,297,303,309,315,321,327,333,339,345,351,357,363,369,375,381,387,393,399,405,411,417,423,429,435,441,447,453,459,465,471,477,483,489,495,501,507,513,519,525,531,537,543,549,555,561,567,573,579,585,591,597,603,609,615,621,627,633,639,645,651,657,663,669,675,681,687,693,699,705,711,717,723,729,735,741,747,753,759,765,771,777,783,789,795,801,807,813,819,824,830,836,842,848,854,860,866,872,878,884,890,896,902,908,914,920,926,932,938,944],{"__ignoreMap":67},[72,263,264],{"class":74,"line":75},[72,265,266],{},"# Base\n",[72,268,270],{"class":74,"line":269},2,[72,271,272],{},"# 项目名称\n",[72,274,276],{"class":74,"line":275},3,[72,277,278],{},"APP_NAME=蓝网AI\n",[72,280,282],{"class":74,"line":281},4,[72,283,284],{},"# if you deploy to production, please set this to real url\n",[72,286,288],{"class":74,"line":287},5,[72,289,290],{},"# 项目域名\n",[72,292,294],{"class":74,"line":293},6,[72,295,296],{},"APP_DOMAIN=\n",[72,298,300],{"class":74,"line":299},7,[72,301,302],{},"# Server\n",[72,304,306],{"class":74,"line":305},8,[72,307,308],{},"# 后端服务端口\n",[72,310,312],{"class":74,"line":311},9,[72,313,314],{},"SERVER_PORT=4090\n",[72,316,318],{"class":74,"line":317},10,[72,319,320],{},"# 是否启用 CORS\n",[72,322,324],{"class":74,"line":323},11,[72,325,326],{},"SERVER_CORS_ENABLED=true\n",[72,328,330],{"class":74,"line":329},12,[72,331,332],{},"# CORS 允许的来源\n",[72,334,336],{"class":74,"line":335},13,[72,337,338],{},"SERVER_CORS_ORIGIN=*\n",[72,340,342],{"class":74,"line":341},14,[72,343,344],{},"# 是否显示详细的错误信息\n",[72,346,348],{"class":74,"line":347},15,[72,349,350],{},"SERVER_SHOW_DETAILED_ERRORS=false\n",[72,352,354],{"class":74,"line":353},16,[72,355,356],{},"# 是否是演示环境\n",[72,358,360],{"class":74,"line":359},17,[72,361,362],{},"SERVER_IS_DEMO_ENV=false\n",[72,364,366],{"class":74,"line":365},18,[72,367,368],{},"# PM2\n",[72,370,372],{"class":74,"line":371},19,[72,373,374],{},"# PM2 应用名称\n",[72,376,378],{"class":74,"line":377},20,[72,379,380],{},"PM2_APP_NAME=蓝网AI\n",[72,382,384],{"class":74,"line":383},21,[72,385,386],{},"# PM2 实例数量\n",[72,388,390],{"class":74,"line":389},22,[72,391,392],{},"PM2_INSTANCES=1\n",[72,394,396],{"class":74,"line":395},23,[72,397,398],{},"# PM2 执行模式\n",[72,400,402],{"class":74,"line":401},24,[72,403,404],{},"PM2_EXEC_MODE=cluster\n",[72,406,408],{"class":74,"line":407},25,[72,409,410],{},"# PM2 最大内存\n",[72,412,414],{"class":74,"line":413},26,[72,415,416],{},"PM2_MAX_MEMORY=1G\n",[72,418,420],{"class":74,"line":419},27,[72,421,422],{},"# PM2 是否监控\n",[72,424,426],{"class":74,"line":425},28,[72,427,428],{},"PM2_WATCH=false\n",[72,430,432],{"class":74,"line":431},29,[72,433,434],{},"# PM2 日志目录\n",[72,436,438],{"class":74,"line":437},30,[72,439,440],{},"PM2_LOG_DIR=../../logs/pm2\n",[72,442,444],{"class":74,"line":443},31,[72,445,446],{},"# PM2 自动重启\n",[72,448,450],{"class":74,"line":449},32,[72,451,452],{},"PM2_AUTORESTART=true\n",[72,454,456],{"class":74,"line":455},33,[72,457,458],{},"# PM2 日志日期格式\n",[72,460,462],{"class":74,"line":461},34,[72,463,464],{},"PM2_LOG_DATE_FORMAT=YYYY-MM-DD HH:mm:ss Z\n",[72,466,468],{"class":74,"line":467},35,[72,469,470],{},"# JWT\n",[72,472,474],{"class":74,"line":473},36,[72,475,476],{},"# JWT 密钥\n",[72,478,480],{"class":74,"line":479},37,[72,481,482],{},"JWT_SECRET=蓝网AI\n",[72,484,486],{"class":74,"line":485},38,[72,487,488],{},"# JWT 过期时间\n",[72,490,492],{"class":74,"line":491},39,[72,493,494],{},"JWT_EXPIRES_IN=1d\n",[72,496,498],{"class":74,"line":497},40,[72,499,500],{},"# Database\n",[72,502,504],{"class":74,"line":503},41,[72,505,506],{},"# 数据库类型\n",[72,508,510],{"class":74,"line":509},42,[72,511,512],{},"DB_TYPE=postgres\n",[72,514,516],{"class":74,"line":515},43,[72,517,518],{},"# 数据库主机\n",[72,520,522],{"class":74,"line":521},44,[72,523,524],{},"DB_HOST=localhost\n",[72,526,528],{"class":74,"line":527},45,[72,529,530],{},"# 数据库端口\n",[72,532,534],{"class":74,"line":533},46,[72,535,536],{},"DB_PORT=5432\n",[72,538,540],{"class":74,"line":539},47,[72,541,542],{},"# 数据库用户名\n",[72,544,546],{"class":74,"line":545},48,[72,547,548],{},"DB_USERNAME=postgres\n",[72,550,552],{"class":74,"line":551},49,[72,553,554],{},"# 数据库密码\n",[72,556,558],{"class":74,"line":557},50,[72,559,560],{},"DB_PASSWORD=postgres\n",[72,562,564],{"class":74,"line":563},51,[72,565,566],{},"# 数据库名称\n",[72,568,570],{"class":74,"line":569},52,[72,571,572],{},"DB_DATABASE=蓝网AI\n",[72,574,576],{"class":74,"line":575},53,[72,577,578],{},"# 自动同步数据库（生产环境请勿开启）\n",[72,580,582],{"class":74,"line":581},54,[72,583,584],{},"DB_SYNCHRONIZE=false\n",[72,586,588],{"class":74,"line":587},55,[72,589,590],{},"# 自动同步数据库（开发环境）\n",[72,592,594],{"class":74,"line":593},56,[72,595,596],{},"DB_DEV_SYNCHRONIZE=true\n",[72,598,600],{"class":74,"line":599},57,[72,601,602],{},"# 是否记录数据库日志\n",[72,604,606],{"class":74,"line":605},58,[72,607,608],{},"DB_LOGGING=true\n",[72,610,612],{"class":74,"line":611},59,[72,613,614],{},"# Redis\n",[72,616,618],{"class":74,"line":617},60,[72,619,620],{},"# Redis 主机\n",[72,622,624],{"class":74,"line":623},61,[72,625,626],{},"REDIS_HOST=localhost\n",[72,628,630],{"class":74,"line":629},62,[72,631,632],{},"# Redis 端口\n",[72,634,636],{"class":74,"line":635},63,[72,637,638],{},"REDIS_PORT=6379\n",[72,640,642],{"class":74,"line":641},64,[72,643,644],{},"# Redis 用户名\n",[72,646,648],{"class":74,"line":647},65,[72,649,650],{},"REDIS_USERNAME=\n",[72,652,654],{"class":74,"line":653},66,[72,655,656],{},"# Redis 密码\n",[72,658,660],{"class":74,"line":659},67,[72,661,662],{},"REDIS_PASSWORD=\n",[72,664,666],{"class":74,"line":665},68,[72,667,668],{},"# Redis 数据库\n",[72,670,672],{"class":74,"line":671},69,[72,673,674],{},"REDIS_DB=0\n",[72,676,678],{"class":74,"line":677},70,[72,679,680],{},"# Redis 最大重连次数\n",[72,682,684],{"class":74,"line":683},71,[72,685,686],{},"REDIS_MAX_RECONNECT_ATTEMPTS=5\n",[72,688,690],{"class":74,"line":689},72,[72,691,692],{},"# Redis 重连延迟\n",[72,694,696],{"class":74,"line":695},73,[72,697,698],{},"REDIS_RECONNECT_DELAY=3000\n",[72,700,702],{"class":74,"line":701},74,[72,703,704],{},"# Cache\n",[72,706,708],{"class":74,"line":707},75,[72,709,710],{},"# 缓存过期时间\n",[72,712,714],{"class":74,"line":713},76,[72,715,716],{},"CACHE_TTL=86400\n",[72,718,720],{"class":74,"line":719},77,[72,721,722],{},"# 缓存最大项数\n",[72,724,726],{"class":74,"line":725},78,[72,727,728],{},"CACHE_MAX_ITEMS=1000\n",[72,730,732],{"class":74,"line":731},79,[72,733,734],{},"# Logs\n",[72,736,738],{"class":74,"line":737},80,[72,739,740],{},"# \"log\" | \"error\" | \"warn\" | \"debug\" | \"verbose\" | \"fatal\"\n",[72,742,744],{"class":74,"line":743},81,[72,745,746],{},"# 日志级别\n",[72,748,750],{"class":74,"line":749},82,[72,751,752],{},"LOG_LEVELS=error,warn,debug,fatal\n",[72,754,756],{"class":74,"line":755},83,[72,757,758],{},"# 写入日志级别\n",[72,760,762],{"class":74,"line":761},84,[72,763,764],{},"LOG_WRITE_LEVELS=error,warn,debug,fatal,log\n",[72,766,768],{"class":74,"line":767},85,[72,769,770],{},"# 是否写入日志\n",[72,772,774],{"class":74,"line":773},86,[72,775,776],{},"LOG_TO_FILE=true\n",[72,778,780],{"class":74,"line":779},87,[72,781,782],{},"# 是否打印数据库结构\n",[72,784,786],{"class":74,"line":785},88,[72,787,788],{},"LOG_DATABASE_SCHEMA=false\n",[72,790,792],{"class":74,"line":791},89,[72,793,794],{},"# 日志清理间隔\n",[72,796,798],{"class":74,"line":797},90,[72,799,800],{},"LOG_CLEAN_INTERVAL=3\n",[72,802,804],{"class":74,"line":803},91,[72,805,806],{},"# Web\n",[72,808,810],{"class":74,"line":809},92,[72,811,812],{},"# 开发环境前端地址\n",[72,814,816],{"class":74,"line":815},93,[72,817,818],{},"VITE_DEVELOP_APP_BASE_URL=http://localhost:4090\n",[72,820,822],{"class":74,"line":821},94,[72,823,284],{},[72,825,827],{"class":74,"line":826},95,[72,828,829],{},"VITE_PRODUCTION_APP_BASE_URL=\n",[72,831,833],{"class":74,"line":832},96,[72,834,835],{},"# 前端 API 前缀\n",[72,837,839],{"class":74,"line":838},97,[72,840,841],{},"VITE_APP_WEB_API_PREFIX=/api\n",[72,843,845],{"class":74,"line":844},98,[72,846,847],{},"# 后端 API 前缀\n",[72,849,851],{"class":74,"line":850},99,[72,852,853],{},"VITE_APP_CONSOLE_API_PREFIX=/consoleapi\n",[72,855,857],{"class":74,"line":856},100,[72,858,859],{},"# Docker\n",[72,861,863],{"class":74,"line":862},101,[72,864,865],{},"# NPM 镜像地址\n",[72,867,869],{"class":74,"line":868},102,[72,870,871],{},"NPM_REGISTRY_URL=https://registry.npmmirror.com\n",[72,873,875],{"class":74,"line":874},103,[72,876,877],{},"# Docker 容器后缀\n",[72,879,881],{"class":74,"line":880},104,[72,882,883],{},"DOCKER_CONTAINER_SUFFIX=\n",[72,885,887],{"class":74,"line":886},105,[72,888,889],{},"# Docker 内存限制\n",[72,891,893],{"class":74,"line":892},106,[72,894,895],{},"DOCKER_MEMORY_LIMIT=6144M\n",[72,897,899],{"class":74,"line":898},107,[72,900,901],{},"# Docker CPU 限制\n",[72,903,905],{"class":74,"line":904},108,[72,906,907],{},"DOCKER_CPU_LIMIT=2.0\n",[72,909,911],{"class":74,"line":910},109,[72,912,913],{},"# Docker 内存保留\n",[72,915,917],{"class":74,"line":916},110,[72,918,919],{},"DOCKER_MEMORY_RESERVATION=512M\n",[72,921,923],{"class":74,"line":922},111,[72,924,925],{},"# This option will make the database and Redis ports in the Docker container fixed.\n",[72,927,929],{"class":74,"line":928},112,[72,930,931],{},"# 固定数据库端口\n",[72,933,935],{"class":74,"line":934},113,[72,936,937],{},"POSTGRES_EXTERNAL_PORT=\n",[72,939,941],{"class":74,"line":940},114,[72,942,943],{},"# 固定 Redis 端口\n",[72,945,947],{"class":74,"line":946},115,[72,948,949],{},"REDIS_EXTERNAL_PORT=\n",[20,951,953],{"id":952},"_4-启动服务","4. 启动服务",[13,955,956],{},"数据库实体会自动同步，无需单独操作",[958,959,960],"h4",{"id":960},"一键启动所有服务",[58,962,963],{},[61,964,967],{"className":63,"code":965,"filename":966,"language":66,"meta":67,"style":67},"cd /nanwai\npnpm start\n","一键启动",[69,968,969,976],{"__ignoreMap":67},[72,970,971,973],{"class":74,"line":75},[72,972,211],{"class":210},[72,974,975],{"class":82}," /nanwai\n",[72,977,978,980],{"class":74,"line":269},[72,979,225],{"class":78},[72,981,982],{"class":82}," start\n",[958,984,985],{"id":985},"单独启动服务",[58,987,988,1008],{},[61,989,992],{"className":63,"code":990,"filename":991,"language":66,"meta":67,"style":67},"cd /nanwai/packages/api\npnpm dev\n","单独启动server",[69,993,994,1001],{"__ignoreMap":67},[72,995,996,998],{"class":74,"line":75},[72,997,211],{"class":210},[72,999,1000],{"class":82}," /nanwai/packages/api\n",[72,1002,1003,1005],{"class":74,"line":269},[72,1004,225],{"class":78},[72,1006,1007],{"class":82}," dev\n",[61,1009,1012],{"className":63,"code":1010,"filename":1011,"language":66,"meta":67,"style":67},"cd /nanwai/packages/web/nanwai-ui\npnpm dev\n","单独启动web",[69,1013,1014,1021],{"__ignoreMap":67},[72,1015,1016,1018],{"class":74,"line":75},[72,1017,211],{"class":210},[72,1019,1020],{"class":82}," /nanwai/packages/web/nanwai-ui\n",[72,1022,1023,1025],{"class":74,"line":269},[72,1024,225],{"class":78},[72,1026,1007],{"class":82},[10,1028,1029],{"id":1029},"访问地址",[13,1031,1032,1033],{},"本地部署访问地址：",[31,1034,1035],{"href":1035,"rel":1036},"http://localhost:4090",[35],[1038,1039,1040],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":67,"searchDepth":269,"depth":269,"links":1042},[1043,1044,1048,1054],{"id":5,"depth":269,"text":5},{"id":18,"depth":269,"text":18,"children":1045},[1046,1047],{"id":22,"depth":275,"text":22},{"id":53,"depth":275,"text":53},{"id":126,"depth":269,"text":126,"children":1049},[1050,1051,1052,1053],{"id":129,"depth":275,"text":130},{"id":152,"depth":275,"text":153},{"id":231,"depth":275,"text":232},{"id":952,"depth":275,"text":953},{"id":1029,"depth":269,"text":1029},"入门指南","通过手动方式部署 蓝网AI","md",null,{},{"title":5,"icon":1061},"i-lucide-terminal","/docs/introduction/manual-installation",{"title":5,"description":1056},"docs/introduction/11.manual-installation","RjHgCig0A52RMOsgoSIE3PL9bn33uo0PAScdB0_jSyY",[1067,1072],{"title":1068,"path":1069,"stem":1070,"icon":1071,"children":-1},"迁移","/docs/introduction/migration","docs/introduction/10.migration","i-lucide-arrow-right",{"title":1073,"path":1074,"stem":1075,"icon":1076,"children":-1},"Docker安装","/docs/introduction/docker-installation","docs/introduction/2.docker-installation","i-lucide-box",[1078,1085,1090,1096,1101,1107,1113,1119,1125,1128,1130,1132],{"title":1079,"path":1080,"category":1081,"order":1058,"navigation":1082},"定义内容集合","/docs/framework/define","进阶教程",{"title":1083,"icon":1084},"定义","i-lucide-file-text",{"title":1086,"path":1087,"category":1081,"order":1058,"navigation":1088},"前置准备","/docs/framework/prerequisites",{"title":1086,"icon":1089},"i-lucide-database",{"title":1091,"path":1092,"category":1081,"order":1058,"navigation":1093},"集合源","/docs/framework/sources",{"title":1094,"icon":1095},"源","i-lucide-upload",{"title":1097,"path":1098,"category":1081,"order":1058,"navigation":1099},"集合类型","/docs/framework/types",{"title":1100,"icon":1084},"类型",{"title":1102,"path":1103,"category":1081,"order":1058,"navigation":1104},"模式验证器","/docs/framework/validators",{"title":1105,"icon":1106},"验证器","i-lucide-check-circle",{"title":1108,"path":1109,"category":1055,"order":1058,"navigation":1110},"宝塔面板部署","/docs/introduction/bt",{"title":1111,"icon":1112},"宝塔部署","i-lucide-server",{"title":1114,"path":1115,"category":1055,"order":1058,"navigation":1116},"开源与商业化","/docs/introduction/configuration",{"title":1117,"icon":1118},"商业化","i-lucide-dollar-sign",{"title":1120,"path":1121,"category":1055,"order":1058,"navigation":1122},"蓝网AI介绍","/docs/introduction/start",{"title":1123,"icon":1124},"介绍","i-lucide-info",{"title":1126,"path":1069,"category":1055,"order":1058,"navigation":1127},"迁移指南",{"title":1068,"icon":1071},{"title":5,"path":1062,"category":1055,"order":1058,"navigation":1129},{"title":5,"icon":1061},{"title":1073,"path":1074,"category":1055,"order":1058,"navigation":1131},{"title":1073,"icon":1076},{"title":1133,"path":1134,"category":1055,"order":1058,"navigation":1135},"演示环境","/docs/introduction/demo",{"title":1133,"icon":1136},"i-lucide-download",1783496129961]