在自己的电脑上布置chatGPT

本文最后更新于 2023年8月27日 下午

前言

本教程参考官方文档[1]编写,加以一些补充说明。

本文系统为Ubuntu 22,实际操作时请以你的系统为准

在Ubuntu系统中,以root用户登陆时输入所有命令均无需sudo

为了适合一般情况,本文在所有命令前添加了sudo

安装过程

一、网络环境

安装clash

由于OpenAI的API对中国大陆是封锁的,因此我们需要一些操作来连上API

首先安装clash,从GitHub下载压缩包,并根据你的系统选择合适的版本进行下载,本教程选择此版本:

选择合适的版本

接下来将下载好的压缩包上传到服务端,并进行解压:

1
2
3
4
5
6
sudo apt -y install gzip
gzip -d clash-linux-amd64-v1.14.0.gz
mkdir clash
mv clash-linux-amd64-v1.14.0 clash/clash-linux-amd64-v1.14.0
cd clash
sudo chmod 777 clash-linux-amd64-v1.14.0

这里压缩文件的具体名称依据你自己实际下载的版本进行调整

下载配置文件:

1
2
3
4
mkdir config
cd config
wget -O config.yaml [订阅链接]
wget -O Country.mmdb https://www.sub-speeder.com/client-download/Country.mmdb

将上述指令中的订阅链接换成你自己的

如果在下载Country.mmdb时无法下载,可以从GitHub手动下载,再上传到服务器

现在,你的目录中应该有如下文件:

你可以尝试运行

1
./clash-linux-amd64-v1.14.0 -d config/

如果成功出现类似以下日志,说明运行成功:

安装clash dashboard

这是一个可视化WEB界面,可以进行一些节点切换等操作

首先下载:

1
2
3
git clone https://github.com/Dreamacro/clash-dashboard.git
cd clash-dashboard
git checkout -b gh-pages origin/gh-pages

接下来进行配置:

1
2
cd ../config/
nano config.yaml

默认情况下,你的配置文件应该类似于这样:

与UI相关的有三处需要修改,内容如下:

1
2
3
4
5
6
7
8
9
port: 7890
socks-port: 7891
redir-port: 7892
allow-lan: false
mode: rule
log-level: info
external-controller: 0.0.0.0:9090 # 访问的端口号
external-ui: ../clash-dashboard # 新增一行,内容为clash dashboard所在路径
secret: '114514' # 登录密码

保存之后即可再次启动clash

1
./clash-linux-amd64-v1.14.0 -d config/

此时访问服务器IP:9090/ui,即可看到如下界面:

将host改为你现在所访问的来源IP,密钥填入刚刚配置信息内你设定的密钥,点击添加-确定,即可

例如,你的公网IP是180.101.50.242(这个实际上是百度),那么你就在Host里面填上180.101.50.242

而假设你是通过局域网IP 192.168.2.4访问的,那么就在Host里面填上192.168.2.4

不同的IP访问,每次都要重新填一遍

理论上,你就可以看到类似如下的界面你可以进行测速以及节点选择等等:

由于OpenAI会对一些来源的IP进行封号,这里建议不要选择香港的IP,美国日本的都行

设置开机启动

新建配置文件:

1
sudo nano /etc/systemd/system/clash.service

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Clash daemon, A rule-based proxy in Go.
After=network.target

[Service]
Type=simple
User=root
ExecStart=/root/clash/clash-linux-amd64-v1.14.0 -d /root/clash/config
Restart=on-failure

[Install]
WantedBy=multi-user.target

其中ExecStart这一行,将两个路径换成你的,必须要是绝对路径

接下来启动并设置为开机运行:

1
2
sudo systemctl start clash.service
sudo systemctl enable clash.service

二、安装chatgpt_academic

下载和配置

首先退回到根目录(或者你喜欢的什么目录),下载:

1
2
git clone https://github.com/binary-husky/chatgpt_academic.git
cd chatgpt_academic

编辑config_private.py:

1
2
cp config.py config_private.py
nano config.py

文件里面注释很详细,你只需要修改API_KEY和proxies等几处信息即可,改完长这样:

图中红框内是改动的部分

  • API_KEY:你所申请的密钥,注意保密
  • USE_PROXY:改成True
  • proxies:改成使用http协议,端口号为clash的http代理端口
  • WEB_PORT:访问网页端的端口号,改个你自己喜欢的

clash的代理端口可以从配置文件或WEB UI查看和修改:

/clash/config/config.yaml

安装依赖

如果你的服务器上没有,首先安装python3:

1
sudo apt install python3-dev

接下来安装依赖:

1
python3 -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

安装完毕之后,尝试运行:

1
python3 main.py

访问即可看到界面

设置登陆密码

如果是部署在公网,建议加上这一步,本地服务器则没必要

首先还是编辑chatgpt_academic/config.py,修改最后一行,添加用户名和密码:

同时,修改chatgpt_academic/main.py,将最后一句话修改为:

1
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", share=False, server_port=PORT, auth=AUTHENTICATION) 

此时再次运行并访问,即可看到登陆界面:

三、配置nginx反向代理

首先安装nginx:

1
sudo apt install nginx

之后编辑nginx配置文件,位于/etc/nginx/sites-enabled/下,建议以你的域名为文件名,例如chat.domain.com,内容如下:

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
upstream my_chataca {
# 这里配置负载均衡策略
ip_hash; # 如果使用负载均衡,建议使用ip_hash
# 假设本项目运行的端口为1919
server 127.0.0.1:1919 max_fails=3 fail_timeout=10;
}

server {
listen 80;
server_name chat.domain.com; # 请填入你设定的域名
access_log off;
error_log off;
location / {
proxy_pass http://127.0.0.1:1919; # 注意端口号
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade; # Websocket配置
proxy_set_header Connection $connection_upgrade; #Websocket配置
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

同时,编辑/etc/nginx/sites-enabled/nginx.config,在http块中添加以下内容:

1
2
3
4
5
6
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
}

以上是不使用SSL的方案,使用SSL同理。

之后重载nginx,即可通过域名访问界面了

1
nginx -s reload

四、配置latex环境

由于部分高级函数需要latex支持,因此若想使用这部分功能,需要额外进行latex环境的配置。

安装Texlive[2]

首先回到根目录,并下载安装脚本并解压:

1
2
3
cd
wget https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
tar -xzf install-tl-unx.tar.gz

解压后的文件夹名为install-tl-加上一串日期,进入此文件夹:

1
cd install-tl-20231028/

接下来开始安装:

1
sudo ./install-tl -repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/

此时会弹出菜单界面:

我们输入C并回车,取消掉一些不需要的语言,节省安装空间:

输入对应的字母即可选择/取消选中对应的项,之后输入R回到主菜单

然后输入I开始安装:

设置环境变量

可以看到上面的日志中要求我们添加环境变量:

Add /usr/local/texlive/2023/texmf-dist/doc/man to MANPATH. Add /usr/local/texlive/2023/texmf-dist/doc/info to INFOPATH.

Most importantly, add /usr/local/texlive/2023/bin/x86_64-linux to your PATH for current and future sessions.

因此我们进行编辑:

1
nano ~/.bashrc

在文本末尾添加以下三行:

1
2
3
export PATH=/usr/local/texlive/2023/bin/x86_64-linux:$PATH
export MANPATH=/usr/local/texlive/2023/texmf-dist/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2023/texmf-dist/doc/info:$INFOPATH

不过此时,使用sudo权限时并不能调用相关指令,因此还需要额外设置:

1
sudo visudo

将路径加入到图中的位置即可,并用冒号与原来的内容分开:

保存退出之后即可。

添加字体

文档中要求将以下字体添加到Latex的字体目录/usr/local/texlive/2023/texmf-dist/fonts/truetype中:

  • MSYHBD.TTC
  • SIMLI.TTF
  • msyh.ttc
  • simfang.ttf
  • simkai.ttf
  • SIMYOU.TTF
  • simhei.ttf
  • simsun.ttc

我这里整理了一份字体文件在GitHub上,可以下载使用:https://github.com/Aye10032/MyFonts.git

上传到相应目录之后,使用以下指令刷新使字体生效:

1
texhash

参考文档


在自己的电脑上布置chatGPT
https://www.aye10032.com/2023/04/11/2023-04-11-chatgpt/
作者
Aye10032
发布于
2023年4月11日
更新于
2023年8月27日
许可协议