Last active
May 27, 2023 16:30
-
-
Save lss233/6f1af9510f47409e0d05276a3af816df to your computer and use it in GitHub Desktop.
ChatGPT Mirai 快速部署脚本 for Linux
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
#!/bin/bash | |
# 安装路径 | |
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; dockerd-rootless-setuptool.sh install; 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_session_token() { | |
echo -e "${GREEN}你可以在这里查看 session_token 的登录方法:${YELLOW}https://github.com/lss233/chatgpt-mirai-qq-bot/issues/96${PLAIN}" | |
read -p "请输入 OpenAI 的 session_token:" OPENAI_SESSION_TOKEN | |
} | |
ask_openai_email_password() { | |
read -p "请输入 OpenAI 的邮箱地址:" OPENAI_EMAIL | |
read -p "请输入 OpenAI 的密码:" OPENAI_PASSWORD | |
} | |
ask_qq() { | |
read -p "请输入 QQ 账号:" QQ_ACCOUNT | |
read -p "请输入 QQ 密码:" QQ_PASSWORD | |
} | |
download_files() { | |
echo -e "${GREEN}下载文件中,希望你的网络可以给力一点……${PLAIN}" | |
pushd $INSTALL_DIR | |
curl https://raw.githubusercontent.com/lss233/chatgpt-mirai-qq-bot/master/docker-compose.yaml -o docker-compose.yaml | |
curl https://raw.githubusercontent.com/lss233/chatgpt-mirai-qq-bot/master/config.example.cfg -o config.cfg | |
docker-compose pull | |
popd | |
} | |
configure_session_token() { | |
sed -i "s|# session_token = \"一串 ey 开头的东西\"|session_token = \"${OPENAI_SESSION_TOKEN}\"|g" $INSTALL_DIR/config.cfg | |
} | |
configure_email_password() { | |
sed -i "s|email = \"xxxx\"|email = \"${OPENAI_EMAIL}\"|g" $INSTALL_DIR/config.cfg | |
sed -i "s|password = \"xxx\"|password = \"${OPENAI_PASSWORD}\"|g" $INSTALL_DIR/config.cfg | |
} | |
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: | |
- http | |
- ws | |
debug: true | |
enableVerify: true | |
verifyKey: 1234567890 | |
singleMode: false | |
cacheSize: 4096 | |
persistenceFactory: 'built-in' | |
adapterSettings: | |
http: | |
host: mirai | |
port: 8080 | |
cors: ["*"] | |
ws: | |
host: mirai | |
port: 8080 | |
reservedSyncId: -1 | |
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_WATCH | |
device: device.json | |
enable: true | |
EOF | |
sed -i "s@http://localhost:8080@http://mirai:8080@g" $INSTALL_DIR/config.cfg | |
sed -i "s@请修改为你机器人的QQ号@${QQ_ACCOUNT}@g" $INSTALL_DIR/config.cfg | |
} | |
echo -e "${GREEN}请选择 OpenAI 的登录方式${PLAIN}" | |
echo "1) 邮箱密码登录" | |
echo "2) session_token 登录 (Google 登录或微软登录)" | |
while true; do | |
read -p "你的选择: " yn | |
case $yn in | |
1 ) TYPE=browser; ask_openai_email_password; break;; | |
2 ) TYPE=api; ask_openai_session_token; break;; | |
* ) echo "请输入对应的数字";; | |
esac | |
done | |
ask_qq | |
mkdir -p $INSTALL_DIR | |
download_files | |
case $TYPE in | |
api ) TYPE=api; configure_session_token;; | |
browser ) TYPE=browser; configure_email_password;; | |
esac | |
configure_mirai | |
cd $INSTALL_DIR | |
echo -e "${GREEN}接下来将要执行的是 Mirai 的初始化${PLAIN}" && sleep 5 | |
echo -e "${GREEN}如果提示出现滑块验证码,请按照 https://github.com/lss233/chatgpt-mirai-qq-bot/issues/85 中的第一条进行处理。 ${PLAIN}" && sleep 5 | |
echo -e "${GREEN}QQ 登录成功后,按下${YELLOW} Ctrl + C ${GREEN}结束初始化程序,进入最后一步。${PLAIN}" && sleep 5 | |
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}" && sleep 5 | |
echo -e "${YELLOW}https://github.com/lss233/chatgpt-mirai-qq-bot/issues/85${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