Last active
May 27, 2023 16:29
-
-
Save lss233/54f0f794f2157665768b1bdcbed837fd to your computer and use it in GitHub Desktop.
ChatGPT Mirai 快速部署脚本 for Linux (针对 1.5.4 和 1.6-RC3版本)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 安装路径 | |
INSTALL_DIR=./chatgpt-qq | |
RED='\033[0;31m' | |
GREEN='\033[0;32m' | |
YELLOW='\033[0;33m' | |
PLAIN='\033[0m' | |
DOCKER_COMPOSE_URL=https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-`uname -s`-`uname -m` | |
echo -e "${GREEN}欢迎使用 chatgpt-mirai-qq-bot 一键部署脚本${PLAIN}" | |
echo -e "${GREEN}本程序将按照 wiki 步骤自动为您部署程序${PLAIN}" | |
echo -e "${GREEN}如果您遇到问题可以在这里寻找答案: ${PLAIN}" | |
echo -e "${YELLOW}https://github.com/lss233/chatgpt-mirai-qq-bot/issues/85${PLAIN}" | |
echo -e "${GREEN}如果您觉得此脚本对你有帮助的话,欢迎您在爱发电支持作者。${PLAIN}" | |
echo -e "${YELLOW}https://afdian.net/a/lss233${PLAIN}" | |
read -p "按下回车以继续……" | |
# Exit if any error occured | |
set -euo pipefail | |
if ! [ -x "$(command -v curl)" ]; then | |
echo -e "${RED}错误:${PLAIN} 未检测到 curl,请先安装此程序。" | |
fi | |
if ! [ -x "$(command -v docker)" ]; then | |
echo -e "${YELLOW}警告:${PLAIN} 未检测到 Docker。" | |
while true; do | |
read -p "是否自动为你安装?是则输入 Y 并回车,否则输入 N 并回车。 " yn | |
case $yn in | |
[Yy]* ) curl -fsSL https://get.docker.com -o get-docker.sh; sudo -E sh get-docker.sh; rm get-docker.sh; break;; | |
[Nn]* ) exit 1;; | |
* ) echo "请输入 y 或 n";; | |
esac | |
done | |
fi | |
if ! [ -x "$(command -v docker-compose)" ]; then | |
echo -e "${YELLOW}警告:${PLAIN} 未检测到 Docker Compose。" | |
while true; do | |
read -p "是否自动为你安装?是则输入 Y 并回车,否则输入 N 并回车。 " yn | |
case $yn in | |
[Yy]* ) sudo -E curl -L "${DOCKER_COMPOSE_URL}" -o /usr/local/bin/docker-compose; sudo -E chmod +x /usr/local/bin/docker-compose; break;; | |
[Nn]* ) exit 1;; | |
* ) echo "请输入 y 或 n";; | |
esac | |
done | |
fi | |
if [ -d $INSTALL_DIR ]; then | |
echo -e "${RED}错误:检测到本程序已安装在 $(realpath $INSTALL_DIR),无法重复安装。${PLAIN}" | |
echo -e "${GREEN}如果你想升级,请执行:${YELLOW}" | |
echo "cd $INSTALL_DIR" | |
echo "docker compose pull" | |
echo "docker compose up -d" | |
echo -e "${GREEN}如果你想重装,先删除此目录,并重新运行本程序:${PLAIN}" | |
exit 1 | |
fi | |
ask_openai_api() { | |
read -p "请输入 OpenAI 的 API Key:" OPENAI_API_KEY | |
cat >> $INSTALL_DIR/config.cfg << EOF | |
[openai] | |
[[openai.accounts]] | |
api_key = "${OPENAI_API_KEY}" | |
EOF | |
} | |
ask_openai_email() { | |
read -p "请输入 OpenAI 的邮箱地址:" OPENAI_EMAIL | |
read -p "请输入 OpenAI 的密码:" OPENAI_PASSWORD | |
cat >> $INSTALL_DIR/config.cfg << EOF | |
[openai] | |
[[openai.accounts]] | |
email = "${OPENAI_ACCESS_TOKEN}" | |
password = "${OPENAI_PASSWORD}" | |
EOF | |
} | |
ask_openai_access_token() { | |
echo "使用方法:https://chatgpt-qq.lss233.com/pei-zhi-wen-jian-jiao-cheng/jie-ru-ai-ping-tai/jie-ru-openai-de-chatgpt" | |
read -p "请输入 OpenAI 的 access_token:" OPENAI_ACCESS_TOKEN | |
cat >> $INSTALL_DIR/config.cfg << EOF | |
[openai] | |
[[openai.accounts]] | |
access_token = "${OPENAI_ACCESS_TOKEN}" | |
EOF | |
} | |
ask_qq() { | |
read -p "请输入机器人 QQ 账号:" QQ_ACCOUNT | |
read -p "请输入机器人 QQ 密码:" QQ_PASSWORD | |
read -p "请输入你自己的 QQ 账号(设置机器人管理员):" QQ_MANAGER_ACCOUNT | |
} | |
download_browser_edition() { | |
mkdir -p $INSTALL_DIR/presets | |
wget -O $INSTALL_DIR/docker-compose.yaml https://raw.githubusercontent.com/lss233/chatgpt-mirai-qq-bot/browser-version/docker-compose.yaml | |
wget -O /tmp/awesome-chatgpt-qq-presets-presets.tar.gz https://github.com/lss233/awesome-chatgpt-qq-presets/archive/refs/heads/master.tar.gz | |
tar -xzf /tmp/awesome-chatgpt-qq-presets-presets.tar.gz -C $INSTALL_DIR/presets --strip-components=1 | |
} | |
configure_mirai() { | |
mkdir -p $INSTALL_DIR/mirai/config/net.mamoe.mirai-api-http/ | |
mkdir -p $INSTALL_DIR/mirai/config/Console/ | |
cat > $INSTALL_DIR/mirai/config/net.mamoe.mirai-api-http/setting.yml << EOF | |
adapters: | |
- reverse-ws | |
enableVerify: false | |
verifyKey: 1234567890 | |
debug: false | |
singleMode: false | |
cacheSize: 4096 | |
adapterSettings: | |
reverse-ws: | |
## 远端 websocket server 地址配置 | |
destinations: | |
- host: chatgpt | |
port: 8554 | |
path: / | |
protocol: ws | |
EOF | |
cat > $INSTALL_DIR/mirai/config/Console/AutoLogin.yml << EOF | |
accounts: | |
- # 账号, 现只支持 QQ 数字账号 | |
account: 123456 | |
password: | |
# 密码种类, 可选 PLAIN 或 MD5 | |
kind: PLAIN | |
# 密码内容, PLAIN 时为密码文本, MD5 时为 16 进制 | |
value: pwd | |
# 账号配置. 可用配置列表 (注意大小写): | |
# "protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH" / "MACOS" / "IPAD" | |
# "device": "device.json" | |
# "enable": true | |
# "heartbeatStrategy": "STAT_HB" / "REGISTER" / "NONE" | |
configuration: | |
protocol: ANDROID_PHONE | |
device: device.json | |
enable: true | |
- # 账号, 现只支持 QQ 数字账号 | |
account: ${QQ_ACCOUNT} | |
password: | |
# 密码种类, 可选 PLAIN 或 MD5 | |
kind: PLAIN | |
# 密码内容, PLAIN 时为密码文本, MD5 时为 16 进制 | |
value: ${QQ_PASSWORD} | |
# 账号配置. 可用配置列表 (注意大小写): | |
# "protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH" / "MACOS" / "IPAD" | |
# "device": "device.json" | |
# "enable": true | |
# "heartbeatStrategy": "STAT_HB" / "REGISTER" / "NONE" | |
configuration: | |
protocol: ANDROID_PAD | |
device: device.json | |
enable: true | |
EOF | |
cat >> $INSTALL_DIR/config.cfg << EOF | |
[mirai] | |
qq=${QQ_ACCOUNT} | |
manager_qq=${QQ_MANAGER_ACCOUNT} | |
# 此处保持默认设置,无需修改 | |
reverse_ws_port = 8554 | |
EOF | |
} | |
if ! pgrep docker > /dev/null; then | |
echo "Docker is not running. Starting Docker..." | |
systemctl start docker.service | |
fi | |
echo "Docker is running." | |
mkdir -p $INSTALL_DIR | |
download_browser_edition | |
ask_qq | |
configure_mirai | |
echo -e "${GREEN}请选择你的 OpenAI 登录方式:${PLAIN}" | |
echo -e "${GREEN}如果你想接入其他 AI,请阅读项目文档。${PLAIN}" | |
echo "1) accessToken 登录 (网页版 ChatGPT、Plus)" | |
echo "2) api_key 登录 (API 版 ChatGPT)" | |
while true; do | |
read -p "你的选择: " yn | |
case $yn in | |
1 ) ask_openai_access_token; break;; | |
2 ) ask_openai_api; break;; | |
* ) echo "请输入对应的数字";; | |
esac | |
done | |
cd $INSTALL_DIR | |
echo -e "${GREEN}接下来将要执行的是 QQ机器人的登录程序${PLAIN}" && sleep 5 | |
echo -e "${GREEN}如果提示出现滑块验证码,请按照 https://github.com/takayama-lily/node-onebot/issues/28 中的第一条进行处理。 ${PLAIN}" && sleep 5 | |
echo -e "${GREEN}QQ 登录成功后,输入${YELLOW} exit 并回车 ${GREEN}结束登录程序,进入最后一步。${PLAIN}" && sleep 5 | |
read -p "准备好了吗?按回车键继续。" | |
echo -e "${GREEN}这可能需要一点时间,请稍等……${PLAIN}" && sleep 5 | |
echo "+ docker-compose run --rm mirai" | |
docker-compose up -d | |
docker-compose run --rm mirai | |
echo -e "${GREEN}很棒!你已经完成了所有的初始化步骤。${PLAIN}" | |
echo -e "${GREEN}接下来为你启动程序……${PLAIN}" | |
echo "+ docker-compose up -d" | |
docker-compose up -d | |
echo -e "${GREEN}程序已被安装在 ${INSTALL_DIR} 下,${PLAIN}" | |
echo -e "${GREEN}以下是一些维护的注意事项:${PLAIN}" && sleep 5 | |
echo -e "${GREEN}1. 你需要先 ${YELLOW}cd ${INSTALL_DIR} ${GREEN} 才能进入到程序的安装目录。${PLAIN}" && sleep 5 | |
echo -e "${GREEN}2. 你可以输入${YELLOW}docker-compose logs -f ${GREEN}来观察运行日志。${PLAIN}" && sleep 5 | |
echo -e "${GREEN}3. 如果你的 Mirai 需要验证码才能登录,使用 ${YELLOW}docker-compose run --rm mirai ${GREEN}启动登录程序,登录成功后按下${YELLOW} Ctrl + C ${GREEN}退出,然后重启程序。${PLAIN}" && sleep 5 | |
echo -e "${GREEN}4. 修改配置文件后,使用 ${YELLOW}docker-compose restart ${GREEN}重启程序。${PLAIN}" && sleep 5 | |
echo -e "${GREEN}5. 使用 ${YELLOW}docker-compose pull && docker-compose up -d ${GREEN}命令来更新程序${PLAIN}" && sleep 5 | |
echo -e "${GREEN}如果你记不住的话,可以把上面这段文字保存到一个文件里面,需要的时候再看。${PLAIN}" && sleep 5 | |
echo -e "${GREEN}如果您遇到问题可以在这里寻找答案: ${PLAIN}" | |
echo -e "${YELLOW}https://chatgpt-qq.lss233.com/${PLAIN}" && sleep 5 | |
echo -e "${GREEN}如果您觉得此脚本对你有帮助的话,欢迎您在爱发电支持作者。${PLAIN}" | |
echo -e "${YELLOW}https://afdian.net/a/lss233${PLAIN}" | |
echo -e "${GREEN}再见。${PLAIN}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment