CeFRP Panel 文档

CeFRP Panel 是一款专业的 FRP 内网穿透管理面板,基于 Go + Vue 开发,提供完善的用户管理、节点管理、隧道管理、支付系统等功能。

主要特性

  • 多用户管理:用户注册、登录、权限控制
  • 多节点支持:节点分组、状态监控、一键部署
  • 隧道管理:TCP/UDP/HTTP/HTTPS 多协议支持
  • 流量统计:实时带宽监控、详细报表
  • 在线支付:支付宝、微信支付集成
  • 卡密系统:充值卡生成、批量导出

环境要求

组件 要求
操作系统 Linux (推荐 Ubuntu 20.04+ / CentOS 7+)
CPU 1 核心以上
内存 512MB 以上
数据库 MySQL 5.7+ / MariaDB 10.3+
端口 80/443 (Web)、7000 (frps)

安装部署

1. 下载程序

登录 授权系统 下载最新版本的 CeFRP Panel:

# 创建目录
mkdir -p /opt/cefrp-panel
cd /opt/cefrp-panel

# 从授权系统下载程序包后上传到服务器,然后解压
tar -xzf panel-linux-amd64.tar.gz

2. 配置数据库

创建 MySQL 数据库:

# 登录 MySQL
mysql -u root -p

# 创建数据库和用户
CREATE DATABASE cefrp_panel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'cefrp'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON cefrp_panel.* TO 'cefrp'@'localhost';
FLUSH PRIVILEGES;

3. 修改配置文件

编辑 config.yaml 配置文件:

# 服务配置
server:
  host: 0.0.0.0
  port: 8080

# 数据库配置
database:
  type: mysql
  host: 127.0.0.1
  port: 3306
  name: cefrp_panel
  user: cefrp
  password: your_password

# 授权配置
license:
  key: your_license_key

4. 启动服务

# 直接运行
./cefrp-panel

# 或使用 systemd 管理
cat > /etc/systemd/system/cefrp-panel.service << EOF
[Unit]
Description=CeFRP Panel
After=network.target mysql.service

[Service]
Type=simple
WorkingDirectory=/opt/cefrp-panel
ExecStart=/opt/cefrp-panel/cefrp-panel
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable cefrp-panel
systemctl start cefrp-panel

5. 配置反向代理(可选)

使用 Nginx 配置反向代理:

server {
    listen 80;
    server_name panel.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

配置说明

完整的配置文件示例:

# config.yaml

# 服务配置
server:
  host: 0.0.0.0
  port: 8080
  admin_path: /admin  # 后台路径

# 数据库配置
database:
  type: mysql
  host: 127.0.0.1
  port: 3306
  name: cefrp_panel
  user: cefrp
  password: your_password

# JWT 配置
jwt:
  secret: your_jwt_secret_key
  expire: 168h  # Token 过期时间

# 授权配置
license:
  key: your_license_key

# 邮件配置(可选)
email:
  smtp_host: smtp.example.com
  smtp_port: 465
  smtp_user: noreply@example.com
  smtp_pass: your_email_password
  from_name: CeFRP Panel

API 接口概述

CeFRP Panel 提供 RESTful API 接口,方便开发者进行二次开发和集成。

基础信息

Base URL https://your-panel.com/api
数据格式 JSON
认证方式 Bearer Token

响应格式

{
    "success": true,
    "data": { ... },
    "error": null
}

错误响应

{
    "success": false,
    "data": null,
    "error": {
        "code": 1001,
        "message": "错误信息"
    }
}

请求头

Content-Type: application/json
Authorization: Bearer <token>

认证接口

POST
/api/auth/login 用户登录

请求参数:

{
    "username": "user@example.com",
    "password": "your_password",
    "captcha_code": "1234",      // 验证码(如果开启)
    "captcha_id": "xxx"          // 验证码ID
}

响应示例:

{
    "success": true,
    "data": {
        "token": "eyJhbGciOiJIUzI1NiIs...",
        "user": {
            "id": 1,
            "username": "user@example.com",
            "nickname": "用户昵称"
        }
    }
}
POST
/api/auth/register 用户注册

请求参数:

{
    "username": "newuser",
    "email": "user@example.com",
    "password": "your_password",
    "captcha_code": "1234",
    "captcha_id": "xxx"
}
GET
/api/site/captcha 获取验证码

响应示例:

{
    "success": true,
    "data": {
        "captcha_id": "xxx",
        "captcha_type": "image",
        "captcha_img": "data:image/svg+xml;base64,..."
    }
}

用户接口

GET
/api/user/profile 获取用户信息

响应示例:

{
    "success": true,
    "data": {
        "id": 1,
        "username": "user",
        "email": "user@example.com",
        "nickname": "用户昵称",
        "balance": 100.00,
        "traffic_used": 1073741824,
        "traffic_limit": 10737418240,
        "group": {
            "id": 1,
            "name": "普通用户"
        }
    }
}
GET
/api/user/balance 获取余额信息
{
    "success": true,
    "data": {
        "balance": 100.00,
        "traffic_used": 1073741824,
        "traffic_limit": 10737418240
    }
}

隧道接口

GET
/api/user/tunnels 获取隧道列表

响应示例:

{
    "success": true,
    "data": {
        "tunnels": [
            {
                "id": 1,
                "name": "web-server",
                "type": "http",
                "local_ip": "127.0.0.1",
                "local_port": 8080,
                "remote_port": 0,
                "domain": "web.example.com",
                "status": "online",
                "node_id": 1,
                "node_name": "节点1",
                "node_host": "node1.example.com",
                "upload_bytes": 1024000,
                "download_bytes": 2048000
            }
        ]
    }
}
POST
/api/user/tunnels 创建隧道

请求参数:

{
    "name": "my-tunnel",
    "type": "tcp",
    "local_ip": "127.0.0.1",
    "local_port": 3306,
    "remote_port": 0,        // 0 表示自动分配
    "node_id": 1
}
GET
/api/user/tunnels/{id}/config 获取隧道配置

响应示例:

{
    "success": true,
    "data": {
        "config": "[common]\nserver_addr = node1.example.com\n..."
    }
}
DELETE
/api/user/tunnels/{id} 删除隧道

节点接口

GET
/api/user/nodes 获取可用节点列表

响应示例:

{
    "success": true,
    "data": {
        "nodes": [
            {
                "id": 1,
                "name": "香港节点",
                "host": "hk.example.com",
                "port": 7000,
                "status": "online",
                "region": "香港",
                "supported_types": ["tcp", "udp", "http", "https"],
                "group_id": 1,
                "group_name": "亚洲节点"
            }
        ]
    }
}
GET
/api/user/node-groups 获取可访问的节点分组
GET
/api/user/bandwidth-tiers 获取带宽档位列表

流量包接口

GET
/api/user/packages/store 获取流量包商店

响应示例:

{
    "success": true,
    "data": {
        "categories": [
            {
                "id": 1,
                "name": "基础套餐",
                "packages": [
                    {
                        "id": 1,
                        "name": "入门流量包",
                        "traffic_amount_gb": 10,
                        "bandwidth_limit": 10,
                        "validity_days": 30,
                        "price": 9.9
                    }
                ]
            }
        ],
        "user_discount": 0.9,
        "membership_name": "普通会员"
    }
}
GET
/api/user/packages 获取我的流量包列表

查询参数:

  • status - 可选,筛选状态(active: 仅活跃的)
GET
/api/user/packages/preview/{id} 获取购买预览(含折扣计算)
POST
/api/user/packages/purchase 购买流量包

请求参数:

{
    "package_type_id": 1,
    "name": "我的流量包",      // 可选,自定义名称
    "coupon_code": "DISCOUNT10" // 可选,优惠券码
}

余额与账单接口

GET
/api/user/balance 获取余额信息

响应示例:

{
    "success": true,
    "data": {
        "balance": 100.00,
        "traffic_balance": 1073741824,
        "traffic_balance_gb": 1.0,
        "package_traffic_gb": 10.0,
        "total_traffic_gb": 11.0,
        "active_packages": 2,
        "monthly_consume": 50.00,
        "monthly_traffic": 5368709120
    }
}
POST
/api/user/recharge 余额充值

请求参数:

{
    "amount": 100.00,
    "payment_method": "alipay"  // alipay/wechat/epay_zfb/epay_wx
}

响应示例:

{
    "success": true,
    "data": {
        "order_no": "ALI20260109123456",
        "amount": 100.00,
        "pay_url": "https://...",
        "qr_code": "data:image/png;base64,...",
        "expire_at": "2026-01-09 12:30:00"
    }
}
GET
/api/user/billing 获取账单记录

查询参数:

  • page - 页码,默认 1
  • page_size - 每页数量,默认 20
  • start_date - 开始日期 (YYYY-MM-DD)
  • end_date - 结束日期 (YYYY-MM-DD)
  • export - 设为 csv 导出 CSV 文件
GET
/api/user/billing/trends 获取流量趋势图数据
GET
/api/user/transactions 获取交易记录

查询参数:

  • type - 可选,筛选类型(recharge: 充值, consume: 消费)
GET
/api/user/order/status?order_no=xxx 查询订单支付状态

签到接口

POST
/api/user/checkin 每日签到
GET
/api/user/checkin/status 获取签到状态
GET
/api/user/checkin/history 获取签到历史

工单接口

GET
/api/user/tickets 获取工单列表
POST
/api/user/tickets 创建工单
GET
/api/user/tickets/{id} 获取工单详情
POST
/api/user/tickets/{id}/reply 回复工单
POST
/api/user/tickets/{id}/close 关闭工单

卡密接口

POST
/api/user/card-key/redeem 兑换卡密

请求参数:

{
    "code": "XXXX-XXXX-XXXX-XXXX"
}

公开接口

以下接口无需认证即可访问:

GET
/api/site/info 获取站点信息

响应示例:

{
    "success": true,
    "data": {
        "site_name": "CeFRP",
        "site_description": "专业的内网穿透服务",
        "register_enabled": true,
        "captcha_enabled": true,
        "captcha_type": "image"
    }
}
GET
/api/site/captcha 获取验证码
GET
/api/site/payment-config 获取支付配置
GET
/api/public/packages 获取公开流量包列表
GET
/api/public/downloads 获取下载列表

FRPC 客户端接口

以下接口用于 FRPC 客户端获取配置,使用 Token 认证:

GET
/api/public/frpc/config 获取 FRPC 配置

查询参数:

  • u - 用户名
  • p - 用户 Token
  • tunnel_id - 可选,指定隧道 ID

此接口用于 frpc 命令行启动:

frpc -u 用户名 -p Token
GET
/api/public/tunnels 获取用户隧道列表(GUI 客户端用)

查询参数:

  • username - 用户名
  • token - 用户 Token

错误码说明

错误码 说明
1000请求参数错误
1001无效的邀请码
1004用户名已存在
1005邮箱已注册
1010验证码错误
2001用户名或密码错误
2002账户已锁定/禁用
2003未授权访问
2005账户已封禁
3001余额不足
4001节点不存在/不可用
4002端口/域名已被占用
4003配置无效
4010系统授权无效
4011数量已达上限
4029请求过于频繁
5001服务器内部错误