前言

前段时间死了好大一片服务器,眼看这么多服务器砸手里,简直血本无归。为了能活得更久,潜心研究了V2Ray,踩过了不少坑,整理一下。

程序选型

单用户自己的服务器安装个V2Ray使用很方便,官方或者233boy的一键脚本安装上就可以,但要对接到面板,一开始折腾了不少精力。

如果VPS是KVM的,那直接用人家做好的docker也行,无非就是资源多耗点。如果是openvz就没法用docker了,需要使用自己配置安装版。对接面板程序有人做了Java版和go版,Java版自己的垃圾服务器上运行一段时间就会出现连不上,需要重启。最后使用了go版,目前来看很稳定,而且还做好了服务启动,方便。

面板节点设置

面板中设置V2Ray节点,额外ID,协议等,稍后服务端和客户端配置需要匹配起来,这里需要注意一点,伪装网站是访问443或80端口的时候打开的内容,所以伪装网站和节点绑定域名就是同一个!!!最多伪装内容来源可以是本地网站或者反代到其他站。

一键安装脚本

抄了大佬们一堆shell,组装了个一键脚本自己用,只支持CentOS7和Ubuntu,有bug或不灵,自己去琢磨。

1
2
wget https://raw.githubusercontent.com/828768/Shell/master/deploy_node.sh
bash deploy_node.sh

脚本选 1 自动安装并配置V2Ray为 WS+TLS 方案,天然可以网站伪装,还可以套CDN实现死鸡鸡复活。需要配置的信息如下:

  • 伪装域名: 填你这个节点地址绑定的域名,如:sobaigu.com
  • 申请CA证书:y 配置Caddy在线申请,否则使用自签证书
  • 转发路径『不要带/』: 如访问地址为 http://sobaigu.com/game/game 即是所谓的路径,此处填 game 就可以了
  • V2Ray端口: 顾名思义,V2Ray监听的端口,如 10086
  • V2Ray额外ID: 顾名思义,如 16
  • 面板同步端口: 从面板同步过来的用户及配置信息,传递给V2Ray的端口,如 10087
  • 节点ID: 面板中该节点对应的ID,如 6
  • 数据库地址: 顾名思义,如 db.sobaigu.com1.1.1.1
  • 数据库名称: 顾名思义,如 ssrpanel
  • 数据库用户: 顾名思义,如 ssrpanel
  • 数据库密码: 顾名思义,如 ssrpanel

以上配置都要和面板上的配置对应起来,不知道怎么配的去看胖虎的Wiki,所有的端口请都不要占用 80443『caddy默认用了这俩端口』 和 3306『V2Ray配置里直接就这个默认了,如果数据库端口不是这个端口的自己去改』 这几个默认端口!!!选 1 安装时会自动放个2048小游戏网站,其他代理到别站的伪装请自己去手动操作。

caddy

V2Ray推荐使用 websocket+TLS 协议,外加域名伪装,用caddy比较小巧合适,配置也比nginx简单,推荐用。关键是配置,注意看注释。
caddy配置路径:/etc/caddy/Caddyfile

1
2
3
4
5
6
7
8
9
10
DomainName {  //这个 DomainName 就是伪装域名,也就是节点绑定的域名
root /srv/www //伪装内容,路径根据自己实际情况改,一键安装默认是这个位置
tls UserName@gmail.com
gzip
timeouts none
proxy /game 127.0.0.1:10086 { //带 /game 访问时转到本地V2Ray端口处理
websocket
header_upstream -Origin
}
}

上面是一键脚本的默认配置,也可以如下反向代理到其他网址,如:https://sobaigu.com

1
2
3
4
5
6
7
8
9
10
11
12
DomainName {  //建议申请证书前关闭cdn,申请成功一次就可以开了
tls [email protected]
gzip
timeouts none
proxy / https://sobaigu.com { //这个反向代理目标就是所谓的伪装域名内容源
without /game
}
proxy /game 127.0.0.1:10086 {
websocket
header_upstream -Origin
}
}

以上配置,当访问 DomainName 时,打开 www 下的首页或跳转到反向代理的域名,当带路径 /game 访问时,则代理到 10086 端口,这个端口也就是V2Ray的端口。

V2Ray

V2Ray配置路径:/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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{
"log": {
"loglevel": "debug" //调试正常后日志输出级别建议改成error
},
"api": {
"tag": "api",
"services": [
"HandlerService",
"LoggerService",
"StatsService"
]
},
"stats": {},
"inbounds": [
{
"listen": "127.0.0.1",
"port": usersync_Port, //同步面板用户及配置的端口
"protocol": "dokodemo-door",
"settings": {
"address": "127.0.0.1"
},
"tag": "api"
},
{
"tag": "proxy",
"port": v2ray_Port, //V2Ray代理端口,和caddy那边对起来
"protocol": "vmess",
"settings": {
"clients": [],
"disableInsecureEncryption": true, //禁止客户端使用不安全的加密方式
"default": {
"level": 0,
"alterId": alter_Id //额外ID要和客户端最好配置一致,实测不一致也没毛病
}
},
"streamSettings": {
"network": "ws", //用其他协议的自己去参考官方文档改
"wsSettings": {
"path": "/game" //代理路径,和caddy那边对起来,实际测试删除该配置好像也行
}
}
}
],
"outbounds": [{
"protocol": "freedom"
}],
"routing": {
"rules": [{
"type": "field",
"inboundTag": [ "api" ],
"outboundTag": "api"
}],
"strategy": "rules"
},
"policy": {
"levels": {
"0": {
"statsUserUplink": true,
"statsUserDownlink": true
}
},
"system": {
"statsInboundUplink": true,
"statsInboundDownlink": true
}
},

"ssrpanel": {
"nodeId": 11, //面板分配的节点ID
// every N seconds
"checkRate": 300,
// user config
"user": {
// inbound tag, which inbound you would like add user to
"inboundTag": "proxy",
"level": 0,
"alterId": alter_Id, //对应上面的额外ID
"security": "none"
},
// db connection
"mysql": {
"host": "db_Host",
"port": db_Port, //这个默认3306应该没人会改吧?
"user": "db_User",
"password": "db_Password",
"dbname": "db_Name"
}
}
}

可能遇到的问题

客户端加密方式

之前出现烂苹果小火箭不能正常使用的情况,发现是服务端拒绝了不安全的加密方式,经高手点拨,原来官网有说明:

1
2
3
4
5
6
7
8
"settings": {
"clients": [],
"disableInsecureEncryption": true, //禁止客户端使用不安全的加密方式
"default": {
"level": 0,
"alterId": alter_Id //额外ID要和客户端最好配置一致,实测不一致也没毛病
}
},

之前懒人配置样本里默认设置为了 true ,表示启用禁止客户端使用不安全的加密方式,解决方法是更新胖虎面板程序添加设置加密方式,或者将配置改成 false 即可:

1
"disableInsecureEncryption": false,  //禁止客户端使用不安全的加密方式

懒人脚本使用的配置样本已更改为 false 感谢技术佬无私分享。

Caddy启动失败

此种情况常见就是开启了 tls 但自动申请证书失败,多半是你的IP在短时间内申请次数太多或者域名入了黑名单,具体原因自行判断,本懒人脚本已将证书默认为自签,其他解决办法可参考:Caddy自动申请CA证书失败解决办法

已经装了Nginx能不能用

有Nginx的话也可以,Caddy就不要装了,Nginx上建个vhost,然后使用Nginx反代就可以了,可参考:Nginx反向代理配置规则