上一篇文章提到,我搭建了一個基於 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。