Nine-AI 商业部署版教程

Nine-AI 商业部署版教程

最新版为1.3.4 更新时间2023年6月15日

前言

用户端大致页面

202305211752060

管理端大致页面

202305211752447

环境安装

本文假设您的有一台云主机,且上面有“宝塔”面板,或者您会手动操作来代替“宝塔”面板的动作

下文中的终端指的是你在“宝塔”面板左侧“终端”页面,或者通过Xshell等工具连接的终端

下文中的ai.pandolar.top为笔者的网站目录,操作时自行替换成自己的

在宝塔的软件商店里面安装所需的环境

202305172343676

2023年6月7日更新:现在redis为必装

redis也是软件商店里面装,安装5.0.8就行,其他配置不用动,保持默认

MySQL需要安装8.0

由于我之前一直用5.6,重新安装需要清除数据,我就使用docker搞了个8.0的

后续出个文章详细讲一下教程,没有特殊需求的安装8.0直接用就行了。

Nginx安装1.19.8就行

node.js在安装版本管理器后点设置,然后如下

202305172344040

基础配置

新建网站

宝塔 - 网站 - 添加站点

202305180210347

程序在VIP的QQ群或者询问群主

把所需的程序上传并解压到网站目录下

大致文件如下

202305180212041

env配置

在宝塔直接双击.env文件编辑,或在终端vim编辑

YML

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进行安装,没有报错的话是类似下面这样的

PLAINTEXT

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启动

202305172346268

pm2 log看到以下日志就是成功了

202305180202768

放通你的防火墙,把你所用到的端口开放

PLAINTEXT

1
2
3
4
用户端 http://ip:9520
管理端 http://ip:9520/admin
默认演示账号: admin 123456
默认超级管理员: super nine-super

然后访问http://你的ip:9520/

看到以下页面就算是初步跑起来了*(忽略图上的端口,我自己修改过的,你的就是9520)*

用户端

202305180206382

后台

202305180216535

202305180216140

接入域名

反向代理一下

202305182325740

然后你的网站就可以通过网站访问了

如果要加SSL记得先把反代关了,挂上SSL后再打开

后台管理

Key池

单个chatgpt的key有速率限制,且在人多的时候会大量消耗,key池就显得尤为重要

你可以在很多地方卖到各色各样的Key,这里不再赘述

有了key之后,我们就要把他导入到后台

202305192121371

202305192121617

其他都好理解,这里解释一下轮训权重

轮训权重是一个来控制该key使用概率的参数

详解:

PLAINTEXT

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%

设置相关*

202305192143770

202305192144000

  • 参考图上填就行

image-20230519214443133

  • 腾讯云后台开通即可,笔者还没接入mj,就还没填

202305192145229

  • 公告为markdown格式,支持填html代码

202305192146335

  • 如果你的机器在非大陆地区,直接使用官方的就行,在国内的话就需要自建或者使用作者自带的https://open2.aiproxy.xyz
  • 或者自己找朋友的非大陆机器搞个Nginx反代,具体百度即可。

202305192147188

  • 没啥说的,自己填就行

微信登陆

系统微信登录通过关联公众号实现、以便于后期联动小程序、开发文档前往微信公众平台 https://mp.weixin.qq.com/ 、拿到开发者配置信息即可、如果用户对公众号发送消息、我们将会从自定义回复管理当中的内容进行匹配自动回复、如果没有匹配到结果则回复下面设置的自定义回复默认信息!

202306142140533

用户端

动态菜单

字面意思看看得懂

202306072244988

支付功能

易支付

PLAINTEXT

1
2
3
4
5
作者原话:

九:主要是前两项 是商户提供的 每个人自己不一样 后面基本一样 两个回调地址是支付成功后平台通知我们的 也就是请求我们的地址 那个要填你们后端接口的地址 把我的域名换成你们自己的  没有就用 ip+端口也可以  注意 这里如果没有https  最下面两个地址就要用http

九:对比我这个填就行 

解释:

  • 商户ID:在某易支付后台的PID
  • 商户秘钥:在某易支付后台的秘钥
  • 支付通知地址:https://你的域名/api/pay/notify
  • 支付回调地址:https://你的域名/
  • 支付请求地址:https://易支付域名/mapi.php
  • 商户查询地址:https://易支付域名/

友情广告:群友的易支付平台:https://epay.9o3.cn/ 现在G了

当然你也可以找其他的平台

202305211742973

虎皮椒

待更新

对象存储cos

该部分为官方文档照搬,笔者还没有配置MJ相关

进入到腾讯云搜索对象存储、我们需要配置四个 参数、在秘钥管理里面可以拿到 SecretIdSecretKey

202305211748374

剩下两个参数分别是存储桶的名称和 节点位置您可以参考下图信息

202305211748558

如果还没有存储桶、请创建存储桶、权限选择公有读私有写即可、其他不限制。
配置完四个参数后、就可以使用存储服务了。

MJ配置

该部分为官方文档照搬,笔者还没有配置MJ相关

mj对应了七个必填参数分别是下图

202305211745241

剩余两个参数
1: 接口单次限制时间、表示用户请求一次这个接口距离下次允许请求的限制时间
2: 系统默认携带了一个代理、如果你是国内服务器需要开启代理、如果是国外服务器则不需要代理

参数获取方法
得到MJ账号之后、参考此地址创建一个自己私人的服务器、并且邀请一个官方的机器人加入房间 https://zhuanlan.zhihu.com/p/603364613、这样就可以加入房间了、然后打开控制台、此时我们通过命令 /imagine命令 随便输入一点prompt词 比如下图

202305211746715

然后发送 控制台就会看到这样一条接口,如图

img

复制接口发送的内容、然后找个地方格式化一下就行、会得到如下内容

202305211746748

箭头上我们可以看到六个参数、还剩下一个token从请求头获取如图

202305211747217

此时我们得到了七个参数、将其填入MJ配置、他们的对应关系是

JSON

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

两个参数申请完填上就好了

自定义

自定义敏感词、触发敏感词将自动拦截

可以自定义添加,不再赘述

更新日志

更新方法

PLAINTEXT

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

PLAINTEXT

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

PLAINTEXT

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

PLAINTEXT

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

更新日志

PLAINTEXT

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

PLAINTEXT

1
2
3
4
@所有人 V1.2.3小版本更新  
1. 新增阿里云oss存储接入
2. 增加支付时长为5分钟
3. 非必要使用阿里云oss不必升级 升级后去手动开启原有腾讯云cos  默认不开启

2023-05-21版本1.2.1

PLAINTEXT

1
2
3
4
5
@全体成员  V1.2.1版本发布 
1.加入百度云敏感词 审核对话内容及绘画内容
2. 加入百度翻译 绘画中文限制接触 绘画描述词会自动转为英文
3. 首页公告优化
4. 修复已知bug

2023-05-20版本1.2

PLAINTEXT

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不生效

记得开启公有读

202306082314261

版权声明:
作者:wkweb
链接:https://www.wkweb.cn/141.html
来源:哇咔资源网
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Nine-AI 商业部署版教程
Nine-AI 商业部署版教程 最新版为1.3.4 更新时间2023年6月15日 前言 用户端大致页面 管理端大致页面 环境安装 本文假设您的有一台云主机,且上面有“宝塔”面……
<<上一篇
下一篇>>