有时候我会需要临时的快速在一个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:启用"