我参考 ChatGPT 的教程,根据我自己安装并实际可用的过程,整合而成。 一些技术话语我不是很懂,基本都是复制的,再自己补充了一些。
客户端:
iOS(Shadowrocket)、
Android(Clash for Android) /
Windows / macOS(Clash)
一、为什么要自建?
- ❌ 商用 VPN 用不起
二、整体方案选择
本教程最终采用的技术方案:
VPS + Xray + Trojan + TLS(443)+ 域名证书
选择理由:
- Trojan 本质就是 HTTPS
- 使用 443 端口,行为与普通网站一致
- 几乎所有平台代理客户端都支持
三、购买 VPS 与系统准备
1️⃣ VPS 推荐配置
| 项目 | 建议 |
|---|---|
| CPU | 1 vCPU |
| 内存 | 1 GB |
| 带宽 | ≥ 1 TB / 月 |
| 系统 | Ubuntu 22.04 LTS |
| 机房 | 德国 / 美国 / 荷兰 |
不建议选择香港、日本(部分地区容易被重点限制)。 这个我没做考究,是 AI 说的。
我是买的 Lisahost, 因为看到了它的卖点是纯净 IP,虽然我不知道有没有用。 你可以自己买了去 PING0 测试。
我买了两个:
- 100Mbps VDS 固定流量版,德国双 ISP 原生住宅 IP, 1C1G 20GB,3000G/月,上下 100M,季度 410 元
- 美国 4837 线路双 ISP 家宽原生 IP, 1C1G 20GB,3000G/月,季度 187 元
2️⃣ 安装系统
- 默认安装系统:Ubuntu 24.04 LTS
- 使用 SSH 登录服务器(root 或 sudo)
四、一键安装 Xray(官方脚本)
使用 XTLS 官方维护脚本:
bash <(curl -Ls https://github.com/XTLS/Xray-install/raw/main/install-release.sh)
验证安装:若能看到版本号,说明安装成功。
xray version
生成 UUID:
cat /proc/sys/kernel/random/uuid
记录下来。例如
123e4567-e89b-12d3-a456-426614174000
五、协议选择对比(SS / SSR / VMess / VLESS / Trojan)
| 协议 | 优点 | 缺点 | 推荐 | 适合人群 |
|---|---|---|---|---|
| SS / SSR | 配置简单、早期速度快 | 特征明显、已被精准识别 | ❌ | 了解历史 |
| VMess | 功能多、可玩性高 | 配置复杂、逐步淘汰 | ⚠️ | 折腾型用户 |
| VLESS | - 现代化协议- 性能优秀- 配合 Reality / TLS 隐匿性强 | - 客户端要求较高- 部分组合兼容性一般 | ⭐ | 有经验用户 |
| Trojan | - ✔ 看起来就是标准 HTTPS- ✔ 使用 443 端口- ✔ 客户端支持广泛- ✔ 稳定、低特征 | - 需要域名和证书- 初次配置略复杂 | ✅ | 新手 / 稳定使用 |
这里不是我推荐的,是ChatGPT推荐的,一开始他还推荐我VLESS,但是我试了好几次一直有问题,可能是 因为我在国外用的是回国模式吧。
六、准备域名并解析
1️⃣ 购买域名
任意注册商均可,也可以找一些免费的二级域名,下面所有操作下面的域名表示,所有操作要换成自己的域名。
us.vpn.com
2️⃣ DNS 解析
us.vpn.com → VPS_IP
验证:
dig us.vpn.com +short
七、申请 HTTPS 证书(acme.sh)
1️⃣ 安装 acme.shapt update
apt install -y curl socat
curl https://get.acme.sh | sh
source ~/.bashrc
设置 CA:
acme.sh --set-default-ca --server letsencrypt
启动Xray
systemctl enable xray
systemctl restart xray
systemctl status xray
看到 `active (running)` 就成功了。
2️⃣ 使用 standalone 模式申请证书
需要临时释放 80 端口
systemctl stop xray
acme.sh --issue -d us.vpn.com --standalone --keylength ec-256
安装证书:
mkdir -p /etc/ssl/xray
acme.sh --install-cert -d us.vpn.com --ecc \
--key-file /etc/ssl/xray/privkey.pem \
--fullchain-file /etc/ssl/xray/fullchain.pem \
--reloadcmd "systemctl restart xray"
八、配置 Trojan(Xray)
Trojan 不使用 UUID 概念,直接使用 password, UUID 可直接作为 password。
示例config.json{
"inbounds": [
{
"listen": "0.0.0.0",
"port": 443,
"protocol": "trojan",
"settings": {
"clients": [
{
"password": "替换成你的随机字符串,也就是前面的UUID"
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"alpn": ["h2", "http/1.1"],
"certificates": [
{
"certificateFile": "/etc/ssl/xray/fullchain.pem",
"keyFile": "/etc/ssl/xray/privkey.pem"
}
]
}
}
}
],
"outbounds": [
{ "protocol": "freedom" }
]
}
启动服务
systemctl restart xray
ss -lntp | grep 443
九、客户端配置示例
iOS(Shadowrocket)
trojan://UUID@us.vpn.com:443?sni=us.vpn.com#US-TROJAN
Clash(完整 YAML)
port: 7890
socks-port: 7891
mixed-port: 7893
allow-lan: true
mode: rule
log-level: info
ipv6: false
external-controller: 127.0.0.1:9090
profile:
store-selected: true
store-fake-ip: true
#################################
# DNS(对 TikTok 非常关键)
#################################
dns:
enable: true
listen: 0.0.0.0:1053
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
default-nameserver:
- 1.1.1.1
- 8.8.8.8
nameserver:
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: false
#################################
# 代理节点(Trojan)
#################################
proxies:
- name: DE-TROJAN
type: trojan
server: us.vpn.com
port: 443
password: 你的UUID
sni: us.vpn.com
alpn:
- h2
- http/1.1
udp: false
#################################
# 代理组
#################################
proxy-groups:
- name: PROXY
type: select
proxies:
- DE-TROJAN
- DIRECT
#################################
# 规则(TikTok 优先)
#################################
rules:
# 本机 / 局域网直连
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
# ===== TikTok 强制代理 =====
- DOMAIN-SUFFIX,tiktok.com,PROXY
- DOMAIN-SUFFIX,tiktokcdn.com,PROXY
- DOMAIN-SUFFIX,byteoversea.com,PROXY
- DOMAIN-SUFFIX,ibytedtos.com,PROXY
- DOMAIN-SUFFIX,byteintl.com,PROXY
- DOMAIN-SUFFIX,muscdn.com,PROXY
- DOMAIN-SUFFIX,musical.ly,PROXY
# Google / YouTube / Apple(乌兹别克常被限速)
- DOMAIN-SUFFIX,google.com,PROXY
- DOMAIN-SUFFIX,googleapis.com,PROXY
- DOMAIN-SUFFIX,youtube.com,PROXY
- DOMAIN-SUFFIX,apple.com,PROXY
- DOMAIN-SUFFIX,icloud.com,PROXY
# 其余全部走代理(海外环境)
- MATCH,PROXY
这个YAML配置文件需要导入到Clash里面,最好是Localsend直接传送到手机上,然后配置的时候直接导入,亲测可用。我这套也是ChatGpt给的,我现在是可用,速度还是不错, 如果不合适可以去问问豆包或者DeepSeek。 电脑端我下载了Clash导入配置但是不成功,不知道为啥,因为电脑端基本不用,我就没再去操作。有更好的方法可以留言,有不对的也喜欢给说下,我再修改。