第14章 多用户管理方案¶
当需要为多人提供代理服务时,需要专门的管理工具。本章介绍主流的多用户管理面板和方案。
14.1 面板管理工具(X-UI等)¶
14.1.1 X-UI面板¶
X-UI简介:
安装X-UI:
# 一键安装脚本
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
# 安装过程:
# 1. 选择端口(默认54321)
# 2. 设置管理员账号
# 3. 设置管理员密码
# 4. 自动安装并启动
# 访问面板
http://your-server-ip:54321
# 用户名:设置的用户名
# 密码:设置的密码
X-UI管理命令:
# 启动面板
x-ui start
# 停止面板
x-ui stop
# 重启面板
x-ui restart
# 查看状态
x-ui status
# 查看日志
x-ui log
# 更新面板
x-ui update
# 修改配置
x-ui setting
# 卸载
x-ui uninstall
14.1.2 X-UI使用教程¶
添加用户:
步骤1:登录面板
访问 http://your-ip:54321
步骤2:添加入站
面板 → Inbounds → + 添加入站
配置项:
- 备注:用户昵称(如:user001)
- 协议:选择协议类型(VLESS/VMess/Trojan)
- 监听IP:0.0.0.0
- 端口:随机或指定(建议1000-60000)
- 流量限制:设置月流量(如50GB)
- 到期时间:设置有效期
- 传输配置:
- TCP(直连)
- WebSocket(CDN友好)
- gRPC(推荐)
步骤3:配置TLS(如需要)
- 启用TLS:开
- 域名:your-domain.com
- 证书路径:/path/to/cert
- 密钥路径:/path/to/key
步骤4:添加用户
- UUID:自动生成或手动输入
- Email:用户标识
- 流量:单用户流量限制(可选)
步骤5:保存配置
点击保存,系统自动重载配置
导出客户端配置:
14.1.3 3X-UI(推荐)¶
3X-UI特点:
3X-UI是X-UI的增强版,基于Xray-core构建
核心优势:
✓ 现代化Web管理界面
✓ 支持所有Xray协议
✓ 支持Reality协议(无需域名)
✓ 多用户管理
✓ 流量统计和限制
✓ 系统状态监控
✓ 一键申请SSL证书
✓ 订阅链接生成
✓ Telegram机器人通知
✓ 定时重启任务
✓ 支持多管理员
支持协议:
- VLESS (TCP/WS/gRPC/Reality)
- VMess (TCP/WS/gRPC)
- Trojan (TCP/WS/gRPC)
- Shadowsocks
- Dokodemo-door
- Socks
- HTTP
安装3X-UI:
# 一键安装最新版本
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# 安装指定版本
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v2.3.0
# 安装过程:
# 1. 选择语言(中文/英文)
# 2. 设置管理员用户名(默认:admin)
# 3. 设置管理员密码(默认:admin)
# 4. 设置面板端口(默认:2053)
# 5. 自动安装完成
# 安装完成后:
# 访问地址:http://your-ip:2053
# 用户名:你设置的用户名
# 密码:你设置的密码
# 首次登录强制修改密码
3X-UI管理命令:
# 查看状态
x-ui status
# 启动/停止/重启
x-ui start
x-ui stop
x-ui restart
# 查看配置信息
x-ui settings
# 修改用户名和密码
x-ui username
x-ui password
# 修改面板端口
x-ui port
# 更新面板
x-ui update
# 卸载
x-ui uninstall
3X-UI配置Reality节点:
Reality配置步骤:
1. 登录3X-UI面板
访问:http://your-ip:2053
输入管理员账号密码
2. 添加Reality入站
点击"入站列表" → "+添加入站"
3. 基本设置:
- 备注:Reality-用户名
- 协议:选择 VLESS
- 监听IP:0.0.0.0
- 端口:443(推荐)
- 传输协议:TCP
- TLS:选择 Reality
4. Reality设置:
- Dest(目标网站):www.microsoft.com:443
(或其他大型网站)
- ServerNames:www.microsoft.com
- PrivateKey:点击“生成”按钮
- ShortIds:点击“生成”按钮
5. 用户配置:
- 添加用户:点击“+”
- Email:用户标识(如user01@example.com)
- UUID:自动生成
- Flow:xtls-rprx-vision
- 流量限制:设置月流量(如50GB)
- 到期时间:设置有效期
6. 保存并启用
- 点击保存
- 点击二维码图标生成分享链接
- 用户扫码或复制链接导入客户端
Reality目标网站推荐:
选择原则:
• 必须是HTTPS网站(端口443)
• 选择知名大型网站
• 优先选择与VPS同地区的网站
美国区域 VPS:
- www.microsoft.com:443
- www.cisco.com:443
- www.apple.com:443
- www.cloudflare.com:443
亚洲区域 VPS:
- www.samsung.com:443
- www.yahoo.co.jp:443
- www.ntt.com:443
欧洲区域 VPS:
- www.bmw.com:443
- www.siemens.com:443
- www.logitech.com:443
流量管理功能:
在入站配置中设置:
1. 总流量限制
- 点击编辑入站
- 设置总流量(如100GB)
- 0表示不限制
2. 过期时间
- 设置到期日期
- 过期后自动禁用
3. 单用户限制
- 编辑用户设置
- 设置单用户流量限制
4. IP连接限制
- 防止账号共享
- 设置最大同时连接数
14.1.4 V2Ray-UI/V2-UI¶
V2-UI面板:
# 安装
bash <(curl -Ls https://raw.githubusercontent.com/sprov065/v2-ui/master/install.sh)
# 功能:
- V2Ray多协议支持
- 用户管理
- 流量统计
- 系统状态监控
# 访问
http://your-ip:65432
14.1.5 面板安全建议¶
加强面板安全:
# 1. 修改默认端口
# 面板设置 → 端口 → 改为非常见端口
# 2. 设置强密码
# 至少16位,包含大小写字母、数字、符号
# 3. 启用IP白名单
# 仅允许特定IP访问面板
# 4. 使用防火墙
ufw allow from your-ip to any port 54321
# 5. 启用HTTPS
# 面板设置 → SSL → 上传证书
# 6. 定期备份
# 面板设置 → 备份 → 下载备份文件
# 7. 限制登录尝试
# 防止暴力破解
14.2 流量统计与限制¶
14.2.1 流量统计功能¶
X-UI流量统计:
统计维度:
- 总流量:所有用户总计
- 用户流量:单个用户使用情况
- 实时流量:当前上传/下载速度
- 历史流量:按日/月统计
查看方式:
1. 面板首页:总览
2. Inbounds列表:每个用户的流量
3. 流量统计页面:详细图表
4. 导出报表:Excel/CSV格式
流量重置:
14.2.2 流量限制策略¶
限制方式:
1. 总流量限制
设置用户月流量(如50GB)
超出后自动禁用
2. 速度限制
限制上传/下载速度
防止单用户占用全部带宽
3. 连接数限制
限制同时连接数
防止账号共享
4. IP数量限制
限制使用的IP数量
防止多人使用
X-UI流量限制配置:
添加/编辑用户时设置:
总流量:
- 输入流量大小(GB)
- 0表示不限制
- 超出后自动禁用
到期时间:
- 设置有效期
- 过期后自动禁用
限速(需配置):
- 上传速度:MB/s
- 下载速度:MB/s
连接数:
- 最大同时连接数
14.2.3 流量监控与告警¶
Telegram机器人通知:
# 3X-UI支持Telegram机器人
配置步骤:
1. 创建Telegram Bot
- 联系 @BotFather
- 发送 /newbot
- 设置bot名称
- 获取Token
2. 获取Chat ID
- 联系你的bot
- 发送任意消息
- 访问:https://api.telegram.org/bot<token>/getUpdates
- 查找 "chat":{"id":数字}
3. 面板配置
- 设置 → Telegram设置
- 输入Bot Token
- 输入Chat ID
- 保存
4. 通知类型
- 用户流量告警(80%/90%/100%)
- 到期提醒
- 系统告警
- 登录通知
邮件通知:
14.3 用户配置管理¶
14.3.1 批量用户管理¶
批量添加用户:
方法1:面板批量添加
- 用户管理 → 批量添加
- 设置用户数量
- 统一配置:
- 流量限制
- 到期时间
- 协议类型
- 自动生成UUID
方法2:导入用户列表
- 准备CSV文件
格式:用户名,流量(GB),到期时间
- 面板导入
方法3:API批量创建
- 使用X-UI API
- 编写脚本批量创建
批量修改配置:
14.3.2 用户分组管理¶
按需求分组:
免费用户组:
- 流量:10GB/月
- 速度:5MB/s
- 有效期:1个月
标准用户组:
- 流量:50GB/月
- 速度:50MB/s
- 有效期:1个月
VIP用户组:
- 流量:500GB/月
- 速度:不限速
- 有效期:3个月
创建模板:
面板设置 → 用户模板
- 保存常用配置
- 新建用户时快速应用
14.3.3 配置导出与备份¶
导出用户数据:
# X-UI数据库位置
/etc/x-ui/x-ui.db
# 备份数据库
cp /etc/x-ui/x-ui.db /root/x-ui-backup-$(date +%Y%m%d).db
# 定期自动备份
crontab -e
# 每天凌晨3点备份
0 3 * * * cp /etc/x-ui/x-ui.db /root/backups/x-ui-$(date +\%Y\%m\%d).db
# 保留最近7天备份
find /root/backups/ -name "x-ui-*.db" -mtime +7 -delete
导出用户配置:
14.4 续费与到期提醒¶
14.4.1 自动续费系统¶
续费流程:
流程设计:
用户端:
1. 用户访问续费页面
2. 选择套餐(1月/3月/1年)
3. 支付费用
4. 系统自动延长
管理端:
1. 收到支付通知
2. 验证支付
3. 更新用户配置:
- 延长到期时间
- 重置流量
4. 发送确认通知
支付集成:
支付方式选择:
1. 手动确认
- 用户转账
- 发送截图
- 管理员手动确认
2. 支付API
- 支付宝
- 微信支付
- PayPal
- 加密货币
3. 卡密系统
- 生成激活码
- 用户输入激活
- 自动续期
14.4.2 到期提醒机制¶
提醒时间节点:
提醒计划:
到期前7天:
- 第一次提醒
- 邮件/Telegram通知
- 提示续费链接
到期前3天:
- 第二次提醒
- 强调即将到期
到期前1天:
- 最后提醒
- 紧急通知
到期当天:
- 账号禁用
- 发送到期通知
到期后7天:
- 最终通知
- 账号将被删除(可选)
通知模板:
邮件模板:
主题:【重要】您的账号将于3天后到期
尊敬的用户,
您的账号信息:
用户名:{username}
到期时间:{expire_date}
剩余时间:3天
剩余流量:{remain_traffic}GB
为了不影响您的使用,请及时续费。
续费链接:{renew_url}
如有问题,请联系客服。
---
Telegram通知:
⚠️ 到期提醒
用户:{username}
到期:{expire_date}
剩余:3天
点击续费:{renew_url}
14.4.3 卡密系统实现¶
卡密生成:
# Python示例:生成卡密
import random
import string
def generate_card(length=16):
"""生成激活码"""
chars = string.ascii_uppercase + string.digits
card = ''.join(random.choice(chars) for _ in range(length))
# 格式化:XXXX-XXXX-XXXX-XXXX
return '-'.join([card[i:i+4] for i in range(0, len(card), 4)])
# 批量生成
cards = [generate_card() for _ in range(100)]
# 保存到数据库
# 包含:
# - 卡密
# - 面值(天数/流量)
# - 状态(未使用/已使用)
# - 使用时间
# - 使用用户
卡密使用:
用户端:
1. 登录面板/客户端
2. 输入卡密
3. 点击激活
系统处理:
1. 验证卡密有效性
2. 检查是否已使用
3. 更新用户信息:
- 延长到期时间
- 增加流量
4. 标记卡密已使用
5. 记录使用日志
14.4.4 自动化运维脚本¶
定期清理脚本:
#!/bin/bash
# cleanup.sh - 清理过期用户
# X-UI数据库
DB_FILE="/etc/x-ui/x-ui.db"
# 获取当前时间戳
NOW=$(date +%s)
# 查询过期用户(SQL示例)
sqlite3 $DB_FILE "SELECT id,username FROM users WHERE expire_time < $NOW"
# 删除过期超过30天的用户
sqlite3 $DB_FILE "DELETE FROM users WHERE expire_time < $NOW - 2592000"
# 重启服务
x-ui restart
# 发送通知
echo "清理完成:$(date)" | mail -s "定期清理报告" admin@example.com
流量重置脚本:
#!/bin/bash
# reset_traffic.sh - 每月重置流量
# 重置所有用户流量
sqlite3 /etc/x-ui/x-ui.db "UPDATE users SET used_traffic = 0"
# 记录日志
echo "$(date): 流量已重置" >> /var/log/x-ui/reset.log
# 发送通知
curl -X POST "https://api.telegram.org/bot<token>/sendMessage" \
-d "chat_id=<chat_id>" \
-d "text=月度流量已重置"
定时任务配置:
crontab -e
# 每天凌晨3点清理过期用户
0 3 * * * /root/scripts/cleanup.sh
# 每月1号凌晨重置流量
0 0 1 * * /root/scripts/reset_traffic.sh
# 每天检查到期用户并提醒
0 9 * * * /root/scripts/expire_reminder.sh
本章小结¶
本章介绍了多用户管理的完整方案:
核心要点:
-
管理面板:
- X-UI:功能全面、易用
- 3X-UI:现代化、功能强大
- V2-UI:简洁实用
-
流量管理:
- 统计分析
- 限制策略
- 监控告警
- Telegram通知
-
用户管理:
- 批量操作
- 分组管理
- 导出备份
- 配置模板
-
续费系统:
- 自动续费
- 到期提醒
- 卡密系统
- 支付集成
最佳实践:
安全建议:
✓ 修改默认端口
✓ 设置强密码
✓ 启用IP白名单
✓ 使用HTTPS
✓ 定期备份
管理建议:
✓ 合理分配流量
✓ 设置到期时间
✓ 启用自动提醒
✓ 定期清理过期用户
✓ 监控系统资源
运营建议:
✓ 提供多种套餐
✓ 自动化续费流程
✓ 及时客户服务
✓ 定期系统维护
至此,第四部分"服务器搭建篇"全部完成!
实践任务:
- 安装X-UI面板
- 添加测试用户
- 配置流量限制
- 设置到期提醒
- 导出用户配置
- 创建自动化脚本