在Vultr VPS上搭建V2Ray+Caddy代理

Page content

准备

本文假设读者已经具备以下条件:

  • 一台境外的vps。
  • 一个域名,无备案要求。先设置dns将域名解析到vps的ip。
  • 为域名申请一个证书,可以从Let’s Encrypt获取免费证书;本文用到caddy能自动申请。
  • 有基本linux技巧,能使用vim/nano等编辑器。

本文用到系统环境及软件版本如下:

  • Caddy: 2.x
  • V2ray: 4.x
  • Vultr VPS一台
  • 系统: Ubuntu 20.04
lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal

V2ay服务端

安装

curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh
sudo bash install-release.sh 4.34.0
sudo systemctl enable v2ray
sudo systemctl start v2ray

修改配置文件

配置文件位于/usr/local/etc/v2ray/config.json

{
    "inbound": {
        "port": 8888, # 服务器监听端口
        "listen": "127.0.0.1", # 只监听 127.0.0.1,避免除本机外的机器探测到开放了8888端口 
        "protocol": "vmess",
        "settings": {
            "clients": [
                {
                    "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
                    "alterId": 64
                }
            ]
        },
        "streamSettings": {
            "network": "ws", # WebSocket 方式
            "wsSettings": {
                "path": "/ray"
            }
        }
    },
    "outbound": {
        "protocol": "freedom", # 主传出协议 这里是直接转发所以流量
        "settings": {}
    }
}

重启V2Ray

sudo systemctl restart v2ray

检查V2Ray是否成功启动

[email protected]:~/v2ray$ ps aux | grep v2ray
nobody     22527  3.2  2.2 4913616 22312 ?       Ssl  05:45   0:00 /usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json
vpn        22545  0.0  0.0   9540   740 pts/1    S+   05:45   0:00 grep --color=auto v2ray

停止V2Ray

sudo systemctl disable v2ray.service --now

Caddy安装与配置

安装Caddy

sudo apt install curl
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版本,因为v1.x跟v2.x的配置文件格式不一样,这里我们安装的是v2。

[email protected]:~$ caddy version
v2.1.1 h1:X9k1+ehZPYYrSqBvf/ocUgdLSRIuiNiMo7CvyGUQKeA=

修改caddy配置

sudo vim /etc/caddy/Caddyfile

新建一个Caddyfile,添加如下内容:

your_domain.com:443 {
    log {
        output file /home/vpn/caddy/access.log
    }
    root * /home/vpn/caddy/html
    file_server
    tls {
        protocols tls1.2 tls1.3
        ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
        curves x25519
    }
    @v2ray_websocket {
        path /ray
        header Connection *Upgrade*
        header Upgrade websocket
    }
    reverse_proxy @v2ray_websocket localhost:8888
}
  • Caddy v1.x 和 v2.x 的配置文件是不兼容的,这里我们采用的是最新的v2
  • Caddy监听 443 端口(可以是其他端口)
  • Caddy处理 TLS 之后,将流量转发到 V2Ray 的 WebSocket 所监听的内网端口,本例是8888
  • V2Ray收到请求后依然 按 Vmess 处理,V2ray服务器端不需要配置 TLS

重启Caddy

[email protected]:~/caddy$ pwd
/home/vpn/caddy
[email protected]:~/caddy$ ls
access.log  Caddyfile  html

sudo caddy stop
sudo caddy start --config Caddyfile