128 lines
6.0 KiB
Markdown
128 lines
6.0 KiB
Markdown
---
|
|
title: ExpenseOwl
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, budgeting, python, flask, minimaliste, depenses, simple]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=budgeting, https://github.com/nicholasgasior/expenseowl, https://expenseowl.com/]
|
|
---
|
|
|
|
# ExpenseOwl 🦉
|
|
|
|
> Suivi de dépenses **ultra-minimaliste** écrit en Python/Flask. Pour qui veut **juste noter ses dépenses** sans se prendre la tête avec des catégories complexes, des budgets ou de l'import bancaire.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://expenseowl.com/ |
|
|
| **GitHub** | https://github.com/nicholasgasior/expenseowl |
|
|
| **License** | MIT |
|
|
| **Langage** | Python (Flask) |
|
|
| **Étoiles** | ⭐133 |
|
|
| **Dernière MAJ** | 2026-05-10 |
|
|
| **Catégorie** | [[cat-budgeting]] |
|
|
|
|
## Description
|
|
|
|
ExpenseOwl est une application web volontairement **minimaliste** de **suivi de dépenses personnelles**. Son auteur assume : pas d'import bancaire, pas de catégorisation avancée, pas de budgets, pas d'API riche. Juste **créer une dépense, la visualiser, la supprimer**. Parfait pour qui veut **commencer à suivre ses dépenses** sans la complexité d'un Firefly III.
|
|
|
|
Les fonctionnalités essentielles : **dépenses** avec date, montant, description courte, **catégories** simples (alimentation, logement, transport, loisirs, santé, etc. — personnalisables), **revenus** (séparés des dépenses), **tableau de bord** avec **totaux** par mois, **graphique simple** (revenus vs dépenses par mois), **filtres** par période/catégorie, **multi-utilisateurs** optionnel (admin peut créer des comptes invités). Et c'est tout. L'**interface** est claire, sans fioritures, et l'**ajout d'une dépense** prend littéralement 5 secondes.
|
|
|
|
La **stack technique** est volontairement légère : **Flask** (microframework Python), **SQLite** par défaut (parfait pour un usage mono-utilisateur), templates **Jinja2** rendus côté serveur, **Chart.js** pour les graphiques. Pas de SPA, pas de build, pas de npm. L'**image Docker** fait moins de 100 Mo et l'app démarre en 2 secondes. Idéal pour un **Raspberry Pi** ou un serveur modeste.
|
|
|
|
ExpenseOwl est **l'anti-Firefly III** : là où Firefly vise l'exhaustivité fonctionnelle, ExpenseOwl vise la **simplicité radicale**. Pour 80% des gens qui veulent juste savoir "combien j'ai dépensé ce mois-ci", c'est largement suffisant.
|
|
|
|
## Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
expenseowl:
|
|
image: ghcr.io/nicholasgasior/expenseowl:latest
|
|
container_name: expenseowl
|
|
restart: unless-stopped
|
|
ports:
|
|
- "5000:5000"
|
|
environment:
|
|
- SECRET_KEY=Change...et
|
|
- DATABASE_URL=sqlite:////data/expenses.db
|
|
- ALLOW_REGISTRATION=false
|
|
volumes:
|
|
- expenseowl-data:/data
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:5000/"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
volumes:
|
|
expenseowl-data:
|
|
```
|
|
|
|
> ⚠️ Vérifier le tag exact sur le [GHCR](https://github.com/nicholasgasior/expenseowl/pkgs/container/expenseowl).
|
|
|
|
### Installation manuelle (Python)
|
|
|
|
1. **Pré-requis** : Python 3.10+, pip, SQLite (inclus dans Python).
|
|
2. `git clone https://github.com/nicholasgasior/expenseowl.git && cd expenseowl`
|
|
3. `pip install -r requirements.txt`
|
|
4. Configurer variables d'environnement (`SECRET_KEY`, `DATABASE_URL`).
|
|
5. Initialiser la DB : `flask db upgrade` (ou `python app.py init` selon la version).
|
|
6. `python app.py` (dev) ou via Gunicorn/uWSGI (prod).
|
|
7. Reverse proxy Nginx/Caddy en front.
|
|
|
|
## Configuration
|
|
|
|
- **Premier lancement** : créer le compte admin via l'UI.
|
|
- **ALLOW_REGISTRATION=false** : recommandé en production (créer manuellement les comptes).
|
|
- **Catégories** : par défaut une liste de base, personnalisable depuis l'UI.
|
|
- **Devise** : configurée au niveau global, pas de multi-devise native.
|
|
- **PWA** : ExpenseOwl peut s'installer comme Progressive Web App sur mobile (ajout à l'écran d'accueil).
|
|
- **HTTPS** : obligatoire via reverse proxy.
|
|
- **Backup** : copier le fichier `expenses.db` régulièrement (cron + rclone).
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
- [[app-spliit]] — partage entre amis (multi-utilisateurs natif)
|
|
- [[app-actual-budget]] — budgeting complet, plus puissant
|
|
- [[app-firefly-iii]] — référence, mais complexe
|
|
- [[app-ocular]] — autre option TypeScript minimaliste
|
|
- **Wallet** / **Paisa** / **MyExpenses** — alternatives Android natives
|
|
- **GnuCash** — comptabilité double-partie, plus puissant
|
|
- **Skrooge** / **KMyMoney** — gestion budget KDE/GNOME
|
|
|
|
### Propriétaires
|
|
- **Wallet by BudgetBakers** — app mobile tchèque
|
|
- **Money Manager** / **Money Lover** — apps mobiles grand public
|
|
- **Spendee** — freemium avec agrégation bancaire
|
|
- **PocketGuard** — mobile-first US
|
|
|
|
## Sécurité
|
|
|
|
- **HTTPS obligatoire** via reverse proxy (Traefik/Caddy).
|
|
- **SECRET_KEY** : token Flask pour les sessions — générer aléatoirement (32+ caractères), ne jamais commit dans Git.
|
|
- **ALLOW_REGISTRATION=false** en prod : créer les comptes via admin uniquement.
|
|
- **SQLite** : sécuriser les permissions (chmod 600) sur le fichier DB et le volume.
|
|
- **Backups 3-2-1** : copier régulièrement le fichier `expenses.db` vers stockage chiffré.
|
|
- **Updates** : suivre les releases GitHub, le projet est actif mais les releases sont irrégulières.
|
|
- **2FA** : non natif, compter sur le reverse proxy (Authelia/Authentik) pour durcir l'accès admin.
|
|
- **Logs** : Flask logs standards, à monitorer via Grafana/Loki ou équivalent.
|
|
|
|
## Ressources
|
|
- Site officiel : https://expenseowl.com/
|
|
- GitHub : https://github.com/nicholasgasior/expenseowl
|
|
- Démo : https://expenseowl.com/
|
|
- selfh.st : https://selfh.st/apps/?tag=budgeting
|
|
|
|
## Pages Liées
|
|
- [[cat-budgeting]] — catégorie parente
|
|
- [[app-spliit]] — partage amis (complémentaire)
|
|
- [[app-actual-budget]] — upgrade naturel si besoin de plus
|
|
- [[app-ocular]] — autre option minimaliste
|
|
- [[recettes-docker-compose]] — templates de déploiement
|
|
- [[securisation-home-lab]] — bonnes pratiques
|