From 23743ae6a5db19450f27eda1761d79d087ca3d14 Mon Sep 17 00:00:00 2001 From: fscarmen <62703343+fscarmen@users.noreply.github.com> Date: Tue, 2 Apr 2024 17:53:56 +0000 Subject: [PATCH] Fix some bugs. --- README.md | 93 +++++++++++++++++++++++++++++++---------------------- sing-box.sh | 23 +++++-------- 2 files changed, 62 insertions(+), 54 deletions(-) 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 image @@ -152,28 +152,13 @@ bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-b image -## Docker 和 Docker compose 安装 +## 6.Docker 和 Docker compose 安装 ### 说明: * 支持三种 Argo 类型隧道: 临时 (不需要域名) / Json / Token * 需要20个连续可用的端口,以 `START_PORT` 开始第一个 -### 用户可以通过 Cloudflare Json 生成网轻松获取: https://fscarmen.cloudflare.now.cc - -image - -如想手动,可以参考,以 Debian 为例,需要用到的命令,[Deron Cheng - CloudFlare Argo Tunnel 试用](https://zhengweidong.com/try-cloudflare-argo-tunnel) - - -### Argo Token 的获取 - -详细教程: [群晖套件:Cloudflare Tunnel 内网穿透中文教程 支持DSM6、7](https://imnks.com/5984.html) - -image - -image - ### 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 + +image + +如想手动,可以参考,以 Debian 为例,需要用到的命令,[Deron Cheng - CloudFlare Argo Tunnel 试用](https://zhengweidong.com/try-cloudflare-argo-tunnel) + + +### Argo Token 的获取 + +详细教程: [群晖套件:Cloudflare Tunnel 内网穿透中文教程 支持DSM6、7](https://imnks.com/5984.html) + +image + +image + ### 参数说明 | 参数 | 是否必须 | 说明 | @@ -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 进去 image @@ -275,7 +290,7 @@ docker exec -it sing-box bash init.sh -v image -## 主体目录文件及说明 +## 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 }