Files
2026-06-09 18:40:21 +02:00

108 lines
6.0 KiB
Markdown

---
title: VoucherVault
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, tracking, vouchers, coupons, gift-cards, django, pwa]
confidence: high
contested: false
sources: [https://selfh.st/apps/, https://github.com/l4rm4nd/VoucherVault, https://hub.docker.com/r/l4rm4nd/vouchervault]
---
# VoucherVault 🎟️
> Application Django pour stocker, gérer et suivre ses bons d'achat, coupons, cartes de fidélité et cartes cadeaux de manière centralisée.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://blog.lrvt.de/vouchervault/ |
| **GitHub** | https://github.com/l4rm4nd/VoucherVault |
| **License** | GPL-3.0 |
| **Langage principal** | Python (Django 5) |
| **Étoiles GitHub** | ~491 |
| **Dernière MAJ** | 2026-06 (v1.28.2) |
| **Catégorie** | [[cat-tracking]] |
## Description
VoucherVault est une application **self-hosted** dédiée à la gestion centralisée des **vouchers, coupons, cartes cadeaux et cartes de fidélité** — un usage devenu incontournable à l'ère du numérique où l'on accumule des codes de réduction dans une demi-douzaine de messageries et d'apps. Le projet, écrit en Django 5, se veut volontairement « user-friendly » et **mobile-first** : il est livré en tant que **PWA** (Progressive Web App) installable sur smartphone, supporte le mode hors-ligne avec cache local de 48h, et propose des thèmes clair/sombre.
Les fonctionnalités clés incluent : upload de fichiers joints (images, PDF) par item, scan **côté client** des codes-barres et QR codes lors de la création, génération automatique de QR codes pour les codes de rédemption, support des **notifications d'expiration** via [Apprise](https://github.com/caronc/apprise), partage d'items entre utilisateurs, historique de transactions (cartes cadeaux), et **API REST** exposant des statistiques intégrables à Home Assistant. Le multi-utilisateur, l'authentification **OIDC SSO**, le support multilingue (EN/DE/FR/IT) et la compatibilité SQLite3/PostgreSQL complètent le tableau.
Pour les particuliers comme pour les familles, VoucherVault remplace avantageusement des apps propriétaires souvent verrouillées derrière un abonnement et dont les données ne vous appartiennent pas.
## Installation
### Via Docker (recommandé)
```yaml
services:
vouchervault:
image: l4rm4nd/vouchervault:1.28
container_name: vouchervault
restart: unless-stopped
ports:
- "8000:8000"
environment:
- DOMAIN=vouchervault.example.com
- SECURE_COOKIES=True
- TZ=Europe/Paris
- EXPIRY_THRESHOLD_DAYS=30
- EXPIRY_LAST_NOTIFICATION_DAYS=7
volumes:
- ./volume-data/database:/app/database
depends_on:
- redis
redis:
image: redis:7-alpine
container_name: vouchervault-redis
restart: unless-stopped
volumes:
- ./volume-data/redis:/data
```
> ⚠️ Le conteneur tourne sous l'utilisateur `www-data` (UID/GID 33). Corriger les permissions du volume : `sudo chown -R 33:33 ./volume-data`.
### Installation manuelle
1. Cloner le dépôt : `git clone https://github.com/l4rm4nd/VoucherVault.git && cd VoucherVault`
2. Créer un venv Python 3.11+ et installer : `pip install -r requirements.txt`
3. Configurer les variables d'environnement (cf. section suivante) ou éditer `config.dist.ini`
4. Lancer les migrations : `python manage.py migrate`
5. Créer le super-utilisateur : `python manage.py createsuperuser`
6. Démarrer : `python manage.py runserver 0.0.0.0:8000` (derrière Gunicorn + reverse-proxy en prod)
## Configuration
- **DOMAIN** (obligatoire) : FQDN ou IP, utilisé pour `ALLOWED_HOSTS` et `CSRF_TRUSTED_ORIGINS` (séparer par virgules si plusieurs).
- **SECURE_COOKIES=True** : active le flag `secure` des cookies et HSTS — indispensable derrière un reverse-proxy TLS.
- **SECRET_KEY** : auto-généré si non défini, mais doit être fixé pour la persistance des sessions entre redémarrages.
- **EXPIRY_THRESHOLD_DAYS=30** / **EXPIRY_LAST_NOTIFICATION_DAYS=7** : fenêtres de rappel d'expiration envoyées via Apprise.
- **OIDC_ENABLED=True** + variables `OIDC_RP_*` : active l'authentification unique via un fournisseur externe (Authelia, Authentik, Keycloak…).
- **Base de données** : SQLite3 par défaut (zero-config), PostgreSQL via `DATABASE_URL`.
- **Compte admin par défaut** : `admin` / mot de passe auto-généré affiché dans les logs du conteneur (`docker compose logs -f vouchervault`).
## Alternatives
### Open source
- [[app-leantime]] — Gestion de projet avec time-tracking (pas de vouchers)
- Grocy — Gestion d'inventaire domestique (couvre les courses mais pas les coupons)
- Firefly III — Suivi budgétaire personnel (orientation finance, pas bons d'achat)
### Propriétaires
- Stocard — App leader de portefeuille de cartes de fidélité, propriétaire et publicitaire
- Slyce / Coupons.com — Plateformes de coupons digitaux avec tracking comportemental
- Apple Wallet / Google Wallet — Stockage natif des cartes mais aucune gestion d'expiration ni d'analytics
## Sécurité
- **CSRF / CORS** : Django + `ALLOWED_HOSTS` strict, configurer `CSP_FRAME_ANCESTORS` si embarqué dans une iframe.
- **HTTPS obligatoire en production** : `SECURE_COOKIES=True` + reverse-proxy (Caddy, Nginx, Traefik) avec certificat Let's Encrypt.
- **Secret Django** : par défaut auto-généré à chaque démarrage, ce qui invalide les sessions au reboot — fixer un `SECRET_KEY` stable.
- **Mises à jour** : Conventional Commits + releases fréquentes (≈143 releases), utiliser un tag mineur fixe (`1.28.x`) plutôt que `latest` pour éviter les ruptures.
- **Permissions** : le multi-utilisateur permet d'isoler les items par propriétaire, idéal pour un usage familial.
## Ressources
- Site / blog de l'auteur : https://blog.lrvt.de/vouchervault/
- Code source : https://github.com/l4rm4nd/VoucherVault
- Image Docker Hub : https://hub.docker.com/r/l4rm4nd/vouchervault
- Wiki officiel : https://github.com/l4rm4nd/VoucherVault/wiki
- Annonce r/selfhosted : https://www.reddit.com/r/selfhosted/comments/1dylr2x/
## Pages Liées
- [[cat-tracking]]
- [[recettes-docker-compose]]