VoucherVault 1.30.3 介绍与选型指南
VoucherVault 是什么、能做什么、技术架构与适用边界全解,含 Stocard/OfferKit/Wallos 量化选型对比;基于官方仓库与目录站联网溯源(查询日期 2026-10-25),版本 v1.30.3。
VoucherVault 1.30.3 介绍与选型指南
目标:帮助读者快速理解 VoucherVault 是什么、能做什么、技术架构如何,并通过量化对比给出选型建议。本篇为认知篇,内容基于官方仓库、官方 Wiki 与第三方目录站的联网溯源(查询日期 2026-10-25),不含本地实测环节。
一、环境信息
- 溯源方式:GitHub 仓库主页 / Releases 页面 HTML、shields.io 徽章 JSON 端点、官方 Wiki、自托管目录站(selfhostedworld / selfhostindex / winterflow.io)
- 溯源日期:2026-10-25
- 软件版本:v1.30.3(2026-10-09 发布,当前最新稳定版)
- 官方仓库:https://github.com/l4rm4nd/VoucherVault
- 官方镜像:
l4rm4nd/vouchervault(Docker Hub) - 开源许可:GPL-3.0
⚠️ 注意:网络上部分资料将该仓库误记为
4lch4/VoucherVault,该路径在 GitHub 上并不存在(404)。经实查,官方正确仓库为l4rm4nd/VoucherVault(维护者 LRVT),本文全部数据均以该仓库为准。
二、软件概述
VoucherVault 是一款开源自托管的 Web 应用,用于数字化存储与管理代金券(voucher)、优惠券(coupon)、会员卡(loyalty card)与礼品卡(gift card)。它解决的问题非常具体:实体卡片容易丢失、遗忘,电子券分散在邮件、短信与各类 App 中难以统一查找,且到期后无人提醒造成浪费。
VoucherVault 提供一个移动端优化的 Web 门户(支持 PWA,可添加到手机主屏像原生 App 一样使用),用户把卡券录入系统后,可以:
- 以二维码/条形码形式展示核销码,到店直接出示手机扫码;
- 上传卡券图片、PDF 等附件归档;
- 记录礼品卡的消费交易历史(余额变动);
- 到期前通过 Apprise 通知渠道(邮件、Telegram、钉钉、企业微信等 100+ 渠道)自动提醒;
- 多用户共享卡券(如家庭成员共享超市会员卡);
- 通过 REST API 把卡券统计数据接入 Home Assistant 等仪表盘。
一句话定位:自托管版的 Stocard(欧洲流行的会员卡管理商业 App),数据完全掌握在自己手里。
三、核心架构
VoucherVault 是一个典型的 Django 单体 Web 应用,架构简洁,组件分工明确:
用户浏览器/手机 PWA
│ HTTPS
▼
反向代理(可选,Nginx/Traefik)
▼
uWSGI 应用服务器(Django 5.x,Python 3.12)
├── SQLite3(默认,单文件库)
├── PostgreSQL(可选,生产推荐)
└── Redis(Celery 任务队列中间件)
▼
Celery Worker + Celery Beat
(每日 09:00 定时扫描到期卡券 → Apprise 发通知)
各层职责:
| 层 | 组件 | 职责 |
|---|---|---|
| 前端 | Django 模板 + PWA(django-pwa) | 移动端优化页面、离线 48 小时缓存、客户端摄像头扫码(1D/2D 条码自动识别类型) |
| 应用层 | Django 5.2 + uWSGI | 业务逻辑、用户认证、OIDC SSO、卡券 CRUD、分享、文件上传 |
| 任务层 | Celery + django-celery-beat + Redis | 周期性到期检查任务(默认每天 09:00),调用 Apprise 发送到期提醒 |
| 数据层 | SQLite3(默认)/ PostgreSQL 16 | 卡券、交易历史、用户、定时任务元数据持久化 |
| 通知层 | Apprise | 统一通知网关,支持邮件、Telegram、Slack、钉钉、企业微信等 100+ 渠道 |
💡 技术拓展:持久化数据库有两种可选——
引擎 特点 适用场景 SQLite3 零依赖、单文件、备份即拷贝文件 个人/家庭、卡券量千级以内 PostgreSQL 并发写入强、生态成熟、可独立备份 小团队多人共用、卡券量大、已有 PG 基础设施 两种引擎通过环境变量
DB_ENGINE一键切换,ORM 层(Django ORM)完全屏蔽差异。本文档体系默认以 SQLite3 快速起步、PostgreSQL 作为生产进阶方案。
四、功能特性
以下特性均来自官方 README 与 Wiki(查询日期 2026-10-25):
- 卡券全类型管理:代金券、优惠券、礼品卡、会员卡四类统一入库,支持自定义面值与多币种(汇率通过免费 fixer.io API 获取);
- 核销码展示与扫描:录入时可用手机摄像头或上传图片客户端侧扫描条码(自动识别 1D/2D 码类型),核销时以 QR 码/条形码渲染出示;
- 交易历史:礼品卡支持逐笔记账(消费/充值),实时反映余额;
- 附件上传:每张卡券可挂图片与 PDF(如卡面照片、活动规则);
- 到期提醒:
EXPIRY_THRESHOLD_DAYS(默认 30 天)前首次提醒、EXPIRY_LAST_NOTIFICATION_DAYS(默认 7 天)前最后一次提醒,经 Apprise 投递; - 多用户与分享:内置 Django 用户体系,卡券可在用户间共享/取消共享;支持 OIDC 单点登录(RS256/HS256)接入企业 IdP;
- 多语言:英语、德语、法语、意大利语界面;
- 明暗主题:浅色/深色主题切换;
- PWA 离线模式:手动开启离线模式后支持 48 小时本地缓存;
- REST API:
/api/get/stats统计端点,面向 Home Assistant 等外部仪表盘; - 安全设计:应用以低权限
www-data用户运行、CSP 安全头、可配置 HSTS 与安全 Cookie。
五、快速开始(最小可用示例)
官方推荐的最小部署是 SQLite 版 Docker Compose(三步):
# 1. 建持久化目录
mkdir -p ./volume-data/database
# 2. 授权给应用运行用户(UID/GID 33)
sudo chown -R 33:33 volume-data/*
# 3. 启动栈(应用 + Redis)
docker compose -f docker/docker-compose-sqlite.yml up -d
启动后访问 http://127.0.0.1:8000,默认账号 admin,初始密码由服务首次启动时自动生成并打印到应用日志中(docker compose logs -f 可见)。完整的裸机安装与 Compose 部署实测步骤分别见本专栏《Ubuntu 22.04 安装 VoucherVault 指南》与《VoucherVault Docker Compose 部署指南》。
六、适用场景与限制
适用场景:
- 个人/家庭:集中管理超市会员卡、电商优惠券、加油卡、礼品卡,到期不浪费;
- 小型商户/工作室:登记发放给客户的代金券与核销码,员工共享查看;
- 智能家居玩家:通过 REST API 把「即将到期的卡券数量」挂到 Home Assistant 仪表盘;
- 隐私敏感用户:不希望把消费卡券数据交给商业 App(Stocard 等)的用户。
已知限制:
- 官方仅提供 Docker 部署的一手支持(Docker Hub 镜像 + Compose 样例),裸机安装需自行组装 Python 依赖与进程托管(本专栏 B1 篇已补全此路径);
- 多语言不含中文界面(英/德/法/意),中文用户需适应英文界面;
- REST API 目前只读(仅统计端点),不提供卡券 CRUD 的外部写接口;
- 通知依赖 Apprise 外发渠道,本身不带 SMTP/IM 服务端;
- GPL-3.0 许可:二次开发并对外提供服务时需开源衍生代码。
七、同类选型对比
卡券/会员卡数字化管理赛道的可选项分为「商业 SaaS/App」与「自托管开源」两类。以下对比数据均为 2026-10-25 实查(星数取 shields.io 徽章 JSON 端点,功能取各官方文档):
| 维度 | VoucherVault | Stocard | OfferKit | Wallos |
|---|---|---|---|---|
| 形态 | 自托管 Web(Django) | 商业移动 App(闭源 SaaS) | 自托管促销引擎(开发者向) | 自托管 Web(订阅管理) |
| 数据归属 | 完全自有 | 厂商云端 | 完全自有 | 完全自有 |
| 核心定位 | 个人卡券保管+到期提醒 | 个人会员卡保管 | 企业促销/券码规则引擎 | 订阅费用跟踪 |
| 条码出示/扫描 | 支持(出示+客户端扫描录入) | 支持(核心功能) | 不涉及(API 输出核销逻辑) | 不支持 |
| 到期提醒 | Apprise 100+ 渠道 | App 推送 | 需自行编排 | 邮件/Apprise 类渠道 |
| 礼品卡余额记账 | 支持交易历史 | 部分支持 | 支持(规则引擎) | 以订阅周期记账为主 |
| 多用户/共享 | 支持 + OIDC SSO | 家庭共享有限 | 面向租户设计 | 多用户 |
| REST API | 只读统计端点 | 无开放 API | 完整读写 API + SDK | 有限 |
| 部署难度 | 中(单容器+Redis 即可起步) | 零(应用商店) | 高(需开发对接) | 低 |
| 许可 | GPL-3.0 | 闭源免费(含广告/数据变现争议) | 开源 | 开源 |
| GitHub Stars | 513 | —(闭源) | 较小(新项目) | 5k+ |
| Docker Hub 拉取 | 241k | — | — | 高 |
关键差异解读:
- vs Stocard:Stocard 是体验最成熟的商业 App,但数据存于厂商云、隐私不可控、且其商业模式依赖消费数据变现;VoucherVault 用自托管换来数据主权,代价是需要自己维护服务。注重隐私与数据自主选 VoucherVault,追求零维护选 Stocard。
- vs OfferKit:OfferKit 是「促销规则引擎」,面向开发者设计券码发放/核销规则并嵌入自有系统;VoucherVault 是「卡券保管柜」,面向终端用户录入与出示已有卡券。两者解决的不是同一层问题。
- vs Wallos:Wallos 跟踪的是「订阅服务」(Netflix、云服务器等周期性支出),VoucherVault 管理的是「预付卡券」(有面值、有核销码、会过期)。两者互补,可同时在家庭自托管栈中共存。
选型建议:
- 想要「自己的 Stocard」、卡券量几十到几百张、有 Docker 主机 → 选 VoucherVault;
- 企业要在自家电商里发券核销 → 选 OfferKit 类规则引擎;
- 只想跟踪订阅扣费 → 选 Wallos;
- 完全不想维护任何服务 → 用 Stocard 商业 App。
社区活跃度速览(2026-10-25 实查):VoucherVault 创建于 2024-07,两年多发布 100+ 个版本(约每周一个 minor/patch),最新 v1.30.3 发布于 2026-10-09,最后提交在 2026 年 10 月,GitHub 513 stars / 27 forks,Docker Hub 累计拉取 241k,属「小众但持续活跃维护」的项目,跟随 Conventional Commits 规范发布。
八、参考链接
- 官方仓库(源码/Releases/Wiki):https://github.com/l4rm4nd/VoucherVault (查询日期 2026-10-25)
- 官方 Wiki - 安装篇:https://github.com/l4rm4nd/VoucherVault/wiki/01-%E2%80%90-Installation (查询日期 2026-10-25)
- 官方 Wiki - 认证/OIDC:https://github.com/l4rm4nd/VoucherVault/wiki/02-%E2%80%90-Authentication (查询日期 2026-10-25)
- 官方 Wiki - 通知配置:https://github.com/l4rm4nd/VoucherVault/wiki/03-%E2%80%90-Notifications (查询日期 2026-10-25)
- Docker Hub 镜像:https://hub.docker.com/r/l4rm4nd/vouchervault (查询日期 2026-10-25)
- Apprise 通知渠道清单:https://github.com/caronc/apprise (查询日期 2026-10-25)
- selfhostedworld 收录页:https://selfhostedworld.com/software/vouchervault/ (查询日期 2026-10-25)