Idealisan

快速搭建websocket v2ray和nginx方案的脚本

有时候我会需要临时的快速在一个VPS上搭建代理,于是我需要一个脚本用于快速完成这个过程,感谢免费的大语言模型,很快就生成了。

注意修改域名和uuid以及邮箱

#!/bin/bash

# 检查是否以root或sudo运行
if [ "$(id -u)" != "0" ]; then
    echo "此脚本需要以root权限运行,请使用sudo或切换到root用户"
    exit 1
fi

# 设置变量
DOMAIN="p-abc.example.com"
V2RAY_PORT="8999"
WS_PATH="/path"
UUID="1316c44"
EMAIL="${UUID}@qq.com"

# 更新系统并安装V2Ray和Nginx
echo "更新系统并安装V2Ray和Nginx..."
apt-get update && apt-get upgrade -y
apt-get install -y v2ray nginx curl ca-certificates

# 停止V2Ray服务以进行配置
systemctl stop v2ray

# 配置V2Ray为VMess+WebSocket
echo "配置V2Ray为VMess+WebSocket..."
cat > /etc/v2ray/config.json << EOF
{
  "inbounds": [
    {
      "port": ${V2RAY_PORT},
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "${UUID}",
            "alterId": 0
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "${WS_PATH}"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}
EOF

# 设置V2Ray配置文件权限并重启服务
chown -R nobody:nogroup /etc/v2ray/
chmod 644 /etc/v2ray/config.json
systemctl restart v2ray
systemctl enable v2ray

# 安装Certbot以获取SSL证书
echo "安装Certbot并获取SSL证书..."
apt-get install -y python3-certbot-nginx
certbot --nginx -d ${DOMAIN} --non-interactive --agree-tos -m ${EMAIL}
if [ $? -ne 0 ]; then
    echo "SSL证书获取失败,请检查域名DNS配置或手动运行certbot"
    exit 1
fi

# 配置Nginx
echo "配置Nginx以转发WebSocket到V2Ray..."
cat > /etc/nginx/sites-available/v2ray << EOF
server {
    listen 80;
    server_name ${DOMAIN};
    return 301 https://\$host\$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name ${DOMAIN};

    ssl_certificate /etc/letsencrypt/live/${DOMAIN}/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/${DOMAIN}/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    location ${WS_PATH} {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:${V2RAY_PORT};
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host \$http_host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }

    location / {
        return 404;
    }
}
EOF

# 启用Nginx配置
ln -sf /etc/nginx/sites-available/v2ray /etc/nginx/sites-enabled/v2ray
rm -f /etc/nginx/sites-enabled/default

# 测试Nginx配置
nginx -t
if [ $? -eq 0 ]; then
    echo "Nginx配置测试通过,重新加载Nginx..."
    systemctl reload nginx
else
    echo "Nginx配置有错误,请检查配置文件"
    exit 1
fi

# 设置Nginx服务开机自启
systemctl enable nginx

# 检查服务状态
echo "检查服务状态..."
systemctl status v2ray --no-pager
systemctl status nginx --no-pager

echo "安装和配置完成!"
echo "V2Ray配置:"
echo "  协议:VMess"
echo "  端口:${V2RAY_PORT}"
echo "  UUID:${UUID}"
echo "  传输:WebSocket"
echo "  路径:${WS_PATH}"
echo "Nginx配置:"
echo "  域名:https://${DOMAIN}"
echo "  WebSocket路径:${WS_PATH}"
echo "  转发到:127.0.0.1:${V2RAY_PORT}"
echo "请在V2Ray客户端中配置:"
echo "  地址:${DOMAIN}"
echo "  端口:443"
echo "  UUID:${UUID}"
echo "  传输协议:WebSocket"
echo "  路径:${WS_PATH}"
echo "  TLS:启用"

分类

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注