v2ray+TLS+Caddy+Cloudflare的搭建

本文只是简单的记录一下v2ray+TLS+Caddy+Cloudflare的搭建过程。毕竟还是有不少人希望自己搭建服务器的。

在按照本文的步骤进行搭建之前,需要具备以下几个前提条件

  1. 一台具有root权限的VPS(系统推荐ubuntu18.04,本文的操作基于此版本)
  2. cloudflare账号,注:不要国内版,国内版需要备案
  3. 一个域名,并且已添加到cloudflare中

确认以上前提条件都具备后,那就开搞吧。(下文中的命令默认以root用户权限执行

域名准备

假设要使用的域名为fly.bloodyroad.me,在Cloudflare里,添加一条A记录,name为fly,IPv4地址为服务器的IP,最后那个小云朵,点一下,变成灰色即DNS only的状态,保存即可。如下图:

保存后,结果如下图:

Caddy的安装

为了能够使用Caddy正常申请SSL证书,请确认服务器的80和443端口已经打开

  1. 执行以下命令,下载并安装Caddy
    curl https://getcaddy.com | bash -s personal tls.dns.cloudflare

  2. 安装完成后,执行以下命令,将caddy添加到系统服务中,实现开机自启

    1
    2
    3
    curl -s  https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service  -o /etc/systemd/system/caddy.service
    systemctl daemon-reload
    systemctl enable caddy.service
  3. 创建caddy配置文件

    1
    2
    3
    4
    5
    6
    mkdir /etc/caddy
    cd /etc/caddy
    mkdir conf
    echo "import ./conf/*" >> Caddyfile
    cd conf
    vim fly.bloodyroad.me

    记得上面的文件名fly.bloodyroad.me要换成你自己域名

  4. 将以下内容复制粘贴进fly.bloodyroad.me记得换成你自己的域名)配置文件中,其中localhost:10000,需要v2ray监听本地10000端口,这个在下文会讲到

    1
    2
    3
    4
    5
    6
    7
    8
    fly.bloodyroad.me {
    proxy /wall localhost:10000 {
    websocket
    header_upstream -Origin
    }
    log /var/log/caddy/access.log
    root /var/www
    }

    注意要记得把fly.bloodyroad.me换成你自己的域名

  5. 修改文件夹权限
    chown -R root:www-data /etc/caddy

  6. 创建证书目录

    1
    2
    3
    mkdir /etc/ssl/caddy
    chown -R www-data:www-data /etc/ssl/caddy
    chmod 0770 /etc/ssl/caddy
  7. 创建日志目录

    1
    2
    mkdir /var/log/caddy
    chown -R www-data:www-data /var/log/caddy
  8. 创建默认的html文件

    1
    2
    mkdir /var/www
    echo "Hello World" >> /var/www/index.html
  9. 启动Caddy
    service caddy start
    启动后,在浏览器输入https://fly.bloodyroad.me(此处换成你自己的域名),不出意外,应该能看到Hello World出现在浏览器中
    如果浏览器打不开网址,可以在服务器上,用以下命令查看caddy状态是否正常
    service caddy status
    也可以用以下命令查看caddy启动日志
    journalctl -f -u caddy

  10. 确认Caddy启动没问题后,就可以把Cloudflare中的代理状态打开了,就是点一下那个小云朵,变成橙色就行了, 效果图如下:

v2ray的安装

v2ray安装很简单,官方已经有一键安装的脚本,这里,直接用官方的一键脚本就好。

  1. 安装v2ray
    bash <(curl -L -s https://install.direct/go.sh)
  2. 添加配置文件

    1
    2
    mkdir /etc/v2ray
    vim /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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    {
    "log": {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "logLevel": "warning"
    },
    "inbound": {
    "port": 10000,
    "listen": "127.0.0.1",
    "protocol": "vmess",
    "settings": {
    "clients": [
    {
    "id": "93a9c540-c2d2-44ee-9318-412284fed9f8",
    "level": 1,
    "alterId": 64
    }
    ]
    },
    "streamSettings": {
    "network": "ws",
    "wsSettings": {
    "path": "/wall"
    }
    }
    },
    "outbound": {
    "protocol": "freedom",
    "settings": {}
    },
    "outboundDetour": [
    {
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
    }
    ],
    "routing": {
    "strategy": "rules",
    "settings": {
    "rules": [
    {
    "type": "field",
    "ip": [
    "geoip:private"
    ],
    "outboundTag": "blocked"
    }
    ]
    }
    }
    }

    首先:streamSettings中,wsSettings下的path,即路径,要与前面caddy配置中的proxy /wall对应,否则,caddy无法流流量转发到v2ray中。
    其次:inbound里面的port,即端口号10000要与前面caddy配置中localhost:10000中的端口号对应,否则,caddy同样无法将流量转发到v2ray中。
    最后,inbound->settings->clients->id,可以自已生成一个,点击这里,可以在线生成一个,记得要保存下来,客户端要用到的。
    如果怕弄不对, caddy和v2ray的配置,就直接用上面的配置就好了。

  3. 启动v2ray
    service v2ay start

  4. 启用bbr加速

    1
    2
    3
    4
    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    sysctl -p
    lsmod | grep bbr

    最后如果输出有看到tcp_bbr,说明bbr启用成功了。

写在最后

如果有嫌麻烦,不愿意自己搭建的,可以点击这里,注册账号后,直接使用我搭好的服务。