Xboard
Xboard 是一套功能完整的机场管理系统,基于 V2Board 演进而来,支持多节点、多协议、用户订阅管理、套餐销售、支付接入等功能,适合搭建对外提供服务的代理平台。
Xboard 是 V2Board 的社区分叉版本,修复了原版的安全问题,并持续在更新维护。如果你在搭建新机场,优先选择 Xboard 而非原版 V2Board。
环境要求
Xboard 支持两种部署方式:Docker(推荐)和传统 LNMP 环境。
Docker 部署(推荐)
- Docker 20.10+
- Docker Compose 2.0+
- 一台有公网 IP 的 VPS(推荐 1 核 1 GB 以上)
- 域名(用于前端访问和 API 通信)
传统 LNMP 部署
- PHP 8.1+(需要扩展:BCMath、Ctype、FileInfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML)
- MySQL 5.7+ 或 MariaDB 10.3+
- Nginx 1.18+ 或 Apache
- Redis(可选,用于队列与缓存)
安装
方式一:Docker 一键部署(推荐)
1. 下载部署文件
git clone https://github.com/cedar2025/Xboard.git
cd Xboard
2. 复制环境配置
cp .env.example .env
3. 编辑 .env 文件,配置数据库和域名
# 应用配置
APP_URL=https://your-domain.com
# 数据库配置(Docker 模式下使用内置 MySQL)
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=xboard
DB_USERNAME=xboard
DB_PASSWORD=your-db-password
# Redis 配置
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
4. 启动服务
docker compose up -d
5. 初始化数据库
docker compose exec xboard php artisan xboard:install
按提示设置管理员账号和密码,安装完成后即可通过 https://your-domain.com 访问管理后台。
方式二:手动部署(LNMP 环境)
1. 下载源码
git clone https://github.com/cedar2025/Xboard.git /var/www/xboard
cd /var/www/xboard
2. 安装依赖
composer install --optimize-autoloader --no-dev
3. 配置 .env
cp .env.example .env
php artisan key:generate
编辑 .env 配置数据库连接信息。
4. 初始化
php artisan xboard:install
php artisan storage:link
5. 配置 Nginx
server {
listen 80;
server_name your-domain.com;
root /var/www/xboard/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
配置完成后建议使用 certbot 申请 SSL 证书,强制 HTTPS。
6. 启动队列进程
php artisan queue:work --daemon
建议使用 Supervisor 管理队列进程,确保持久运行。
节点对接
Xboard 通过与后端节点通信来管理用户流量。常见后端包括 3X-UI(单用户)和 XrayR/Sing-box-Xboard(多用户)。
对接 XrayR(推荐)
XrayR 是专门设计用于与 V2Board/Xboard 对接的多用户节点后端。
1. 在 Xboard 后台创建节点
进入「节点管理」→「添加节点」,选择协议类型(如 VMess、VLESS、Trojan、Shadowsocks),填写节点名称、地址、端口等信息,保存后记录节点 ID 和 API 通信密钥。
2. 在 VPS 上安装 XrayR
bash <(curl -Ls https://raw.githubusercontent.com/XrayR-project/XrayR-release/master/install.sh)
3. 配置 XrayR
编辑 /etc/XrayR/config.yml:
Log:
Level: warning
DnsConfigPath: # 可选
Nodes:
- PanelType: "NewV2board"
ApiConfig:
ApiHost: "https://your-domain.com" # Xboard 面板地址
ApiKey: "your-api-key" # Xboard 后台 → 设置 → API 密钥
NodeID: 1 # 在 Xboard 中创建的节点 ID
NodeType: V2ray # 节点类型:V2ray / Trojan / Shadowsocks
ControllerConfig:
ListenIP: 0.0.0.0
SendIP: 0.0.0.0
UpdatePeriodic: 60
EnableDNS: false
CertConfig:
CertMode: http # http / dns / file
CertDomain: "your-node-domain.com"
CertFile: /etc/XrayR/cert/cert.pem
KeyFile: /etc/XrayR/cert/key.pem
4. 启动 XrayR
xrayr start
systemctl enable XrayR
套餐与用户管理
创建套餐
进入「套餐管理」→「添加套餐」:
| 字段 | 说明 |
|---|---|
| 套餐名称 | 用户可见的套餐名,如「月付 100G」 |
| 月度流量 | 每月重置的流量上限(MB),0 表示不限制 |
| 连接设备数 | 允许同时在线的设备数量,0 不限 |
| 速度限制 | 节点限速(Mbps),0 不限 |
| 套餐售价 | 月付/季付/半年/年付价格(0 表示不提供该时长选项) |
| 套餐组 | 可限制该套餐能访问的节点分组 |
| 试用天数 | 新用户注册后的免费试用天数(0 禁用试用) |
用户管理
在「用户管理」中可以:
- 查看所有用户的注册时间、到期时间、流量使用情况
- 手动修改用户套餐、延长到期时间、重置流量
- 封禁或解封用户账号
- 查看用户订阅链接和连接日志
流量统计
Xboard 提供按节点、按用户、按时间维度的流量统计,路径为「统计」→「流量统计」。
支付接入
Xboard 支持多种支付渠道,在「支付设置」中配置。
易支付(推荐,适合国内)
驱动:epay
商户 ID:your-merchant-id
秘钥:your-secret-key
支付接口地址:https://your-epay.com
支持的易支付类型:支付宝、微信、QQ 钱包等(取决于易支付服务商配置)。
Stripe(适合境外用户)
驱动:stripe
Secret Key:sk_live_xxxx
Webhook 密钥:whsec_xxxx
需要在 Stripe Dashboard 中配置 Webhook,指向 https://your-domain.com/api/v1/guest/payment/notify。
手动审核支付(适合小规模)
无需接入支付平台,用户提交订单后由管理员手动确认付款并开通服务,适合初期运营或对接线下转账。
订阅配置
Xboard 为每个用户自动生成订阅链接,用户可在「我的」→「订阅」页面获取。
订阅格式
Xboard 支持多种订阅格式输出:
| 格式 | 适用客户端 |
|---|---|
| Clash(YAML) | Mihomo、Stash、Clash Verge 等 |
| V2Ray/Xray | v2rayN、Nekoray 等 |
| Shadowrocket | 小火箭(iOS) |
| sing-box JSON | sing-box 系客户端 |
自定义订阅前缀
在「系统设置」→「订阅设置」中可配置:
- 订阅节点名称前缀(如显示为「🇭🇰 香港01」)
- 订阅域名(建议使用与面板不同的域名)
- 是否隐藏套餐名称
客户端兼容性说明
- Clash 格式:最广泛兼容,推荐作为默认格式
- sing-box 格式:支持 VLESS/Hysteria 2 等新协议,推荐给进阶用户
- 通用格式(Base64):v2rayN、小火箭等客户端的备用选项
对接 sing-box-xboard 后端
除 XrayR 外,也可以使用 sing-box-xboard 作为节点后端,支持 Hysteria 2、VLESS-Reality、AnyTLS 等更新的协议。
1. 安装
bash <(curl -fsSL https://raw.githubusercontent.com/PuerNya/sing-box-xboard/main/install.sh)
2. 配置 /etc/sing-box-xboard/config.json
{
"log": { "level": "warn" },
"nodes": [
{
"panel_type": "NewV2board",
"api_host": "https://your-domain.com",
"api_key": "your-api-key",
"node_id": 1,
"node_type": "hysteria2"
}
]
}
node_type 可填:vmess、vless、trojan、shadowsocks、hysteria2、tuic。
3. 启动
systemctl start sing-box-xboard
systemctl enable sing-box-xboard
更新与维护
更新 Xboard(Docker 方式)
cd /path/to/xboard
docker compose pull
docker compose up -d
docker compose exec xboard php artisan migrate --force
更新 Xboard(手动部署方式)
cd /var/www/xboard
git pull
composer install --optimize-autoloader --no-dev
php artisan migrate --force
php artisan config:cache
php artisan route:cache
# 重启队列进程
supervisorctl restart all
备份数据库
# MySQL 备份
mysqldump -u xboard -p xboard > xboard_backup_$(date +%Y%m%d).sql
# Docker 方式
docker compose exec mysql mysqldump -u xboard -ppassword xboard > backup.sql
建议设置定期备份的 cron 任务,并将备份文件上传到对象存储(如 Cloudflare R2、阿里云 OSS)。
安全加固
限制后台访问 IP
在 Nginx 配置中为 /admin 路径添加 IP 白名单:
location /admin {
allow 1.2.3.4; # 你的管理 IP
deny all;
try_files $uri $uri/ /index.php?$query_string;
}
修改默认后台路径
在「系统设置」→「站点设置」中修改后台访问路径(如将 /admin 改为随机字符串),降低被扫描的风险。
启用双因素认证
在管理员账户设置中开启 TOTP 两步验证,防止密码泄漏后被直接登录。
数据库安全
- 不要将数据库端口(3306)暴露在公网,只允许本机或内网访问
- 数据库账号使用最小权限,不要使用 root 账号运行 Xboard
- 定期修改数据库密码
常见问题
面板安装后无法访问?
- 检查域名 DNS 解析是否已生效(
nslookup your-domain.com) - 确认 80/443 端口防火墙已放行
- 查看 Nginx 错误日志:
tail -f /var/log/nginx/error.log
节点对接后用户无法连接?
- 在 Xboard 后台「节点管理」查看节点是否显示「在线」
- 检查 XrayR/sing-box-xboard 日志:
journalctl -u XrayR -f - 确认节点 VPS 防火墙放行了对应协议端口
用户订阅更新后节点为空?
- 检查订阅链接是否能正常访问(用浏览器打开看是否返回内容)
- 确认用户套餐未过期、流量未用尽
- 检查节点是否已分配到用户套餐所属的节点分组
支付回调失败?
- 确认支付回调 URL(
/api/v1/guest/payment/notify)可以从外部访问 - 查看 Xboard 日志:
docker compose logs xboard或tail -f storage/logs/laravel.log - 检查支付平台配置的密钥是否与 Xboard 中一致