Nine-AI 商业部署版教程
Nine-AI 商业部署版教程
最新版为1.3.4 更新时间2023年6月15日
前言
用户端大致页面
管理端大致页面
环境安装
本文假设您的有一台云主机,且上面有“宝塔”面板,或者您会手动操作来代替“宝塔”面板的动作
下文中的
终端
指的是你在“宝塔”面板左侧“终端”页面,或者通过Xshell等工具连接的终端下文中的
ai.pandolar.top
为笔者的网站目录,操作时自行替换成自己的
在宝塔的软件商店里面安装所需的环境
2023年6月7日更新:现在redis
为必装
redis也是软件商店里面装,安装5.0.8就行,其他配置不用动,保持默认
MySQL需要安装8.0
由于我之前一直用5.6,重新安装需要清除数据,我就使用docker搞了个8.0的
后续出个文章详细讲一下教程,没有特殊需求的安装8.0直接用就行了。
Nginx安装1.19.8就行
node.js在安装版本管理器后点设置,然后如下
基础配置
新建网站
宝塔 - 网站 - 添加站点
程序在VIP的QQ群或者询问群主
把所需的程序上传并解压到网站目录下
大致文件如下
env配置
在宝塔直接双击.env
文件编辑,或在终端vim编辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# 服务器ip 你的ip NINE_AI_HOST=xxxxxx # 授权码 商业版向管理员要 NINE_AI_KEY=xxxxxx # mysql 最好使用root,除非你解决了各种权限问题 DB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=root DB_PASS=xxxxxxxxx DB_DATABASE=aigpt DB_LOG=false DB_SYNC=true # jwt token 先别动 JWT_SECRET=chat-cooper JWT_EXPIRESIN=7d SWAGGERPREFIX=/docs # 系统预设 先别动 PORT=9520 PREFIX=/docs APIPREFIX=/api # 1.3.0新增 redis配置 # Redis 密码没设置直接为空 REDIS_PORT=6379 REDIS_HOST=localhost REDIS_PASSWORD= # 队列任务限制时长 QUEUE_TIMEOUT=200000 # 绘画超时时间 DRAW_TIMEOUT=150000 |
跑起来
通过终端切换到网站目录
cd /www/wwwroot/ai.pandolar.top
没有特殊声明的情况下,下文的命令都是在此目录执行
pnpm install
进行安装,没有报错的话是类似下面这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
[root@VM-20-4-centos ai.pandolar.top]# pnpm install Recreating /www/wwwroot/ai.pandolar.top/node_modules Lockfile is up to date, resolution step is skipped Packages: +1146 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: /root/.local/share/pnpm/store/v3 Virtual store is at: node_modules/.pnpm Progress: resolved 1146, reused 1143, downloaded 0, added 1146, done dependencies: + @nestjs-modules/mailer 1.8.1 + @nestjs/common 9.3.12 + @nestjs/core 9.3.12 + @nestjs/jwt 10.0.3 + @nestjs/passport 9.0.3 + @nestjs/platform-express 9.4.0 + @nestjs/swagger 6.2.1 + @nestjs/typeorm 9.0.1 + @types/cache-manager-redis-store 2.0.1 + axios 1.4.0 + bcryptjs 2.4.3 + cache-manager 5.2.1 + cache-manager-redis-store 3.0.1 + chatgpt 5.2.3 + class-transformer 0.5.1 + class-validator 0.14.0 + compression 1.7.4 + cos-nodejs-sdk-v5 2.12.0 + dayjs 1.11.7 + dotenv 16.0.3 + express 4.18.2 + form-data 4.0.0 + guid-typescript 1.0.9 + hbs 4.2.0 + ioredis 5.3.2 + isomorphic-fetch 3.0.0 + javascript-obfuscator 4.0.2 + jimp 0.22.7 + jsonwebtoken 9.0.0 + lodash 4.17.21 + mysql2 3.2.0 + nestjs-config 1.4.10 + nestjs-rate-limiter 3.1.0 + nestjs-redis 1.3.3 + node-fetch 3.3.1 + nodemailer 6.9.1 + passport 0.6.0 + passport-jwt 4.0.1 + redis 4.6.6 + reflect-metadata 0.1.13 + rxjs 7.8.0 + stream-to-buffer 0.1.0 + swagger-ui-express 4.6.2 + typeorm 0.3.12 + uuid 9.0.0 devDependencies: + @nestjs/cli 9.3.0 + @nestjs/schematics 9.0.4 + @nestjs/testing 9.3.12 + @types/express 4.17.17 + @types/jest 29.2.4 + @types/node 18.11.18 + @types/supertest 2.0.12 + @typescript-eslint/eslint-plugin 5.57.0 + @typescript-eslint/parser 5.57.0 + eslint 8.37.0 + eslint-config-prettier 8.8.0 + eslint-plugin-prettier 4.2.1 + jest 29.3.1 + prettier 2.8.7 + source-map-support 0.5.21 + supertest 6.3.3 + ts-jest 29.0.3 + ts-loader 9.4.2 + ts-node 10.9.1 + tsconfig-paths 4.1.1 + typescript 4.9.5 Done in 6.9s |
pnpm start
进行启动
如果你的配置文件填错了可以使用
pm2 stop pm2.conf.json
停止并更改后重新pnpm start
启动
pm2 log
看到以下日志就是成功了
放通你的防火墙,把你所用到的端口开放
1 2 3 4 |
用户端 http://ip:9520 管理端 http://ip:9520/admin 默认演示账号: admin 123456 默认超级管理员: super nine-super |
然后访问http://你的ip:9520/
看到以下页面就算是初步跑起来了*(忽略图上的端口,我自己修改过的,你的就是9520)*
用户端
后台
接入域名
反向代理一下
然后你的网站就可以通过网站访问了
如果要加SSL记得先把反代关了,挂上SSL后再打开
后台管理
Key池
单个chatgpt的key有速率限制,且在人多的时候会大量消耗,key池就显得尤为重要
你可以在很多地方卖到各色各样的Key,这里不再赘述
有了key之后,我们就要把他导入到后台
其他都好理解,这里解释一下轮训权重
轮训权重是一个来控制该key使用概率的参数
详解:
1 2 3 4 5 6 7 8 9 |
假设你现在有三个key A key:权重10 B key:权重15 C key:权重25 那么,在某一次chatgpt的提问中,使用A key的概率为:10/(10+15+25)=20% 依次类推:B key:30%概率,C key:50%概率 如果权重分别为1,2,2的话概率就分别是10%,40%,40% |
设置相关*
- 网站名称啥的自己填吧
- 百度统计这东西的token死活找不到,开摆;2023年5月19日22:31:49补:群友给的教程,我达不到要求就不开了https://tongji.baidu.com/api/manual/Chapter2/openapi.html
- 购卡地址没有的就不填
- 参考图上填就行
- 腾讯云后台开通即可,笔者还没接入mj,就还没填
- 公告为markdown格式,支持填html代码
- 如果你的机器在非大陆地区,直接使用官方的就行,在国内的话就需要自建或者使用作者自带的
https://open2.aiproxy.xyz
- 或者自己找朋友的非大陆机器搞个Nginx反代,具体百度即可。
- 没啥说的,自己填就行
微信登陆
系统微信登录通过关联公众号实现、以便于后期联动小程序、开发文档前往微信公众平台 https://mp.weixin.qq.com/ 、拿到开发者配置信息即可、如果用户对公众号发送消息、我们将会从自定义回复管理当中的内容进行匹配自动回复、如果没有匹配到结果则回复下面设置的自定义回复默认信息!
用户端
动态菜单
字面意思看看得懂
支付功能
易支付
1 2 3 4 5 |
作者原话: 九:主要是前两项 是商户提供的 每个人自己不一样 后面基本一样 两个回调地址是支付成功后平台通知我们的 也就是请求我们的地址 那个要填你们后端接口的地址 把我的域名换成你们自己的 没有就用 ip+端口也可以 注意 这里如果没有https 最下面两个地址就要用http 九:对比我这个填就行 |
解释:
- 商户ID:在某易支付后台的PID
- 商户秘钥:在某易支付后台的秘钥
- 支付通知地址:https://你的域名/api/pay/notify
- 支付回调地址:https://你的域名/
- 支付请求地址:https://易支付域名/mapi.php
- 商户查询地址:https://易支付域名/
友情广告:群友的易支付平台:https://epay.9o3.cn/ 现在G了
当然你也可以找其他的平台
虎皮椒
待更新
对象存储cos
该部分为官方文档照搬,笔者还没有配置MJ相关
进入到腾讯云搜索对象存储、我们需要配置四个 参数、在秘钥管理里面可以拿到 SecretId和SecretKey。
剩下两个参数分别是存储桶的名称和 节点位置您可以参考下图信息
如果还没有存储桶、请创建存储桶、权限选择公有读私有写即可、其他不限制。
配置完四个参数后、就可以使用存储服务了。
MJ配置
该部分为官方文档照搬,笔者还没有配置MJ相关
mj对应了七个必填参数分别是下图
剩余两个参数
1: 接口单次限制时间、表示用户请求一次这个接口距离下次允许请求的限制时间
2: 系统默认携带了一个代理、如果你是国内服务器需要开启代理、如果是国外服务器则不需要代理
参数获取方法
得到MJ账号之后、参考此地址创建一个自己私人的服务器、并且邀请一个官方的机器人加入房间 https://zhuanlan.zhihu.com/p/603364613、这样就可以加入房间了、然后打开控制台、此时我们通过命令 /imagine命令 随便输入一点prompt词 比如下图
然后发送 控制台就会看到这样一条接口,如图
复制接口发送的内容、然后找个地方格式化一下就行、会得到如下内容
箭头上我们可以看到六个参数、还剩下一个token从请求头获取如图
此时我们得到了七个参数、将其填入MJ配置、他们的对应关系是
1 2 3 4 5 6 7 8 9 |
{ application_id: '应用程序ID', guild_id: '工会ID', channel_id: '通道ID', session_id: '会话ID', version: '版本ID', id: 'ID信息', authorization: '授权令牌', }; |
按照此内容填写即可。
使用MJ绘画的前提是已经配置了COS存储服务
敏感词
百度审核
百度文本审核参数说明
接入原因、当前百度云免费5万条,申请文档地址:https://console.bce.baidu.com/ai/#/ai/antiporn/overview/index 、如果百度云敏感词与自定义敏感词都配置的情况、会先检测百度云后检测自定义的敏感词!
- 文本审核ApiKey
- 文本审核SecretKey
两个参数申请完填上就好了
自定义
自定义敏感词、触发敏感词将自动拦截
可以自定义添加,不再赘述
更新日志
更新方法
1 2 3 4 5 6 7 8 9 10 11 |
保留.env文件和node_modules文件夹,删除其他所有文件(也可以移动到/tmp备份一下) 然后将新版本替换进去 具体操作是: cd /www/wwwroot/ai.pandolar.top pm2 list # 查看之前的服务是id几,比如是id 0 pm2 stop 0 # 停掉现在的 pm2 delete 0 # 删掉现在的 替换新版本进去 pnpm i # 安装依赖 pnpm start # 启动 |
2023-06-15版本1.3.4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#### 修复问题 - 绘画退款余额在客户端不显示 - 主题切换放入侧边栏作为全局 - 绘画3:4 文案错误问题 - 手机端 PC端 侧边栏 底部导航的图标不一致问题 - 修复设置用户默认头像失败问题【默认头像指的是用户初次注册的头像 已经注册过的不受影响】 #### 优化问题 - 携带参数模式、用户自定义指令将被系统直接移除 以系统为准 手动取消掉携带参数后 以用户为准 #### 新增 - 新增思维导图初始化默认数据允许后台自定义设置 用户端设置->基础设置 v1.3.4版本下载地址 https://index.jiangly.com/NineAi/v1.3.4.zip |
2023-06-14版本1.3.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
v1.3.3 ### 修复问题 - 由于自定义首页导致的邀请注册未统计到问题 - 手机端不能点击登录密码的小眼睛问题 - 修复后台时间差异显示问题 - 代码片段复制成功提示 - 赠送卡密后页面不刷新问题 ### 新增功能 - 单账户除【super|admin】账号外、其他账户同时只能在单设备登录、重复登录老的登录会失效 - 用户余额耗尽自动弹出购买窗口 - 新增适配3.5 16k模型与 4.0 0613模型 添加卡池除查询模型变更 - env新增四个最大回复配置 模型支持最大回复设置 - MAXRES3TOKEN 普通GPT3.5的最大回复数 最高支持4096 默认 1000 - MAXRES3TOKEN16K 3.5 16k默认最大回复数 最高支持 16384 默认 8196 - MAXRES4TOKEN 普通4.0 默认最大回复 4096 最高支持 81967 - MAXRES4TOKEN32K 32K 默认最大回复 16384 最高支持 32768 - 设置完后重启生效 后期加入管理后台 备注: 前台只会显示 GPT3.5 与 GPT4.0 会随机从后天设置的3和4的卡池按权重拿key v1.3.3版本下载地址 https://index.jiangly.com/NineAi/v1.3.3.zip |
2023-06-13版本1.3.2
1 2 3 4 5 6 7 8 9 10 11 |
### 修复问题 - 网站配置发卡地址无效、无法跳转问题 - 设置任意配置导致微信token失效问题 - 设置主题默认为跟随系统 - ui微调 ### 新增 - 新增mind思维导图绘制 - 修改后台地址为 /nineai/admin v1.3.2版本下载地址 https://index.jiangly.com/NineAi/v1.3.2.zip |
2023-06-12版本1.3.1
pm2包下载地址:https://index.jiangly.com/NineAi/v1.3.1.zip
更新日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
### 修复问题 - 后台对话图表绘画数量显示异常 - 设置网站名称不生效问题 - 设置机器人头像不生效问题 - 设置网站客服等设计用户端基础配置信息问题 - mj绘画切换NIJI模型可能导致失败 - 修复变体超时时间不受配置控制问题 ### 新增 - 自定义首页机器人名称 用户端设置->基础配置 - 商品购买移动位置到侧边栏 - 增加mj绘画展示页 - 网站默认为夜间主题 - 增加首页不强制指定、可以选择不指定首页 - 网站基础配置移动配置到客户端管理、修复之前设置不生效问题 |
2023-06-07版本1.3.0
pm2包下载地址:https://pandolar.lanzoum.com/iGRWT0yko37e
redis配置往上翻env配置环节,现在redis是必须配置的
新功能
- MJ完全重构、增加垫图、支持队列排队绘制、支持实时进度提示、支持默认翻译加GPT联想prompt
- 支持微信公众号登录【需要非个人类型】支持公众号自动回复(配置规则是之前的自动回复设置)配置地址系统设置->微信配置:不配置AppId或AppSecret默认不开启
- 支持动态菜单设置、指定开启用户端的特定页面、支持设置指定页面为默认打开的首页配置位置用户端设置->动态菜单
- 支持后台自动配置网站缸0G0、网站favorite.svg图标配置位置用户端设置->动态菜单
- 支持腾讯云cos全球加速配置、填写加速域名即开启加速配置位置存储配置->腾讯云cos
- 新增MJ对外展示页、自定义可选图片对外配置位置:数据管理->midjourney?绘画管理
- 后台支持批量KEY导入、支持key余额显示
- 卡密列表支持批量生成、批量导出、批量复制
- 增加三方图床chevereto图床配置地址:存储设置->chevereto图床
本期bug修复
- 上下文问题超过长度
- 移动端个人中心没有退出登录问题
- 邀请链接复制失败问题
- 部分错别字问题
- 阿里云0ss存储开启图片压缩
- 管理端支持修改密码
- 重置密码增加提示
- 刷新后台404问题
版本更新说明
- 新版本强制使用redis、配置在env文件、参照env.template详情参考更新文档
- 新版本微信登录及其公众号自动回复需要非个人账户的公众号、如果不配置、默认不打开微信登录
2023-05-24版本1.2.3
1 2 3 4 |
@所有人 V1.2.3小版本更新 1. 新增阿里云oss存储接入 2. 增加支付时长为5分钟 3. 非必要使用阿里云oss不必升级 升级后去手动开启原有腾讯云cos 默认不开启 |
2023-05-21版本1.2.1
1 2 3 4 5 |
@全体成员 V1.2.1版本发布 1.加入百度云敏感词 审核对话内容及绘画内容 2. 加入百度翻译 绘画中文限制接触 绘画描述词会自动转为英文 3. 首页公告优化 4. 修复已知bug |
2023-05-20版本1.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@所有人 新版本发布了 docker版本更新V1.2的镜像即可 pm2版本用下列文件 保持原有env 替换其他全部文件 重新安装一次依赖即可 有任何部署问题群内沟通 别私聊 今天太累了 得休息下了 更新内容 1. 用户端支持 3 4模型自定义切换 分别对应左下角展示不用余额 增加ai平衡度调整 右上角 4的计费模式仍是手动开启白名单 待计费方式更新后更新 2. 用户端UI更新 支持移动端适配 部分原有功能移入右上 3. 用户端首页版本调整、去除公告栏加入首页 白黑模式切换放入右上角 4. 用户端首页问题暂不支持自定义 角色仓库待开发 5. 用户端增加扫码支付 接入了虎皮椒支付与群友提供的易支付 当前仅开通微信渠道 6. 用户端所有图片进行压缩、mj dall-e图片压缩70%点击之后查看才会显示原图、解决部分bug(小优化)大的更新等ui变动之后再优化 7. 管理端新增 首页订单统计、订单列表、支付配置、key卡删除 8. 解决gpt4回答长时间timeout或断流问题、新增接口超时配置 现在邮件可以重复发送了 交互形式没改 但是发送过邮件可以继续发 限制两分钟就行 临时方案吧 避免之前那种注册发送失败发不了了 bug修复 1. 修复基础绘画前台不显示问题 2. 添加复制按钮复制提示 3. 修复点击补单重复充值问题 优化选项 1. 新增公告弹窗首次默认弹出、用户可手动选择24小时内不提示、后台暂无配置 2. 管理端增加订单删除、和一些提示更新 新增 1. 用户端接触绘画只能输入中文限制,可以随意选择 2. 新增百度翻译,后台MJ绘画管理下配置、自己申请开通百度翻译通用文本翻译 3. 配置翻译后、图片描述会自动翻译为英文、不配置默认不开启 |
踩坑记录
cos不生效
记得开启公有读
版权声明:
作者:wkweb
链接:https://www.wkweb.cn/141.html
来源:哇咔资源网
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论