准备工作:
一台vps带公网IP,ubuntu 18.04+ 即可,root用户
一个解析到你vps公网IP的域名【如 vmess.v2ray.one】
第一部分 [ 手动配置v2ray ]
# 配置系统时区为东八区
rm -f /etc/localtime
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# ubuntu官方源安装nginx和依赖包并设置开机启动
apt clean all && apt update
apt install nginx curl pwgen openssl netcat cron uuid-runtime -y
systemctl enable nginx
systemctl start nginx
ufw disable
# 开始部署之前,我们先配置一下需要用到的参数,如下:
# “域名,端口,uuid,ws路径,ssl证书目录“
# “ngin和v2ray配置文件目录“
#1.设置你的解析好的域名,如本例子中的vmess.v2ray.one
domainName="vmess.v2ray.one"
#2.随机生成v2ray需要用到的服务端口
port="`shuf -i 20000-65000 -n 1`"
#3.随机生成一个uuid
uuid="`uuidgen`"
#4.随机生成一个websocket需要使用的path
path="/`pwgen -A0 6 8 | xargs |sed 's/ /\//g'`"
#5.以时间为基准随机创建一个存放ssl证书的目录
ssl_dir="$(mkdir -pv "/usr/local/etc/v2ray/ssl/`date +"%F-%H-%M-%S"`" |awk -F"'" END'{print $2}')"
#6.定义nginx和v2ray配置文件路径
nginxConfig="/etc/nginx/conf.d/v2ray.conf"
v2rayConfig="/usr/local/etc/v2ray/config.json"
# 检测域名解析是否正确
#域名解析正确不会输出任何内容,如果不正确会退出当前终端
local_ip="$(curl ifconfig.me 2>/dev/null;echo)"
resolve_ip="$(host "$domainName" | awk '{print $NF}')"
if [ "$local_ip" != "$resolve_ip" ];then echo "域名解析不正确";exit 9;fi
# 使用v2ray官方命令安装v2ray,并设置开机启动
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --version 5.1.0
systemctl enable v2ray
# 修正官方5.1+版本安装脚本启动命令错误
grep -r 'v2ray -config' /etc/systemd/system/* | cut -d: -f1 | xargs -i sed -i 's/v2ray -config/v2ray run -config/' {}
systemctl daemon-reload
# 安装acme,并申请加密证书
#会提示安装socat,这里使用alpn模式,不用理会
source ~/.bashrc
if nc -z localhost 443;then /etc/init.d/nginx stop;fi
if nc -z localhost 443;then lsof -i :443 | awk 'NR==2{print $1}' | xargs -i killall {};sleep 1;fi
if ! [ -d /root/.acme.sh ];then curl https://get.acme.sh | sh;fi
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d "$domainName" -k ec-256 --alpn
~/.acme.sh/acme.sh --installcert -d "$domainName" --fullchainpath $ssl_dir/v2ray.crt --keypath $ssl_dir/v2ray.key --ecc
chown www-data.www-data $ssl_dir/v2ray.*
# 把续签证书命令添加到计划任务
echo -n '#!/bin/bash
/etc/init.d/nginx stop
wait;"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" &> /root/renew_ssl.log
wait;/etc/init.d/nginx start
' > /usr/local/bin/ssl_renew.sh
chmod +x /usr/local/bin/ssl_renew.sh
(crontab -l;echo "15 03 * * * /usr/local/bin/ssl_renew.sh") | crontab
# 配置nginx,执行如下命令即可添加nginx配置文件
echo "
server {
listen 80;
server_name "$domainName";
return 301 https://"'$host$request_uri'";
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name "$domainName";
ssl_certificate $ssl_dir/v2ray.crt;
ssl_certificate_key $ssl_dir/v2ray.key;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:"!"MD5;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
root /usr/share/nginx/html;
location "$path" {
proxy_redirect off;
proxy_pass http://127.0.0.1:"$port";
proxy_http_version 1.1;
proxy_set_header Upgrade "'"$http_upgrade"'";
proxy_set_header Connection '"'upgrade'"';
proxy_set_header Host "'"$http_host"'";
}
}
" > $nginxConfig
# 配置v2ray,执行如下命令即可添加v2ray配置文件
echo '
{
"log" : {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbound": {
"port": '$port',
"listen": "127.0.0.1",
"protocol": "vmess",
"settings": {
"decryption":"none",
"clients": [
{
"id": '"\"$uuid\""',
"level": 1
}
]
},
"streamSettings":{
"network": "ws",
"wsSettings": {
"path": '"\"$path\""'
}
}
},
"outbound": {
"protocol": "freedom",
"settings": {
"decryption":"none"
}
},
"outboundDetour": [
{
"protocol": "blackhole",
"settings": {
"decryption":"none"
},
"tag": "blocked"
}
],
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"domain": [
"geosite:cn"
],
"outboundTag": "blocked",
"type": "field"
},
{
"ip": [
"geoip:cn"
],
"outboundTag": "blocked",
"type": "field"
}
]
}
}
' > $v2rayConfig
# 默认配置vmess协议,如果指定vless协议则配置vless协议
[ "vless" = "$2" ] && sed -i 's/vmess/vless/' $v2rayConfig
# 完工,你现在只需要重启v2ray和nginx即可
systemctl restart v2ray
systemctl status -l v2ray
/usr/sbin/nginx -t && systemctl restart nginx
# 输出配置信息
echo
echo "域名: $domainName"
echo "UUID: $uuid"
[ "vless" = "$2" ] && echo "协议:vless" || echo "额外ID: 0"
echo "安全: tls"
echo "传输: websocket"
echo "路径: $path"
# 注:为适应v2ray-core目前和未来的版本更新,vmess协议额外ID选项已移除,客户端vmess协议额外id配置为0即可,当前最新版v2rayN客户端已默认为0,另外最新v2rayN需要选择内核类型否则连接不成功,v2rayN客户端配置图片:https://github.com/HappyLife-page/v2ray/issues/2#issuecomment-1282005206
31 replies on “v2ray最快手动纯净部署”
你好 我用了个代码,最后还是不能用,是哪个环节问题了嘛
acme.sh作者更新了acme.sh版本为3.0,默认ssl证书供应商已更换,修改了申请证书的规则。我这里已同步修正脚本,现测试无问题,你可以再试试~
太感谢了,这次可以用了
但是uuidgen还得单独安装
Ubuntu18.04+没问题。你使用的哪个发行版本?
开启cloudflare域名加速后,就连不上了,关闭代理就可以
首先你需要明白cloudflare代理模式的结构:
browser——cloudflare——server
所以你需要修改cloudflare的ssl模式为full
默认的flexible模式表:
browser——cloudflare加密,而cloudflare——server不加密
你v2ray是加密服务,所以cloudflare和server线路之间不加密根本无法连接
full模式表:browser——cloudflare——server 之间都加密
大佬你好,我想按照你的教程写一个shell脚本,并使用teddysun的v2ray docker,脚本运行后,nginx和dokcer都能正常启动,但是节点无法使用,测速显示链接超时,请问能帮我看下有啥问题吗,感谢
脚本见:https://notepad.pw/code/41ncqsmwt
浏览器打开域名查看默认站点能否打开
默认站点无问题的话看证书是否生效
具体问题你可以发出来错误日志看看
wspath=$(cat /dev/urandom | head -1 | md5sum | head -c 5)
这里是错误的,改为如下试试
wspath=”`cat /dev/urandom | head -1 | md5sum | head -c 5`”
wspath=”$(cat /dev/urandom | head -1 | md5sum | head -c 5)” 也可以
另外超时的话,查看nginx 504日志,可以看到具体错误信息。日志是最快速的错误排查方案
非常感谢大佬的分享,照视频部署直接就成功了,但是感觉响应有点慢,速度也不是很好,有什么办法提升下么,额外id已经让我改成1了
vultr的大多中国周边的云服务(韩国,日本,新加坡等)貌似网络都非常不好,延迟100左右是可以,但是关键丢包严重(启动一台新vps后应该首先从本地ping测,关键看是否丢包,延迟200左右都没为题,所以你看到视频里播主用的就是欧洲的)
目前我这里了解到的最具性价比的vps有: Amazon的Lightsail,阿里轻量云,腾讯轻量云
任何时间段网络都超好的只有谷歌云香港
你可以考虑 腾讯轻量云香港,阿里轻量香港,Amazon的Lightsail的日本或新加坡
非常感谢你的耐心回复,我用了vultr的美国服务器尝试了下,速度上来了,丢包也很低,过两天尝试下腾讯或阿里的轻量。
另外,关于v2ray,我想除了ws再添加个tcl的协议可以么,我有的软件走的tcl协议,不知道现在的协议规则能不能支持tcl协议
哎呀,写错了,TCP协议
websocket属于应用层(第7层)协议,以TCP协议(第4层)为基础,他们之间并不矛盾
websocket应该和http做对比。http是无状态单向协议,而websocket是有状态双向协议
所以v2ray使用websocket协议是比较优的方案
你不需要再修改你的配置
大老能出一期x-ui面板的安装教程吗?最近一直在搞这个,一直卡在证书审请和nginx的配置上面。
或许吧,一直比较忙
大佬,很喜欢你的脚本!可以出一份centos版本的吗?
可以,比较忙
真·最快最无脑的tls+ws+nginx的v2ray部署方式了,一路复制粘贴下来没报任何错(除了几个环境变量是自己手动设的),太丝滑了,感谢PO主
今天使用这个批处理脚本好像有问题,不管是搭建VMESS 还是VLESS节点都不通,不能正常使用。一开始还以为是路径的问题。生成路径是这样的路径: /uwaemo/vejaez/ughome/ciejoo/queofu/exohno/daegem/uofahx
路径是随机生成的,每个人每次执行都不一样,如果使用的是v2rayN最新版,需要右上角选择内核类型;如果有错误日志发出来最好
我之前用别的脚本申请过ssl证书要如何进行下去捏
忽略直接执行即可,如果提示已经申请,加–force参数
PO主这篇文章真的太棒了!有深入浅出的讲解,有懒人一键的脚本!一次过,NB!还有两个问题想跟博主探讨下,我的便宜域名只有一年的有效期,一年后就要换别的便宜域名,假定不更换服务器,需要改哪些内容?证书和nginx配置的?有没有办法不用域名改用固定IP?以及,这里的nginx是起到什么作用的,v2ray是在nginx之后的吗?
不更换服务,只更换域名,需要重新申请证书,并且修改nginx配置和acme配置。生不带来死不带去。一支域名年付10美金而已。另外该方案必须要使用域名。nginx的作用是一个代理;对于gfw来说nginx像是一个web服务,并且是https的,符合当前web主流标准。v2ray是在nginx之后
谢谢博主!但感觉我这刚用了几天,就被gfw干掉了……博主知道有哪些方法可以帮助判断问题出在自己配置还是gfw上
我在客户端电脑上上创建套接字尝试去连接服务端的443端口失败了,但是80端口,22端口都能连接成功,PO主能帮忙分析下可能的原因不T_T,C++程序员对nginx实在是不了解,也不知道怎么看nginx的日志/配置啥的
另外我之前在用Trojian的时候,有篇教程说应该把正常流量的80端口、443端口做一个简单的网页,更有欺骗性,不知道v2ray有这个必要吗?