diff --git a/README.md b/README.md
index 43daa6a..56af828 100644
--- a/README.md
+++ b/README.md
@@ -4,20 +4,20 @@
# 目录
-- [更新信息](README.md#更新信息)
-- [项目特点](README.md#项目特点)
-- [Sing-box for VPS 运行脚本](README.md#sing-box-for-vps-运行脚本)
-- [无交互极速安装](README.md#无交互极速安装)
-- [Vmess / Vless 方案设置任意端口回源以使用 cdn](README.md#vmess--lless-方案设置任意端口回源以使用-cdn)
-- [Docker 和 Docker compose 安装](README.md#docker-和-docker-compose-安装)
-- [Nekobox 设置 shadowTLS 方法](README.md#nekobox-设置-shadowtls-方法)
-- [主体目录文件及说明](README.md#主体目录文件及说明)
-- [鸣谢下列作者的文章和项目](README.md#鸣谢下列作者的文章和项目)
-- [免责声明](README.md#免责声明)
+- [1.更新信息](README.md#1更新信息)
+- [2.项目特点](README.md#2项目特点)
+- [3.Sing-box for VPS 运行脚本](README.md#3sing-box-for-vps-运行脚本)
+- [4.无交互极速安装](README.md#4无交互极速安装)
+- [5.Vmess / Vless 方案设置任意端口回源以使用 cdn](README.md#5vmess--vless-方案设置任意端口回源以使用-cdn)
+- [6.Docker 和 Docker compose 安装](README.md#6docker-和-docker-compose-安装)
+- [7.Nekobox 设置 shadowTLS 方法](README.md#7nekobox-设置-shadowtls-方法)
+- [8.主体目录文件及说明](README.md#8主体目录文件及说明)
+- [9.鸣谢下列作者的文章和项目](README.md#9鸣谢下列作者的文章和项目)
+- [10.免责声明](README.md#10免责声明)
* * *
-## 更新信息
+## 1.更新信息
2024.04.01 sing-box + argo container version is newly launched, for details: https://github.com/fscarmen/sing-box/blob/main/README.md; sing-box 全家桶 + argo 容器版本全新上线,详细参考: https://github.com/fscarmen/sing-box/blob/main/README.md
2024.03.27 v1.1.11 Add two non-interactive installation modes: 1. pass parameter; 2.kv file, for details: https://github.com/fscarmen/sing-box/blob/main/README.md; 增加两个的无交互安装模式: 1. 传参;2.kv 文件,详细参考: https://github.com/fscarmen/sing-box/blob/main/README.md
@@ -68,7 +68,7 @@
-## 项目特点:
+## 2.项目特点:
* 一键部署多协议,可以单选、多选或全选 ShadowTLS v3 / XTLS Reality / Hysteria2 / Tuic V5 / ShadowSocks / Trojan / Vmess + ws / Vless + ws + tls / H2 Reality / gRPC Reality, 总有一款适合你
* 节点信息输出到 V2rayN / Clash Meta / 小火箭 / Nekobox / Sing-box (SFI, SFA, SFM),订阅自动适配客户端,一个订阅 url 走天下
@@ -80,7 +80,7 @@
* 无交互极速安排模式: 一个回车完成超 10 个协议的安装
-## Sing-box for VPS 运行脚本:
+## 3.Sing-box for VPS 运行脚本:
* 首次运行
```
@@ -105,7 +105,7 @@ sb
| -r | Add and remove protocols 添加和删除协议 |
-## 无交互极速安装:
+## 4.无交互极速安装:
### 方式1. KV 配置文件,内容参照本库里的 config
```
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh) -f config
@@ -141,7 +141,7 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b
| --NODE_NAME_CONFIRM | 节点名 |
-## Vmess / Vless 方案设置任意端口回源以使用 cdn
+## 5.Vmess / Vless 方案设置任意端口回源以使用 cdn
举例子 IPv6: vmess [2a01:4f8:272:3ae6:100b:ee7a:ad2f:1]:10006
@@ -152,28 +152,13 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b
-## Docker 和 Docker compose 安装
+## 6.Docker 和 Docker compose 安装
### 说明:
* 支持三种 Argo 类型隧道: 临时 (不需要域名) / Json / Token
* 需要20个连续可用的端口,以 `START_PORT` 开始第一个
-### 用户可以通过 Cloudflare Json 生成网轻松获取: https://fscarmen.cloudflare.now.cc
-
-
-
-如想手动,可以参考,以 Debian 为例,需要用到的命令,[Deron Cheng - CloudFlare Argo Tunnel 试用](https://zhengweidong.com/try-cloudflare-argo-tunnel)
-
-
-### Argo Token 的获取
-
-详细教程: [群晖套件:Cloudflare Tunnel 内网穿透中文教程 支持DSM6、7](https://imnks.com/5984.html)
-
-
-
-
-
### Docker 部署
```
@@ -206,12 +191,17 @@ docker run -dit \
### Docker Compose 部署
```
version: '3.8'
+networks:
+ sing-box:
+ name: sing-box
services:
sing-box:
image: fscarmen/sb
pull_policy: always
container_name: sing-box
restart: always
+ networks:
+ - sing-box
ports:
- "8000-8020:8800-8820/tcp"
- "8000-8020:8800-8820/udp"
@@ -235,10 +225,34 @@ services:
- ARGO_AUTH=eyJhIjoiOWNjOWUzZTRkOGYyOWQyYTAyZTI5N2YxNGYyMDUxM2EiLCJ0IjoiOGNiZDA4ZjItNGM0MC00OGY1LTlmZDYtZjlmMWQ0YTcxMjUyIiwicyI6IllXWTFORGN4TW1ZdE5HTXdZUzAwT0RaakxUbGxNMkl0Wm1VMk5URTFOR0l4TkdKayJ9
```
-### 更新 Sing-box 版本
-```
-docker exec -it sing-box bash init.sh -v
-```
+
+### 常用指令
+| 功能 | 指令 |
+| ---- | ---- |
+| 查看节点信息 | `docker exec -it sing-box cat list` |
+| 查看容器日志 | `docker logs -f sing-box` |
+| 更新 Sing-box 版本 | `docker exec -it sing-box bash init.sh -v` |
+| 查看容器内存,CPU,网络等资源使用情况 | `docker stats sing-box` |
+| 暂停容器 | docker: `docker stop sing-box` compose: `docker-compose stop` |
+| 停止并删除容器 | docker: `docker rm -f sing-box` compose: `docker-compose down` |
+| 删除镜像 | `docker rmi -f fscarmen/sb:latest` |
+
+
+### 用户可以通过 Cloudflare Json 生成网轻松获取: https://fscarmen.cloudflare.now.cc
+
+
+
+如想手动,可以参考,以 Debian 为例,需要用到的命令,[Deron Cheng - CloudFlare Argo Tunnel 试用](https://zhengweidong.com/try-cloudflare-argo-tunnel)
+
+
+### Argo Token 的获取
+
+详细教程: [群晖套件:Cloudflare Tunnel 内网穿透中文教程 支持DSM6、7](https://imnks.com/5984.html)
+
+
+
+
+
### 参数说明
| 参数 | 是否必须 | 说明 |
@@ -263,7 +277,8 @@ docker exec -it sing-box bash init.sh -v
| -e ARGO_DOMAIN | 否 | Argo 固定隧道域名 , 与 ARGO_DOMAIN 一并使用才能生效 |
| -e ARGO_AUTH | 否 | Argo 认证信息,可以是 Json 也可以是 Token,与 ARGO_DOMAIN 一并使用才能生效,不指定的话将使用临时隧道 |
-## Nekobox 设置 shadowTLS 方法
+
+## 7.Nekobox 设置 shadowTLS 方法
1. 复制脚本输出的两个 Neko links 进去
@@ -275,7 +290,7 @@ docker exec -it sing-box bash init.sh -v
-## 主体目录文件及说明
+## 8.主体目录文件及说明
```
/etc/sing-box/ # 项目主体目录
@@ -322,11 +337,11 @@ docker exec -it sing-box bash init.sh -v
```
-## 鸣谢下列作者的文章和项目:
+## 9.鸣谢下列作者的文章和项目:
千歌 sing-box 模板: https://github.com/chika0801/sing-box-examples
瞎折腾 sing-box 模板: https://t.me/ztvps/100
-## 免责声明:
+## 10.免责声明:
* 本程序仅供学习了解, 非盈利目的,请于下载后 24 小时内删除, 不得用作任何商业用途, 文字、数据及图片均有所属版权, 如转载须注明来源。
* 使用本程序必循遵守部署免责声明。使用本程序必循遵守部署服务器所在地、所在国家和用户所在国家的法律法规, 程序作者不对使用者任何不当行为负责。
\ No newline at end of file
diff --git a/sing-box.sh b/sing-box.sh
index 62de34f..e67d6ce 100644
--- a/sing-box.sh
+++ b/sing-box.sh
@@ -14,7 +14,7 @@ TLS_SERVER_DEFAULT=addons.mozilla.org
PROTOCOL_LIST=("XTLS + reality" "hysteria2" "tuic" "ShadowTLS" "shadowsocks" "trojan" "vmess + ws" "vless + ws + tls" "H2 + reality" "gRPC + reality")
NODE_TAG=("xtls-reality" "hysteria2" "tuic" "ShadowTLS" "shadowsocks" "trojan" "vmess-ws" "vless-ws-tls" "h2-reality" "grpc-reality")
CONSECUTIVE_PORTS=${#PROTOCOL_LIST[@]}
-CDN_DOMAIN=("cn.azhz.eu.org" "www.who.int" "skk.moe" "time.cloudflare.com" "csgo.com")
+CDN_DOMAIN=("cn.azhz.eu.org" "visa.com" "skk.moe" "time.cloudflare.com" "csgo.com")
SUBSCRIBE_TEMPLATE="https://raw.githubusercontent.com/fscarmen/client_template/main"
trap "rm -rf $TEMP_DIR >/dev/null 2>&1 ; echo -e '\n' ;exit 1" INT QUIT TERM EXIT
@@ -569,8 +569,7 @@ check_dependencies() {
if [ "${#DEPS_ALPINE[@]}" -ge 1 ]; then
info "\n $(text 7) $(sed "s/ /,&/g" <<< ${DEPS_ALPINE[@]}) \n"
${PACKAGE_UPDATE[int]} >/dev/null 2>&1
- ${PACKAGE_INSTALL[int]} >/dev/null 2>&1
- ${DEPS_ALPINE[@]} >/dev/null 2>&1
+ ${PACKAGE_INSTALL[int]} ${DEPS_ALPINE[@]} >/dev/null 2>&1
[[ -z "$VIRT" && "${DEPS_ALPINE[@]}" =~ 'virt-what' ]] && VIRT=$(virt-what)
fi
@@ -1497,7 +1496,7 @@ export_list() {
CLASH2_YAML=$(wget --no-check-certificate -qO- --tries=3 --timeout=2 ${GH_PROXY}${SUBSCRIBE_TEMPLATE}/clash2)
for x in ${!CLASH2_PORT[@]}; do
- [[ ${CLASH2_PORT[x]} =~ [0-9]+ ]] && CLASH2_YAML=$(sed "/proxy-groups:/i\ ${CLASH2_PROXY_INSERT[x]}" <<< "$CLASH2_YAML" >/dev/null 2>&1) && CLASH2_YAML=$(sed -E "/- name: (♻️ 自动选择|📲 电报消息|💬 OpenAi|📹 油管视频|🎥 奈飞视频|📺 巴哈姆特|📺 哔哩哔哩|🌍 国外媒体|🌏 国内媒体|📢 谷歌FCM|Ⓜ️ 微软Bing|Ⓜ️ 微软云盘|Ⓜ️ 微软服务|🍎 苹果服务|🎮 游戏平台|🎶 网易音乐|🎯 全球直连)|^rules:$/i\ ${CLASH2_PROXY_GROUPS_INSERT[x]}" <<< "$CLASH2_YAML" >/dev/null 2>&1)
+ [[ ${CLASH2_PORT[x]} =~ [0-9]+ ]] && CLASH2_YAML=$(sed "/proxy-groups:/i\ ${CLASH2_PROXY_INSERT[x]}" <<< "$CLASH2_YAML") && CLASH2_YAML=$(sed -E "/- name: (♻️ 自动选择|📲 电报消息|💬 OpenAi|📹 油管视频|🎥 奈飞视频|📺 巴哈姆特|📺 哔哩哔哩|🌍 国外媒体|🌏 国内媒体|📢 谷歌FCM|Ⓜ️ 微软Bing|Ⓜ️ 微软云盘|Ⓜ️ 微软服务|🍎 苹果服务|🎮 游戏平台|🎶 网易音乐|🎯 全球直连)|^rules:$/i\ ${CLASH2_PROXY_GROUPS_INSERT[x]}" <<< "$CLASH2_YAML")
done
echo "$CLASH2_YAML" > $WORK_DIR/subscribe/clash2
@@ -1703,16 +1702,12 @@ vless://${UUID[20]}@${SERVER_IP_1}:${PORT_GRPC_REALITY}?security=reality&sni=${T
[ -n "$PORT_TUIC" ] &&
local TUIC_INBOUND=" { \"type\": \"tuic\", \"tag\": \"${NODE_NAME[13]} ${NODE_TAG[2]}\", \"server\": \"${SERVER_IP}\", \"server_port\": ${PORT_TUIC}, \"uuid\": \"${UUID[13]}\", \"password\": \"${TUIC_PASSWORD}\", \"congestion_control\": \"$TUIC_CONGESTION_CONTROL\", \"udp_relay_mode\": \"native\", \"zero_rtt_handshake\": false, \"heartbeat\": \"10s\", \"tls\": { \"enabled\": true, \"insecure\": true, \"server_name\": \"\", \"alpn\": [ \"h3\" ] } }," &&
local INBOUND_REPLACE+="${TUIC_INBOUND}" &&
- local NODE_REPLACE+="\"${NODE_NAME[13]} ${NODE_TAG[2]}\"," &&
- local INBOUND_INSERT+="${TUIC_INBOUND}" &&
- local NODE_INSERT+=", \"${NODE_NAME[13]} ${NODE_TAG[2]}\""
+ local NODE_REPLACE+="\"${NODE_NAME[13]} ${NODE_TAG[2]}\","
[ -n "$PORT_SHADOWTLS" ] &&
local SHADOWTLS_INBOUND=" { \"type\": \"shadowsocks\", \"tag\": \"${NODE_NAME[14]} ${NODE_TAG[3]}\", \"method\": \"$SHADOWTLS_METHOD\", \"password\": \"$SHADOWTLS_PASSWORD\", \"detour\": \"shadowtls-out\", \"udp_over_tcp\": false, \"multiplex\": { \"enabled\": true, \"protocol\": \"h2mux\", \"max_connections\": 8, \"min_streams\": 16, \"padding\": true, \"brutal\":{ \"enabled\":true, \"up_mbps\":1000, \"down_mbps\":1000 } } }, { \"type\": \"shadowtls\", \"tag\": \"shadowtls-out\", \"server\": \"${SERVER_IP}\", \"server_port\": ${PORT_SHADOWTLS}, \"version\": 3, \"password\": \"${UUID[14]}\", \"tls\": { \"enabled\": true, \"server_name\": \"${TLS_SERVER[14]}\", \"utls\": { \"enabled\": true, \"fingerprint\": \"chrome\" } } }," &&
local INBOUND_REPLACE+="${SHADOWTLS_INBOUND}" &&
- local NODE_REPLACE+="\"${NODE_NAME[14]} ${NODE_TAG[3]}\"," &&
- local INBOUND_INSERT+="${SHADOWTLS_INBOUND}" &&
- local NODE_INSERT+=", \"${NODE_NAME[14]} ${NODE_TAG[3]}\""
+ local NODE_REPLACE+="\"${NODE_NAME[14]} ${NODE_TAG[3]}\","
[ -n "$PORT_SHADOWSOCKS" ] &&
local INBOUND_REPLACE+=" { \"type\": \"shadowsocks\", \"tag\": \"${NODE_NAME[15]} ${NODE_TAG[4]}\", \"server\": \"${SERVER_IP}\", \"server_port\": $PORT_SHADOWSOCKS, \"method\": \"${SHADOWSOCKS_METHOD}\", \"password\": \"${UUID[15]}\", \"multiplex\": { \"enabled\": true, \"protocol\": \"h2mux\", \"max_connections\": 8, \"min_streams\": 16, \"padding\": true, \"brutal\":{ \"enabled\":true, \"up_mbps\":1000, \"down_mbps\":1000 } } }," &&
@@ -1743,9 +1738,7 @@ vless://${UUID[20]}@${SERVER_IP_1}:${PORT_GRPC_REALITY}?security=reality&sni=${T
local REALITY_H2_INBOUND=" { \"type\": \"vless\", \"tag\": \"${NODE_NAME[19]} ${NODE_TAG[8]}\", \"server\": \"${SERVER_IP}\", \"server_port\": ${PORT_H2_REALITY}, \"uuid\":\"${UUID[19]}\", \"tls\": { \"enabled\":true, \"server_name\":\"${TLS_SERVER[19]}\", \"utls\": { \"enabled\":true, \"fingerprint\":\"chrome\" }, \"reality\":{ \"enabled\":true, \"public_key\":\"${REALITY_PUBLIC[19]}\", \"short_id\":\"\" } }, \"packet_encoding\": \"xudp\", \"transport\": { \"type\": \"http\" } }," &&
local REALITY_H2_NODE="\"${NODE_NAME[19]} ${NODE_TAG[8]}\"" &&
local NODE_REPLACE+="${REALITY_H2_NODE}," &&
- local INBOUND_REPLACE+=" ${REALITY_H2_INBOUND}" &&
- local INBOUND_INSERT+=" ${REALITY_H2_INBOUND}" &&
- local NODE_INSERT+=", ${REALITY_H2_NODE}"
+ local INBOUND_REPLACE+=" ${REALITY_H2_INBOUND}"
[ -n "$PORT_GRPC_REALITY" ] &&
local INBOUND_REPLACE+=" { \"type\": \"vless\", \"tag\": \"${NODE_NAME[20]} ${NODE_TAG[9]}\", \"server\": \"${SERVER_IP}\", \"server_port\": ${PORT_GRPC_REALITY}, \"uuid\":\"${UUID[20]}\", \"tls\": { \"enabled\":true, \"server_name\":\"${TLS_SERVER[20]}\", \"utls\": { \"enabled\":true, \"fingerprint\":\"chrome\" }, \"reality\":{ \"enabled\":true, \"public_key\":\"${REALITY_PUBLIC[20]}\", \"short_id\":\"\" } }, \"packet_encoding\": \"xudp\", \"transport\": { \"type\": \"grpc\", \"service_name\": \"grpc\" } }," &&
@@ -2172,9 +2165,9 @@ version() {
if [ -s $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box ]; then
cmd_systemctl disable sing-box
chmod +x $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box && mv $TEMP_DIR/sing-box-$ONLINE-linux-$SING_BOX_ARCH/sing-box $WORK_DIR/sing-box
- systemctl enable sing-box && sleep 2 && [ "$(systemctl is-active sing-box)" = 'active' ] && info " Sing-box $(text 28) $(text 37)" || error "Sing-box $(text 28) $(text 38) "
+ cmd_systemctl enable sing-box && sleep 2 && [ "$(systemctl is-active sing-box)" = 'active' ] && info "\n Sing-box $(text 28) $(text 37) \n" || error "\n Sing-box $(text 28) $(text 38) \n"
else
- local error "\n $(text 42) "
+ error "\n $(text 42) "
fi
fi
}