上传文件至 /

This commit is contained in:
chunzhi 2025-03-27 11:24:03 -04:00
parent aa779cd7ea
commit c924658eb4

View File

@ -329,7 +329,13 @@ EOF
# 启动服务
echo -e "${BLUE}启动V2Ray和Nginx服务...${PLAIN}"
systemctl enable v2ray nginx --now
systemctl daemon-reload
systemctl enable v2ray --now
systemctl enable nginx --now
# 等待服务启动
echo -e "${BLUE}等待服务启动...${PLAIN}"
sleep 2
# 检查服务状态
v2ray_status=$(systemctl is-active v2ray)
@ -338,16 +344,19 @@ EOF
if [ "$v2ray_status" = "active" ] && [ "$nginx_status" = "active" ]; then
echo -e "${GREEN}V2Ray和Nginx服务已成功启动${PLAIN}"
# 显示配置信息
echo -e "${GREEN}V2Ray配置信息${PLAIN}"
echo -e "${YELLOW}地址: ${domain}${PLAIN}"
echo -e "${YELLOW}端口: 443${PLAIN}"
echo -e "${YELLOW}用户ID(UUID): ${uuid}${PLAIN}"
echo -e "${YELLOW}额外ID(alterId): 0${PLAIN}"
echo -e "${YELLOW}加密方式: auto${PLAIN}"
echo -e "${YELLOW}传输协议: ws${PLAIN}"
echo -e "${YELLOW}路径: /ray${PLAIN}"
echo -e "${YELLOW}TLS: 开启${PLAIN}"
# 显示客户端配置信息
show_client_info "${domain}" "${uuid}"
# 检查时间同步
check_time_sync
# 启用BBR加速
echo -e "${BLUE}正在启用BBR加速...${PLAIN}"
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
echo -e "${GREEN}BBR加速已启用${PLAIN}"
# 生成客户端配置
cat > v2ray_client_config.json << EOF
@ -373,7 +382,8 @@ EOF
"users": [
{
"id": "${uuid}",
"alterId": 0
"alterId": 0,
"security": "auto"
}
]
}
@ -384,6 +394,9 @@ EOF
"security": "tls",
"wsSettings": {
"path": "/ray"
},
"tlsSettings": {
"allowInsecure": false
}
}
}
@ -392,13 +405,22 @@ EOF
EOF
echo -e "${GREEN}客户端配置已保存到 v2ray_client_config.json${PLAIN}"
# 启用BBR加速
echo -e "${BLUE}正在启用BBR加速...${PLAIN}"
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
# 显示V2Ray状态并查看可能的错误
echo -e "${BLUE}查看V2Ray运行状态和最近日志...${PLAIN}"
systemctl status v2ray --no-pager
if [ -f /var/log/v2ray/error.log ]; then
echo -e "${BLUE}最近的错误日志:${PLAIN}"
tail -n 10 /var/log/v2ray/error.log
fi
# 提供故障排除指南
echo -e "${GREEN}如果您遇到连接问题,请检查:${PLAIN}"
echo -e "${YELLOW}1. 客户端和服务器的时间是否同步${PLAIN}"
echo -e "${YELLOW}2. 客户端的UUID是否正确配置${PLAIN}"
echo -e "${YELLOW}3. WebSocket路径是否为 /ray${PLAIN}"
echo -e "${YELLOW}4. 是否启用了TLS${PLAIN}"
echo -e "${YELLOW}5. 防火墙是否允许443端口通信${PLAIN}"
echo -e "${GREEN}BBR加速已启用${PLAIN}"
echo -e "${GREEN}安装完成!${PLAIN}"
else
echo -e "${RED}安装失败,请检查错误信息${PLAIN}"
@ -413,6 +435,109 @@ EOF
fi
}
# 显示客户端配置详情
show_client_info() {
local domain=$1
local uuid=$2
echo -e "${GREEN}V2Ray配置信息${PLAIN}"
echo -e "${YELLOW}-----------------------------${PLAIN}"
echo -e "${YELLOW}地址 (Address): ${domain}${PLAIN}"
echo -e "${YELLOW}端口 (Port): 443${PLAIN}"
echo -e "${YELLOW}用户ID (UUID): ${uuid}${PLAIN}"
echo -e "${YELLOW}额外ID (AlterId): 0${PLAIN}"
echo -e "${YELLOW}加密方式 (Security): auto${PLAIN}"
echo -e "${YELLOW}传输协议 (Network): ws${PLAIN}"
echo -e "${YELLOW}WebSocket路径 (Path): /ray${PLAIN}"
echo -e "${YELLOW}TLS: 开启${PLAIN}"
echo -e "${YELLOW}-----------------------------${PLAIN}"
echo -e "${GREEN}提示请确保客户端和服务器的时间误差在90秒内${PLAIN}"
echo -e "${GREEN} 如果无法连接可以尝试重启V2Ray服务${PLAIN}"
echo -e "${GREEN} systemctl restart v2ray${PLAIN}"
echo -e "${YELLOW}-----------------------------${PLAIN}"
}
# 检查时间同步状态
check_time_sync() {
echo -e "${BLUE}检查系统时间同步状态...${PLAIN}"
# 显示当前时间
current_time=$(date -R)
echo -e "${YELLOW}当前系统时间: ${current_time}${PLAIN}"
# 尝试同步时间的多种方法
echo -e "${BLUE}尝试同步系统时间...${PLAIN}"
# 方法1: 使用timedatectl如果可用
if command -v timedatectl &> /dev/null; then
timedatectl set-ntp true
if [ $? -ne 0 ]; then
echo -e "${YELLOW}timedatectl设置NTP失败尝试其他方法${PLAIN}"
else
echo -e "${GREEN}已通过timedatectl启用时间同步${PLAIN}"
return
fi
fi
# 方法2: 使用ntpd或chronyd如果已安装
if command -v ntpd &> /dev/null; then
if [ "$OS" == "centos" ]; then
systemctl restart ntpd
echo -e "${GREEN}已重启ntpd服务${PLAIN}"
else
systemctl restart ntp
echo -e "${GREEN}已重启ntp服务${PLAIN}"
fi
return
fi
if command -v chronyd &> /dev/null; then
systemctl restart chronyd
echo -e "${GREEN}已重启chronyd服务${PLAIN}"
return
fi
# 方法3: 手动使用ntpdate如果已安装
if command -v ntpdate &> /dev/null; then
echo -e "${BLUE}使用ntpdate手动同步时间...${PLAIN}"
ntpdate -u time.google.com || ntpdate -u time.windows.com || ntpdate -u pool.ntp.org
if [ $? -eq 0 ]; then
echo -e "${GREEN}时间同步成功${PLAIN}"
else
echo -e "${YELLOW}ntpdate同步失败${PLAIN}"
fi
return
fi
# 方法4: 使用rdate如果已安装
if command -v rdate &> /dev/null; then
echo -e "${BLUE}使用rdate同步时间...${PLAIN}"
rdate -s time-a.nist.gov || rdate -s time-b.nist.gov
if [ $? -eq 0 ]; then
echo -e "${GREEN}时间同步成功${PLAIN}"
else
echo -e "${YELLOW}rdate同步失败${PLAIN}"
fi
return
fi
# 如果以上方法都失败,尝试安装时间同步工具
echo -e "${YELLOW}未找到可用的时间同步工具,尝试安装...${PLAIN}"
if [ "$OS" == "centos" ]; then
yum install -y ntpdate
ntpdate -u pool.ntp.org
else
apt update
apt install -y ntpdate
ntpdate -u pool.ntp.org
fi
# 最后提示用户
echo -e "${YELLOW}重要提示: V2Ray要求服务器和客户端的时间差在90秒内${PLAIN}"
echo -e "${YELLOW}请确保您的系统时间是准确的${PLAIN}"
echo -e "${YELLOW}当前时间: $(date -R)${PLAIN}"
}
# 更新V2Ray
update_v2ray() {
echo -e "${BLUE}正在更新V2Ray...${PLAIN}"