152 lines
6.6 KiB
Markdown
152 lines
6.6 KiB
Markdown
---
|
|
title: Monetr
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, budgeting, go, golang, finance, suivi, budget]
|
|
confidence: medium
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=budgeting, https://github.com/monetr/monetr, https://monetr.app/]
|
|
---
|
|
|
|
# Monetr 🪙
|
|
|
|
> Application de **suivi de finances personnelles** écrite en **Go** — performante, légère, binaire unique. Approche pragmatique de l'envelope budgeting avec une UX moderne et un backend solide.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://monetr.app/ |
|
|
| **GitHub** | https://github.com/monetr/monetr |
|
|
| **License** | AGPL-3.0 |
|
|
| **Langage** | Go (backend), TypeScript/React (frontend) |
|
|
| **Étoiles** | ⭐46 |
|
|
| **Dernière MAJ** | 2026-04-30 |
|
|
| **Catégorie** | [[cat-budgeting]] |
|
|
|
|
## Description
|
|
|
|
Monetr est une application de **suivi de finances personnelles** relativement jeune mais techniquement solide, écrite en **Go** pour le backend (avec React/TypeScript pour le frontend). Le projet se positionne sur l'**envelope budgeting** (méthode enveloppe) avec une approche moderne, multi-utilisateurs, et un focus sur la **performance** (Go = binaire léger, démarrage rapide, faible consommation RAM).
|
|
|
|
Les fonctionnalités principales : **comptes** multiples (chèque, épargne, cartes, crédit, prêt), **transactions** avec catégorisation, **enveloppes** par catégorie avec allocation mensuelle, **soldes** reportés d'un mois à l'autre, **règles** d'auto-catégorisation, **revenus récurrents** (salaires, freelances), **dépenses récurrentes** (abonnements, factures), **objectifs d'épargne** (sinking funds) avec progression, **tableau de bord** avec **soldes** par compte/enveloppe, **graphiques** (cash flow, répartition), **import** CSV depuis les banques, **API REST** documentée, **multi-utilisateurs** natif (un serveur peut héberger plusieurs budgets familiaux).
|
|
|
|
L'**architecture** est classique et efficace : **Go** backend (probablement avec chi/gin + sqlx/sqlc), **PostgreSQL** comme base, **React/TypeScript** frontend. L'**avantage Go** : binaire unique autoportant (~20 Mo), démarrage en <1s, consommation mémoire faible (~50-100 Mo pour un usage normal), idéal pour un **Raspberry Pi** ou un petit VPS. L'**inconvénient** : projet jeune (~46⭐), moins de retours utilisateurs que Firefly ou Actual — à surveiller.
|
|
|
|
Monetr est particulièrement adapté aux **familles** ou **colocations** grâce au multi-utilisateurs natif, et aux utilisateurs qui veulent un **binaire Go léger** plutôt qu'une stack JS/Node complète.
|
|
|
|
## Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
monetr:
|
|
image: ghcr.io/monetr/monetr:latest
|
|
container_name: monetr
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
- MONETR_DB_HOST=db
|
|
- MONETR_DB_PORT=5432
|
|
- MONETR_DB_NAME=monetr
|
|
- MONETR_DB_USER=monetr
|
|
- MONETR_DB_PASSWORD=*** - MONETR_LISTEN=0.0.0.0:8080
|
|
- MONETR_PUBLIC_URL=https://budget.example.com
|
|
- MONETR_SECURE_COOKIES=true
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: monetr-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_DB=monetr
|
|
- POSTGRES_USER=monetr
|
|
- POSTGRES_PASSWORD=*** volumes:
|
|
- monetr-db:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U monetr -d monetr"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
volumes:
|
|
monetr-db:
|
|
```
|
|
|
|
> ⚠️ Vérifier le tag exact sur le [GHCR](https://github.com/monetr/monetr/pkgs/container/monetr) et la nomenclature des variables d'environnement (elles peuvent avoir changé).
|
|
|
|
### Installation manuelle (Go)
|
|
|
|
1. **Pré-requis** : Go 1.22+, Node.js 20+ (frontend build), PostgreSQL 14+.
|
|
2. `git clone https://github.com/monetr/monetr.git && cd monetr`
|
|
3. Build backend : `go build -o monetr ./cmd/monetr`
|
|
4. Build frontend : `cd web && npm install && npm run build && cd ..`
|
|
5. Configurer `config.yaml` ou variables d'environnement (DB, secret, URL).
|
|
6. Migrations : `./monetr migrate up` (selon la version).
|
|
7. `./monetr serve` (production).
|
|
8. Reverse proxy Nginx/Caddy en front.
|
|
|
|
## Configuration
|
|
|
|
- **Premier lancement** : créer le compte owner via l'UI d'inscription.
|
|
- **MONETR_SECURE_COOKIES=true** : obligatoire en HTTPS.
|
|
- **MONETR_PUBLIC_URL** : URL externe utilisée pour les liens/OAuth.
|
|
- **Comptes** : créer un compte par produit bancaire.
|
|
- **Enveloppes** : allocation mensuelle, le solde non utilisé roule.
|
|
- **Récurrences** : configurer salaires, abonnements.
|
|
- **HTTPS** : obligatoire via reverse proxy.
|
|
- **Backups** : `pg_dump` quotidien + copie du volume (uploads éventuels).
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
- [[app-actual-budget]] — référence local-first (TypeScript)
|
|
- [[app-firefly-iii]] — gestion complète (PHP)
|
|
- [[app-sure]] — plateforme Elixir moderne
|
|
- [[app-myfin]] — alternative Python
|
|
- [[app-budget-board]] — dashboard TypeScript
|
|
- **Buckwheat** / **Cashcog** — envelope budgeting Python
|
|
- **Maybe** / **Perfin** — projets alternatifs (Ruby/Go)
|
|
|
|
### Propriétaires
|
|
- **YNAB** — référence du zero-based (~14$/mois)
|
|
- **Monarch Money** — UX premium (~99$/an)
|
|
- **Rocket Money** — focus souscription
|
|
- **PocketGuard** — mobile-first US
|
|
|
|
## Sécurité
|
|
|
|
- **HTTPS obligatoire** via reverse proxy.
|
|
- **MONETR_DB_PASSWORD** : mot de passe fort, généré aléatoirement, user PostgreSQL non-superutilisateur.
|
|
- **Cookies sécurisés** : `MONETR_SECURE_COOKIES=true` en production HTTPS.
|
|
- **JWT/Sessions** : tokens stockés côté serveur, expiration régulière.
|
|
- **2FA** : à confirmer selon la roadmap, sinon Authelia/Authentik en front.
|
|
- **Backups 3-2-1** : `pg_dump` + volumes, tester la restauration.
|
|
- **Updates Go** : Go est rétrocompatible, suivre la branche stable.
|
|
- **CSP et headers** : via reverse proxy (Caddy/Traefik).
|
|
- **Logs** : logs structurés Go (slog, zap), monitorer via Grafana Loki ou équivalent.
|
|
|
|
## Ressources
|
|
- Site officiel : https://monetr.app/
|
|
- GitHub : https://github.com/monetr/monetr
|
|
- Documentation : https://docs.monetr.app/
|
|
- selfh.st : https://selfh.st/apps/?tag=budgeting
|
|
|
|
## Pages Liées
|
|
- [[cat-budgeting]] — catégorie parente
|
|
- [[app-actual-budget]] — concurrent direct (envelope aussi)
|
|
- [[app-firefly-iii]] — référence du marché (PHP)
|
|
- [[app-sure]] — alternative Elixir
|
|
- [[app-myfin]] — alternative Python
|
|
- [[recettes-docker-compose]] — templates de déploiement
|
|
- [[securisation-home-lab]] — bonnes pratiques
|