上一篇文章提到,我搭建了一個基於 Aria2 的 BT 離線下載伺服器。為了用 Caddy 反向代理部署好的容器,我把原來偷懶用一鍵指令碼部署的 Trojan 給解除安裝了,問就是因為這指令碼把 80 和 443 埠都佔用了,不解除安裝掉根本沒法繼續。
於是離線下載伺服器是搭建好了,可時不時需要的代理卻不得不下線。仔細一想,之前看到過有人 Cloudflare + V2Ray + WS 復活被牆的 VPS,既然是 WebSocket,還能用 Cloudflare 反代,那用 Caddy 反代又有何不可呢?況且 Caddy 還有自動 TLS,比起 Nginx + Certbot 的組合配置起來肯定更簡單。只要配置成功,我就可以在為 Caddy 留住 443 埠的同時跑代理了。
安裝 VLESS 和 Caddy
安裝VLESS 可以直接使用 v2fly/fhs-install-v2ray 一鍵指令碼:
1
2
| # 安裝執行檔和 .dat 資料檔
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
|
Caddy 的安裝請蔘考官方教程,例如,我使用 Debian 12,則使用以下命令:
1
2
3
4
5
| sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
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
|
配置 VLESS
編輯/usr/local/etc/v2ray/config.json:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| {
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbounds": [
{
"port": 1234, //任意埠
"listen": "127.0.0.1",
"protocol": "vless",
"settings": {
"clients": [
{
"id": "super-random-uuid", //隨機生成一個 UUID 替換即可
"level": 0,
"email": "example@example.com"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"security": "none",
"wsSettings": {
"path": "/" // 需要與之後的 Caddy 配置保持相同
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
|
編輯完成後儲存退出即可。
配置 Caddy
在你喜歡的位置建立一個 Caddyfile,或者編輯已有的 Caddyfile,加入如下內容,反向代理剛才在 VLESS 配置檔案中設定的埠:
1
2
3
4
5
6
7
8
9
| yourdomain.com {
# 用一個 Matcher 匹配所有指定路徑的 Websocket 請求
@websockets {
path / # 與前面 VLESS 的 path 保持一致
header Connection Upgrade
header Upgrade websocket
}
reverse_proxy @websockets :1234
}
|
至此,服務端所有配置檔案都編輯完畢。
啓動服務
啓動 VLESS,並設定開機自啓動:
1
| systemtcl enable v2ray && systemctl start v2ray
|
啓動 Caddy/更新 Caddy 配置:
1
2
| caddy start
caddy reload # 更新配置用
|
以上操作全部完成後,Caddy 反向代理 VLESS 就完成了。
客户端設定
客户端方面需要手動設定:
- 地址是繫結給 VLESS 的域名。
- 埠是 443
- TLS 開啓
- 傳輸方式選擇 websocket
- UUID 是之前填入 VLESS 配置檔案的 UUID

所有的客户端設定大同小異,至於 Clash 的配置檔案,可以蔘考 Mihomo 文件,以下是我的示例配置檔案:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| proxies:
- name: "A Random Name"
type: vless
server: yourdomain.com
port: 443
udp: true
uuid: super-random-uuid
flow: xtls-rprx-vision
packet-encoding: xudp
tls: true
servername: yourdomain.com
alpn:
- h2
- http/1.1
skip-cert-verify: false
network: ws
smux:
enabled: false
|
需要生成 Clash 配置檔案可以使用 V2RaySE 提供的工具。
完成
好了,現在我們已經擁有了一個 VLESS 伺服器,Caddy 會自動為我們申請和維護 TLS 證書,非常好用。
只需要這麼小小折騰一下,我彷彿又找到了當年用一鍵指令碼搭建 SSR 時的愉悦,好好享受這種能順利開啓 google.com 時的興奮吧。
TODO List
評論已停用,直到您接受功能性 Cookie。