#chatgpt #商业化 #开源平台 #网站搭建 #VPS #服务器 #1panel面板 #docker #Linux管理面板 #Ubuntu #腾讯云 #阿里云 #搬瓦工 #vultr #docker-compose #dujiaoka数据库 #MySQL #Redis #安装1panel #连接VPS #生成式人工智能服务管理 #中国地区备案
我知道很多小伙伴,搭建个人 chatgpt 网站不单单是为了自己使用,还想赚点外快,接下来我就介绍一下如何利用开源平台搭建一个商业化的 chatgpt 网站
但是在此之前,请大家认真学习并遵守:
一、搭建后效果
体验地址
聊天地址
二、准备工作
- 一个域名(域名的后缀决定了你邮箱的后缀)
- 一台 VPS(25 端口收发邮件)
注意 VPS 最好可以打开 25 号端口,因为对于用户用邮箱注册时可以自动发送验证码
测试命令
1Panel-dev/1Panel: 🔥 🔥 🔥 现代化、开源的 Linux 服务器运维管理面板。 (github.com)
我们这里使用 docker 搭建,而 1panel 面板是以 docker 为核心的 Linux 可视化开源管理面板,推荐新人使用这个进行搭建并进行管理。
介绍文章:推荐开源的 Linux 管理面板——1panel - PPPFZ BLOG
三、连接 VPS
1、选购 VPS
VPS 可以简单的理解为远程服务器
我们购买一台服务器大致要满足一下要求
- 访问速度要快(毕竟要给别提供服务)
- 在中国大陆内的服务器(因为要备案)
- 要稳定可靠
同时满足这三个的条件的基本只有那几家大厂了。
如果考虑在为国外提供服务可以考虑使用下面两家服务器(都是大厂,支持退款)
这里就用腾讯云的服务器来演示一下如何购买并连接服务器吧
点击我的链接:腾讯云,用微信扫即可注册
找到试用专区,我们领取试用一台高配置的 VPS(4 核 8G12M1 个月)

之后觉得合适再续。如果不续了,想购买新的,就如下:

轻量应用服务器 Lighthouse香港轻量服务器海外轻量服务器-腾讯云 (tencent.com)

依次选择服务器的配置:
- 基于操作系统镜像
- Ubuntu
- 版本:Ubuntu 22.04 LTS
- 地域:中国,北京
- 套餐类型:入门型
- 套餐规格:45 元/月
- 自动生成密码(生成的密码会发送到你的邮箱当中)
- 时长:一个月



接下来进入控制后台,获取服务器的公网 IP 即可

现在我们有了:
1 2 3
| 服务器的账户:XXXXXX 密码: XXXXXXX IP地址:XXXXXXXX
|
2、连接 VPS
将获取到的东西依次填入下面的注释框中

连接后效果:

四、安装 1panel
在线安装 - 1Panel 文档
如果上面跟我选择的是一样的话就是 Ubuntu 系统,就用这条命令
1
| curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
|
如果不是的话,就使用 cat 命令查看是什么 Linux 系统
1 2 3 4 5 6 7 8
| RedHat / CentOS curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
Ubuntu curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
Debian curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
|

在安装过程中,会让你选择安装目录,1panel 的后台管理面板端口,和管理员账户和密码。默认即可,最后安装完成后,会统一显示出来。如果忘记,可以使用1pctl user-info查看。
安装完成后,访问:外网 IP 地址+随机端口
五、安装集成化平台
接下来,我们使用 docker-compose 来部署。为了以后可以方便的使用 docke-compose 重新部署,我们使用编排模板的方法,储存我们的 docker-compose.yml 文件。

1、获取并修改 docker-compose.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 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 82 83 84 85 86
| version: '3.9'
services: one-api: image: justsong/one-api:latest container_name: one-api restart: always command: --log-dir /app/logs ports: - "3000:3000" volumes: - ./data/oneapi:/data - ./logs:/app/logs environment: - SQL_DSN=oneapi:123456@tcp(db:3306)/one-api - REDIS_CONN_STRING=redis://redis - SESSION_SECRET=random_string - TZ=Asia/Shanghai
depends_on: - redis - db - dujiaoka - chatgpt-next-web-proxy healthcheck: test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ] interval: 30s timeout: 10s retries: 3
redis: image: redis:latest container_name: redis restart: always
db: image: mysql:8.2.0 restart: always container_name: mysql volumes: - ./data/mysql:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql ports: - '3306:3306' environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 'OneAPI@justsong' MYSQL_USER: oneapi MYSQL_PASSWORD: '123456' MYSQL_DATABASE: one-api
dujiaoka: image: stilleshan/dujiaoka:latest environment: - INSTALL=true container_name: dujiaoka volumes: - ./data/dujiaoka/env.conf:/dujiaoka/.env - ./data/dujiaoka/uploads:/dujiaoka/public/uploads - ./data/dujiaoka/storage:/dujiaoka/storage ports: - "880:80"
chatgpt-next-web-proxy: container_name: chatgpt-next-web-proxy image: yidadaa/chatgpt-next-web:latest ports: - 888:3000 environment: - OPENAI_API_KEY= - CODE= - PROXY_URL=$PROXY_URL - BASE_URL=$BASE_URL - OPENAI_ORG_ID=$OPENAI_ORG_ID - HIDE_USER_API_KEY=$HIDE_USER_API_KEY - DISABLE_GPT4=$DISABLE_GPT4 - ENABLE_BALANCE_QUERY=$ENABLE_BALANCE_QUERY - DISABLE_FAST_LINK=$DISABLE_FAST_LINK - OPENAI_SB=$OPENAI_SB
networks: default:
|
我们需要修改以下变量:
1 2 3 4 5 6 7 8
| - MYSQL_ROOT_PASSWORD: 'OneAPI@justsong' # 设置 root 用户的密码 # 将MySQL数据库密码修改为自己的密码:MYSQL_ROOT_PASSWORD: 'xxxxxxxxxxxx1'
- MYSQL_PASSWORD: '123456' # 设置专用用户密码 # 将oneapi这个MySQL数据库的用户密码改为自己的密码:MYSQL_PASSWORD: 'xxxxxxxxxxxxx2'
- SQL_DSN=oneapi:xxxxxxxxxxxxx2@tcp(db:3306)/one-api # 将连接MySQL数据库的oneapi密码跟随第二步密码修改
|
2、安装 dujiaoka 数据库
由于独角数卡 dujiaoka,还需要一个数据库:dujiaoka。所以我们用 sql 命令生成(对下面的 dujiaoka 数据库密码要进行修改):
1 2 3 4 5
|
CREATE DATABASE IF NOT EXISTS `dujiaoka`; CREATE USER IF NOT EXISTS 'dujiaoka'@'%' IDENTIFIED BY '123456'; # 将123456修改为你自己的密码 GRANT ALL PRIVILEGES ON dujiaoka.* TO 'dujiaoka'@'%';
|
将修改过后的文件放在/opt/1panel/docker/compose/test 目录下,命名为:init.sql
test 为你为这个编排项目的命名(可以任意)
dujiaoka 还需要有个配置文件:raw.githubusercontent.com/assimon/dujiaoka/master/.env
将配置文件下载下来,放在/opt/1panel/docker/compose/test/data/dujiaoka下,命名为:env.conf
3、编排生成容器

点击确定后就会生成 4 个容器
注意打开防火墙(云服务器厂商和服务器本身)
oneapi 的默认账户密码是:root 123456
dujiaoka 默认账户密码:admin admin
dujiaka 部署完成后有两点一定要做:
1、yml 文件中环境变量: - INSTALL=true true 改成 false
2、env 配置文件中APP_DEBUG=false 将 true 改为 false
对于 dujiaoka 的详细部署和支付方法部署可以参考我的文章:
1panel 面板 docker 部署独角数卡自动发卡平台 (含 Epdust 和 Coinbase 支付方式) - PPPFZ BLOG
部署成功
