【自建】建立自己的代理机场
自建机场
声明:本方法建立的机场仅限技术交流,无实际交易教程!
本方法搭建的机场属于代理直连的方式,非中转机场等高级玩法
先用两句话说明自建机场的逻辑
1、用
Xboard
创建机场的前端,在一台服务器A上部署即可,用户管理、流量管理等功能全在这上面2、使用
V2bX
创建机场的后端(运行了各种代理服务,如ss, v2ray, hysteria2等)。V2bX会获取节点信息、用户鉴权信息与上报用户流量到服务器A,V2bX部署在服务器A,B,C,D等
Xboard部署教程
安装
下面是使用Docker-Compose进行部署
仅在服务器A上部署
Xboard更多安装方式参考:https://github.com/cedar2025/Xboard
安装docker
1 | curl -sSL https://get.docker.com | bash |
获取Docker compose 文件
1 | git clone -b docker-compose --depth 1 https://github.com/cedar2025/Xboard |
执行数据库安装命令
自动选择 启用sqlite 和 Docker内置的Redis
修改下面的your_admin_email@example.com 为自己的管理员账号
1 | docker compose run -it --rm -e enable_sqlite=true -e enable_redis=true -e admin_account=your_admin_email@example.com xboard php artisan xboard:install |
手动根据自己的需要在运行时选择sqlite和redis,以及手动输入管理员账号
1 | docker compose run -it --rm xboard php artisan xboard:install |
执行这条命令之后,会返回你的后台地址(asdfasqeb)和管理员账号密码(你需要记录下来后台地址)!
你需要执行下面的 启动xborad 步骤之后才能访问后台
启动Xboard
1 | docker compose up -d |
安装完成之后即可访问你的站点
访问站点
启动之后网站端口默认为7001, 你可以配置nginx反向代理使用80端口
网站地址: http://你的IP:7001/
后台地址:http://你的IP:7001/asdfasqeb
在此你已经成功部署了, 你可以访问网址体验Xboard的完整功能,
如果你需要使用mysql,请自行安装Mysql后重新部署
更新
修改版本
1 | cd Xboard |
修改docker-compose.yaml 当中image后面的版本号为你需要的版本
如果为版本为latest 则可以忽略这一步,直接进行第二步
更新数据库(可以执行多次都是安全的)
1 | docker compose pull |
即可更新成功
回滚
此回滚不回滚数据库,是否回滚数据库请查看相关文档
回退版本
1 | vi docker-compose.yaml |
修改docker-compose.yaml 当中image后面的版本号为更新前的版本号
启动
1 | docker compose up -d |
注意
启用webman后做的任何代码修改都需要重启生效
Xboard添加节点
在Xboard的管理页面添加节点,在添加节点前,先添加一个订阅服务(金额流量等信息可以随便填写)
这里以配置hysteria2为例,并且是使用自签证书的形式,所以下面的域名是bing.com
在Xboard里先一个节点
-
节点名称 :任意
-
倍率:任意
-
节点地址:将运行hysteria的服务器(可以是服务器A,B,C,D等),写公网IP地址
-
连接端口:选择服务器A(运行了board)上空闲的端口
-
服务端口:将运行hysteria2的服务器(如B,C,D)中hysteria2进程的端口
- 连接端口和服务端口要写一样的,否则无法正常使用,理论上应该是可以不同的,但可能是bug
-
允许不安全:是
-
协议版本:v2
-
开启obfs:否
-
sni:bing.com
- 如果使用公认证书,请输入指向这台服务器的域名(A,B,C,D等运行hy协议的服务器)
-
上行带宽:100
-
下行带宽:200
-
父节点:无
至此,已经完成了前端的工作,后面是将添加的节点进行实际运行起来,节点的部署可以运行在不同于服务器A(运行了Xboard)的机器B,C,D上
强烈推荐在部署节点之前,先配置好https访问,后面两步是配置https的过程
- 先配置http访问
- 再配置https访问,不要跳过
使用HTTP访问
要将运行在Docker容器中的服务通过域名访问,并使用Nginx作为反向代理来转发到宿主机的7001端口,你需要完成几个步骤。这包括设置DNS记录、配置Nginx以及确保网络安全。下面是具体步骤:
步骤 1: 设置DNS记录
确保你的域名 board.lthero.top
的DNS记录指向托管Nginx的服务器的IP地址。这通常在你的域名注册商处进行设置:
- A记录:将域名指向IPv4地址。
- AAAA记录:将域名指向IPv6地址(如果适用)。
步骤 2: 安装并启动Nginx
步骤 1: 更新软件包列表
打开终端,首先使用apt
命令更新你的包列表,以确保你安装的是最新版本的Nginx。
1 | sudo apt update |
步骤 2: 安装Nginx
使用apt
安装Nginx。
1 | sudo apt install nginx |
步骤 3: 配置Nginx
你需要在Nginx中创建一个新的服务器块(server block),或者在已有的默认配置中修改,以设置反向代理。以下是一个基本的Nginx配置示例,将会把所有到 board.lthero.top
的请求转发到本地的7001端口:
-
打开或创建一个新的Nginx配置文件:
1
sudo vim /etc/nginx/sites-available/board.lthero.top
-
添加以下配置:
1
2
3
4
5
6
7
8
9
10
11
12
13server {
listen 80;
server_name board.lthero.top;
location / {
proxy_pass http://localhost:7001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}这个配置做了以下几点:
listen 80;
告诉Nginx监听80端口(HTTP标准端口)。server_name board.lthero.top;
设置这个块应当响应的域名。proxy_pass http://localhost:7001;
指定所有传入的请求转发到本地的7001端口。proxy_set_header
指令将重要的HTTP头信息转发给后端应用。
-
启用配置文件通过创建一个符号链接:
1
sudo ln -s /etc/nginx/sites-available/board.lthero.top /etc/nginx/sites-enabled/
-
检查Nginx配置文件是否有语法错误:
1
sudo nginx -t
-
如果没有错误,重启Nginx以应用配置:
1
sudo systemctl restart nginx
步骤 4: 调整防火墙规则
确保你的服务器的防火墙规则允许HTTP(端口80)和HTTPS(端口443,如果你使用SSL)的流量。如果你正在使用ufw
,可以使用以下命令:
1 | sudo ufw allow 'Nginx Full' |
步骤 5: 测试配置
在浏览器中输入 http://board.lthero.top
或使用命令行工具如 curl
来测试你的配置:
1 | curl http://board.lthero.top |
你应该能看到从Docker容器中运行的服务响应的内容。
这样,你就配置好了Nginx作为反向代理,将域名 board.lthero.top
的流量转发到宿主机的7001端口上的服务。如果你希望使用HTTPS,你还需要设置SSL证书,可以考虑使用Let’s Encrypt免费证书并配置HTTPS。
使用HTTPS访问
要让你的域名 board.lthero.top
使用 HTTPS,你需要获取 SSL/TLS 证书,并配置 Nginx 以使用这些证书来加密网页内容。以下是详细的步骤,包括如何使用 Let’s Encrypt 提供的免费证书自动化这个过程。
步骤 1: 安装 Certbot
Certbot 是一个自动获取并安装 Let’s Encrypt 证书的客户端。在 Ubuntu 上安装 Certbot 及其 Nginx 插件非常简单:
1 | sudo apt update |
步骤 2: 获取和安装证书
使用 Certbot 获取并为你的域名安装证书:
1 | sudo certbot --nginx -d board.lthero.top |
此命令会自动为指定的域名 board.lthero.top
配置 SSL 证书,并更新 Nginx 配置以使用这些证书。
Certbot 会询问你一些问题,比如电子邮件地址(用于紧急联系和证书续订提醒)
以及是否重定向所有 HTTP 请求到 HTTPS(强烈建议启用),如果启用,它用自动修改board.lthero.top的nginx配置文件,
生成的证书位置/etc/letsencrypt/live/
步骤 3: 更新 Nginx 配置
如果你想手动编辑 Nginx 配置文件,可以按以下方式配置:
1 | sudo vim /etc/nginx/sites-available/board.lthero.top |
- 如果你的配置文件里已经出现“# managed by Certbot”等内容,说明Certbot已经将配置文件修改好了,直接重启nginx即可
- 记得将下面所有的board.lthero.top换成你的域名
- 这里的7001端口是Xboard运行端口
1 | server { |
步骤 4: 重新加载 Nginx
更改配置后,需要重新加载 Nginx 以应用新的配置:
检查配置文件是否有语法错误,如果有warn!直接看“遇到的问题”部分,重新加载配置是不一定能work的
1 | sudo nginx -t # 检查配置文件是否有语法错误 |
步骤 5: 验证 HTTPS
在浏览器中访问 https://board.lthero.top
来检查是否配置成功。你应该能够看到一个安全锁标志,表明连接是通过 HTTPS 加密的。
步骤 6: 自动续订证书
Let’s Encrypt 的证书有效期为90天,因此建议设置自动续订:
1 | sudo certbot renew |
这个命令会测试证书续订过程。如果这个测试成功,添加定时任务crontab
:
crontab -e
再填写下面内容,表示每月第一天会自动执行
通过which certbot
查看具体程序位置/usr/local/bin/certbot
1 | 0 0 1 * * /usr/local/bin/certbot renew --deploy-hook "nginx -s reload" |
续签的证书位置/etc/letsencrypt/renewal
通过以上步骤,你的站点 board.lthero.top
现在应该能够安全地使用 HTTPS 进行通信了。
如果要换crontab编辑器,运行下面的命令
1 | select-editor |
至此,已经配置好https访问,下面开始部署代理服务
V2bX部署代理服务
在需要**运行节点的服务器(A,B,C,D等)**上安装V2bX,从而运行hysteria2, v2ray, vless, ss等协议
在V2bX上运行的代理协议可对接到Xboard上,会将用户使用情况上传到Xboard上并统计
V2bX安装
执行下面的命令,安装V2bX
1 | wget -N https://raw.githubusercontent.com/wyx2685/V2bX-script/master/install.sh && bash install.sh |
配置文件路径:/etc/V2bX
配置文件详见:配置文件说明
下面是在服务器B上运行hysteria2协议的配置过程
-
输入机场网址与API Key
- 机场网址就是域名https://board.lthero.top,而API key在Xboard的管理网页中,找到“系统配置”->“节点”->“通讯密钥”
- 原理是V2bX拿着密钥,到board.lthero.top上面获取你配置的节点的信息;根据这些节点信息,V2bX在服务器(A,B,C,D)上运行服务(如hysteria2协议,Vless协议等)
-
选择核心:singbox 对应的序号
-
选择协议:hysteria2 对应的序号
-
证书模式:self模式 对应的序号
- 如果使用公认证书,请使用http模式,你需要解析一个域名到这个服务器B的节点服务,如:hy-jp-b.lthero.top
- 如果你仍然使用服务器A运行节点,请不要使用board.lthero.top,请重新配置一条域名解析到节点服务,如:,如:hy-jp-a.lthero.top
-
输入节点证书域名:bing.com
- 如果使用公认证书,请输入指向这台VPS的域名
-
输入n退出(除非想添加其它协议)
随后,输入 V2bX
查看V2bX的配置或修改配置文件,每次修改配置文件后V2bX会自动重启
这里吐槽一句啊,它只能初始化的时候使用交互方式进行文件配置,后续只能手动修改配置文件,对新手不友好。
如果想重新使用交互方式,只能将V2bX卸载后重装。
hysteria2自签证书的配置文件
1 | { |
hysteria2使用证书
1 | "Nodes": [{ |
其它对接Xboard的工具
除了V2bX,还有个对接Xboard的工具:
https://github.com/FireinRainLab/hysteria-v2board
https://github.com/cedar2025/hysteria
这工具是将hysteria2打包到docker中,并且将用户使用数据对接到Xboard/V2board
蒸蒸日上的工具
一键抢主机脚本
https://chromewebstore.google.com/detail/one-click-checkout-for-wh/
支持 * RackNerd * SpartanHost * GreenCloudVPS
主机全方面测试
包含主机cpu性能、磁盘测试、流媒体解锁测试、速度及延迟测试等
1 | curl -L https://github.com/spiritLHLS/ecs/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh |
工具来源:https://digvps.com/tools/ecs
流媒体解锁检测
RegionRestrictionCheck 检测脚本检测项目比较全面,且支持Docker运行,杜绝污染VPS服务器,检测流媒体除了主流的Netflix、Disney+、YouTube Premium,还可以支持检测Dazn、Viu TV、4GTV和KKTV等比较冷门的流媒体服务。
支持OS/Platform:CentOS 6+, Ubuntu 14.04+, Debian 8+, MacOS, Android with Termux
使用方法
1 | bash <(curl -L -s check.unlock.media) |
只检测IPv4结果:
1 | bash <(curl -L -s check.unlock.media) -M 4 |
只检测IPv6结果:
1 | bash <(curl -L -s check.unlock.media) -M 6 |
部分测试结果
DO
美国SF-1c2g
https://paste.spiritlhl.net/code/K1XMh0.txt
RackNerd
美国LA-1c2g
https://paste.spiritlhl.net/code/ECrxxe.txt
美国LA-2c2.5g
https://paste.spiritlhl.net/code/dKstV2.txt
美国LA-黑五闪够 2c2g
https://paste.spiritlhl.net/code/t9bdNE.txt
Akile
美国LA-1c1g
https://paste.spiritlhl.net/code/GWNS6v.txt
香港2c2g(元旦)
https://paste.spiritlhl.net/code/taeLVN.txt
vkvm
美国LA-2c4g
https://paste.spiritlhl.net/#/show/9taqwb.txt
物语云
宁波2c-2g
https://paste.spiritlhl.net/#/show/gyE4an.txt
HoHo
https://myprepaid-server.com/index.php
德国4c4g,无限流量
http://hpaste.spiritlhl.net/#/show/hNQzX.txt
Claw
日本(原35刀一年)
https://paste.spiritlhl.net/#/show/GofO6.txt
vkvm家的不大行,超售,导致机器实际性能与纸上数据相差非常大;
Akile的跑分不错,实际测试性能还行,至少一边运行docker并上传一个500MB文件,另一边使用hy2看4k视频能到9万分;
Racknerd和DO的,主打个内存大,但cpu性能一般;
遇到的问题
用户订阅链接无输出
如果所有节点都是hysteria2协议,会出现订阅链接输出是空白;此时直接在pc端导入到clash是正常的
尝试添加如vless协议的节点,但在安卓、苹果端仍然无法直接导入hysteria2协议
数据迁移
数据库位置:/root/Xboard/.docker/.data/database.sqlite