Caddy 的安装 Link to heading
首先安装标准的 caddy,执行以下命令:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
这里的 Caddy 需要 caddy-trojan 和 klzgard 修改的 forwardproxy 两个插件。
首先需要安装最新的 go,Debian 通过 sudo apt install golang 安装的不够新,编译的时候会出现 crypto/ecdh: package crypto/ecdh is not in GOROOT 的问题。
因此,我们需要去 go 官网 下载,移动至 ~ 目录下并解压,之后修改 ~/.config/fish/config.fish,添加以下两行:
set -gx GOPATH $HOME/go
set -gx PATH $GOPATH/bin $PATH
从而添加 go 的环境变量。
然后根据 klzgard 给出的 教程,依次执行以下命令:
git clone https://github.com/klzgrad/forwardproxy.git
cd forwardproxy
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest # 编译安装 xcaddy
xcaddy build --with github.com/caddyserver/forwardproxy@caddy2=$PWD --with github.com/imgk/caddy-trojan
之后,在 forwardproxy 目录下就能看到名为 caddy 的可执行文件,替换掉 /usr/bin/caddy
sudo chmod +x /usr/bin/caddy
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/caddy # 使得 caddy 能监听低位端口如 443
Caddy 配置 Link to heading
这里我使用的是免费的 eu.org 的域名,托管于 cloudfare,请添加解析,将 naive.example.eu.org 和 tro.example.eu.org 添加 A 解析,指向你部署 trojan 与 naiveproxy 的服务器的 ipv4 地址,最好是一个服务器一组子域名,naive-v6.example.eu.org 域名添加 AAAA 解析,指向服务器的 ipv6 地址,否则 caddy 无法为这些域名自动申请 ssl 证书。
修改 ~/caddy/Caddyfile 为以下内容:
{
order trojan before file_server
servers :4443 {
listener_wrappers {
trojan
}
}
log {
output file /var/log/caddy/default.log {
roll_size 10MiB
}
}
trojan {
caddy
no_proxy
users yiwei tro_passwd123
}
}
tro.gr-jp.eg.com {
reverse_proxy https://tro-gr-jp.eg.com:4443
}
fava.gr-jp.eg.com {
reverse_proxy 127.0.0.1:5000
}
:443, naive-gr-jp.eg.com {
tls [email protected]
route {
forward_proxy {
basic_auth yiwei passwd123
hide_ip
hide_via
probe_resistance
}
file_server {
root /usr/share/caddy
}
}
}
:4443, tro-gr-jp.eg.com {
tls [email protected]
route {
trojan {
connect_method
websocket
}
}
file_server {
root /usr/share/caddy
}
}
注意上面的 reverse_proxy 中,如果是要访问 qBittorrent 的 webui,那么应该使用 http 而不是 https。(暂定)
请自行修改 trojan 的 user 部分对应的用户名和密码,以及 naive 的 baic_auth 部分对应的用户名和密码。
caddy 申请的证书位于 /var/lib/caddy/.local/share/caddy 目录,可以通过 sudo journalctl -fu caddy 实时查看 systemd 管理的 caddy 的日志。
然后执行以下命令,即可运行 caddy。
sudo systemctl restart caddy
安装与配置 vless + reality Link to heading
执行以下命令以安装最新的 xray:
sudo su # 切换到 root
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install --beta
由于我们这里选择使用特斯拉的域名进行伪装,因此不需要申请 ssl 证书,将 /usr/local/etc/xray/config.json 修改为以下内容:
{
"log": {
"loglevel": "warning"
},
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": [
"geoip:cn",
"geoip:private"
],
"outboundTag": "block"
}
]
},
"inbounds": [
{
"listen": "0.0.0.0",
"port": 8443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "xxx",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "www.tesla.com:443",
"serverNames": [
"tesla.com"
],
"privateKey": "xxx",
"shortIds": [
"6ba85179e30d4fc2"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}
config.json 需要自行修改的部分与 基于 Xray 搭建 reality 中所说的内容一致,主要就是 id、shotdIds、privateKey 这几项。
Shadowrocket 的使用 Link to heading
添加 trojan 节点 Link to heading
如图下所示:

地址、端口、密码 以及 SNI 都需要设置成自己在 Caddyfile 中设置的。
添加 naive 节点 Link to heading
naive 的设置是类似的:

生成 shadowrocket 订阅 Link to heading
这里我实际上是手动添加了节点之后,例如批量选中 trojan 节点进行复制,在 vscode 上观察发现,trojan 的链接格式比较简单,而 vless 和 naiveproxy 则比较复杂,分别将这些链接进行 base64 编码,将编码后的内容存入 gist 的文件中,例如 tro-base64.yaml,shadowrocket 添加订阅就能识别 tro-base64.yaml 的 raw link,一言以蔽之,shadowrocket 添加订阅必须是 base64 编码之后的 trojan 或者 vless 或者 naiveproxy 链接格式。
更新 Link to heading
目前 klzgard 的魔改版 forward-proxy 存在比较严重的内存泄漏问题,因此 Caddyfile 暂时不配置 naiveproxy 的相关内容,同时只执行 xcaddy build --with github.com/imgk/caddy-trojan,即只编译包含 caddy-trojan 插件的 caddy 可执行文件。