部署V2Board并对接XrayR后端

v2board是一个机场面板,xrayr是最近出来的一个后端,讲道理这个后端算很良心了,现在有很多后端都是收费的,而这个永久免费,并且完全开源。

文章目录

部署v2board面板

咱用的系统是debian10,先来装v2board,建议内存至少1gb。

如果机器内存小于1gb可以尝试挂个swap上去,说不定在安装依赖的时候能够强行怼过去:

fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

安装nginx/mariadb/redis和一些需要用到的工具:

apt -y update
apt -y install curl wget git unzip nginx mariadb-server redis-server supervisor

安装php:

apt -y install php7.3-common php7.3-cli php7.3-fpm \
php7.3-gd php7.3-mysql php7.3-mbstring php7.3-curl \
php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-intl \
php7.3-bz2 php7.3-bcmath php-redis

安装composer:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer

启动所有需要用到的服务并设置开机自启:

systemctl enable --now nginx mariadb redis-server php7.3-fpm supervisor

[重要]由于之前安装了php的redis扩展,这里需要重启fpm才能生效:

systemctl restart php7.3-fpm

初始化数据库:

mysql_secure_installation

创建一个名为v2board的数据库和用户:

mysql -u root -p
CREATE DATABASE v2board CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON v2board.* TO v2board@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit

拉取项目源码:

cd /var/www
git clone https://github.com/v2board/v2board.git
cd v2board

安装依赖:

composer install

安装v2board:

php artisan v2board:install

按照下图来填写数据库连接信息以及设置管理员账号密码:

[重要]给予正确的权限:

chown -R www-data:www-data /var/www/v2board
chmod -R 755 /var/www/v2board

新建nginx站点配置文件:

nano /etc/nginx/conf.d/v2board.conf

写入如下配置:

server {
listen      80;
server_name v2board.ohshit.club;
root        /var/www/v2board/public;
index       index.php;
client_max_body_size 0;
location /downloads {
}
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
}

由于v2board的前端资源文件比较大,务必启用gzip进行压缩,不然访问的时候可能很慢:

nano /etc/nginx/nginx.conf

去掉下面这些配置的注释:

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

重载nginx使其生效:

systemctl reload nginx

安装certbot:

apt -y update
apt -y install snapd
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

使用certbot签发ssl证书:

certbot --nginx

添加计划任务:

crontab -e

写入如下配置:

* * * * * php /var/www/v2board/artisan schedule:run >> /dev/null 2>&1

新建supervisor配置文件用于守护v2board的队列任务:

nano /etc/supervisor/conf.d/v2board.conf

写入如下配置:

[program:v2board]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/v2board/artisan queue:work --queue=send_email,send_telegram,stat_server
numprocs=4
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/www/v2board/storage/logs/queue.log

启动v2board的队列任务:

supervisorctl update

查看队列任务状态:

supervisorctl status

确保全部都是运行状态:

v2board:v2board_00               RUNNING   pid 18665, uptime 7:53:33
v2board:v2board_01               RUNNING   pid 18664, uptime 7:53:33
v2board:v2board_02               RUNNING   pid 18667, uptime 7:53:33
v2board:v2board_03               RUNNING   pid 18666, uptime 7:53:33

至此,v2board面板就搭建完成了,访问你的域名应该能够打开v2board的首页,在域名后面加上/admin即可访问后台管理面板。

对接XrayR后端节点

这里先介绍比较常用的对接方法,既使用xrayr内置的tls设置。后续单独水一篇把tls交给nginx处理的文章。

xrayr内置的证书申请支持很多方法,这里我使用dns的方式,因为这个方法不需要用到80端口,如果在和v2board面板同一台机器上部署xrayr后端的话,80端口肯定是被nginx占用了的,这会导致证书申请失败。

这里我使用的dns服务商是cloudflare,假设你和我使用同一个dns服务商,你有一个node1.ohshit.club的域名。

你现在需要在cloudflare创建一个api,创建步骤可以参考:

Xray前置SNI分流/回落WebSocket+CDN

接着打开v2board面板,在“系统设置-站点”,填写好站点url和订阅url:

[重要]在“服务端”填写通讯密钥,这将是v2board和xrayr后端对接的凭据:

在“权限组管理”添加一个权限组:

在“节点管理”添加一个v2ray节点,为了避免机器被墙,这里建议添加websocket节点,并且启用tls:

关于节点添加这里有几个需要注意的事项:

1.端口是在v2board面板上指定,你指定什么端口xrayr就以什么端口监听。比如我在v2board上配置8443端口,那么xrayr就会监听8443端口。

2.没有特殊情况,连接端口和服务端口一律保持一致。(特殊情况的配置另外开一篇文章详细说明)

3.websocket节点,务必添加path:

{
"path": "/sometimesnaive"
}

如图所示:

现在下载解压xrayr后端:

mkdir /opt/xrayr && cd /opt/xrayr
wget https://github.com/XrayR-project/XrayR/releases/download/v0.5.0/XrayR-linux-64.zip

编辑xrayr配置文件:

nano config.yml

改为如下配置,需要改动的重要部分都写了注释:

Log:
Level: debug
AccessPath: ./access.log
ErrorPath: ./error.log
DnsConfigPath: ./dns.json
Nodes:
-
PanelType: "V2board" // 面板类型
ApiConfig:
ApiHost: "https://v2board.ohshit.club/" // v2board面板的地址,域名结尾一定要加/
ApiKey: "imlalaimlalaimlala" // v2board面板内配置的通讯密钥
NodeID: 1 // v2board面板内对应节点的id
NodeType: V2ray // 节点类型
Timeout: 30
EnableVless: false
EnableXTLS: false
ControllerConfig:
ListenIP: 0.0.0.0
UpdatePeriodic: 60
EnableDNS: false
CertConfig:
CertMode: dns
CertDomain: "node1.ohshit.club" // 节点域名
Provider: cloudflare
Email: example@lala.im // 你的邮箱
DNSEnv:
CF_DNS_API_TOKEN: cwPZEBAvIXUcxCdy4v2ib5j8uK-KwnRMDuNPxE-n // 你之前申请的cloudflare域名api

新建supervisor配置文件用于守护xrayr:

nano /etc/supervisor/conf.d/xrayr.conf

写入如下配置:

[program:xrayr]
directory=/opt/xrayr
command=/opt/xrayr/XrayR -config config.yml
autostart=true
autorestart=true

启动xrayr:

supervisorctl update

至此所有配置就全部完成了。如果部署遇到了问题,下面的这些日志可能会有帮助:

/var/www/v2board/storage/logs/laravel-xxxx-xx-xx.log
/var/www/v2board/storage/logs/queue.log
/opt/xrayr/access.log
/opt/xrayr/error.log
全部为采集文章,文中的 联系方式 均不是 本人 的!

发表评论