【实用的开源工具】独角数卡:已停更的发卡系统,先看现状再决定
「实用的开源工具」系列:我只收集值得用的开源项目,写清楚它能做什么、怎么部署、有哪些坑,并在文末标明出处。内容整理自官方文档,核对日期 2026-10-31,具体版本以官方为准。这一篇比较特殊:项目本身已经停更,所以我不提供“一步步照着装”的教程,只写官方文档里确有记载的内容,并明确指出缺什么。
项目信息卡
| 项目 | 说明 |
|---|---|
| 名称 | 独角数卡(Dujiaoka) |
| 做什么 | 开源的虚拟商品自动发货(发卡)系统:上架商品、前台下单、对接支付、自动交付卡密 |
| 维护状态 | 已停更。GitHub 仓库显示为“已归档(archived)”;仓库首页的“停更通知 2026/02/12”写明:项目已经停止更新和维护,请前往新版 Dujiao-Next |
| 仓库 | github.com/assimon/dujiaoka(查询于 2026-10-31:archived 为 true,最近推送 2026-10-22) |
| 最近版本 | GitHub 上没有任何 Release(API 的 releases/latest 返回 404,Releases 页面显示没有发布)。README 里的徽章写着 2.0.4,但徽章链接的 releases/tag/2.0.4 打开是 404 |
| 许可证 | README 和旧分支里的 LICENSE 文件为 MIT;但默认分支现在没有 LICENSE 文件,GitHub API 的许可证字段为空 |
| 技术栈 | PHP + Laravel(Composer 依赖里是 laravel/framework ^6.20.26),MySQL,Redis,用 Supervisor 守护队列进程 |
| 官方要求的 PHP | README 的环境要求写的是 PHP + PHP-CLI 版本 = 7.4(徽章也写 PHP 7.4);composer.json 里的 php 约束允许 7.2.5 以上的 7.x 和 8.x,两处并不一致 |
| 仓库内容 | 默认分支 master 现在只有一个 README.md(单次提交 “Initial commit”,2026-10-22),没有源码、没有 Dockerfile、没有发布包。源码快照还保留在另一个分支 revert-370-patch-1 上,其最近一次提交是 2022-07-13 |
| 官方文档 | 仓库自带的 Wiki(8 个页面,最后更新 2022-12-25)。没有独立的文档站 |
| 后继项目 | Dujiao-Next(README 指向的新版,另一套代码) |
先说结论:不建议再新部署独角数卡。 原因有三:官方已宣布不再更新和维护;运行环境要求 PHP 7.4 和旧的 Laravel 6 系列;默认分支上已经拿不到源码。如果你已经在用,下面的内容帮你判断风险和规划迁移。
它能做什么
下面是旧分支 README 里的介绍,我只转述:
- 自动售货:定位是站长自动化售货,商品、订单、卡密、优惠券、分类都在后台管理。
- 前端模板可换:README 提到官方 unicorn 模板,以及社区贡献的 luna、hyper 模板;也支持多语言包(需要自己翻译)。
- 支付接口:README 列出的有支付宝、微信、PayPal、Stripe 以及若干第三方聚合支付。具体接哪家、能不能用,取决于你所在地的法规和该支付服务商对你所售商品的规则,见下文“合规提醒”。
- 技术上:框架来自 Laravel,后台用 laravel-admin,前端是 Bootstrap;扩展包都由 Composer 加载。
合规提醒(请先读这一节)
在网上销售商品,卖家需要遵守所在地的法律法规,也要遵守所使用的支付服务商的规则和条款。工具本身不会替你判断什么可以卖。开始之前建议自己确认:
- 你要销售的商品和服务,在你所在的地区以及你的买家所在地区是否允许销售。
- 你打算使用的支付服务商,对商家资质、可销售的商品类别、退款与争议处理有什么要求,并通读它的服务条款。
- 税务、发票、用户个人信息保护等是否有适用的要求。
- 页面上要有清楚的商品描述、交付方式、退款政策和联系方式,订单与交付记录要保存好。
项目 README 里也有免责声明,大意是:该程序仅用于学习交流,不可用于违反使用者所在地法律法规的用途,作者只做代码开发和开源,使用中产生的法律责任由使用者自己承担。这篇文章不讨论、也不提供任何绕开平台或法规限制的做法。
官方文档里记载的运行结构
下面的内容来自旧分支的 README 和仓库 Wiki。这不是一份可照抄的安装教程,原因见后面的“缺什么”。
环境要求(README 的“基本环境要求”):
- PHP 与 PHP-CLI 版本为 7.4
- Nginx 1.16 以上,MySQL 5.6 以上
- Redis
- Supervisor(守护队列进程)
- Composer
- Linux(Windows 下未测试);README 还说明不支持虚拟主机
PHP 要求:必须安装 fileinfo 和 redis 扩展;终端要支持 php-cli,并且 php -v 的版本必须和 Web 使用的一致;putenv、proc_open、pcntl_signal、pcntl_alarm 这四个函数不能被禁用;建议装 opcache。
Web 服务器:Wiki 的 Linux 安装页说,网站运行目录要设为 public 子目录,并配置伪静态:
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}队列进程:Wiki 反复强调需要用 Supervisor(或宝塔里的“堡塔应用管理器”)守护 Laravel 队列进程,命令是 php artisan queue:work,不配“程序执行会异常”。
配置文件 .env:安装向导会引导你填写数据库、Redis 和网站 URL。示例文件里可以看到的键有 APP_DEBUG、APP_URL、DB_*、REDIS_*、CACHE_DRIVER、QUEUE_CONNECTION、ADMIN_ROUTE_PREFIX、ADMIN_HTTPS。
Docker:Wiki 的 Docker 页面只有两行命令,并且写明“此方式为第三方贡献者提供”。旧分支里有一个 Dockerfile,基础镜像是 webdevops/php-nginx:7.4,构建时执行 composer install --ignore-platform-reqs 和 chmod -R 777 /app;docker-compose.yml 发布了 80 和 9000 两个端口。我不在这里抄这些命令,理由见“踩坑清单”。
第一次使用
Wiki 和 README 里能找到的内容:
- 部署完成后访问你的域名,会进入安装页面,填数据库名、数据库密码、Redis 密码、网站 URL。
- 安装完成后要编辑
.env:Wiki 用三遍重复的醒目文字强调,正式上线后一定要把APP_DEBUG设为false;如果网站启用了 HTTPS,要在.env里加上ADMIN_HTTPS=true,否则后台登录可能报0 err。 - 后台路径默认是
/admin,由ADMIN_ROUTE_PREFIX控制,可以修改。README 里写着默认管理员账号和密码都是admin,必须在首次登录后立刻修改。 - 忘记后台密码时,Wiki 给的办法是在网站根目录执行
php artisan admin:reset-password。 - 邮件服务:Wiki 说 2.0 以后直接在后台设置,不用再改
.env;更换邮件配置后要重启 Supervisor 管理的队列进程才会生效。
支付渠道怎么配置,Wiki 里有一张按渠道列出的对照表,我不转述。
缺什么
这是这篇文章最重要的部分:
- 默认分支上没有源码。 Wiki 的安装步骤是
git clone https://github.com/assimon/dujiaoka.git,但现在克隆下来只有一个 README。Wiki 另一种做法是下载发布包,而 Releases 页面是空的。 - 源码只在非默认分支的快照里,是 2022 年的状态,我没有核对它与最终发布版是否一致,所以不能说“这就是 2.0.4”。
- 没有任何安全更新会再发布。 官方已明确停止更新和维护。
- Wiki 最后更新于 2022-12-25,没有涉及较新的 PHP 版本。它的 lnmp 教程写“PHP 版本需大于 7.4”,宝塔教程选 7.4,和 README 的“版本 = 7.4”措辞不完全一致,我以 README 为准。
- 没有反向代理、容器化部署、备份与恢复的官方说明(Docker 页是第三方贡献的)。
- 没有升级到后继项目的官方迁移说明,至少我在仓库和 Wiki 里没有找到。Wiki 里只有从 1.8.2 迁到 2.x 的数据库迁移工具说明(只迁订单、商品、卡密、优惠券、分类,不迁系统配置和支付方式)。
更新与卸载
更新:项目已停更,不会再有新版本,所以没有“更新到哪个版本”的问题。Wiki 的“系统升级”页只讲两件事:小版本更新时,保留 .env 和 install.lock 两个文件,其余全量覆盖;以及 1.8.2 到 2.x 的数据迁移。无论做什么操作,Wiki 都强调先备份数据。
卸载(通用建议,不是官方文档):停止并移除 Supervisor 里的队列进程,删除站点目录和 Nginx 站点配置,导出并删除 MySQL 数据库,清理 Redis。含用户订单和卡密的数据要先决定是否需要保留,再处理。
踩坑清单
- 仓库已归档,作者宣布停止更新和维护。 不会再有功能或安全修复。新项目请不要选它。
- PHP 7.4 太旧了。 README 要求 PHP 7.4。我在 php.net 的“Supported Versions”页面(查询于 2026-10-31)上已经看不到 7.4。PHP 栈需要持续打补丁,这个项目要求的版本已经不在官方支持范围内。
- Laravel 6 系列也很旧。
composer.json里是laravel/framework ^6.20.26;Laravel 官方的版本支持表(查询于 2026-10-31)最老只列到 10,而且 10 的安全修复期也已经结束。依赖包同样不再更新。 - 默认后台账号和密码都是
admin。 README 写明,必须改。 - 后台路径默认是
/admin。 可以用ADMIN_ROUTE_PREFIX修改。建议再在 Nginx 层限制后台的访问来源(后半句是通用建议)。 APP_DEBUG必须是false。 Wiki 三遍强调。旧分支里的示例.env.example默认写的是true,旧分支里还提交了一份.env,APP_ENV=local、APP_DEBUG=true,并带着APP_KEY。APP_KEY是公开的,不要沿用,要按 Laravel 的方式重新生成(后半句是通用建议)。- HTTPS 和后台要一致。 Wiki:只要网站启用了 HTTPS,后台也要启用,即
ADMIN_HTTPS=true;否则后台登录会出现0 err。 - 队列进程必须守护。 Wiki:没有 Supervisor(或堡塔应用管理器)运行
php artisan queue:work,程序会异常。邮件配置变更后要重启它。 - 被防火墙拦截会导致后台 500。 Wiki:后台点“导入、保存、更新”时报 500,多半是被宝塔防火墙或 CDN 防火墙拦截了,要查日志并放行后台路径。
- 旧分支的 Dockerfile 值得警惕。
chmod -R 777 /app把整个应用目录设成任何人可写;--ignore-platform-reqs会跳过平台检查;docker-compose.yml把 80 和 9000 发布到所有网卡(9000 常见用途是 PHP-FPM,不应对公网开放,这句是通用判断)。Docker 页面又是第三方贡献的镜像。所以我没有写 Docker 部署步骤。 - Docker 发布的端口会绕过 ufw 之类的防火墙。 通用的 Docker 行为,不是该项目特有。
- 数据备份。 Wiki 的升级页反复强调动手前先备份数据,涉及数据库变更更要如此。
如果你已经在用
通用的减险做法,不是官方文档:
- 把后台默认账号密码和路径改掉,限制后台的访问来源;确认
APP_DEBUG=false。 - 保证 Web 服务器、PHP 运行环境和系统本身及时打补丁;程序本身不会再有补丁,所以要把它放在受限的网络位置,并做好定期备份。
- 评估迁移:官方指向的后继项目是 Dujiao-Next。根据它的 README,它是另一套代码(Go 后端加 Vue 前端,可使用 SQLite 或 PostgreSQL),仓库根目录有 LICENSE 文件,文件头是 GPL v3 文本。我没有逐项核对它的部署文档、许可证细节和数据迁移方式,所以这篇不写它的部署,请直接看它的官方文档,并自行评估。
出处
有想法或问题?去留言板留言 →