Skip to content

Instantly share code, notes, and snippets.

@lss233
Last active May 27, 2023 16:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save lss233/54f0f794f2157665768b1bdcbed837fd to your computer and use it in GitHub Desktop.
Save lss233/54f0f794f2157665768b1bdcbed837fd to your computer and use it in GitHub Desktop.
ChatGPT Mirai 快速部署脚本 for Linux (针对 1.5.4 和 1.6-RC3版本)
# 安装路径
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