V2Board机场搭建

V2Board是一款可用来搭建机场节点的开源工具。

Docker部署V2Board

部署教程

注:以容器方式部署,需要机器配置较高,尤其是内存应足够(Akile-TW,1C1G的配置直接卡住)。

一、前期准备

先准备好Docker环境,安装Docker和Docker-Compose。

可以为Docker-compose创建一个快捷键:dc => docker-compose

1
2
3
chmod a+x /usr/local/bin/docker-compose
rm -rf `which dc`
ln -s /usr/local/bin/docker-compose /usr/bin/dc

二、安装V2B

  1. 拉取V2Board,并配置版本:

    1
    2
    3
    4
    5
    6
    7
    git clone https://github.com/v2board/v2board-docker.git v2b

    cd v2b
    git submodule update --init
    echo ' branch = master' >> .gitmodules # 配置稳定版
    # echo ' branch = dev' >> .gitmodules # 配置开发版
    git submodule update --remote
  2. 修改docker-compose.yaml

如果数据库不在本地

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'
services:
www:
image: tokumeikoi/lcrp
volumes:
- './www:/www'
- './wwwlogs:/wwwlogs'
- './caddy.conf:/run/caddy/caddy.conf'
- './supervisord.conf:/run/supervisor/supervisord.conf'
- './crontabs.conf:/etc/crontabs/root'
- './.caddy:/root/.caddy'
ports:
- '80:80'
- '443:443'
restart: always

如果数据库在本地

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
version: '3'
services:
www:
image: tokumeikoi/lcrp
volumes:
- './www:/www'
- './wwwlogs:/wwwlogs'
- './caddy.conf:/run/caddy/caddy.conf'
- './supervisord.conf:/run/supervisor/supervisord.conf'
- './crontabs.conf:/etc/crontabs/root'
- './.caddy:/root/.caddy'
ports:
- '80:80'
- '443:443'
restart: always
links:
- mysql
mysql:
image: mysql:5.7.29
volumes:
- './mysql:/var/lib/mysql'
restart: always
environment:
MYSQL_ROOT_PASSWORD: 请修改密码
MYSQL_DATABASE: v2b
  1. 修改caddy.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
http://yourdomain {
root /www/public
fastcgi / /tmp/php-cgi.sock php
rewrite {
to {path} {path}/ /index.php?{query}
}
}

https://yourdomain {
tls 你的CF邮箱
root /www/public
log /wwwlogs/caddy.log
fastcgi / /tmp/php-cgi.sock php
rewrite {
to {path} {path}/ /index.php?{query}
}
}

注:如果需要用反代的方式处理订阅链接,那么反代的网址也要填进去。

  1. 安装
1
2
3
4
5
6
7
8
9
10
11
# 先启动Docker
dc up -d

# 进入容器
dc exec www bash

# 配置环境及安装
wget https://getcomposer.org/download/1.9.0/composer.phar
php composer.phar global require hirak/prestissimo
php -d memory_limit=-1 composer.phar install
php artisan v2board:install

如果数据库在本地,则配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
__     ______  ____                      _
\ \ / /___ \| __ ) ___ __ _ _ __ __| |
\ \ / / __) | _ \ / _ \ / _` | '__/ _` |
\ V / / __/| |_) | (_) | (_| | | | (_| |
\_/ |_____|____/ \___/ \__,_|_| \__,_|
请输入数据库地址(默认:localhost) [localhost]:
> mysql
请输入数据库名:
> v2board
请输入数据库用户名:
> root
请输入数据库密码:
> v2boardisbest
正在导入数据库请稍等...
数据库导入完成
请输入管理员邮箱?:
> test@test.com
请输入管理员密码?:
> 12345678
一切就绪
访问 http(s)://你的站点/admin 进入管理面板

如果数据库在无程,则填写远程地址。建议远程数据库设置防火墙。

  1. 启动horizon

    1
    2
    dc exec www bash 
    php artisan horizon &
  2. 升级

1
2
3
dc exec www bash 
sh update.sh
php artisan horizon &
  1. 清除高磁盘占用的日志文件

当V2Board运行一段时间,会发现磁盘可用率变低了。大概率是因为laravel的日志文件造成的。
处理方法如下:

1
2
3
dc exec www bash 
cd storage/logs
# 删除久远的日志即可

websocks config:

1
2
3
4
5
6
{
"path": "/v2rayvmws",
"headers": {
"Host": "v2ray.com"
}
}

gRPC config:

1
2
3
{
"serviceName": "gRPCService"
}

hysteria2后端接口

https://github.com/Vincent-Ksr/hysteria-guapi

1
2
3
4
cd /etc
mkdir hysteria
git clone https://github.com/Vincent-Ksr/hysteria2-v2b.git hysteria
cd /etc/hysteria

aaPanel面板部署V2Board

V2Board的部署官方给的教程以国际版的宝塔面板为载体进行配置,部署教程

1
2
3
4
5
# 最新脚本可以在aaPanel官网获取
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh

# 也可以使用科技Lion的一键脚本进行安装,脚本运行后选择 => 11.常用面板工具 => 2.aaPanel宝塔国际版
curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh

安装完成aaPanel之后,登录宝塔管理面板并安装以下环境(选择Fast安装):

Nginx 1.17
MySQL 5.6
PHP 7.4

安装Redis、fileinfo:

aaPanel => App Store => PHP 7.4 : Setting => Install extensions => redis, fileinfo

解除被禁止的函数:

aaPanel => App Store => PHP 7.4 : Setting => Disabled functions putenv,proc_open,pcntl_alarm,pcntl_singal

添加站点:

aaPanel => Website => Add site:
- Domain: 填写指向服务器IP的域名
- Databasse: MySQL
- PHP Version: PHP-74

注:添加完站点之后,弹出数据库名称、用户名和密码,应保存下来,后面安装V2Board时需要用到。

安装V2Board:

SSH登录到服务器,切换到站点路径:/www/wwwroot/站点域名

删除默认生成的站点目录文件:

1
2
chattr -i .user.ini
rm -rf .htaccess 404.html index.html .user.ini

拉取V2Board代码:

1
2
3
4
5
# 拉取代码
git clone https://github.com/v2board/v2board.git ./

# 安装
sh init.sh

配置站点目录及伪静态

aaPanel中找到添加的站点,进行配置:

Site directory => Running directory : /public
URL rewrite:

1
2
3
4
5
6
7
8
9
10
11
12
13
location /downloads {
}

location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}

location ~ .*\.(js|css)?$
{
expires 1h;
error_log off;
access_log /dev/null;
}

配置定时任务:
aaPanel => Cron:
- Type of Task: Shell Script
- Name of Task: v2board
- Period : N Minutes 1 Minute
- Script content: php /www/wwwroot/<path2domain>/artisan schedule:run

启动队列服务:

V2Board的系统强信赖队列服务,正常使用V2Board必须启动队列服务。
下面以aaPanel中supervisor服务来守护队列服务作为演示:

aaPanel => App Store => Tools

找到Supervisor,安装,然后进行设置:

- Name: V2board 
- Run User: www 
- Run Dir: 选择站点目录
- Start Command: `php artisan horizon`
- Processes: 1

按以上配置进行设置后,确认保存配置,不出意外的话V2Board就可以运行了。

XRayR的默认配置文件路径为: /etc/XRayR/config.yml