Giter Site home page Giter Site logo

Comments (7)

fscarmen avatar fscarmen commented on June 26, 2024

脚本照计在alpine里会安装并使用 virt-what 替代 systemd-detect-virt ,不清楚为什么会出问题,你这样运行看看

wget -O sing-box.sh https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh; sed -i '/clear/d' sing-box.sh; bash -x sing-box.sh

去到这个报错那里,把运行里的日志复制出来看看。

from sing-box.

Gaslys avatar Gaslys commented on June 26, 2024

Varane:~# wget -O sing-box.sh https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh; sed -i '/clear/d' sing-box.sh; bash -x sing-box.sh
--2024-05-15 09:55:00-- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 2606:50c0:8000::154, 2606:50c0:8001::154, 2606:50c0:8002::154, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8000::154|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 155254 (152K) [text/plain]
Saving to: 'sing-box.sh'

sing-box.sh 100%[===============================>] 151.62K --.-KB/s in 0.002s

2024-05-15 09:55:00 (87.5 MB/s) - 'sing-box.sh' saved [155254/155254]

  • VERSION='v1.2.4 (2024.05.09)'
  • GH_PROXY=https://ghproxy.agrayman.gay/
  • TEMP_DIR=/tmp/sing-box
  • WORK_DIR=/etc/sing-box
  • START_PORT_DEFAULT=8881
  • MIN_PORT=100
  • MAX_PORT=65520
  • MIN_HOPPING_PORT=10000
  • MAX_HOPPING_PORT=65535
  • 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=10
  • CDN_DOMAIN=("cn.azhz.eu.org" "acjp.cloudflarest.link" "xn--b6gac.eu.org" "dash.cloudflare.com" "skk.moe" "visa.com")
  • SUBSCRIBE_TEMPLATE=https://raw.githubusercontent.com/fscarmen/client_template/main
  • export DEBIAN_FRONTEND=noninteractive
  • DEBIAN_FRONTEND=noninteractive
  • trap 'rm -rf /tmp/sing-box >/dev/null 2>&1 ; echo -e '''\n''' ;exit 1' INT QUIT TERM EXIT
  • mkdir -p /tmp/sing-box
  • E[0]='Language:\n 1. English (default) \n 2. 简体中文'
  • C[0]='Language:\n 1. English (default) \n 2. 简体中文'
  • E[1]='Add hysteria2 port hopping. Supported Clients: ShadowRocket / NekoBox / Clash'
  • C[1]='添加 hysteria2 的跳跃端口,支持客户端: ShadowRocket / NekoBox / Clash'
  • E[2]='Downloading Sing-box. Please wait a seconds ...'
  • C[2]='下载 Sing-box 中,请稍等 ...'
  • E[3]='Input errors up to 5 times.The script is aborted.'
  • C[3]=输入错误达5次,脚本退出
  • E[4]='UUID should be 36 characters, please re-enter (${UUID_ERROR_TIME} times remaining):'
  • C[4]='UUID 应为36位字符,请重新输入 (剩余${UUID_ERROR_TIME}次):'
  • E[5]='The script supports Debian, Ubuntu, CentOS, Alpine, Fedora or Arch systems only. Feedback: [https://github.com/fscarmen/sing-box/issues]'
  • C[5]='本脚本只支持 Debian、Ubuntu、CentOS、Alpine、Fedora 或 Arch 系统,问题反馈:[https://github.com/fscarmen/sing-box/issues]'
  • E[6]='Curren operating system is $SYS.\n The system lower than $SYSTEM ${MAJOR[int]} is not supported. Feedback: [https://github.com/fscarmen/sing-box/issues]'
  • C[6]='当前操作是 $SYS\n 不支持 $SYSTEM ${MAJOR[int]} 以下系统,问题反馈:[https://github.com/fscarmen/sing-box/issues]'
  • E[7]='Install dependence-list:'
  • C[7]=安装依赖列表:
  • E[8]='All dependencies already exist and do not need to be installed additionally.'
  • C[8]=所有依赖已存在,不需要额外安装
  • E[9]='To upgrade, press [y]. No upgrade by default:'
  • C[9]='升级请按 [y],默认不升级:'
  • E[10]='(4/6) Please enter VPS IP (Default is: ${SERVER_IP_DEFAULT}):'
  • C[10]='(4/6) 请输入 VPS IP (默认为: ${SERVER_IP_DEFAULT}):'
  • E[11]='(2/6) Please enter the starting port number. Must be ${MIN_PORT} - ${MAX_PORT}, consecutive ${NUM} free ports are required (Default is: ${START_PORT_DEFAULT}):'
  • C[11]='(2/6) 请输入开始的端口号,必须是 ${MIN_PORT} - ${MAX_PORT},需要连续${NUM}个空闲的端口 (默认为: ${START_PORT_DEFAULT}):'
  • E[12]='(5/6) Please enter UUID (Default is ${UUID_DEFAULT}):'
  • C[12]='(5/6) 请输入 UUID (默认为 ${UUID_DEFAULT}):'
  • E[13]='(6/6) Please enter the node name. (Default is ${NODE_NAME_DEFAULT}):'
  • C[13]='(6/6) 请输入节点名称 (默认为: ${NODE_NAME_DEFAULT}):'
  • E[14]='Node name only allow uppercase and lowercase letters and numeric characters, please re-enter (${a} times remaining):'
  • C[14]='节点名称只允许英文大小写及数字字符,请重新输入 (剩余${a}次):'
  • E[15]='Sing-box script has not been installed yet.'
  • C[15]='Sing-box 脚本还没有安装'
  • E[16]='Sing-box is completely uninstalled.'
  • C[16]='Sing-box 已彻底卸载'
  • E[17]=Version
  • C[17]=脚本版本
  • E[18]='New features'
  • C[18]=功能新增
  • E[19]='System infomation'
  • C[19]=系统信息
  • E[20]='Operating System'
  • C[20]=当前操作系统
  • E[21]=Kernel
  • C[21]=内核
  • E[22]=Architecture
  • C[22]=处理器架构
  • E[23]=Virtualization
  • C[23]=虚拟化
  • E[24]=Choose:
  • C[24]=请选择:
  • E[25]='Curren architecture $(uname -m) is not supported. Feedback: [https://github.com/fscarmen/sing-box/issues]'
  • C[25]='当前架构 $(uname -m) 暂不支持,问题反馈:[https://github.com/fscarmen/sing-box/issues]'
  • E[26]='Not install'
  • C[26]=未安装
  • E[27]=close
  • C[27]=关闭
  • E[28]=open
  • C[28]=开启
  • E[29]='View links (sb -n)'
  • C[29]='查看节点信息 (sb -n)'
  • E[30]='Change listen ports (sb -p)'
  • C[30]='更换监听端口 (sb -p)'
  • E[31]='Sync Sing-box to the latest version (sb -v)'
  • C[31]='同步 Sing-box 至最新版本 (sb -v)'
  • E[32]='Upgrade kernel, turn on BBR, change Linux system (sb -b)'
  • C[32]='升级内核、安装BBR、DD脚本 (sb -b)'
  • E[33]='Uninstall (sb -u)'
  • C[33]='卸载 (sb -u)'
  • E[34]='Install Sing-box'
  • C[34]='安装 Sing-box'
  • E[35]=Exit
  • C[35]=退出
  • E[36]='Please enter the correct number'
  • C[36]=请输入正确数字
  • E[37]=successful
  • C[37]=成功
  • E[38]=failed
  • C[38]=失败
  • E[39]='Sing-box is not installed and cannot change the Argo tunnel.'
  • C[39]='Sing-box 未安装,不能更换 Argo 隧道'
  • E[40]='Sing-box local verion: $LOCAL\t The newest verion: $ONLINE'
  • C[40]='Sing-box 本地版本: $LOCAL\t 最新版本: $ONLINE'
  • E[41]='No upgrade required.'
  • C[41]=不需要升级
  • E[42]='Downloading the latest version Sing-box failed, script exits. Feedback:[https://github.com/fscarmen/sing-box/issues]'
  • C[42]='下载最新版本 Sing-box 失败,脚本退出,问题反馈:[https://github.com/fscarmen/sing-box/issues]'
  • E[43]='The script must be run as root, you can enter sudo -i and then download and run again. Feedback:[https://github.com/fscarmen/sing-box/issues]'
  • C[43]='必须以root方式运行脚本,可以输入 sudo -i 后重新下载运行,问题反馈:[https://github.com/fscarmen/sing-box/issues]'
  • E[44]='Ports are in used: ${IN_USED[*]}'
  • C[44]='正在使用中的端口: ${IN_USED[*]}'
  • E[45]='Ports used: ${NOW_START_PORT} - $((NOW_START_PORT+NOW_CONSECUTIVE_PORTS-1))'
  • C[45]='使用端口: ${NOW_START_PORT} - $((NOW_START_PORT+NOW_CONSECUTIVE_PORTS-1))'
  • E[46]='Warp / warp-go was detected to be running. Please enter the correct server IP:'
  • C[46]='检测到 warp / warp-go 正在运行,请输入确认的服务器 IP:'
  • E[47]='No server ip, script exits. Feedback:[https://github.com/fscarmen/sing-box/issues]'
  • C[47]='没有 server ip,脚本退出,问题反馈:[https://github.com/fscarmen/sing-box/issues]'
  • E[48]='ShadowTLS - Copy the above two Neko links and manually set up the chained proxies in order. Tutorial: https://github.com/fscarmen/sing-box/blob/main/README.md#sekobox-%E8%AE%BE%E7%BD%AE-shadowtls-%E6%96%B9%E6%B3%95'
  • C[48]='ShadowTLS - 复制上面两条 Neko links 进去,并按顺序手动设置链式代理,详细教程: https://github.com/fscarmen/sing-box/blob/main/README.md#sekobox-%E8%AE%BE%E7%BD%AE-shadowtls-%E6%96%B9%E6%B3%95'
  • E[49]='(1/6) Select more protocols to install (e.g. hgbd). The order of the port numbers of the protocols is related to the ordering of the multiple choices:\n a. all (default)'
  • C[49]='(1/6) 多选需要安装协议(比如 hgbd),协议的端口号次序与多选的排序有关:\n a. all (默认)'
  • E[50]='Please enter the $TYPE domain name:'
  • C[50]='请输入 $TYPE 域名:'
  • E[51]='Please choose or custom a cdn, http support is required:'
  • C[51]='请选择或输入 cdn,要求支持 http:'
  • E[52]='Please set the ip [${WS_SERVER_IP_SHOW}] to domain [${TYPE_HOST_DOMAIN}], and set the origin rule to [${TYPE_PORT_WS}] in Cloudflare.'
  • C[52]='请在 Cloudflare 绑定 [${WS_SERVER_IP_SHOW}] 的域名为 [${TYPE_HOST_DOMAIN}], 并设置 origin rule 为 [${TYPE_PORT_WS}]'
  • E[53]='Please select or enter the preferred domain, the default is ${CDN_DOMAIN[0]}:'
  • C[53]='请选择或者填入优选域名,默认为 ${CDN_DOMAIN[0]}:'
  • E[54]='The contents of the ShadowTLS configuration file need to be updated for the sing_box kernel.'
  • C[54]='ShadowTLS 配置文件内容,需要更新 sing_box 内核'
  • E[55]='The script runs today: $TODAY. Total: $TOTAL'
  • C[55]='脚本当天运行次数: $TODAY,累计运行次数: $TOTAL'
  • E[56]='Process ID'
  • C[56]=进程ID
  • E[57]='Selecting the ws return method:\n 1. Argo (default)\n 2. Origin rules'
  • C[57]='选择 ws 的回源方式:\n 1. Argo (默认)\n 2. Origin rules'
  • E[58]='Memory Usage'
  • C[58]=内存占用
  • E[59]='Install ArgoX scripts (argo + xray) [https://github.com/fscarmen/argox]'
  • C[59]='安装 ArgoX 脚本 (argo + xray) [https://github.com/fscarmen/argox]'
  • E[60]='The order of the selected protocols and ports is as follows:'
  • C[60]=选择的协议及端口次序如下:
  • E[61]='There are no replaceable Argo tunnels.'
  • C[61]='没有可更换的Argo 隧道'
  • E[62]='Add / Remove protocols (sb -r)'
  • C[62]='增加 / 删除协议 (sb -r)'
  • E[63]='(1/3) Installed protocols.'
  • C[63]='(1/3) 已安装的协议'
  • E[64]='Please select the protocols to be removed (multiple selections possible):'
  • C[64]=请选择需要删除的协议(可以多选):
  • E[65]='(2/3) Uninstalled protocols.'
  • C[65]='(2/3) 未安装的协议'
  • E[66]='Please select the protocols to be added (multiple choices possible):'
  • C[66]=请选择需要增加的协议(可以多选):
  • E[67]='(3/3) Confirm all protocols for reloading.'
  • C[67]='(3/3) 确认重装的所有协议'
  • E[68]='Press [n] if there is an error, other keys to continue:'
  • C[68]='如有错误请按 [n],其他键继续:'
  • E[69]='Install sba scripts (argo + sing-box) [https://github.com/fscarmen/sba]'
  • C[69]='安装 sba 脚本 (argo + sing-box) [https://github.com/fscarmen/sba]'
  • E[70]='Please set inSecure in tls to true.'
  • C[70]='请把 tls 里的 inSecure 设置为 true'
  • E[71]='Create shortcut [ sb ] successfully.'
  • C[71]='创建快捷 [ sb ] 指令成功!'
  • E[72]='Path to each client configuration file: /etc/sing-box/subscribe/\n The full template can be found at:\n https://t.me/ztvps/100\n https://github.com/chika0801/sing-box-examples/tree/main/Tun'
  • C[72]='各客户端配置文件路径: /etc/sing-box/subscribe/\n 完整模板可参照:\n https://t.me/ztvps/100\n https://github.com/chika0801/sing-box-examples/tree/main/Tun'
  • E[73]='There is no protocol left, if you are sure please re-run [ sb -u ] to uninstall all.'
  • C[73]='没有协议剩下,如确定请重新执行 [ sb -u ] 卸载所有'
  • E[74]='Keep protocols'
  • C[74]=保留协议
  • E[75]='Add protocols'
  • C[75]=新增协议
  • E[76]='Install TCP brutal'
  • C[76]='安装 TCP brutal'
  • E[77]='With sing-box installed, the script exits.'
  • C[77]='已安装 sing-box ,脚本退出'
  • E[78]='Parameter [ ] error, script exits.'
  • C[78]='[ ] 参数错误,脚本退出'
  • E[79]='(3/6) Please enter the port number of nginx. Must be ${MIN_PORT} - ${MAX_PORT} (Default is: ${PORT_NGINX_DEFAULT}):'
  • C[79]='(3/6) 请输入 nginx 端口号,必须是 ${MIN_PORT} - ${MAX_PORT} (默认为: ${PORT_NGINX_DEFAULT}):'
  • E[80]=subscribe
  • C[80]=订阅
  • E[81]='Adaptive Clash / V2rayN / NekoBox / ShadowRocket / SFI / SFA / SFM Clients'
  • C[81]='自适应 Clash / V2rayN / NekoBox / ShadowRocket / SFI / SFA / SFM 客户端'
  • E[82]=template
  • C[82]=模版
  • E[83]='To uninstall Nginx press [y], it is not uninstalled by default:'
  • C[83]='如要卸载 Nginx 请按 [y],默认不卸载:'
  • E[84]='Set SElinux: enforcing --> disabled'
  • C[84]='设置 SElinux: enforcing --> disabled'
  • E[85]='Please input Argo Token or Json ( User can easily obtain the json at https://fscarmen.cloudflare.now.cc ):'
  • C[85]='请输入 Argo Token 或者 Json ( 用户通过以下网站轻松获取 json: https://fscarmen.cloudflare.now.cc ):'
  • E[86]='Argo authentication message does not match the rules, neither Token nor Json, script exits. Feedback:[https://github.com/fscarmen/sba/issues]'
  • C[86]='Argo 认证信息不符合规则,既不是 Token,也是不是 Json,脚本退出,问题反馈:[https://github.com/fscarmen/sba/issues]'
  • E[87]='Please input the Argo domain (Default is temporary domain if left blank):'
  • C[87]='请输入 Argo 域名 (如果没有,可以跳过以使用 Argo 临时域名):'
  • E[88]='Please input the Argo domain (cannot be empty):'
  • C[88]='请输入 Argo 域名 (不能为空):'
  • E[89]='( Additional dependencies: nginx )'
  • C[89]='( 额外依赖: nginx )'
  • E[90]='Argo tunnel is: $ARGO_TYPE\n The domain is: $ARGO_DOMAIN'
  • C[90]='Argo 隧道类型为: $ARGO_TYPE\n 域名是: $ARGO_DOMAIN'
  • E[91]='Argo tunnel type:\n 1. Try\n 2. Token or Json'
  • C[91]='Argo 隧道类型:\n 1. Try\n 2. Token 或者 Json'
  • E[92]='Change the Argo tunnel (sb -t)'
  • C[92]='更换 Argo 隧道 (sb -t)'
  • E[93]='Can'''t get the temporary tunnel domain, script exits. Feedback:[https://github.com/fscarmen/sing-box/issues]'
  • C[93]='获取不到临时隧道的域名,脚本退出,问题反馈:[https://github.com/fscarmen/sing-box/issues]'
  • E[94]='Please bind [${ARGO_DOMAIN}] tunnel TYPE to HTTP and URL to [\localhost:${PORT_NGINX}] in Cloudflare.'
  • C[94]='请在 Cloudflare 绑定 [${ARGO_DOMAIN}] 隧道 TYPE 为 HTTP,URL 为 [\localhost:${PORT_NGINX}]'
  • E[95]='netfilter-persistent installation failed, but the installation progress will not stop. portHopping forwarding rules are temporary rules, reboot may be invalidated.'
  • C[95]=netfilter-persistent安装失败,但安装进度不会停止。PortHopping转发规则为临时规则,重启可能失效
  • E[96]='netfilter-persistent is not started, PortHopping forwarding rules cannot be persisted. Reboot the system, the rules will be invalidated, please manually execute [netfilter-persistent save], continue the script does not affect the subsequent configuration.'
  • C[96]='netfilter-persistent未启动,PortHopping转发规则无法持久化,重启系统,规则将会失效,请手动执行 [netfilter-persistent save],继续运行脚本不影响后续配置'
  • E[97]='Port Hopping/Multiple Ports (Port Hopping) function needs to occupy multiple ports, please make sure that these ports are not listening to other services \n Tip1: The number of ports should not be too many, the recommended number is about 1000, the minimum value: 10000, the maximum value: 65535.\n Tip2: nat machines have a limited number of ports to listen on, usually 20-30. If setting ports out of the nat range will cause the node to not work, please use with caution!\n This function is not used by default.'
  • C[97]='端口跳跃/多端口(Port Hopping)功能需要占用多个端口,请保证这些端口没有监听其他服务\n Tip1: 端口选择数量不宜过多,推荐1000个左右,最小值:10000,最大值: 65535\n Tip2: nat 鸡由于可用于监听的端口有限,一般为20-30个。如设置了不开放的端口会导致节点不通,请慎用!\n 默认不使用该功能'
  • E[98]='Enter the port range, e.g. 50000:51000. Leave blank to disable:'
  • C[98]='请输入端口范围,例如 50000:51000,如要禁用请留空:'
  • E[99]='The ${SING_BOX_SCRIPT} is detected to be installed. Script exits.'
  • C[99]='检测到已安装 ${SING_BOX_SCRIPT},脚本退出!'
  • check_cdn
  • '[' -n https://ghproxy.agrayman.gay/ ']'
  • wget --server-response --quiet --output-document=/dev/null --no-check-certificate --tries=2 --timeout=3 https://raw.githubusercontent.com/fscarmen/sing-box/main/README.md
  • unset GH_PROXY
  • statistics_of_run-times
    ++ ++ wget --no-check-certificate -qO- --tries=2 --timeout=2 'https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh'
    grep -m1 -oE '[0-9]+[ ]+/[ ]+[0-9]+'
  • local 'COUNT=101 / 96630'
    ++ awk -F ' ' '{print $1}'
  • TODAY=101
    ++ awk -F ' ' '{print $3}'
  • TOTAL=96630
  • [[ '' =~ -E ]]
  • [[ '' =~ -C|-B ]]
  • select_language
  • '[' -z '' ']'
  • '[' -s /etc/sing-box/language ']'
  • L=E
    ++ text 0
    ++ grep -q '$'
    ++ eval echo '${E[0]}'
    +++ echo 'Language:\n' 1. English '(default)' '\n' 2. 简体中文
  • hint '\n Language:\n 1. English (default) \n 2. 简体中文 \n'
  • echo -e '\033[33m\033[01m\n Language:\n 1. English (default) \n 2. 简体中文 \n\033[0m'

Language:

  1. English (default)
  2. 简体中文

++ text 24
++ grep -q '$'
++ eval echo '${E[24]}'
+++ echo Choose:

  • reading ' Choose: ' LANGUAGE
    ++ info ' Choose: '
    ++ echo -e '\033[32m\033[01m Choose: \033[0m'
  • read -rp ' Choose: ' LANGUAGE
    Choose:

from sing-box.

fscarmen avatar fscarmen commented on June 26, 2024

未全啊,还没有显示你报错那里的

from sing-box.

Gaslys avatar Gaslys commented on June 26, 2024

+++ echo 'Language:\n' 1. English '(default)' '\n' 2. 简体中文

  • hint '\n Language:\n 1. English (default) \n 2. 简体中文 \n'
  • echo -e '\033[33m\033[01m\n Language:\n 1. English (default) \n 2. 简体中文 \n\033[0m'

Language:

  1. English (default)
  2. 简体中文

++ text 24
++ grep -q '$'
++ eval echo '${E[24]}'
+++ echo Choose:

  • reading ' Choose: ' LANGUAGE
    ++ info ' Choose: '
    ++ echo -e '\033[32m\033[01m Choose: \033[0m'
  • read -rp ' Choose: ' LANGUAGE
    Choose:
  • '[' '' = 2 ']'
  • check_system_info
    ++ type -p systemd-detect-virt
  • '[' -x ']'
    ++ systemd-detect-virt
    sing-box.sh: line 606: systemd-detect-virt: command not found
  • VIRT=
  • '[' -s /etc/os-release ']'
    ++ awk -F '"' 'tolower($0) ~ /pretty_name/{print $2}' /etc/os-release
  • SYS='Alpine Linux edge'
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • REGEX=("debian" "ubuntu" "centos|red hat|kernel|alma|rocky" "arch linux" "alpine" "fedora")
  • RELEASE=("Debian" "Ubuntu" "CentOS" "Arch" "Alpine" "Fedora")
  • EXCLUDE=("")
  • MAJOR=("9" "16" "7" "3" "" "37")
  • PACKAGE_UPDATE=("apt -y update" "apt -y update" "yum -y update --skip-broken" "pacman -Sy" "apk update -f" "dnf -y update")
  • PACKAGE_INSTALL=("apt -y install" "apt -y install" "yum -y install" "pacman -S --noconfirm" "apk add --no-cache" "dnf -y install")
  • PACKAGE_UNINSTALL=("apt -y autoremove" "apt -y autoremove" "yum -y autoremove" "pacman -Rcnsu --noconfirm" "apk del -f" "dnf -y autoremove")
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ debian ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ ubuntu ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ centos|red hat|kernel|alma|rocky ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ arch linux ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ alpine ]]
  • SYSTEM=Alpine
  • break
  • '[' -z Alpine ']'
  • for ex in "${EXCLUDE[@]}"
  • [[ ! {Alpine Linux edge,,} =~ '' ]]
  • '[' Alpine = CentOS ']'
  • ALL_PARAMETER=($(sed -E 's/(-c|-e|-C|-E) //; s/=([^"])/ \1/g; s/sudo cloudflared service install //' <<< $*))
    ++ sed -E 's/(-c|-e|-C|-E) //; s/=([^"])/ \1/g; s/sudo cloudflared service install //'
  • [[ 0 > 13 ]]
  • check_root
    ++ id -u
  • '[' 0 '!=' 0 ']'
  • check_arch
  • case "$(uname -m)" in
    ++ uname -m
    ++ awk -F : '/flags/{print $2; exit}' /proc/cpuinfo
  • [[ fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 arat =~ avx2 ]]
  • SING_BOX_ARCH=amd64v3
  • JQ_ARCH=amd64
  • QRENCODE_ARCH=amd64
  • ARGO_ARCH=amd64
  • check_system_info
    ++ type -p systemd-detect-virt
  • '[' -x ']'
    ++ systemd-detect-virt
    sing-box.sh: line 606: systemd-detect-virt: command not found
  • VIRT=
  • '[' -s /etc/os-release ']'
    ++ awk -F '"' 'tolower($0) ~ /pretty_name/{print $2}' /etc/os-release
  • SYS='Alpine Linux edge'
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • [[ -z Alpine Linux edge ]]
  • REGEX=("debian" "ubuntu" "centos|red hat|kernel|alma|rocky" "arch linux" "alpine" "fedora")
  • RELEASE=("Debian" "Ubuntu" "CentOS" "Arch" "Alpine" "Fedora")
  • EXCLUDE=("")
  • MAJOR=("9" "16" "7" "3" "" "37")
  • PACKAGE_UPDATE=("apt -y update" "apt -y update" "yum -y update --skip-broken" "pacman -Sy" "apk update -f" "dnf -y update")
  • PACKAGE_INSTALL=("apt -y install" "apt -y install" "yum -y install" "pacman -S --noconfirm" "apk add --no-cache" "dnf -y install")
  • PACKAGE_UNINSTALL=("apt -y autoremove" "apt -y autoremove" "yum -y autoremove" "pacman -Rcnsu --noconfirm" "apk del -f" "dnf -y autoremove")
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ debian ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ ubuntu ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ centos|red hat|kernel|alma|rocky ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ arch linux ]]
  • for int in "${!REGEX[@]}"
  • [[ alpine linux edge =~ alpine ]]
  • SYSTEM=Alpine
  • break
  • '[' -z Alpine ']'
  • for ex in "${EXCLUDE[@]}"
  • [[ ! {Alpine Linux edge,,} =~ '' ]]
  • '[' Alpine = CentOS ']'
  • check_dependencies
  • '[' Alpine = Alpine ']'
    ++ ++ wget
    head -n 1
  • local 'CHECK_WGET=wget: missing URL'
  • grep -qi busybox
  • DEPS_CHECK=('bash' 'rc-update' 'virt-what' 'python3' 'iptables' 'ip6tables')
  • local DEPS_CHECK
  • DEPS_INSTALL=('bash' 'openrc' 'virt-what' 'python3' 'iptables' 'ip6tables')
  • local DEPS_INSTALL
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p bash
  • '[' '!' -x /bin/bash ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p rc-update
  • '[' '!' -x /sbin/rc-update ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p virt-what
  • '[' '!' -x /usr/sbin/virt-what ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p python3
  • '[' '!' -x /usr/bin/python3 ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p iptables
  • '[' '!' -x /sbin/iptables ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p ip6tables
  • '[' '!' -x /sbin/ip6tables ']'
  • '[' 0 -ge 1 ']'
    ++ type -p systemctl
  • '[' '!' -x /bin/systemctl ']'
  • DEPS_CHECK=('wget' 'tar' 'systemctl' 'ss' 'bash' 'openssl')
  • local DEPS_CHECK
  • DEPS_INSTALL=('wget' 'tar' 'systemctl' 'iproute2' 'bash' 'openssl')
  • local DEPS_INSTALL
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p wget
  • '[' '!' -x /usr/bin/wget ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p tar
  • '[' '!' -x /bin/tar ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p systemctl
  • '[' '!' -x /bin/systemctl ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p ss
  • '[' '!' -x /sbin/ss ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p bash
  • '[' '!' -x /bin/bash ']'
  • for g in "${!DEPS_CHECK[@]}"
    ++ type -p openssl
  • '[' '!' -x /usr/bin/openssl ']'
  • '[' '' = CentOS7 ']'
  • '[' '' = CentOS8 ']'
    ++ type -p iptables
  • '[' '!' -x /sbin/iptables ']'
    ++ type -p ip6tables
  • '[' '!' -x /sbin/ip6tables ']'
  • [[ 0 > 0 ]]
    ++ text 8
    ++ grep -q '$'
    ++ eval echo '${E[8]}'
    +++ echo All dependencies already exist and do not need to be installed additionally.
  • info '\n All dependencies already exist and do not need to be installed additionally. \n'
  • echo -e '\033[32m\033[01m\n All dependencies already exist and do not need to be installed additionally. \n\033[0m'

All dependencies already exist and do not need to be installed additionally.

  • check_system_ip
    ++ ++ ip route show default
    awk '/default/ {for (i=0; i<NF; i++) if ($i=="dev") {print $(i+1); exit}}'
  • local DEFAULT_LOCAL_INTERFACE=eth0
  • '[' -n eth0 ']'
    ++ ++ ip addr show eth0
    sed -n 's#.*inet ([^/]+)/[0-9]+.global.#\1#gp'
  • local DEFAULT_LOCAL_IP4=185.151.146.163
    ++ ++ ip addr show eth0
    sed -n 's#.*inet6 ([^/]+)/[0-9]+.global.#\1#gp'
  • local DEFAULT_LOCAL_IP6=2407:d840:51:1::95
  • '[' -n 185.151.146.163 ']'
  • local BIND_ADDRESS4=--bind-address=185.151.146.163
  • '[' -n 2407:d840:51:1::95 ']'
  • local BIND_ADDRESS6=--bind-address=2407:d840:51:1::95
    ++ wget -4 --bind-address=185.151.146.163 -qO- --bind-address=185.151.146.163 --no-check-certificate --user-agent=Mozilla --tries=2 --timeout=1 http://ip-api.com/json/
  • IP4='{"status":"success","country":"Singapore","countryCode":"SG","region":"03","regionName":"North West","city":"Singapore","zip":"858877","lat":1.35208,"lon":103.82,"timezone":"Asia/Singapore","isp":"WAP.AC LTD","org":"FatDisco Ltd","as":"AS198100 WAP.AC LTD","query":"185.151.146.163"}'
    ++ expr '{"status":"success","country":"Singapore","countryCode":"SG","region":"03","regionName":"North West","city":"Singapore","zip":"858877","lat":1.35208,"lon":103.82,"timezone":"Asia/Singapore","isp":"WAP.AC LTD","org":"FatDisco Ltd","as":"AS198100 WAP.AC LTD","query":"185.151.146.163"}' : '.query":[ ]"([^"]).'
  • WAN4=185.151.146.163
    ++ expr '{"status":"success","country":"Singapore","countryCode":"SG","region":"03","regionName":"North West","city":"Singapore","zip":"858877","lat":1.35208,"lon":103.82,"timezone":"Asia/Singapore","isp":"WAP.AC LTD","org":"FatDisco Ltd","as":"AS198100 WAP.AC LTD","query":"185.151.146.163"}' : '.country":[ ]"([^"]).'
  • COUNTRY4=Singapore
    ++ expr '{"status":"success","country":"Singapore","countryCode":"SG","region":"03","regionName":"North West","city":"Singapore","zip":"858877","lat":1.35208,"lon":103.82,"timezone":"Asia/Singapore","isp":"WAP.AC LTD","org":"FatDisco Ltd","as":"AS198100 WAP.AC LTD","query":"185.151.146.163"}' : '.isp":[ ]"([^"]).'
  • ASNORG4='WAP.AC LTD'
  • [[ E = C ]]
    ++ wget -6 --bind-address=2407:d840:51:1::95 -qO- --bind-address=2407:d840:51:1::95 --no-check-certificate --user-agent=Mozilla --tries=2 --timeout=1 https://api.ip.sb/geoip
  • IP6='{"organization":"Nearoute","longitude":103.8014,"timezone":"Asia/Singapore","isp":"Nearoute","offset":28800,"asn":51847,"asn_organization":"Nearoute Limited","country":"Singapore","ip":"2407:d840:51:1::95","latitude":1.3673,"continent_code":"AS","country_code":"SG"}'
    ++ expr '{"organization":"Nearoute","longitude":103.8014,"timezone":"Asia/Singapore","isp":"Nearoute","offset":28800,"asn":51847,"asn_organization":"Nearoute Limited","country":"Singapore","ip":"2407:d840:51:1::95","latitude":1.3673,"continent_code":"AS","country_code":"SG"}' : '.ip":[ ]"([^"]).'
  • WAN6=2407:d840:51:1::95
    ++ expr '{"organization":"Nearoute","longitude":103.8014,"timezone":"Asia/Singapore","isp":"Nearoute","offset":28800,"asn":51847,"asn_organization":"Nearoute Limited","country":"Singapore","ip":"2407:d840:51:1::95","latitude":1.3673,"continent_code":"AS","country_code":"SG"}' : '.country":[ ]"([^"]).'
  • COUNTRY6=Singapore
    ++ expr '{"organization":"Nearoute","longitude":103.8014,"timezone":"Asia/Singapore","isp":"Nearoute","offset":28800,"asn":51847,"asn_organization":"Nearoute Limited","country":"Singapore","ip":"2407:d840:51:1::95","latitude":1.3673,"continent_code":"AS","country_code":"SG"}' : '.isp":[ ]"([^"]).'
  • ASNORG6=Nearoute
  • [[ E = C ]]
  • check_install
  • [[ '' = \i\s_\s\u\b ]]
  • [[ -s /etc/sing-box/subscribe/qr ]]
  • IS_SUB=no_sub
  • ls '/etc/sing-box/conf/*hysteria2_inbounds.json'
  • '[' -s /etc/systemd/system/sing-box.service ']'
    ++ text 26
    ++ grep -q '$'
    ++ eval echo '${E[26]}'
    +++ echo Not install
  • STATUS[0]='Not install'
    ++ text 26
    ++ grep -q '$'
    ++ eval echo '${E[26]}'
    +++ echo Not install
  • '[' 'Not install' = 'Not install' ']'
  • '[' '!' -s /etc/sing-box/sing-box ']'
  • '[' '' '!=' noninteractive_install ']'
    ++ text 26
    ++ grep -q '$'
    ++ wget --no-check-certificate --tries=2 --timeout=3 -qO- https://api.github.com/repos/SagerNet/sing-box/releases
    ++ awk -F '["v-]' '/tag_name/{print $5}'
    ++ sort -r
    ++ eval echo '${E[26]}'
    +++ echo Not install
    ++ sed -n 1p
  • STATUS[1]='Not install'
  • IS_ARGO=no_argo
  • '[' -s /etc/systemd/system/argo.service ']'
  • '[' -s /etc/systemd/system/argo.service ']'
  • '[' '' = noninteractive_install ']'
  • menu_setting
    ++ text 27
    ++ grep -q '$'
    ++ text 26
    ++ grep -q '$'
    ++ eval echo '${E[27]}'
    +++ echo close
    ++ eval echo '${E[26]}'
    +++ echo Not install
    ++ text 28
    ++ grep -q '$'
  • [[ Not install = \N\o\t\ \i\n\s\t\a\l\l ]]
  • '[' '!' -s /etc/sing-box/cloudflared ']'
  • wget --no-check-certificate -qO /tmp/sing-box/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
    ++ eval echo '${E[28]}'
    +++ echo open
  • [[ Not install =~ close|open ]]
    ++ text 34
    ++ grep -q '$'
    ++ eval echo '${E[34]}'
    +++ echo Install Sing-box
    ++ text 80
    ++ grep -q '$'
    ++ eval echo '${E[80]}'
    +++ echo subscribe
    ++ text 89
    ++ grep -q '$'
    ++ eval echo '${E[89]}'
    +++ echo '(' Additional dependencies: nginx ')'
  • OPTION[1]='1. Install Sing-box + Argo + subscribe ( Additional dependencies: nginx )'
    ++ text 34
    ++ grep -q '$'
    ++ eval echo '${E[34]}'
    +++ echo Install Sing-box
    ++ text 89
    ++ grep -q '$'
    ++ eval echo '${E[89]}'
    +++ echo '(' Additional dependencies: nginx ')'
  • OPTION[2]='2. Install Sing-box + Argo ( Additional dependencies: nginx )'
    ++ text 34
    ++ grep -q '$'
    ++ eval echo '${E[34]}'
    +++ echo Install Sing-box
    ++ text 80
    ++ grep -q '$'
    ++ eval echo '${E[80]}'
    +++ echo subscribe
    ++ text 89
    ++ grep -q '$'
    ++ eval echo '${E[89]}'
    +++ echo '(' Additional dependencies: nginx ')'
  • OPTION[3]='3. Install Sing-box + subscribe ( Additional dependencies: nginx )'
    ++ text 34
    ++ grep -q '$'
    ++ eval echo '${E[34]}'
    +++ echo Install Sing-box
  • OPTION[4]='4. Install Sing-box'
    ++ text 32
    ++ grep -q '$'
    ++ eval echo '${E[32]}'
    +++ echo Upgrade kernel, turn on BBR, change Linux system '(sb' '-b)'
  • OPTION[5]='5. Upgrade kernel, turn on BBR, change Linux system (sb -b)'
    ++ text 59
    ++ grep -q '$'
    ++ eval echo '${E[59]}'
    +++ echo Install ArgoX scripts '(argo' + 'xray)' '[https://github.com/fscarmen/argox]'
  • OPTION[6]='6. Install ArgoX scripts (argo + xray) [https://github.com/fscarmen/argox]'
    ++ text 69
    ++ grep -q '$'
    ++ eval echo '${E[69]}'
    +++ echo Install sba scripts '(argo' + 'sing-box)' '[https://github.com/fscarmen/sba]'
  • OPTION[7]='7. Install sba scripts (argo + sing-box) [https://github.com/fscarmen/sba]'
    ++ text 76
    ++ grep -q '$'
    ++ eval echo '${E[76]}'
    +++ echo Install TCP brutal
  • OPTION[8]='8. Install TCP brutal'
  • '[' 8 -ge 10 ']'
    ++ text 35
    ++ grep -q '$'
    ++ eval echo '${E[35]}'
    +++ echo Exit
  • OPTION[0]='0. Exit'
  • menu
  • echo -e '======================================================================================================================\n'
    ======================================================================================================================

++ text 17
++ grep -q '$'
++ eval echo '${E[17]}'
+++ echo Version
++ text 18
++ grep -q '$'
++ eval echo '${E[18]}'
+++ echo New features
++ text 1
++ grep -q '$'
++ eval echo '${E[1]}'
+++ echo Add hysteria2 port hopping. Supported Clients: ShadowRocket / NekoBox / Clash
++ text 19
++ grep -q '$'
++ eval echo '${E[19]}'
+++ echo System infomation
++ text 20
++ grep -q '$'
++ eval echo '${E[20]}'
+++ echo Operating System
++ text 21
++ grep -q '$'
++ eval echo '${E[21]}'
+++ echo Kernel
++ uname -r
++ text 22
++ grep -q '$'
++ eval echo '${E[22]}'
+++ echo Architecture
++ text 23
++ grep -q '$'
++ eval echo '${E[23]}'
+++ echo Virtualization

  • info ' Version: v1.2.4 (2024.05.09)\n New features: Add hysteria2 port hopping. Supported Clients: ShadowRocket / NekoBox / Clash\n System infomation:\n\t Operating System: Alpine Linux edge\n\t Kernel: 6.6.23-0-virt\n\t Architecture: amd64v3\n\t Virtualization: '
  • echo -e '\033[32m\033[01m Version: v1.2.4 (2024.05.09)\n New features: Add hysteria2 port hopping. Supported Clients: ShadowRocket / NekoBox / Clash\n System infomation:\n\t Operating System: Alpine Linux edge\n\t Kernel: 6.6.23-0-virt\n\t Architecture: amd64v3\n\t Virtualization: \033[0m'
    Version: v1.2.4 (2024.05.09)
    New features: Add hysteria2 port hopping. Supported Clients: ShadowRocket / NekoBox / Clash
    System infomation:
    Operating System: Alpine Linux edge
    Kernel: 6.6.23-0-virt
    Architecture: amd64v3
    Virtualization:
  • info '\t IPv4: 185.151.146.163 Singapore WAP.AC LTD '
  • echo -e '\033[32m\033[01m\t IPv4: 185.151.146.163 Singapore WAP.AC LTD \033[0m'
    IPv4: 185.151.146.163 Singapore WAP.AC LTD
  • info '\t IPv6: 2407:d840:51:1::95 Singapore Nearoute '
  • echo -e '\033[32m\033[01m\t IPv6: 2407:d840:51:1::95 Singapore Nearoute \033[0m'
    IPv6: 2407:d840:51:1::95 Singapore Nearoute
  • info '\t Sing-box: Not install\t \t\t \n\t Argo: Not install\t \t\t \n \t Nginx: Not install\t \t '
  • echo -e '\033[32m\033[01m\t Sing-box: Not install\t \t\t \n\t Argo: Not install\t \t\t \n \t Nginx: Not install\t \t \033[0m'
    Sing-box: Not install
    Argo: Not install
    Nginx: Not install
  • echo -e '\n======================================================================================================================\n'

======================================================================================================================

  • (( b=1 ))
  • (( b<=9 ))
  • '[' 1 = 9 ']'
  • hint ' 1. Install Sing-box + Argo + subscribe ( Additional dependencies: nginx ) '
  • echo -e '\033[33m\033[01m 1. Install Sing-box + Argo + subscribe ( Additional dependencies: nginx ) \033[0m'
  1. Install Sing-box + Argo + subscribe ( Additional dependencies: nginx )
  • (( b++ ))
  • (( b<=9 ))
  • '[' 2 = 9 ']'
  • hint ' 2. Install Sing-box + Argo ( Additional dependencies: nginx ) '
  • echo -e '\033[33m\033[01m 2. Install Sing-box + Argo ( Additional dependencies: nginx ) \033[0m'
  1. Install Sing-box + Argo ( Additional dependencies: nginx )
  • (( b++ ))
  • (( b<=9 ))
  • '[' 3 = 9 ']'
  • hint ' 3. Install Sing-box + subscribe ( Additional dependencies: nginx ) '
  • echo -e '\033[33m\033[01m 3. Install Sing-box + subscribe ( Additional dependencies: nginx ) \033[0m'
  1. Install Sing-box + subscribe ( Additional dependencies: nginx )
  • (( b++ ))
  • (( b<=9 ))
  • '[' 4 = 9 ']'
  • hint ' 4. Install Sing-box '
  • echo -e '\033[33m\033[01m 4. Install Sing-box \033[0m'
  1. Install Sing-box
  • (( b++ ))
  • (( b<=9 ))
  • '[' 5 = 9 ']'
  • hint ' 5. Upgrade kernel, turn on BBR, change Linux system (sb -b) '
  • echo -e '\033[33m\033[01m 5. Upgrade kernel, turn on BBR, change Linux system (sb -b) \033[0m'
  1. Upgrade kernel, turn on BBR, change Linux system (sb -b)
  • (( b++ ))
  • (( b<=9 ))
  • '[' 6 = 9 ']'
  • hint ' 6. Install ArgoX scripts (argo + xray) [https://github.com/fscarmen/argox] '
  • echo -e '\033[33m\033[01m 6. Install ArgoX scripts (argo + xray) [https://github.com/fscarmen/argox] \033[0m'
  1. Install ArgoX scripts (argo + xray) [https://github.com/fscarmen/argox]
  • (( b++ ))
  • (( b<=9 ))
  • '[' 7 = 9 ']'
  • hint ' 7. Install sba scripts (argo + sing-box) [https://github.com/fscarmen/sba] '
  • echo -e '\033[33m\033[01m 7. Install sba scripts (argo + sing-box) [https://github.com/fscarmen/sba] \033[0m'
  1. Install sba scripts (argo + sing-box) [https://github.com/fscarmen/sba]
  • (( b++ ))
  • (( b<=9 ))
  • '[' 8 = 9 ']'
  • hint ' 8. Install TCP brutal '
  • echo -e '\033[33m\033[01m 8. Install TCP brutal \033[0m'
  1. Install TCP brutal
  • (( b++ ))
  • (( b<=9 ))
  • '[' 9 = 9 ']'
  • hint ' 0. Exit '
  • echo -e '\033[33m\033[01m 0. Exit \033[0m'
  1. Exit
  • (( b++ ))
  • (( b<=9 ))
    ++ text 24
    ++ grep -q '$'
    ++ eval echo '${E[24]}'
    +++ echo Choose:
  • reading '\n Choose: ' CHOOSE
    ++ info '\n Choose: '
    ++ echo -e '\033[32m\033[01m\n Choose: \033[0m'
  • read -rp '
    Choose: ' CHOOSE

Choose: + local VERSION_LATEST=1.9.0
++ ++ wget --no-check-certificate --tries=2 --timeout=3 -qO- https://api.github.com/repos/SagerNet/sing-box/releases
awk -F '["v]' -v 'var=tag_name.*1.9.0' '$0 ~ var {print $5; exit}'

from sing-box.

fscarmen avatar fscarmen commented on June 26, 2024

找到原因了,你稍等我10分钟,我更新一下脚本。

from sing-box.

fscarmen avatar fscarmen commented on June 26, 2024

已更新了,你再运行一下看看。

from sing-box.

Gaslys avatar Gaslys commented on June 26, 2024

已解决 非常感谢

from sing-box.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.