Files
server-deploy/vps-xray/README.md

265 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Xray VPS 部署指南
> 一键部署 Xray 代理,支持 VLESS-Reality抗封锁和 VLESS TCP极速两种模式。无需域名和证书。
## 功能特性
- 两种部署模式可选Reality推荐/ Fast TCP
- 自动安装 Xray + 生成密钥 + 配置防火墙
- BBR 拥塞控制 + TCP 深度调优
- 自动选择延迟最低的 Reality 伪装目标
- 部署完成自动输出 VLESS 分享链接
- 一键备份 / 卸载脚本
## 模式对比
| 特性 | Reality推荐 | Fast TCP |
|------|-----------------|----------|
| **加密** | Reality TLS 1.3 | 无,明文传输 |
| **抗检测** | 伪装为真实 HTTPS 流量 | 极易被 DPI 识别 |
| **需要域名** | 否 | 否 |
| **需要证书** | 否 | 否 |
| **速度** | Vision 流控避免双重加密,差距 < 5% | 裸 TCP 无开销,理论最快 |
| **被封风险** | 极低 | 极高 |
## 技术栈
| 组件 | 说明 |
|------|------|
| Xray | VLESS 代理核心 |
| BBR | TCP 拥塞控制算法 |
| ufw / firewalld | 防火墙 |
## 前置条件
1. 一台境外 Linux VPSDebian 12 推荐)
2. root 权限
3. 服务器 443 端口可从外网访问
### 推荐配置
| 项目 | 最低 | 推荐 |
|------|------|------|
| CPU | 1 核 | 1 核 |
| 内存 | 256 MB | 512 MB |
| 硬盘 | 5 GB | 10 GB |
| 带宽 | 200 Mbps | 1 Gbps |
| 流量 | 500 GB/月 | 1 TB+/月 |
| 位置 | — | 日本 / 新加坡 / 美西 |
## 目录结构
```
vps-xray/
├── deploy.sh # 一键部署脚本
├── backup.sh # 备份脚本
├── uninstall.sh # 完全卸载脚本
├── .env.example # 配置模板
├── README.md # 本文件
├── vps-xray-optimized.md # Reality 方案详细文档
└── vps-xray-fast.md # Fast TCP 方案详细文档
```
服务器上的文件位置:
```
/usr/local/bin/xray # Xray 可执行文件
/usr/local/etc/xray/config.json # Xray 配置文件
/etc/sysctl.d/99-xray-turbo.conf # 网络调优参数
/var/backups/xray/ # 备份文件
```
## 快速部署
### 第一步:上传文件到 VPS
```bash
scp -r vps-xray/ root@<VPS_IP>:/opt/vps-xray
```
### 第二步:登录 VPS 执行部署
```bash
ssh root@<VPS_IP>
cd /opt/vps-xray
# Reality 模式部署(推荐)
bash deploy.sh
# 或者 Fast TCP 模式
bash deploy.sh --mode fast
```
部署完成后会输出:
- 连接参数IP、端口、UUID、密钥等
- VLESS 分享链接(可直接导入客户端)
> **⚠️ 请妥善保存输出的连接信息!密钥仅显示一次。**凭据同时保存在 `/opt/vps-xray/.env` 中。
### 第三步:客户端配置
将部署脚本输出的 `vless://` 链接导入客户端即可:
| 平台 | 推荐客户端 |
|------|-----------|
| Windows | v2rayN6.x+ |
| macOS | V2BOX / NekoRay |
| iOS | Shadowrocket / Streisand |
| Android | v2rayNG |
详细的 Clash Meta / Sing-Box 配置参见 [vps-xray-optimized.md](vps-xray-optimized.md)。
## 日常运维
### 查看状态 / 日志
```bash
systemctl status xray
journalctl -u xray -f
journalctl -u xray --tail 100
```
### 备份
```bash
cd /opt/vps-xray
bash backup.sh
```
备份内容包括:
- Xray 配置文件(`config.json`
- 部署配置(`.env` + 脚本)
- 网络调优参数
备份文件保存在 `/var/backups/xray/`,自动清理 30 天前的旧备份。
### 恢复备份
```bash
# 查看可用备份
ls /var/backups/xray/
# 恢复 Xray 配置
tar xzf /var/backups/xray/xray_config_<日期>.tar.gz -C /usr/local/etc/
# 恢复网络调优
cp /var/backups/xray/sysctl_<日期>.conf /etc/sysctl.d/99-xray-turbo.conf
sysctl --system
# 重启服务
systemctl restart xray
```
### 更新 Xray
```bash
# 备份当前配置
cd /opt/vps-xray && bash backup.sh
# 更新 Xray 核心(配置文件保留)
bash <(curl -fsSL https://raw.githubusercontent.com/XTLS/Xray-install/main/install-release.sh)
# 重启服务
systemctl restart xray
```
### 重启 / 停止
```bash
systemctl restart xray # 重启
systemctl stop xray # 停止
systemctl start xray # 启动
```
### 验证
```bash
# 确认 BBR 启用
sysctl net.ipv4.tcp_congestion_control
# 确认端口监听
ss -tlnp | grep 443
# 测试配置语法
/usr/local/bin/xray run -test -config /usr/local/etc/xray/config.json
```
## 完全卸载
```bash
cd /opt/vps-xray
bash uninstall.sh
```
脚本会**交互式确认**每个危险操作:
| 步骤 | 操作 | 确认方式 |
|------|------|----------|
| 0 | 卸载前备份(可选) | y/N |
| 1 | 停止并禁用 Xray 服务 | 输入 YES |
| 2 | 卸载 Xray 程序 + 删除配置 | 自动 |
| 3 | 移除网络调优配置 | 自动 |
| 4 | 关闭防火墙端口 | 自动 |
| 5 | 删除部署目录 `/opt/vps-xray` | y/N |
**备份目录 `/var/backups/xray/` 始终保留**
## 多用户
在 Xray 配置的 `clients` 数组中添加更多用户:
```bash
vi /usr/local/etc/xray/config.json
```
```json
"clients": [
{ "id": "原始-uuid", "flow": "xtls-rprx-vision" },
{ "id": "新用户-uuid", "flow": "xtls-rprx-vision" }
]
```
生成新 UUID`cat /proc/sys/kernel/random/uuid`
修改后重启:`systemctl restart xray`
## 故障排查
### 客户端连接失败
```bash
# 确认 Xray 运行
systemctl status xray
# 确认端口监听
ss -tlnp | grep 443
# 查看错误日志
journalctl -u xray --tail 50
```
### 速度慢
```bash
# 确认 BBR 启用
sysctl net.ipv4.tcp_congestion_control
# 应输出: net.ipv4.tcp_congestion_control = bbr
# 确认网络调优生效
sysctl net.core.rmem_max
# 应输出: net.core.rmem_max = 16777216
```
### IP 被封
Reality 能大幅降低被封概率,但如果 IP 已被墙:
1. 更换 VPS IP
2. 重新部署:`bash deploy.sh`
## 安全说明
- `PrivateKey` 只存在服务端配置中,切勿泄露
- `PublicKey` 是客户端参数,可公开
- `.env` 文件权限已设为 600仅 root 可读)
- BT 流量已在路由规则中屏蔽,降低 VPS 被投诉风险