小黑屋 · 2022年7月24日 0

一个镜像搞定TLS+Websocket,最安全的V2ray

特点

1.免配置,部署完成以后从日志直接查看导入字符串
2.支持自动申请证书,也支持上级反向代理申请证书
3.与官方版本保持同步更新

先放上开源地址:https://github.com/anerg2046/Caddy_V2ray

使用前提:

  • 一台运行docker的主机
  • 一个域名,可以是二级域名,并已解析A记录到你的主机IP
  • 一个邮箱地址,用于caddy申请SSL证书,如果不填将不会申请证书,且caddy只监听80端口

如果你只在vps上跑v2ray,不跑其他的web服务,那么用法很简单,命令行模式如下:

docker run -d \
  -v v2ray_v2ray:/etc/v2ray:rw \
  -v v2ray_caddy:/etc/caddy:rw \
  -p 80:80 \
  -p 443:443 \
  -e DOMAIN=v3.mooim.com \
  -e EMAIL=r.anerg@gmail.com \
  --restart=always \
  --name=caddy_v2ray \
  anerg/v2ray:latest

或者使用docker-compose

version: '3'

services:
  caddy_v2ray:
    image: anerg/v2ray
    container_name: caddy_v2ray
    restart: always
    volumes:
      - v2ray:/etc/v2ray:rw
      - caddy:/etc/caddy:rw
    environment:
      - "DOMAIN=v3.mooim.com"
      - "EMAIL=r.anerg@gmail.com"
    ports:
      - "80:80"
      - "443:443"

volumes:
  v2ray:
    name: v2ray_v2ray
  caddy:
    name: v2ray_caddy

在docker-compose.yml文件的目录下执行docker-compose up -d即可

说明:

  • DOMAIN:你的域名
  • EMAIL:用于申请证书的邮箱地址
  • 必须开放80端口用于证书的申请

如果没啥别的问题,执行命令docker logs caddy_v2ray,你会看到如下内容

=====================================
V2ray 配置信息
地址(address): v2.mooim.com
端口(port): 443
用户id(UUID): a736b1ef-a96e-4f35-8f6b-5b76a050e282
加密方式(security): 自适应
传输协议(network): ws
伪装类型(type): none
路径(不要落下/): /8768f5ff9/
底层传输安全: tls
=====================================
=========复制以下内容进行导入==========
vmess://ewogICAgInYiOiAiMiIsCiAgICAicHMiOiAidjIubW9vaW0uY29tIiwKICAgICJhZGQiOiAidjIubW9vaW0uY29tIiwKICAgICJwb3J0IjogIjQ0MyIsCiAgICAiaWQiOiAiYTczNmIxZWYtYTk2ZS00ZjM1LThmNmItNWI3NmEwNTBlMjgyIiwKICAgICJhaWQiOiAiMCIsCiAgICAibmV0IjogIndzIiwKICAgICJ0eXBlIjogIm5vbmUiLAogICAgImhvc3QiOiAidjIubW9vaW0uY29tIiwKICAgICJwYXRoIjogIi84NzY4ZjVmZjkvIiwKICAgICJ0bHMiOiAidGxzIgp9
=========复制以上内容进行导入==========
{"level":"info","ts":1656863534.6378205,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":"caddyfile"}
{"level":"warn","ts":1656863534.6384249,"logger":"caddyfile","msg":"Unnecessary header_up X-Forwarded-For: the reverse proxy's default behavior is to pass headers to the upstream"}
.......

复制vmess://….这一串到你的passwall或者clash执行导入即可使用

如果你的vps还提供其他web服务

一般来说常用的就是nginx-proxy和traefik了,此时不要填EMAIL环境变量,这样就只会提供80端口的http服务,由nginx-proxy或者traefik来申请证书,并反代到后端即可。

这里给个traefik的docker-compose样例

version: '3'

networks:
  work-net:
    external: true

services:
  caddy_v2ray:
    image: anerg/v2ray
    container_name: caddy_v2ray
    restart: always
    volumes:
      - v2ray:/etc/v2ray:rw
      - caddy:/etc/caddy:rw
    networks:
      - work-net
    environment:
      - "DOMAIN=v3.mooim.com"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.v2ray.rule=Host(`v3.mooim.com`)"
      - "traefik.http.routers.v2ray.tls=true"
      - "traefik.http.routers.v2ray.tls.certresolver=leresolver"
      - "traefik.http.routers.v2ray.entrypoints=websecure"
      - "traefik.http.routers.v2ray.service=v2ray"
      - "traefik.http.services.v2ray.loadbalancer.server.port=80"
      - "traefik.http.routers.v2ray.middlewares=gzip-compress"

volumes:
  v2ray:
    name: v2ray_v2ray
  caddy:
    name: v2ray_caddy

注意,这里的work-net需要与traefik使用相同的配置,如果你没有自定义的docker网络的话,把networks相关的配置都删掉

这样,由traefik去申请证书就可以了

当你访问你的默认域名的时候是一个伪装的域名出售页面,翻墙流量经由TLS加密走websocket,这是目前最安全的v2ray方式。