优化部署,增加lisa dmit
This commit is contained in:
+7
-3
@@ -52,12 +52,13 @@
|
|||||||
```
|
```
|
||||||
vps-xray/
|
vps-xray/
|
||||||
├── deploy.sh # 一键部署脚本
|
├── deploy.sh # 一键部署脚本
|
||||||
├── backup.sh # 备份脚本
|
|
||||||
├── uninstall.sh # 完全卸载脚本
|
├── uninstall.sh # 完全卸载脚本
|
||||||
|
├── upload.sh # 上传脚本(仅上传服务端必要文件)
|
||||||
├── .env.example # 配置模板
|
├── .env.example # 配置模板
|
||||||
├── README.md # 本文件
|
├── README.md # 本文件
|
||||||
├── vps-xray-optimized.md # Reality 方案详细文档
|
├── vps-xray-optimized.md # Reality 方案详细文档
|
||||||
└── vps-xray-fast.md # Fast TCP 方案详细文档
|
├── vps-xray-fast.md # Fast TCP 方案详细文档
|
||||||
|
└── client-config/ # 客户端配置示例(本地使用,不上传服务器)
|
||||||
```
|
```
|
||||||
|
|
||||||
服务器上的文件位置:
|
服务器上的文件位置:
|
||||||
@@ -73,8 +74,11 @@ vps-xray/
|
|||||||
|
|
||||||
### 第一步:上传文件到 VPS
|
### 第一步:上传文件到 VPS
|
||||||
|
|
||||||
|
使用 `upload.sh` 只上传服务端必要文件(`deploy.sh`、`uninstall.sh`、`.env.example`),跳过文档和客户端配置:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
scp -r vps-xray/ root@<VPS_IP>:/opt/vps-xray
|
# 在本地 vps-xray/ 目录下执行
|
||||||
|
bash upload.sh <VPS_IP>
|
||||||
```
|
```
|
||||||
|
|
||||||
### 第二步:登录 VPS 执行部署
|
### 第二步:登录 VPS 执行部署
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
==========================================================
|
||||||
|
Xray VLESS-Reality 部署完成 ✅
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
IP : 64.81.25.247
|
||||||
|
端口 : 443
|
||||||
|
协议 : VLESS
|
||||||
|
UUID : 5455974f-a22a-4039-82b4-5dc0a30f06ad
|
||||||
|
流控 : xtls-rprx-vision
|
||||||
|
传输 : tcp
|
||||||
|
安全 : reality
|
||||||
|
SNI : dl.google.com
|
||||||
|
Fingerprint : chrome
|
||||||
|
PublicKey : cu-tvQ0PmpJDF5WtkgXgMmyhas2ZYdW5rpUiaAuekmo
|
||||||
|
ShortId : 88992d098ccc5622
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
>>> VLESS 分享链接(可直接导入客户端):
|
||||||
|
|
||||||
|
vless://5455974f-a22a-4039-82b4-5dc0a30f06ad@64.81.25.247:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=dl.google.com&fp=chrome&pbk=cu-tvQ0PmpJDF5WtkgXgMmyhas2ZYdW5rpUiaAuekmo&sid=88992d098ccc5622&type=tcp#vps-reality-lisa-1
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
⚠️ 请妥善保存以上信息!
|
||||||
|
配置文件: /usr/local/etc/xray/config.json
|
||||||
|
凭据备份: /opt/vps-xray/.env
|
||||||
|
查看日志: journalctl -u xray -f
|
||||||
|
重启服务: systemctl restart xray
|
||||||
|
==========================================================
|
||||||
+75
-2
@@ -61,16 +61,88 @@ fi
|
|||||||
|
|
||||||
XRAY_PORT="${XRAY_PORT:-443}"
|
XRAY_PORT="${XRAY_PORT:-443}"
|
||||||
|
|
||||||
|
# ===== 0. 检查并安装依赖 =====
|
||||||
|
# 精简版系统镜像(如部分 VPS 商的 Debian/Ubuntu minimal)常缺 curl / unzip
|
||||||
|
ensure_deps() {
|
||||||
|
step "0/5 检查依赖"
|
||||||
|
|
||||||
|
local missing=()
|
||||||
|
local cmd
|
||||||
|
for cmd in curl unzip openssl; do
|
||||||
|
command -v "$cmd" &>/dev/null || missing+=("$cmd")
|
||||||
|
done
|
||||||
|
if [ ! -f /etc/ssl/certs/ca-certificates.crt ]; then
|
||||||
|
missing+=("ca-certificates")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${#missing[@]}" -eq 0 ]; then
|
||||||
|
log "依赖齐全: curl unzip openssl ca-certificates"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
warn "缺少依赖: ${missing[*]},正在自动安装..."
|
||||||
|
if command -v apt-get &>/dev/null; then
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get install -y -qq "${missing[@]}"
|
||||||
|
elif command -v dnf &>/dev/null; then
|
||||||
|
dnf install -y "${missing[@]}"
|
||||||
|
elif command -v yum &>/dev/null; then
|
||||||
|
yum install -y "${missing[@]}"
|
||||||
|
elif command -v apk &>/dev/null; then
|
||||||
|
apk add --no-cache "${missing[@]}"
|
||||||
|
else
|
||||||
|
error "未识别的包管理器,请手动安装: ${missing[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for cmd in curl unzip openssl; do
|
||||||
|
if ! command -v "$cmd" &>/dev/null; then
|
||||||
|
error "依赖安装失败: ${cmd},请手动安装后重试"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
log "依赖安装完成"
|
||||||
|
}
|
||||||
|
|
||||||
# ===== 1. 安装 Xray =====
|
# ===== 1. 安装 Xray =====
|
||||||
install_xray() {
|
install_xray() {
|
||||||
step "1/5 安装 Xray"
|
step "1/5 安装 Xray"
|
||||||
|
|
||||||
if command -v xray &>/dev/null || [ -x /usr/local/bin/xray ]; then
|
if [ -x /usr/local/bin/xray ]; then
|
||||||
log "Xray 已安装: $(/usr/local/bin/xray version | head -1)"
|
log "Xray 已安装: $(/usr/local/bin/xray version | head -1)"
|
||||||
log "将更新到最新版本..."
|
log "将更新到最新版本..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bash <(curl -fsSL https://raw.githubusercontent.com/XTLS/Xray-install/main/install-release.sh)
|
# 不用 bash <(curl ...):curl 失败时进程替换只产生空脚本,
|
||||||
|
# 外层 bash 仍返回 0,会掩盖下载失败
|
||||||
|
local installer
|
||||||
|
installer="$(mktemp)"
|
||||||
|
local url ok=0
|
||||||
|
for url in \
|
||||||
|
"https://raw.githubusercontent.com/XTLS/Xray-install/main/install-release.sh" \
|
||||||
|
"https://github.com/XTLS/Xray-install/raw/main/install-release.sh"
|
||||||
|
do
|
||||||
|
if curl -fsSL --max-time 60 "$url" -o "$installer" && [ -s "$installer" ]; then
|
||||||
|
ok=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
warn "下载失败,尝试备用地址: $url"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$ok" -ne 1 ]; then
|
||||||
|
rm -f "$installer"
|
||||||
|
error "无法下载 Xray 安装脚本,请检查服务器网络 / DNS"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
bash "$installer"
|
||||||
|
rm -f "$installer"
|
||||||
|
|
||||||
|
if [ ! -x /usr/local/bin/xray ]; then
|
||||||
|
error "Xray 安装失败:/usr/local/bin/xray 不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
log "Xray 安装完成: $(/usr/local/bin/xray version | head -1)"
|
log "Xray 安装完成: $(/usr/local/bin/xray version | head -1)"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,6 +543,7 @@ main() {
|
|||||||
[ "$MODE" = "reality" ] && log "VLESS-Reality(推荐,抗封锁)" || log "VLESS TCP(极速,无 TLS)"
|
[ "$MODE" = "reality" ] && log "VLESS-Reality(推荐,抗封锁)" || log "VLESS TCP(极速,无 TLS)"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
ensure_deps
|
||||||
install_xray
|
install_xray
|
||||||
generate_keys
|
generate_keys
|
||||||
select_reality_dest
|
select_reality_dest
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 仅上传服务端所需文件,跳过文档和客户端配置
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
VPS_IP="${1:-}"
|
||||||
|
SSH_PORT="${2:-22}"
|
||||||
|
if [[ -z "$VPS_IP" ]]; then
|
||||||
|
echo "用法: bash upload.sh <VPS_IP> [SSH_PORT]"
|
||||||
|
echo "示例: bash upload.sh 1.2.3.4 # 使用默认端口 22"
|
||||||
|
echo "示例: bash upload.sh 1.2.3.4 2222 # 使用自定义端口 2222"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ "$SSH_PORT" =~ ^[0-9]+$ ]] || (( SSH_PORT < 1 || SSH_PORT > 65535 )); then
|
||||||
|
echo "错误: 端口必须是 1-65535 之间的数字,当前为 '${SSH_PORT}'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
REMOTE_DIR="/opt/vps-xray"
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
echo ">>> 创建远程目录 ${REMOTE_DIR} (端口 ${SSH_PORT})"
|
||||||
|
ssh -p "${SSH_PORT}" "root@${VPS_IP}" "mkdir -p ${REMOTE_DIR}"
|
||||||
|
|
||||||
|
echo ">>> 上传部署文件"
|
||||||
|
scp -P "${SSH_PORT}" \
|
||||||
|
"${SCRIPT_DIR}/deploy.sh" \
|
||||||
|
"${SCRIPT_DIR}/uninstall.sh" \
|
||||||
|
"${SCRIPT_DIR}/.env.example" \
|
||||||
|
"root@${VPS_IP}:${REMOTE_DIR}/"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "上传完成,文件位于 root@${VPS_IP}:${REMOTE_DIR}"
|
||||||
|
echo ""
|
||||||
|
echo "下一步:"
|
||||||
|
if [[ "$SSH_PORT" == "22" ]]; then
|
||||||
|
echo " ssh root@${VPS_IP}"
|
||||||
|
else
|
||||||
|
echo " ssh -p ${SSH_PORT} root@${VPS_IP}"
|
||||||
|
fi
|
||||||
|
echo " cd ${REMOTE_DIR} && bash deploy.sh"
|
||||||
Reference in New Issue
Block a user