小小怪卡密验证系统 Pro

全新一代卡密验证解决方案,完全免费开源。本教程将带你从零完成系统部署与使用。

Vue 3 + Spring Boot 3 完全免费 Apache-2.0 开源 团队持续维护

视频教程

跟随视频一步步完成小小怪卡密的安装与配置。

若视频无法播放,请前往 B 站观看: BV1Hs766FE4j

环境要求

部署前请确认服务器满足以下条件。

组件 版本要求 说明
操作系统 CentOS 7+ / Debian 10+ / Ubuntu 20.04+ Linux 服务器(推荐)
JDK 17+(推荐 20) 后端运行环境
MySQL 8.0 或 5.6+ 支持 MariaDB(5.6+ 兼容模式)
Redis 任意稳定版 缓存服务
Nginx 任意稳定版 反向代理与静态资源
Node.js 18+(可选) 自行构建前端时需要

工作流教程

以下流程基于宝塔面板部署,按顺序完成即可上线小小怪卡密系统。

1 安装宝塔
2 环境准备
3 获取安装包
4 上传解压
5 编辑配置
6 Java 项目
7 Nginx 代理
8 系统初始化
建议配合视频教程一起操作。群文件与开源仓库均可获取安装包,任选其一即可。

安装宝塔面板

在服务器上安装宝塔面板,作为后续部署的管理入口。

  1. 安装宝塔 前往 宝塔官网 获取对应系统的安装命令,在服务器终端执行并完成初始化。
  2. 登录面板 安装完成后记录面板地址、用户名与密码,通过浏览器登录宝塔面板。

环境准备

登录宝塔面板后,在「软件商店」中安装以下组件。

  • Java — 必须安装 JDK 17 或更高版本(推荐 JDK 20)
  • MySQL — 8.0 或 5.6 及以上(MariaDB 请选择 5.6+ 兼容)
  • Nginx — 用于反向代理与静态资源托管
  • Redis — 用于缓存
  • Node.js — 如需自行构建前端时安装

获取安装包

可通过 QQ 群文件或开源仓库两种方式获取部署文件。

方式一:群文件下载

加入官方 QQ 群 1050160397,在群文件中下载最新安装包(含 dist.zip 与后端 jar 包)。

小小怪卡密 点击按钮一键加群

方式二:开源仓库下载

类型 地址
国内下载(Gitee Releases) gitee.com/xiaoxiaoguai-yyds/xxgkami-pro/releases
国内源码(Gitee) gitee.com/xiaoxiaoguai-yyds/xxgkami-pro
国外下载(GitHub Releases) github.com/xxg-yyds/xxgkami-pro/releases
国外源码(GitHub) github.com/xxg-yyds/xxgkami-pro
部署教程 doc.xxgkami.com
演示站 demo.xxgkami.com

在 Releases 页面可直接下载编译好的 dist.zipbackend-0.0.1-SNAPSHOT.jar。国内用户推荐 Gitee,海外用户推荐 GitHub。

上传与解压

将前端与后端文件上传至服务器对应目录。

  1. 上传 dist.zip 在宝塔「文件」管理中,进入网站根目录(如 /www/wwwroot/你的域名/),上传 dist.zip 并解压。
  2. 上传后端 Jarbackend-0.0.1-SNAPSHOT.jar(或重命名后的 xxgkami-pro.jar)上传至服务器,建议放在独立目录便于管理。

编辑 Jar 配置

修改后端 Jar 包内的数据库等连接配置。

  1. 用压缩软件打开 Jar Jar 本质是 zip 格式,使用 WinRAR、7-Zip 等工具直接打开 backend-0.0.1-SNAPSHOT.jar,无需先解压整个文件。
  2. 编辑配置文件 找到并编辑路径:
    BOOT-INF\classes\application.properties
    配置 MySQL 数据库连接、Redis 地址等参数,保存后关闭压缩软件(会自动更新 Jar 内文件)。数据库版本支持 MySQL 8.0 或 5.6+,具体导入方式可在首次访问时的系统初始化向导中选择。
  3. 手动导入(可选) 若跳过向导,也可在 MySQL 中手动创建数据库并导入 kami.sql。使用 MySQL 5.6 / MariaDB 时,系统会在初始化时自动转译为兼容脚本。

添加 Java 项目

在宝塔面板中创建 SpringBoot 项目并启动后端服务。

  1. 进入 Java 项目管理 在宝塔左侧菜单点击「网站」→「Java 项目」。
  2. 添加 Java 项目 点击「添加 Java 项目」,按以下参数填写:
配置项 填写说明
项目类型 SpringBoot
项目 Jar 路径 选择上传的 xxgkami-pro.jarbackend-0.0.1-SNAPSHOT.jar
项目端口 默认 8080(如有冲突请修改此处或配置文件)
启动用户 root
守护进程 勾选「项目意外停止时自动重启」
域名 填写您的域名

确认无误后点击「提交」,等待项目启动成功。

配置 Nginx 反向代理

为网站添加 API 反向代理,使前端能正常访问后端接口。

  1. 打开网站配置 在宝塔「网站」中找到您的站点,点击「设置」→「配置文件」。
  2. 定位插入位置 找到如下静态资源缓存配置块:
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }
  3. 在其下方添加 API 代理
    location /api/ {
        proxy_pass http://127.0.0.1:8080/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
        # 禁用缓存,防止 API 数据不刷新
        add_header Cache-Control "no-cache, no-store";
    }
  4. 保存并生效 点击「保存」,Nginx 会自动重载配置。访问您的域名,首次打开将进入系统初始化向导完成数据库配置。

系统初始化

前后端部署完成并访问站点后,首次打开会进入「系统初始化向导」。向导将自动检测运行环境并完成数据库配置,完成后不再显示本页。

1. 环境检测 2. MySQL 版本 3. 数据库账号 4. 安装策略 5. 完成

环境自动检测

向导第一步会自动检测当前服务器环境,无需手动填写。

系统初始化向导 - 环境检测界面
系统初始化向导 — 环境检测

检测项包括:

检测项 说明
JAVA 自动识别已安装的 JDK 版本
操作系统 显示当前 Linux 内核版本
REDIS 检测 Redis 是否在线(如 localhost:6379)
MySQL 客户端 检测 mysql / mysqldump 是否可用
当前 JDBC 数据库 读取 application.properties 中的连接,显示版本与表数量
种子 SQL 检测 kami.sql 是否存在,并根据数据库版本给出推荐选项
若系统已安装过,可点击「我已安装系统,检测数据库更新」进行增量更新检测,无需重新走完整安装流程。

数据库版本选择

第二步根据实际安装的 MySQL / MariaDB 版本选择对应脚本,系统提供两种方式。

系统初始化向导 - MySQL 版本选择界面
系统初始化向导 — MySQL 版本选择

MySQL 5.0+ / 5.6+ / MariaDB

自动从 kami.sql 转译为 5.6 兼容脚本后导入。适用于 MySQL 5.6、5.7 及 MariaDB 等较低版本环境。

MySQL 8.0 及以上

直接使用 kami.sql 原文件导入,适用于 MySQL 8.0+ 环境。

MariaDB 用户请选择「MySQL 5.0+ / 5.6+ / MariaDB」兼容模式。选择完成后继续填写数据库账号与安装策略,向导会自动完成建表与初始化。

一键脚本安装

适用于 CentOS 7+ / Debian 10+ / Ubuntu 20.04+,全自动配置 JDK、MySQL、Nginx 等环境。推荐首选此方式。

国内服务器(Gitee 源)

curl -O https://gitee.com/xiaoxiaoguai-yyds/xxgkami-pro/raw/master/install.sh && chmod +x install.sh && sudo ./install.sh

海外服务器(GitHub 源)

curl -O https://raw.githubusercontent.com/xxg-yyds/xxgkami-pro/refs/heads/master/install.sh && chmod +x install.sh && sudo ./install.sh
脚本会自动检测网络环境、安装依赖、编译前后端、配置 Systemd 开机自启,以及 Nginx 反向代理。

本地文件部署

适用于无法在服务器编译、或希望直接上传制品快速上线的场景。

  1. 获取部署文件Gitee ReleasesGitHub Releases 下载最新的 backend.jardist.zip,或在官方 QQ 群(1050160397)群文件中获取。
  2. 数据库初始化 首次访问站点,通过系统初始化向导完成数据库导入。支持 MySQL 8.0 或 5.6+,也可手动导入 kami.sql
  3. 启动后端
    nohup java -jar backend.jar > backend.log 2>&1 &
    默认监听 8080,上下文路径为 /api
  4. 部署前端dist.zip 解压到网站根目录(如 /www/wwwroot/your-domain/)。
  5. 配置 Nginx
    location /api {
        proxy_pass http://127.0.0.1:8080;
    }
    注意:proxy_pass 末尾不要加 /,否则会去掉 /api 前缀导致 404。

手动编译部署

适用于开发者或需要深度定制的场景。前提:JDK 20+、Maven 3.8+、Node.js 18+、MySQL 8.0 或 5.6+

克隆代码

git clone https://github.com/xxg-yyds/xxgkami-pro.git
cd xxgkami-pro

后端编译

cd backend
# 修改 src/main/resources/application.properties 中的数据库配置
mvn clean package -DskipTests
java -jar target/backend-0.0.1-SNAPSHOT.jar

前端编译

cd ../
npm install
npm run build
# 构建产物位于 dist/ 目录,使用 Nginx 托管

管理员后台

提供完整的卡密管理与系统配置能力。

数据概览

实时统计面板,掌控全局数据

卡密管理

批量生成、导出、状态管理,支持时间卡/次数卡

订单管理

订单实时监控、状态跟踪、补单操作

API 管理

接口密钥生成、权限控制、WebHook 回调

安全中心

IP 黑白名单、一机一码、访问日志审计

系统设置

网站信息、支付接口、邮件通知配置

用户中心

面向终端用户的卡密购买与验证功能。

购买中心

在线选购卡密,支持多种支付方式

卡密验证

快速验证卡密有效性,查看使用说明

我的卡密

已购卡密历史记录,一键复制

开发者 API

提供标准化 RESTful 接口,支持卡密核销、状态查询、WebHook 回调,API Key 签名认证保障安全。

# 卡密核销示例 (GET)
curl "https://your-domain.com/api/open/use_card?api_key=YOUR_KEY&card_key=YOUR_CARD&machine_code=DEVICE_ID"

常见问题

API 请求返回 404?

检查 Nginx 配置中 proxy_pass 末尾是否多加了 /。后端 context-path 为 /api,必须保留该前缀。

旧版 GitHub 仓库还能用吗?

旧地址 xiaoxiaoguai-yyds/xxgkami-pro 已失效。请使用新仓库: xxg-yyds/xxgkami-pro

如何获取最新编译包?

前往 Gitee ReleasesGitHub Releases 下载,或加入官方 QQ 群 1050160397 在群文件中获取。

更新历程

当前版本 v1.0.7 · 构建日期 2026-06-04。 仓库: GitHub · Gitee

v1.0.7

新功能

  1. 在线更新:系统信息页可一键更新;自动探测后端 JAR 与前端 dist 路径,支持手动修改确认后下载 Release 制品并替换,完成后自动重启后端
  2. version.json 新增 releaseDownloads:Gitee / GitHub 各含 dist.zip 与 backend-0.0.1-SNAPSHOT.jar 下载地址,支持 {version} 占位符
  3. 检查更新优化:并行 ping gitee.com 与 github.com,优先使用先连通的通道拉取 version.json,并提示所用通道
  4. 首次安装向导完善:检测 kami 库是否存在 admins 表;无 admins 视为未初始化业务库,自动执行全新导入(跳过「覆盖/智能更新」策略页)
  5. MySQL 5.6 兼容:选 MySQL 5.6 时由 kami.sql 自动转译为 5.6 兼容脚本并显示转译进度,无需单独维护 kami_mysql56.sql
  6. 种子 SQL 内嵌 JAR:打包时纳入 databaes/kami.sql,部署仅上传 JAR 亦可安装;支持解压到 data/.xxgkami-seed 及自定义 seed-sql-override
  7. 安装/升级标记:以 data/.xxgkami-setup.complete 与 admins 表共同判定业务库就绪;未完成前跳过业务 JDBC 探测与 ApiKey 等初始化,避免空库报错
  8. Spring Session:使用 spring_session 表名,启动时初始化会话表;修复 SPRING_SESSION 相关启动与清理错误
  9. 新版升级检测:业务库就绪后按 data/.xxgkami-version.json 与远程版本比对,支持智能合并更新与版本升级向导
  10. 引导页与加载页 UI:logo 蒙版渐隐背景;系统初始化向导支持版本升级模式与 5.6 SQL 转译进度展示
  11. 卡密管理列表:缩短卡密列显示宽度;新增 IP 列(有 ip_address 显示 IP,否则显示「未绑定」)

问题修复

  1. 修复 MySQL 5.6 转译时 replaceAll("${1}") 触发 Java 命名捕获组告警,改为安全替换逻辑
  2. 修复宝塔等仅部署 JAR 环境提示「未找到 databaes/kami.sql」导致安装卡在 0% 的问题
  3. 修复首次启动 Spring Session 等自动建表导致向导误报「库已存在需覆盖/合并」的问题
  4. 远程 version.json Gitee 源地址调整为 xiaoxiaoguai-yyds/xxgkami-pro,与 Release 下载仓库一致

v1.0.7 后续补丁(已合入当前代码)

  1. 路径探测增强:优先从 Java 进程 -jar 参数 / ApplicationHome 解析 JAR 路径;支持宝塔 /www/wwwroot/backend/ 布局;dist 扫描站点子目录与 index.html
  2. 远程更新通道:Gitee 未同步 releaseDownloads 时自动回退 GitHub;下载优先 Gitee,支持 1.0.7 / v1.0.7 标签与多地址重试
  3. 在线更新权限:修复 JWT 在匿名认证下未生效导致 /api/monitor/update/* Access Denied
  4. 更新完成提示:提示宝塔权限可能导致无法自动重启,需前往「网站 → Java 项目」手动启动
  5. 智能更新管道:修复 mysqldump 警告混入 SQL 导致 mysql=1;失败时输出 mysql 详细错误
  6. 智能更新结构同步:合并前自动 ALTER TABLE 补齐种子库新增字段(如 api_keys.require_machine_code),避免 Unknown column
  7. 登录与向导跳转:修复管理员登录成功不进入后台;安装/升级完成后支持默认密码自动登录

Release 下载

通道 dist.zip backend JAR
Gitee https://gitee.com/xiaoxiaoguai-yyds/xxgkami-pro/releases/download/{version}/dist.zip
https://gitee.com/xiaoxiaoguai-yyds/xxgkami-pro/releases/download/{version}/backend-0.0.1-SNAPSHOT.jar
GitHub https://github.com/xxg-yyds/xxgkami-pro/releases/download/{version}/dist.zip
https://github.com/xxg-yyds/xxgkami-pro/releases/download/{version}/backend-0.0.1-SNAPSHOT.jar

命令行更新脚本

# 国内 · Gitee
curl -O https://gitee.com/xiaoxiaoguai-yyds/xxgkami-pro/raw/master/install.sh && chmod +x install.sh && sudo ./install.sh

# 海外 · GitHub
curl -O https://raw.githubusercontent.com/xxg-yyds/xxgkami-pro/refs/heads/master/install.sh && chmod +x install.sh && sudo ./install.sh

v1.0.6

  1. 新增 API 密钥管理页「代码实例」入口(位于「接口文档」左侧),便于快速查阅核销接口调用方式
  2. 新增核销接口多语言示例弹窗:覆盖 Shell(cURL/Wget/HTTPie 等)、PowerShell、Node.js、浏览器/JavaScript、HTML、Vue 3、Python、PHP、Go、Java、C#、Ruby、Kotlin、Dart、Rust、Swift 等常见语言与工具
  3. 示例数据独立维护于 apiUseCardCodeExamples.js,弹窗内支持左侧切换语言、一键复制源码
  4. 集成 highlight.js(GitHub Dark 主题),各语言代码块支持语法高亮;展示当前环境 API 根路径参考,便于替换示例中的 BASE_URL
  5. 卡密管理:支持按设备码/机器码查找对应卡密;导出支持筛选「未使用」「已使用」
  6. 时间卡规则:新增「叠加 / 单张」模式——单张为现行逻辑(以激活时刻起算到期);叠加模式下同一设备续充时间卡时,将新卡时长累加到当前生效授权的到期时间,实现无缝续期
  7. 一机一码增强:卡密在首台设备绑定且为已使用后,其它机器码无法再通过该卡核销,补全跨机校验与防重复滥用
  8. API 密钥能力:支持按密钥配置「同一机器码对指定卡密类型仅可成功核销一次」(例如每台机仅一次 1 天体验卡)
  9. 用户首页:支持用户自行解绑已绑定的机器码(无需仅依赖管理员后台)
  10. 管理后台:顶部导航栏布局与交互重做,提升入口清晰度与操作效率
  11. 修正部分示例片段(如 Go JSON 请求体、C# HttpClient 调用等),保证可对照使用
  12. 修复次数卡剩余最后一次无法正常扣减、次数无法归零的问题
  13. 修复已激活时间卡在后台修改时长不生效的问题

v1.0.5

  1. 新增一机一码功能:卡密首次核销时自动绑定机器码,后续验证必须匹配
  2. 新增机器码管理:卡密列表展示机器码列,编辑弹窗支持重置机器码
  3. 新增时间卡密实时倒计时:管理端按秒刷新显示剩余时间
  4. 新增卡密启用/暂停功能:已使用卡密被暂停后提示「卡密被停止使用」
  5. 新增重复验证控制:时间卡密支持开启/关闭重复验证,关闭后仅允许验证一次
  6. 新增批量创建进度条:大量创建卡密时逐条创建,实时显示进度
  7. 优化登录页 UI:管理员与用户登录页采用不同主题,管理员页新增返回入口
  8. 优化自定义接口:输入/输出参数新增机器码变量,新增机器码不匹配/重复验证拒绝状态码
  9. 修复高级时间卡密激活后管理端显示「未激活」的问题
  10. 修复新创建卡密立即开始倒计时的问题(改为首次核销后才计时)
  11. 修复卡密导出时间卡到期时间为空的问题
  12. 修复 API 管理无法分配用户的问题
  13. 修复 CORS 不支持 PATCH 方法的问题

v1.0.4

  1. 修复次数卡密在设置过期时间后被误识别为时间卡密的问题
  2. 优化卡密验证核心逻辑,优先根据总次数判断卡密类型
  3. 修复部分已知后端逻辑问题,提升系统稳定性

v1.0.3

  1. 全面优化移动端 UI 体验,重构用户管理页面为响应式卡片布局
  2. 修复移动端侧边栏菜单无法展开的问题,优化首页导航栏显示
  3. API 接口自定义返回配置新增「卡密状态」字段支持
  4. 优化管理后台顶部导航栏,移除冗余的消息通知入口
  5. 修复部分已知 UI 溢出和布局错位问题

v1.0.2

  1. 修复用户注册时因邮件配置缺失导致的 500 错误,优化异常处理逻辑
  2. 升级 xxgkami 命令行工具,新增数据库智能增量更新功能
  3. 优化系统安装脚本,提升部署体验
  4. 修复部分已知的小问题

v1.0.1

  1. 完善管理员账号密码加密逻辑,数据库存储由明文全面升级为 BCrypt 加密
  2. 新增系统信息页面,支持查看版本信息、开源协议及开发团队
  3. 新增在线检查更新功能,提供国内/海外一键更新脚本
  4. 优化前端导航栏布局,提升用户体验

v1.0.0

小小怪卡密验证系统 1.0 正式发布。

联系我们

官方网站

www.xxgkami.com

体验地址

demo.xxgkami.com

QQ 交流群

1050160397(售后 / 技术支持)

联系邮箱

xxgyyds@vip.qq.com

赞助支持

爱发电赞助