跳转到搭建hysteria2文章

跳转到搭建vless-realit文章

自建机场

声明:本方法建立的机场仅限技术交流,无实际交易教程!

本方法搭建的机场属于代理直连的方式,非中转机场等高级玩法

先用两句话说明自建机场的逻辑

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
2
git clone -b  docker-compose --depth 1 https://github.com/cedar2025/Xboard
cd Xboard

执行数据库安装命令

自动选择 启用sqliteDocker内置的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
2
cd Xboard
vi docker-compose.yaml

修改docker-compose.yaml 当中image后面的版本号为你需要的版本
如果为版本为latest 则可以忽略这一步,直接进行第二步

更新数据库(可以执行多次都是安全的)

1
2
3
4
docker compose pull
docker compose down
docker compose run -it --rm xboard php artisan xboard:update
docker compose up -d

即可更新成功

回滚

此回滚不回滚数据库,是否回滚数据库请查看相关文档

回退版本

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

  • 父节点:无

image-20241125235329948

至此,已经完成了前端的工作,后面是将添加的节点进行实际运行起来,节点的部署可以运行在不同于服务器A(运行了Xboard)的机器B,C,D上

强烈推荐在部署节点之前,先配置好https访问,后面两步是配置https的过程

  1. 先配置http访问
  2. 再配置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端口:

  1. 打开或创建一个新的Nginx配置文件:

    1
    sudo vim /etc/nginx/sites-available/board.lthero.top
  2. 添加以下配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    server {
    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头信息转发给后端应用。
  3. 启用配置文件通过创建一个符号链接:

    1
    sudo ln -s /etc/nginx/sites-available/board.lthero.top /etc/nginx/sites-enabled/
  4. 检查Nginx配置文件是否有语法错误:

    1
    sudo nginx -t
  5. 如果没有错误,重启Nginx以应用配置:

    1
    sudo systemctl restart nginx

步骤 4: 调整防火墙规则

确保你的服务器的防火墙规则允许HTTP(端口80)和HTTPS(端口443,如果你使用SSL)的流量。如果你正在使用ufw,可以使用以下命令:

1
2
sudo ufw allow 'Nginx Full'
sudo ufw reload

步骤 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
2
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

步骤 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
  1. 如果你的配置文件里已经出现“# managed by Certbot”等内容,说明Certbot已经将配置文件修改好了,直接重启nginx即可
  2. 记得将下面所有的board.lthero.top换成你的域名
  3. 这里的7001端口是Xboard运行端口
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
server {
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 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/board.lthero.top/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/board.lthero.top/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
if ($host = board.lthero.top) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
server_name board.lthero.top;
return 404; # managed by Certbot


}

步骤 4: 重新加载 Nginx

更改配置后,需要重新加载 Nginx 以应用新的配置:

检查配置文件是否有语法错误,如果有warn!直接看“遇到的问题”部分,重新加载配置是不一定能work的

1
2
3
4
sudo nginx -t  # 检查配置文件是否有语法错误
sudo systemctl reload nginx # 重新加载配置
# 如果重新加载配置后无效,可以尝试重启nginx
sudo systemctl restart nginx

步骤 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上并统计

视频参考:https://youtu.be/Fwn0nFbB0zY?t=720

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退出(除非想添加其它协议)

image-20241125235810854

随后,输入 V2bX 查看V2bX的配置或修改配置文件,每次修改配置文件后V2bX会自动重启

这里吐槽一句啊,它只能初始化的时候使用交互方式进行文件配置,后续只能手动修改配置文件,对新手不友好。

如果想重新使用交互方式,只能将V2bX卸载后重装。

hysteria2自签证书的配置文件

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
{
"Log": {
"Level": "error",
"Output": ""
},
"Cores": [
{
"Type": "sing",
"Log": {
"Level": "error",
"Timestamp": true
},
"NTP": {
"Enable": false,
"Server": "time.apple.com",
"ServerPort": 0
},
"OriginalPath": "/etc/V2bX/sing_origin.json"
}],
"Nodes": [{
"Core": "sing",
"ApiHost": "https://xxx.lthero.top",
"ApiKey": "",
"NodeID": 12,
"NodeType": "hysteria2",
"Timeout": 30,
"ListenIP": "::",
"SendIP": "0.0.0.0",
"DeviceOnlineMinTraffic": 1000,
"TCPFastOpen": true,
"SniffEnabled": true,
"CertConfig": {
"CertMode": "self",
"RejectUnknownSni": false,
"CertDomain": "bing.com",
"CertFile": "/etc/V2bX/fullchain.cer",
"KeyFile": "/etc/V2bX/cert.key",
"Email": "v2bx@github.com",
"Provider": "cloudflare",
"DNSEnv": {
"EnvName": "env1"
}
}
}]
}

hysteria2使用证书

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
"Nodes": [{
"Core": "sing",
"ApiHost": "https://board.lthero.top",
"ApiKey": "xxxxx",
"NodeID": 13,
"NodeType": "hysteria2",
"Timeout": 30,
"ListenIP": "::",
"SendIP": "0.0.0.0",
"DeviceOnlineMinTraffic": 1000,
"TCPFastOpen": true,
"SniffEnabled": true,
"CertConfig": {
"CertMode": "http",
"RejectUnknownSni": false,
//唯一的区别是,这里写解析到节点服务的域名
"CertDomain": "ak-jp.lthero.top",
"CertFile": "/etc/V2bX/fullchain.cer",
"KeyFile": "/etc/V2bX/cert.key",
"Email": "v2bx@github.com",
"Provider": "cloudflare",
"DNSEnv": {
"EnvName": "env1"
}
}
}]

其它对接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