一、搭建的理论基础
安装Docker然后拉取Xray或Trojan-Go的镜像,运行它们的配置文件。其中由Xray或Trojan-Go监听443端口,回落端口为本机的80端口(由caddy监听)。本文以Debian为例,试搭建。啰嗦一下:本例是Xray和Trojan-Go分别监听443端口(只能二选一)。
搭建的玩法很多,本人认为越简单越好,先学走后学跑,步子大了容易扯着蛋。
二、搭建前的准备工作
2.1、申请域名(略)
2.2、申请证书
三、安装Docker
wget -qO- get.docker.com | bash
四、安装Caddy
安装caddy的作用是接受xray或trojan-go的回落,以应付未知流量的探测。
4.1、方式一
4.1.1拉取caddy镜像(V1.0.5)
docker pull teddysun/caddy
4.1.2配置caddy运行文件
mkdir /etc/caddy/ #建立存放caddy配置文件的文件夹
mkdir -p /var/www/html #建立伪装网站目录的文件夹
vim /etc/caddy/Caddyfile #将下列代码填入
你的域名:80 { #修改域名
gzip
browse
root /var/www/html #存放伪装网站目录
}
4.1.3运行
docker run -d --net host --name caddy --restart always -v /etc/caddy:/etc/caddy -v /var/www/html:/var/www/html teddysun/caddy
4.2、方式二
wget https://github.com/caddyserver/caddy/releases/download/v2.3.0/caddy_2.3.0_linux_amd64.deb #下载caddy2,目前是最新稳定版
dpkg -i caddy_2.3.0_linux_amd64.deb #安装
systemctl caddy status #查看运行状态
vim /etc/caddy/Caddyfile #修改caddyfile
将caddy监听的端口改为80。
在caddy指定的路径下最好放个静态的网页(非必须)。
systemctl restart caddy
systemctl status caddy
五、搭建Xray
5.1、拉取镜像
docker pull teddysun/xray
5.2、配置xray的运行文件
mkdir /etc/xray #建立存放配置文件的文件夹
vim /etc/xray/config.json #将下面代码填入
{
"inbound":
{
"port": 443,
"listen":"0.0.0.0",
"protocol": "vless",
"tag":"VLESSTCP",
"settings": {
"clients": [
{
"id": "4a94054f-27be-5b86-dbce-b8c1443988e5", #需修改UUID
"add": "",
"flow":"xtls-rprx-direct",
"email": "xray@xtls.com"
}
],
"decryption": "none",
"fallbacks": [
{"dest":80,"xver":0}
]
},
"streamSettings": {
"network": "tcp",
"security": "xtls",
"minVersion": "1.2",
"xtlsSettings": {
"alpn": [
"http/1.1",
"h2"
],
"cipherSuites":"TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
"preferServerCipherSuites": true,
"certificates": [
{
"certificateFile": "/etc/xray/fullchain.cer", #证书存放的路径
"keyFile": "/etc/xray/private.key", #密钥存放的路径
"ocspStapling":86400
}
]
}
}
},
"outbounds":[
{
"protocol":"freedom",
"settings":{},
"tag":"direct"
},
{
"protocol":"blackhole",
"settings":{},
"tag":"adblock"
}
],
"routing":{
"domainStrategy":"IPOnDemand",
"rules":[
{
"domain":[
"googleadsserving.com"
],
"type":"field",
"outboundTag":"adblock"
},
{
"type":"field",
"outboundTag":"direct",
"domain":["geosite:cn"]
},
{
"type": "field",
"outboundTag": "block",
"protocol": [
"bittorrent"
]
}
]
}
}
5.3、运行
docker run -d --net host --name xray --restart=always -v /etc/xray:/etc/xray teddysun/xray
5.4、客户端的配置
客户端以Qv2ray为例
主机:你的域名;端口:443;类型:VLESS
UUID:你猜;流控:xtls-rprx-direct;
TLS设置-安全类型:将None改为XTLS
六、搭建Trojan-Go
6.1、拉取镜像
docker pull teddysun/trojan-go
6.2、配置Trojan-Go的运行文件
mkdir /etc/trojan-go #建立存放配置文件的文件夹
vim /etc/trojan-go/config.json #将下列代码填入
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"password" #你的密码
],
"ssl": {
"cert": "/etc/trojan-go/fullchain.cer", #证书路径
"key": "/etc/trojan-go/private.key", #密钥路径
"sni": "domain.com", #你的域名
"fallback_addr": "127.0.0.1",
"fallback_port": 80
},
"router": {
"enabled": true,
"block": [
"geoip:private"
],
"geoip": "/usr/bin/geoip.dat",
"geosite": "/usr/bin/geosite.dat"
}
}
6.3、运行
docker run -d --net host --name trojan-go --restart=always -v /etc/trojan-go:/etc/trojan-go teddysun/trojan-go
6.4、客户端的配置
客户端以Qv2ray为例(并且已安装Trojan-Go插件)
主机:你的域名;端口:443;类型:Trojan Go
Password:你猜;SNI:你的域名
七、更新xray或trojan-go
docker ps –as #查看运行的容器
docker stop xray(容器名) #停止运行容器
docker rm –f xray(容器名) #删除容器
重新拉取xray或trojan-go镜像,然后运行docker run命令。
以下命令非必须
docker images #查看docker中存在的镜像
docker rmi 镜像的id(数字) #删除docke中旧镜像