From 71ccc9aca0757d77912a26218efcf1666b801760 Mon Sep 17 00:00:00 2001
From: initialencounter <2911583893@qq.com>
Date: Mon, 18 Nov 2024 23:09:48 +0800
Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E9=80=9A=E8=BF=87=E4=BC=A0?=
=?UTF-8?q?=E5=85=A5=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E6=9D=A5=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=20NapCat=20=E7=9A=84=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 109 ++------------------------------------------------
entrypoint.sh | 88 +++++++---------------------------------
2 files changed, 18 insertions(+), 179 deletions(-)
diff --git a/README.md b/README.md
index da9d5c1..8aa84fa 100644
--- a/README.md
+++ b/README.md
@@ -6,24 +6,15 @@
- [x] Linux/Amd64
- [x] Linux/Arm64
-## 配置
-
-容器通过环境变量来配置,环境变量名称可以查看 [entrypoint](./entrypoint.sh)👈
-
-具体参数可参考[官方文档](https://napneko.com/config/basic#%E9%85%8D%E7%BD%AE%E5%86%85%E5%AE%B9%E5%8F%82%E6%95%B0%E8%A7%A3%E9%87%8A)
-
# 启动容器
-## 正向 WS
-
### 命令行运行
```shell
docker run -d \
--e ACCOUNT=<机器人qq> \
--e WS_ENABLE=true \
-e NAPCAT_GID=$(id -g) \
-e NAPCAT_UID=$(id -u) \
+-p 3000:3000 \
-p 3001:3001 \
-p 6099:6099 \
--name napcat \
@@ -40,11 +31,10 @@ version: "3"
services:
napcat:
environment:
- - ACCOUNT=<机器人qq>
- - WS_ENABLE=true
- NAPCAT_UID=${NAPCAT_UID}
- NAPCAT_GID=${NAPCAT_GID}
ports:
+ - 3000:3000
- 3001:3001
- 6099:6099
container_name: napcat
@@ -55,95 +45,6 @@ services:
使用 `NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d` 运行到后台
-## 反向 WS
-
-点我查看命令👈
-
-### 命令行运行
-
-```shell
-docker run -d \
--e ACCOUNT=<机器人qq> \
--e WSR_ENABLE=true \
--e WS_URLS='["ws://192.168.3.8:5140/onebot"]' \
--e NAPCAT_GID=$(id -g) \
--e NAPCAT_UID=$(id -u) \
---name napcat \
---restart=always \
-mlikiowa/napcat-docker:latest
-```
-### docker-compose 运行
-
-按照 [正向 WS](#docker-compose-运行) 中的方式创建 `.env` 文件,然后创建 `docker-compose.yml` 文件
-```yaml
-# docker-compose.yml
-version: "3"
-services:
- napcat:
- environment:
- - ACCOUNT=<机器人qq>
- - WSR_ENABLE=true
- - WS_URLS=["ws://192.168.3.8:5140/onebot"]
- - NAPCAT_UID=${NAPCAT_UID}
- - NAPCAT_GID=${NAPCAT_GID}
- container_name: napcat
- network_mode: bridge
- ports:
- - 6099:6099
- restart: always
- image: mlikiowa/napcat-docker:latest
-```
-
-使用 `NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d` 运行到后台
-
-
-## HTTP
-
-点我查看命令👈
-
-### 命令行运行
-
-```shell
-docker run -d \
--e ACCOUNT=<机器人qq> \
--e HTTP_ENABLE=true \
--e HTTP_POST_ENABLE=true \
--e HTTP_URLS='["http://192.168.3.8:5140/onebot"]' \
--e NAPCAT_GID=$(id -g) \
--e NAPCAT_UID=$(id -u) \
--p 3000:3000 \
--p 6099:6099 \
---name napcat \
---restart=always \
-mlikiowa/napcat-docker:latest
-```
-
-### docker-compose 运行
-
-按照 [正向 WS](#docker-compose-运行) 中的方式创建 `.env` 文件,然后创建 `docker-compose.yml` 文件
-```yaml
-# docker-compose.yml
-version: "3"
-services:
- napcat:
- environment:
- - ACCOUNT=<机器人qq>
- - HTTP_ENABLE=true
- - HTTP_POST_ENABLE=true
- - HTTP_URLS=["http://192.168.3.8:5140/onebot"]
- - NAPCAT_UID=${NAPCAT_UID}
- - NAPCAT_GID=${NAPCAT_GID}
- ports:
- - 3000:3000
- - 6099:6099
- container_name: napcat
- network_mode: bridge
- restart: always
- image: mlikiowa/napcat-docker:latest
-```
-
-使用 `NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d` 运行到后台
-
# 固化路径,方便下次直接快速登录
@@ -151,13 +52,9 @@ QQ 持久化数据路径:/app/.config/QQ
NapCat 配置文件路径: /app/napcat/config
-注意:如果是重新创建的容器,需要固定 Mac 地址
-
# 登录
-```shell
-docker logs napcat
-```
+登录 WebUI 地址:http://<宿主机ip>:6099/webui
# Tips
关于 NAPCAT_UID 与 NAPCAT_GID 环境变量
diff --git a/entrypoint.sh b/entrypoint.sh
index 6f78486..b7dd0b8 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -1,17 +1,5 @@
#!/bin/bash
-chech_quotes(){
- local input="$1"
- if [ "${input:0:1}" != '"' ] ; then
- if [ "${input:0:1}" != '[' ] ; then
- input="[\"$input\"]"
- fi
- else
- input="[$input]"
- fi
- echo $input
-}
-
# 安装 napcat
if [ ! -f "napcat/napcat.mjs" ]; then
unzip -q NapCat.Shell.zip -d ./NapCat.Shell
@@ -24,73 +12,26 @@ if [ ! -f "napcat/config/napcat.json" ]; then
rm -rf ./NapCat.Shell
fi
-CONFIG_PATH=napcat/config/onebot11_$ACCOUNT.json
-# 容器首次启动时执行
-if [ ! -f "$CONFIG_PATH" ]; then
- if [ "$WEBUI_TOKEN" ]; then
- echo "{\"port\": 6099,\"token\": \"$WEBUI_TOKEN\",\"loginRate\": 3}" > napcat/config/webui.json
- fi
- : ${WEBUI_TOKEN:=''}
- : ${HTTP_PORT:=3000}
- : ${HTTP_URLS:='[]'}
- : ${WS_PORT:=3001}
- : ${HTTP_ENABLE:='false'}
- : ${HTTP_POST_ENABLE:='false'}
- : ${WS_ENABLE:='false'}
- : ${WSR_ENABLE:='false'}
- : ${WS_URLS:='[]'}
- : ${HEART_INTERVAL:=60000}
- : ${TOKEN:=''}
- : ${F2U_ENABLE:='false'}
- : ${DEBUG_ENABLE:='false'}
- : ${LOG_ENABLE:='false'}
- : ${RSM_ENABLE:='false'}
- : ${MESSAGE_POST_FORMAT:='array'}
- : ${HTTP_HOST:=''}
- : ${WS_HOST:=''}
- : ${HTTP_HEART_ENABLE:='false'}
- : ${MUSIC_SIGN_URL:=''}
- : ${HTTP_SECRET:=''}
- : ${NAPCAT_GID:=0}
- : ${NAPCAT_UID:=0}
- HTTP_URLS=$(chech_quotes $HTTP_URLS)
- WS_URLS=$(chech_quotes $WS_URLS)
-cat < $CONFIG_PATH
+# 配置 WebUI Token
+CONFIG_PATH=/app/napcat/config/webui.json
+if [ ! -f "${CONFIG_PATH}" ] && [ -n "${WEBUI_TOKEN}" ]; then
+ echo "正在配置 WebUI Token..."
+ cat > "${CONFIG_PATH}" << EOF
{
- "http": {
- "enable": ${HTTP_ENABLE},
- "host": "$HTTP_HOST",
- "port": ${HTTP_PORT},
- "secret": "$HTTP_SECRET",
- "enableHeart": ${HTTP_HEART_ENABLE},
- "enablePost": ${HTTP_POST_ENABLE},
- "postUrls": $HTTP_URLS
- },
- "ws": {
- "enable": ${WS_ENABLE},
- "host": "${WS_HOST}",
- "port": ${WS_PORT}
- },
- "reverseWs": {
- "enable": ${WSR_ENABLE},
- "urls": $WS_URLS
- },
- "GroupLocalTime":{
- "Record": false,
- "RecordList": []
- },
- "debug": ${DEBUG_ENABLE},
- "heartInterval": ${HEART_INTERVAL},
- "messagePostFormat": "$MESSAGE_POST_FORMAT",
- "enableLocalFile2Url": ${F2U_ENABLE},
- "musicSignUrl": "$MUSIC_SIGN_URL",
- "reportSelfMessage": ${RSM_ENABLE},
- "token": "$TOKEN"
+ "host": "0.0.0.0",
+ "prefix": "",
+ "port": 6099,
+ "token": "${WEBUI_TOKEN}",
+ "loginRate": 3
}
EOF
fi
+
+
rm -rf "/tmp/.X1-lock"
+: ${NAPCAT_GID:=0}
+: ${NAPCAT_UID:=0}
usermod -o -u ${NAPCAT_UID} napcat
groupmod -o -g ${NAPCAT_GID} napcat
usermod -g ${NAPCAT_GID} napcat
@@ -102,4 +43,5 @@ sleep 2
export FFMPEG_PATH=/usr/bin/ffmpeg
export DISPLAY=:1
cd /app/napcat
+ACCOUNT=$(ls /app/napcat/config/ | grep -oE '[1-9][0-9]{4,12}' | head -n 1)
gosu napcat /opt/QQ/qq --no-sandbox -q $ACCOUNT