复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-机场自部署

2026.05.18

机场自部署

Echo HaoRan
Echo HaoRan
#40网络与安全
ANALYSIS

机场自部署#

本文记录如何利用 Docker 在境外服务器(香港)部署 Xray + VLESS + WebSocket + TLS 代理服务,配合 Nginx 反向代理实现流量伪装,并通过 Clash 客户端连接使用。


部署架构#

PRTCL // PLAINTEXT
┌─────────────────────────────────────────────────────────────┐
│ 用户设备 │
│ (Clash / FlClash) │
│ │ │
│ │ HTTPS + WebSocket │
└─────────────────────────┼───────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 香港服务器 (154.222.24.65) │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Nginx │ proxy │ Xray │ │
│ │ :80 :443 │◄────────│ :10086 │ │
│ └─────────────┘ ws └─────────────┘ │
│ │ │ │
│ │ HTTPS 加密 │ VLESS │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 伪装网站 │ │ Xray 核心 │ │
│ │ (HTML) │ │ (Docker) │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

关键技术选型#

组件选型理由
代理协议VLESS + WebSocket抗封锁能力强,兼容性广
TLS 加密TLS 1.3流量完全加密,难以识别
伪装Nginx + 静态网站模拟正常 HTTPS 网站流量
容器化Docker + Compose一键部署,环境隔离
UUID随机生成唯一身份标识

服务器准备#

环境要求#

项目要求
系统Ubuntu 20.04+ / Debian
配置1 核 512MB+
网络境外服务器,443 端口开放
软件Docker + Docker Compose

端口占用说明#

⚠️ 本次部署中服务器已运行 1Panel,openresty 容器占用了 80/443 端口。 解决方案:停止 1Panel 的 openresty 容器,将端口让给 Nginx。

PRTCL // BASH
Terminal window
# 查看端口占用
ss -tlnp | grep -E ':80 |:443 '
# 停止占用端口的容器(如 openresty)
docker stop 1Panel-openresty-fMgR
docker rm 1Panel-openresty-fMgR

创建工作目录#

PRTCL // BASH
Terminal window
mkdir -p /opt/xray/{certs,html,config}
cd /opt/xray

生成 TLS 证书#

使用自签证书,仅支持客户端开启「跳过证书验证」。如需正式证书,可使用 Let’s Encrypt。

PRTCL // BASH
Terminal window
cd /opt/xray
openssl req -x509 -nodes -newkey rsa:2048 \
-keyout certs/key.pem \
-out certs/cert.pem \
-days 365 \
-subj '/C=US/ST=NY/L=NYC/O=CloudService/CN=cloud.example.com'

配置文件#

Xray 配置#

路径:/opt/xray/config/config.json

PRTCL // JSON
{
"log": {
"loglevel": "warning"
},
"inbounds": [{
"port": 10086,
"listen": "127.0.0.1",
"protocol": "vless",
"settings": {
"clients": [{
"id": "60b3f6e5-1227-4487-8084-4bbb6503b923",
"level": 0
}],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/vless"
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
}
}],
"outbounds": [
{"protocol": "freedom", "settings": {}, "tag": "direct"},
{"protocol": "blackhole", "settings": {}, "tag": "block"}
]
}

💡 关键配置说明

  • listen: "127.0.0.1":仅监听本地,外部无法直接访问 Xray
  • network: "ws":WebSocket 传输,伪装成 HTTP 请求
  • sniffing:自动识别流量类型,提升兼容性

Nginx 配置#

路径:/opt/xray/nginx.conf

PRTCL // NGINX
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name _;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5:!RC4;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 伪装网站
location / {
root /usr/share/nginx/html;
index index.html;
}
# Xray WebSocket 代理
location /vless {
proxy_pass http://127.0.0.1:10086;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}

💡 关键配置说明

  • 80 → 443:HTTP 自动重定向到 HTTPS
  • location /vless:将 WebSocket 请求转发给 Xray
  • Upgrade $http_upgrade:支持 WebSocket 协议升级

伪装网站#

路径:/opt/xray/html/index.html

PRTCL // HTML
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Welcome to Nginx</title>
<style>
body{font-family:Arial;margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100vh;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:white;}
.container{text-align:center;background:rgba(0,0,0,0.3);padding:60px;border-radius:20px;}
h1{font-size:48px;margin-bottom:20px;}
p{font-size:18px;opacity:0.9;}
.status{margin-top:30px;padding:10px 30px;background:rgba(255,255,255,0.2);border-radius:50px;display:inline-block;}
</style>
</head>
<body>
<div class="container">
<h1>Welcome</h1>
<p>Server is running.</p>
<div class="status">Online</div>
</div>
</body>
</html>

Docker Compose 配置#

路径:/opt/xray/docker-compose.yml

PRTCL // YAML
version: '3.8'
services:
xray-core:
image: teddysun/xray:latest
container_name: xray-core
volumes:
- ./config/config.json:/etc/xray/config.json
restart: unless-stopped
network_mode: host
healthcheck:
test: ["CMD", "cat", "/etc/xray/config.json"]
interval: 30s
timeout: 10s
retries: 3
nginx:
image: nginx:alpine
container_name: xray-nginx
volumes:
- ./html:/usr/share/nginx/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./certs/cert.pem:/etc/ssl/certs/cert.pem
- ./certs/key.pem:/etc/ssl/private/key.pem
restart: unless-stopped
network_mode: host

💡 network_mode: host 的优势:

  • 容器直接使用宿主机网络,避免端口冲突
  • Nginx 可直接绑定 80/443 端口

部署命令#

一键启动#

PRTCL // BASH
Terminal window
cd /opt/xray
# 拉取镜像并启动
docker-compose pull
docker-compose up -d
# 查看状态
docker ps
# 查看日志
docker logs xray-core --tail 20
docker logs xray-nginx --tail 20

常用管理命令#

PRTCL // BASH
Terminal window
# 重启服务
docker-compose restart
# 停止服务
docker-compose down
# 重新加载配置
docker-compose exec xray-core xray reload
# 更新 Xray
docker-compose pull xray-core && docker-compose up -d xray-core

客户端配置#

Clash / FlClash 配置#

PRTCL // YAML
port: 7890
socks-port: 7891
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
proxies:
- name: HK-VLESS
type: vless
server: 154.222.24.65
port: 443
uuid: 60b3f6e5-1227-4487-8084-4bbb6503b923
network: ws
tls: true
udp: true
sni: 154.222.24.65
skip-cert-verify: true
ws-opts:
path: /vless
headers:
Host: 154.222.24.65
proxy-groups:
- name: 🚀 代理
type: select
proxies:
- HK-VLESS
rules:
- GEOIP,CN,DIRECT
- MATCH,🚀 代理

FlClash 使用步骤#

  1. 导入配置

    • 方式一:扫描二维码
    • 方式二:上传 YAML 文件
    • 方式三:复制粘贴配置内容
  2. 关键设置

    • TLS:✅ 必须开启
    • 跳过证书验证:✅ 必须开启(自签证书)
    • TUN 模式:✅ 需要开启
  3. 测试连接

    • 选择节点 → 点击测试
    • 超时说明连接失败,检查上述设置

安全加固#

更换 UUID#

定期更换 UUID 可提升安全性。

PRTCL // BASH
Terminal window
# 生成新 UUID
uuidgen
# 编辑配置
nano /opt/xray/config/config.json
# 将 "id" 字段替换为新 UUID
# 重载 Xray
docker-compose exec xray-core xray reload

防火墙设置#

PRTCL // BASH
Terminal window
# 仅开放必要端口
ufw allow 22 # SSH
ufw allow 80 # HTTP
ufw allow 443 # HTTPS
ufw enable

定期更新#

PRTCL // BASH
Terminal window
# 更新 Docker 镜像
docker-compose pull
docker-compose up -d
# 检查 Xray 更新
docker pull teddysun/xray:latest
docker-compose up -d xray-core

故障排查#

常见问题#

问题原因解决方案
连接超时端口被占用ss -tlnp | grep 443 检查端口
TLS 错误证书问题开启「跳过证书验证」
伪装失效Nginx 未启动docker logs xray-nginx 查看日志
Xray 崩溃配置错误docker logs xray-core 查看日志

日志查看#

PRTCL // BASH
Terminal window
# Xray 日志
docker logs xray-core --tail 50 -f
# Nginx 日志
docker logs xray-nginx --tail 50 -f
# 系统日志
journalctl -u docker -f

连通性测试#

PRTCL // BASH
Terminal window
# 服务器内部测试
curl http://127.0.0.1/ # HTTP
curl https://127.0.0.1/ # HTTPS(自签证书)
# 外部测试
curl https:// 你的服务器 IP/ # 伪装网站

相关文件路径#

文件路径
工作目录/opt/xray/
Xray 配置/opt/xray/config/config.json
Nginx 配置/opt/xray/nginx.conf
伪装网站/opt/xray/html/index.html
TLS 证书/opt/xray/certs/
Docker Compose/opt/xray/docker-compose.yml

总结#

本部署方案实现了:

  • 流量加密:TLS 1.3 全程加密
  • 流量伪装:模拟正常 HTTPS 网站
  • 抗封锁:VLESS + WebSocket 难以识别
  • 易于管理:Docker 一键部署
  • 高可用:自动重启,故障自愈

📅 部署日期:2026-04-19
🌐 服务器:香港 154.222.24.65
🔐 协议:VLESS + WebSocket + TLS
🐳 容器:xray-core + xray-nginx

R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.05.18
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

机场自部署

Author: CHONGXIReleased: 2026.05.18

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21