本文转自: https://saika.us.kg/2024/07/06/proxy-on-serv00/
仅做个人收藏,版权归原作者所有
好久没写博客,用最近自己写的两个仓库水一篇博客。
由于此前博客记录的在 Serv00 平台上部署 Vless 的两种方法都存在较为严重的安全隐患,且速度也并不理想,所以为了兼顾安全性和连接速率,我自己做了两个仓库,两个仓库分别是 X-for-Serv00 和 SB-for-Serv00。两个仓库分别采用 Cloudflare CDN 加速、基于 UDP 暴力发包的连接协议提供更为理想的连接速率,且都加入了 TLS 加密 / SNI 伪装,提升其安全性。
由于这两个仓库都需要占用 2 个端口,且在连接速率较高时,占用内存会比较大,故这两个仓库都建议单独一个账号部署,而不要在账号内安装/部署其他应用,以尽可能把内存留给核心使用。所以,我也尽可能把此前在 Serv00 部署应用时一直在使用的 PM2 给尽可能省略了,采用了 nohup >/dev/null 2>&1 &
挂后台,然后自己写了一个循环运行的 JavaScript
函数对进程进行监控并在进程掉线后拉起。
先介绍部署方法,首先当然是注册 Serv00 账号,然后是登录 Panel,并将 Run your own applications 设置为 enabled,再开放两个端口。不同的是,X-for-serv00 需要开放的端口类型为 TCP,而 SB-for-Serv00 需要开放的端口类型为 UDP。
接着直接 ssh 登录你的 Serv00 账号,开始进行代理服务器本身的部署。
X-for-Serv00
首先将远程仓库 Clone 到本地:
1 |
git clone https://github.com/k0baya/X-for-serv00 ~/xray && cd ~/xray |
然后回到面板中,进入 File manager,找到 ~/xray/start.sh
这个文件,右键点击 start.sh
文件,选择 View/Edit > Source Editor ,进行编辑,在 1 – 18 行修改环境变量:
变量名 | 是否必须 | 默认值 | 备注 |
---|---|---|---|
WEBPORT | 是 | 网页端口,查看代理配置、获取订阅链接等等功能需要 | |
VMPORT | 是 | Vmess 协议监听端口 | |
UUID | 是 | de04add9-5c68-8bab-950c-08cd5320df18 | |
WSPATH | 是 | serv00 | 勿以 / 开头,协议路径为 /WSPATH-协议,如 /serv00-vmess |
ARGO_AUTH | 否 | Argo 的 Token 值,ey 开头的一串,获取方法可以参考群晖套件:Cloudflare Tunnel 内网穿透中文教程 支持DSM6、7 (如果需要填写,请删除单引号再填写,不填则保持原样。) | |
ARGO_DOMAIN | 否 | Argo 的域名,须与 ARGO_DOMAIN 必需一起填了才能生效 | |
WEB_USERNAME | 否 | admin | 网页的用户名 |
WEB_PASSWORD | 否 | password | 网页的密码 |
固定 Argo 隧道
如果你填入了ARGO_AUTH 和 ARGO_DOMAIN 环境变量,想用于固定 Argo 隧道,那么就需要执行此步。否则可以跳过。
在 Cloudflare Argo Tunnel 的面板中,给这条隧道添加一个域名,域名为刚刚填写的 ARGO_DOMAIN
,协议为 HTTP
,地址为localhost:
加上刚刚填写的 VMPORT
(如 localhost:54321
)。
启动并获取配置
直接执行启动脚本即可:
1 |
chmod +x start.sh && bash start.sh |
最后等待一分钟左右,等程序完全启动,再直接使用 IP 访问 WEBPORT
,并进入/list
路径(如http://1.2.3.4:54321/list
)获取代理配置。(IP 可在 Panel 的 SSL 选项卡中,点击 WWW websites 后看到,一般有两个 IP ,任选其一即可。)
自动启动
在 Panel 中找到 Cron jobs 选项卡,使用 Add cron job 功能添加任务,Specify time 选择 After reboot,即为重启后运行。Form type 选择 Advanced,Command 写 start.sh
文件的绝对路径,比如:
1 |
/home/username/xray/start.sh >/dev/null 2>&1 |
务必按照你的实际路径进行填写。
SB-for-Serv00
更新后需要额外放行一个 TCP 端口供 Trojan 协议使用。
在 Panel 中点击左侧菜单栏中的 SSL ,然后点击上方菜单栏中的 WWW websites ,点击第一个 IP Address 最右侧的 Manage 按钮,再点击上方菜单栏中的 Add certificate 按钮,Type 选择 Generate Let’s Encrypt certificate, Domain任选一个即可,最后点击下方的 Add 按钮进行生成。请至少保证自己的 Serv00 账号下有一个 Let’s Encrypt 的证书。
为确保安全,当账号下没有 Let’s Encrypt 证书时,会拒绝生成配置,直接停止运行。
接着将远程仓库 Clone 到本地:
1 |
git clone https://github.com/k0baya/sb-for-serv00 ~/sing-box && cd sing-box |
然后回到面板中,进入 File manager,找到 ~/sing-box/start.sh
这个文件,右键点击 start.sh
文件,选择 View/Edit > Source Editor ,进行编辑,在 1 – 7 行修改环境变量:
变量名 | 是否必须 | 默认值 | 备注 |
---|---|---|---|
HY2PORT | 是 | Hysteria2 协议监听端口 | |
TUIC5PORT | 是 | Tuic5 协议监听端口 | |
SERV00PASSWORD | 是 | 你的 Serv00 账号的密码,用于获取 SSL 证书 | |
UUID | 否 | de04add9-5c68-8bab-950c-08cd5320df18 |
启动并获取配置
直接执行启动脚本即可:
1 |
chmod +x start.sh && bash start.sh |
等待程序完成启动,会在 Terminal 中直接打印出 Hysteria2 和 Tuic5 的配置链接。
自动启动
在 Panel 中找到 Cron jobs 选项卡,使用 Add cron job 功能添加任务,Specify time 选择 After reboot,即为重启后运行。Form type 选择 Advanced,Command 写 start.sh
文件的绝对路径,比如:
1 |
/home/username/sing-box/start.sh >/dev/null 2>&1 |
务必按照你的实际路径进行填写。
仓库特点
由于 X-for-Serv00 的代理服务器核心是 Xray ,SB-for-Serv00 的代理服务器核心是 Sing-box,故下文将 X-for-Serv00 简称为 X,将 SB-For-Serv00 简称为 SB。
X 的特点是,这种模式可以在任意无公网 IP 的环境下使用。可以通过任意 Cloudflare edge (Cloudflare CDN)接入,再通过 SNI 指示器回源到 Xray,出站规则判断特定网站以及 IPv6 走 Wireguard 连接 Warp,其他直接出站。所以就算在你的地区 Serv00 被“墙”了,你依旧可以使用这种方法连上 Serv00 的代理,Serv00 本身的带宽大概是千兆,上下行同宽,所以在此范围内,你的代理连接速率基本上只取决于你的本地网络和 Cloudflare edge (Cloudflare CDN)之间的连接速率。
我使用移动宽带自测 X-for-Serv00 的连接带宽大概在 200Mbps,有群友测速达到 400Mbps 以上。至少我认为这是在 Serv00 上部署使用 CDN 加速的代理服务器的最佳方案吧。
S 的特点是,使用了 Hysteria2 和 Tuic5 这两种协议,所以主要的优势和特点无非也就是这两种协议的特点,比如 UDP暴力发包,Hy2 抢占带宽等等。仓库的主要作用是提供了 FreeBSD 的 Sing-box 构建,并简化了证书获取、配置文件编写等等繁琐步骤,实现“一键式”部署。可惜我在测试中发现使用 Wireguard 出站时,Sing-box 很容易出现闪退情况,翻看 Sing-box 的 issues,发现这个问题已经存在了几个月,并非个例,故 S 暂未启用 IPv6 的支持。
虽然 Hysteria2 备受好评,但是我使用移动宽带的测速情况实在是不太理想,有群友使用商用宽带测速效果不错。但是至少我认为这是在 Serv00 上部署直连的代理服务器的最佳方案吧。
另外,针对 UDP 被阻断的现象,除了 Sb-for-Serv00 添加了 Trojan 协议外,我做了 X-for-Serv00 的直连版本,采用 Vless-reality-vision、Vmess-ws-tls、Trojan-tls 三个协议,部署简单。仓库地址:X-for-Serv00 direct branch
部署方法也是非常的简单:与 Sb-for-Serv00 一样,需要账号内有一个 Let’s Encrypt 的证书,然后将远程仓库 Clone 到本地:
1 git clone -b direct https://github.com/k0baya/x-for-serv00 ~/direct-xray然后回到面板中,进入 File manager,找到
~/direct-xray/start.sh
这个文件,右键点击start.sh
文件,选择 View/Edit > Source Editor ,进行编辑,在 1 – 5 行修改环境变量:
变量名 是否必须 默认值 备注 SERV00PASSWORD 是 你的 Serv00 账号的密码,用于获取 SSL 证书 UUID 否 de04add9-5c68-8bab-950c-08cd5320df18 可在 Online UUID Generator 生成 WSPATH 否 serv00 勿以 / 开头,协议路径为 /WSPATH-协议,如 /serv00-vmess SSH 登录 Serv00 ,直接执行启动脚本即可启动。
1 chmod +x ~/direct-xray/start.sh && bash ~/direct-xray/start.sh等待程序完成启动,会在 Terminal 中直接打印出 Vless-reality-vision、Vmess-ws-tls、Trojan-tls 的配置链接。