# V2RayA V2RayA 是一个支持全局透明代理的 V2Ray Linux 客户端,同时兼容SS、SSR协议。 V2RayA 致力于提供最简单的操作,满足绝大部分需求。 同时兼容V2Ray、SS、SSR意味着用户不再需要在不同工具之间切换,你甚至可以使用一个混合协议的订阅。 虽然 V2RayA 是一个 Web 客户端,它也支持以 PWA(Progressive Web App)的方式享受桌面端应用的体验。[食用方法](https://www.ithome.com/0/414/429.htm) 得益于Web客户端的优势,你不仅可以将其用于本地计算机,还可以轻松地将它部署在路由器或NAS上。 目前V2RayA仅在部分Linux发行版进行过充分测试,在使用过程中如果遇到问题,欢迎提出issue。 项目地址:https://github.com/mzz2017/V2RayA 前端 demo: https://v2raya.mzz.pub ## Build Status | name | docker image | travis-ci | netlify | | ------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | V2RayA | [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/mzz2017/v2raya?style=for-the-badge)](https://hub.docker.com/r/mzz2017/v2raya) | [![Travis (.org)](https://img.shields.io/travis/mzz2017/V2RayA?label=TRAVIS-CI%20BUILD&style=for-the-badge)](https://travis-ci.org/mzz2017/V2RayA) | [![Netlify](https://img.shields.io/netlify/f93dbfa7-d14b-4968-a7a4-5e503d8bf5e5?label=netlify%20build&style=for-the-badge)](https://app.netlify.com/sites/xenodochial-jepsen-122e9b/deploys) | ## 功能清单 已支持: - [x] 全局透明代理 - [x] V2Ray 服务控制 - [x] 导入 vmess、ss、ssr、订阅地址 - [x] 手动添加/修改节点 - [x] websocket、kcp、tcp、http、tls、shadowsocks、shadowsocksR 全支持 [[SS/SSR支持清单]](https://github.com/mzz2017/shadowsocksR/blob/master/README.md#ss-encrypting-algorithm) - [x] 测试节点 Ping、HTTP 时延 - [x] 二维码、地址分享 - [x] 支持PAC - [x] 服务端启动自动检查 PAC、订阅更新 - [x] 多路复用、TCPFastOpen 支持 - [x] 自动检查版本更新 - [x] 自定义端口 - [x] 自定义路由规则 待开发: - [ ] 回国模式(当前版本可通过自定义路由规则实现) - [ ] QUIC、auth_chain\*支持 - [ ] 透明代理重定向备选方案 - [ ] 日志 ## 界面截图

节点

订阅源

设置

点击展开更多截图

使用自定义PAC时可以配置路由规则(待实现)

## 使用 ### 从软件源安装 如下使用方法: 1. **使用apt-get安装**(debian、ubuntu) 请确保已正确安装 v2ray-core 我们提供了 Linux 下的一键安装脚本(在官方脚本基础上增加了ustc镜像源): > 运行下面的指令下载并安装 V2Ray。当 yum 或 apt-get 可用的情况下,此脚本会自动安装 unzip 和 daemon。这两个组件是安装 V2Ray 的必要组件。如果你使用的系统不支持 yum 或 apt-get,请自行安装 unzip 和 daemon ```bash curl -L -s https://github.com/mzz2017/V2RayA/raw/master/install/go.sh | sudo -E bash -s - --source ustc ``` 准备完毕后: ```bash # add public key wget -qO - https://apt.v2raya.mzz.pub/key/public-key.asc | sudo apt-key add - # add V2RayA's repository sudo add-apt-repository 'deb https://apt.v2raya.mzz.pub/ v2raya main' sudo apt-get update # install V2RayA sudo apt-get install v2raya ``` V2RayA服务端正常运行后,就可在[GUI demo](https://v2raya.mzz.pub)使用了(或[部署GUI](https://github.com/mzz2017/V2RayA#%E5%A6%82%E4%BD%95%E9%83%A8%E7%BD%B2GUI))。 2. **使用yay/yaourt安装**(archlinux、manjaro) 由于v2raya发布在AUR中,而pacman不支持AUR,因此建议使用主流的yay或yaourt作为替代方案 ```bash # install yay sudo pacman -Sy yay ``` 当yay或yaourt可用时,可通过yay或yaourt安装v2raya ```bash # assume command yay is available yay v2raya ``` V2RayA服务端正常运行后,就可在[GUI demo](https://v2raya.mzz.pub)使用了(或[部署GUI](https://github.com/mzz2017/V2RayA#%E5%A6%82%E4%BD%95%E9%83%A8%E7%BD%B2GUI))。 ### Docker方式 1. 拉取源码,**使用 docker-compose 部署**。 ```bash git clone --depth=1 https://github.com/mzz2017/V2RayA.git cd V2RayA docker-compose up -d --build ``` 如果出现`ERROR: ...Connot start service...container...is not running`,尝试添加参数`-V` 2. **使用 docker 命令部署**。 ```bash # pull stable version of v2raya docker pull mzz2017/v2raya:stable # pull latest version of v2ray docker pull v2ray/official # create volume to share data docker volume create v2raya_shared-data # run v2raya docker run -d \ --restart=always \ --privileged \ --network=host \ -v v2raya_shared-data:/etc/v2ray \ -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ --name v2raya_backend \ mzz2017/v2raya:stable # run v2ray docker run -d \ --restart=always \ --privileged \ --network=host \ --pid=container:v2raya_backend \ -v v2raya_shared-data:/etc/v2ray \ --env V2RAY_LOCATION_ASSET=/etc/v2ray \ --name v2raya_v2ray \ v2ray/official \ sh -c "cp -rfu /usr/bin/v2ray/* /etc/v2ray/ && v2ray -config=/etc/v2ray/config.json" ``` 如果你使用MacOSX或其他不支持host模式的环境,在该情况下无法使用全局透明代理,docker命令会略有不同: ```bash # pull stable version of v2raya docker pull mzz2017/v2raya:stable # pull latest version of v2ray docker pull v2ray/official # create volume to share data docker volume create v2raya_shared-data # run v2raya docker run -d \ -p 2017:2017 \ -p 20170-20172:20170-20172 \ -p 12345:12345 \ --restart=always \ --privileged \ -v v2raya_shared-data:/etc/v2ray \ --name v2raya_backend \ mzz2017/v2raya:stable # run v2ray docker run -d \ --restart=always \ --privileged \ --pid=container:v2raya_backend \ --network=container:v2raya_backend \ -v v2raya_shared-data:/etc/v2ray \ --env V2RAY_LOCATION_ASSET=/etc/v2ray \ --name v2raya_v2ray \ v2ray/official \ /bin/sh -c "cp -rfu /usr/bin/v2ray/* /etc/v2ray/ && v2ray -config=/etc/v2ray/config.json" ``` 部署完毕后,在[GUI demo](https://v2raya.mzz.pub)使用(或[部署GUI](https://github.com/mzz2017/V2RayA#%E5%A6%82%E4%BD%95%E9%83%A8%E7%BD%B2GUI))。 ### 二进制文件、安装包 请确保已正确安装 v2ray-core 我们提供了 Linux 下的一键安装脚本(在官方脚本基础上增加了ustc镜像源): > 运行下面的指令下载并安装 V2Ray。当 yum 或 apt-get 可用的情况下,此脚本会自动安装 unzip 和 daemon。这两个组件是安装 V2Ray 的必要组件。如果你使用的系统不支持 yum 或 apt-get,请自行安装 unzip 和 daemon ```bash curl -L -s https://github.com/mzz2017/V2RayA/raw/master/install/go.sh | sudo -E bash -s - --source ustc ``` 准备完毕后,可下载[Releases](https://github.com/mzz2017/V2RayA/releases)中的二进制文件启动V2RayA服务端,或下载安装包进行安装。 V2RayA服务端正常运行后,就可在[GUI demo](https://v2raya.mzz.pub)使用了(或[部署GUI](https://github.com/mzz2017/V2RayA#%E5%A6%82%E4%BD%95%E9%83%A8%E7%BD%B2GUI))。 ### 自行编译运行 当然,你也可以选择拉取源码,**编译为二进制文件运行**: 该方法同样需要正确安装v2ray-core,详情见上 ```bash git clone https://github.com/mzz2017/V2RayA.git cd V2RayA/service # set goproxy.io as the proxy of go modules export GOPROXY=https://goproxy.io # compile go build -o v2raya # run sudo ./v2raya ``` 注意,尽管 golang 具有交叉编译的特性,但由于项目使用了大量 linux commands,导致该方法仍然不支持 windows。若想在 windows 体验,可尝试借助 Docker 或 WSL。 ### 在路由器使用 分为以下几种情况: #### 若v2ray能够以daemon存在 能够以daemon存在即在正确安装v2ray后,使用下述命令之一能够得到正确的反馈: ```bash # if systemctl is available systemctl status v2ray # else if service is available service v2ray status ``` 那么可从软件源安装,或下载[releases](https://github.com/mzz2017/V2RayA/releases)中的对应安装包进行安装。 #### 若v2ray能够运行于docker 可参照Docker方式使用 #### 通用方法 1. 请自行安装v2ray,并确保v2ray、v2ctl均被包含在PATH中,否则请将上述文件放于`echo $PATH`中的任一目录下。 2. 下载[releases](https://github.com/mzz2017/V2RayA/releases)中最新版本的对应CPU架构的二进制文件,或自行使用golang交叉编译。 3. 使用参数`--config=V2RAYA_CONFIG_PATH --mode=common`启动V2RayA服务端,参数含义可执行`--help`查看。 请将上述V2RAYA_CONFIG_PATH替换为一个可读写的,并且你喜欢的路径。 ## 开放端口 默认使用的四个端口分别为: 2017: V2RayA 后端端口 20170: SOCKS 协议 20171: HTTP 协议 20172: 带 PAC 的 HTTP 协议 其他端口: 12345: tproxy(全局透明代理所需) 12346: ssr server(SS、SSR所需) ## 在不同运行环境下程序表现将不同 由于 docker 容器对 systemd 的限制性,在 docker 中将采用 pid 共享进程命名空间,volumes 共享存储空间,更新配置后通过结束进程触发 v2ray 容器的重启来更新配置,以无 inbounds 的配置代替断开连接,这是一种折中方案,会有如下影响: 1. 在更换配置时略有卡顿 ## 如何部署GUI 一般情况下可使用[demo](https://v2raya.mzz.pub)即可满足需求,如有部署GUI的必要,可参考下述文档: **使用docker一键部署** ```bash docker pull mzz2017/v2raya-gui docker run --name v2raya-gui -d -p :80 mzz2017/v2raya-gui ``` 将上述``替换为任一本地端口即可。 **手动部署** 见 [README](https://github.com/mzz2017/V2RayA/tree/master/gui#v2raya-gui) ## 开发相关 ### 在 docker 环境中开发 ```bash docker-compose -f docker-compose.dev.yml up --build ``` gin 会监测文件改动并热重载,见[codegangsta/gin](https://github.com/codegangsta/gin)。 如果出现`ERROR: ...Connot start service...container...is not running`,尝试添加参数`-V` ### 已知问题 在使用 GoLand 进行开发调试时,**如果开启了全局透明代理**,由于进程捕获不了 GoLand 的结束 signal,在进程退出后将无法恢复正常网络,因此建议使用`killall ___go_build_V2R`来结束进程。如已无法正常上网,恢复网络的一种简单可行方法是重新启动程序并关闭全局透明代理。不开启全局透明代理时,GoLand调试将不受影响。 # 注意 1. 程序不会将任何用户数据保存在云端,所有用户数据存放在用户本地配置文件中。若服务端运行于 docker,则当 docker 容器被清除时配置也将随之消失,请做好备份。 2. 提供的[GUI demo](https://v2raya.mzz.pub)是由[Netlify](https://app.netlify.com/)在本 Github 项目自动部署完成的,如果担心安全性可以自行部署。 3. **不要将本项目用于不合法用途。** # 感谢 [hq450/fancyss](https://github.com/hq450/fancyss) [ToutyRater/v2ray-guide](https://github.com/ToutyRater/v2ray-guide/blob/master/routing/sitedata.md) [nadoo/glider](https://github.com/nadoo/glider) # 协议 [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)