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,创建步骤可以参考:
接着打开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