Présentation
Ce projet me sert à gérer un peu plus efficacement mes transactions en crypto-monnaies.
C’est vraiment un outil sans prétention, mais s’il peut aider autrui…. En plus c’est gratuit.
Après avoir saisi mon historique depuis 2017 (quel travail !), je peux désormais saisir mes transactions au fur et à mesure ce qui simplifie grandement le suivi.
En plus de ce projet, mon autre projet crypto-updater sera nécessaire pour obtenir les derniers cours des crypto-monnaies en utilisant les API de coingecko. Ce sont les seuls accès à internet.
De plus aucune donnée comme l’adresse de vos portefeuilles n’est saisie. Par contre vous avez la possibilité lors de la création d’une transaction de fournir l’identifiant de transaction et ainsi avoir la possibilité d’y accéder via la blockchain adéquate.
Associé au projet crypto-updater, crypto-dashboard permet :
- de gérer les plateformes/portefeuilles à utiliser,
- de saisir les transactions au fur et à mesure, de les consulter, de les supprimer ou de les modifier,
- de disposer d’un portefolio multi plateformes/portefeuilles,
- de voir l’évolution des crypto-monnaies (à 5mn, 1h, 24h et 1 semaine),
- de définir des alertes,
- de surveiller des crypto-monnaies que l’on n’a pas encore acheté.
- d’accéder aux graphiques des tokens et éventuellement aux explorateurs.
Etant utilisateur en autres de la plateforme Binance, j’ai implémenté la possibilité de saisir de manière quasi automatique tous les trades effectués avec les paires *USDT et *BNB.
Le projet utilise
- les API coingecko
- les API geckoterminal
- les API Binance
- la bibliothèque de Graph de TradingView
Installation
La première chose à faire est de choisir le répertoire de base pour l’installation. Appelons-le CRYPTO_HOME.
Dans un terminal, entrer les commandes suivantes:
CRYPTO_HOME=<répertoire choisi>
mkdir -p $CRYPTO_HOME/dashboard
mkdir -p $CRYPTO_HOME/dashboard/icons
mkdir -p $CRYPTO_HOME/dashboard/mongodb
mkdir -p $CRYPTO_HOME/dashboard/config
Dans <CRYPTO_HOME>
{
"language": "fr",
"timezone": "Europe/Paris",
"fiat_currency" : "EUR",
"fiat_symbol": "€",
"decimal_separator": ",",
"coingecko_currency" : "eur",
"mongodb_uri" : "mongodb://mongo:27017/?serverSelectionTimeoutMS=3000&directConnection=true",
"mongodb_database": "crypto",
"server_port" : 8080,
"refresh_in_seconds" : 120,
"coingecko_coins_url": "https://api.coingecko.com/api/v3/coins/list",
"coingecko_quotation_url": "https://api.coingecko.com/api/v3/simple/price",
"coingecko_chart_api": "https://api.coingecko.com/api/v3/coins/TOKEN/market_chart?vs_currency=CURRENCY&days=DAYS",
"geckoterminal_networks_url": "https://api.geckoterminal.com/api/v2/networks?page=",
"geckoterminal_quotation_url": "https://api.geckoterminal.com/api/v2/simple/networks/NETWORK/token_price/",
"notification_ntfy_url": "https://ntfy.sh",
"notification_ntfy_topic": ".......",
"chain_explorers": [
{
"name": "Binance BSC",
"url": "https://bscscan.com/tx/"
},
{
"name": "Bitcoin",
"url": "https://blockstream.info/tx/"
},
{
"name": "Cosmos",
"url": "https://www.mintscan.io/cosmos/tx/"
},
{
"name": "Ethereum",
"url": "https://etherscan.io/tx/"
},
{
"name": "Optimism",
"url": "https://optimistic.etherscan.io/tx/"
},
{
"name": "Polygon",
"url": "https://polygonscan.com/tx/"
},
{
"name": "Solana",
"url": "https://solscan.io/tx/"
},
{
"name": "XRP",
"url": "https://bithomp.com/explorer/"
}
],
"platforms_api": {
"binance": {
"api_key": "<BINANCE_API-KEY>",
"secret_key": "<BINANCE_SECRET-KEY>",
"withdraw_list_url": "https://api.binance.com/sapi/v1/capital/withdraw/history",
"payments_list_url": "https://api.binance.com/sapi/v1/fiat/payments",
"convert_url": "https://api.binance.com/sapi/v1/convert/tradeFlow",
"trades_histo_url": "https://api.binance.com/api/v3/myTrades"
},
"coinbase": {
"api_key": "<COINBASE_API_KEY>",
"secret_key": "<COINBASE_PRIVATE_KEY",
"host": "api.coinbase.com",
"accounts_path": "/v2/accounts"
},
"bitpanda": {
"api_key": "<BITPANDA_API_KEY>",
"base_url": "https://api.bitpanda.com/v1"
}
}
}
variable | Description |
---|---|
language | Langage utilisé: fr (Français) or en (Anglais) uniquement. |
timezone | Time zone (ex Europe/Paris) |
fiat_currency | C’est la monnaie Fiat (ici EUR) utilisée pour acheter vos cryptos. Cela peut ^tre EUR, USR, GBP, etc. |
fiat_symbol | Symbole de la monnaie ci-dessus (€, $, £, etc.) |
decimal_separator | Caractère de séparation des décimales (, ou .) |
coingecko_currency | Monnaie telle qu’elle sera reconnue par coingecko : eur, usd, gbp, etc. |
coingecko_coins_uri | API pour obtenir la liste de toutes les cryptos (appelée une fois par jour) |
coingecko_quotation_uri | API pour obtenir la cotation des cryptos utilisées (appelée au max toutes les 5 minutes) |
geckoterminal_quotation_url | URL pour accéder au prix des cryptos à partir de geckoterminal. Ne rien changer. |
mongodb_uri | URI de connexion au serveur MongoDB. Ne rien changer. |
mongodb_database | Nom que vous voulez donner à la base de données. Ici c’est crypto et vous pouvez laisser cette valeur. |
server_port | Port d’écoute du serveur dashboard. Ici 8080. |
refresh_in_seconds | Les vues portfolio et evolution sont mises à jour en direct toutes les 120 secondes par défaut. |
coingecko_chart_api | API pour les graphiques Trading view. Ne rien changer. |
geckoterminal_networks_url | URL pour obtenir les réseaux des blockchains à partir de geckoterminal. Ne rien changer. |
notification_ntfy_url | URL pour les notifications. Ne rien changer. |
notification_ntfy_topic | Clé/topic que vous avez déclaré dans l’application NTFY (voir le chapitre Alertes plus bas). |
chain_explorers | URLs des explorateur blockchains principaux. Vous pouvez en ajouter d’autres en respectant la syntaxe du site. |
Vous créez (ou copiez à partir du projet GitHub) un fichier docker-compose-images.yml dans le répertoire <CRYPTO_HOME>
services:
dashboard:
image: labarrem/crypto-dashboard-ui:stable
ports:
- "8080:8080"
depends_on:
- mongo
volumes:
- <CRYPTO_HOME>/dashboard/icons:/home/node/app/public/images/icons
- <CRYPTO_HOME>/dashboard/config:/home/node/app/config
restart: always
updater:
image: labarrem/crypto-dashboard-data:stable
depends_on:
- mongo
volumes:
- <CRYPTO_HOME>/dashboard/config:/home/node/app/config
restart: always
mongo:
image: mongo:4.4
volumes:
- <CRYPTO_HOME>/dashboard/mongodb:/data/db
ports:
- "27017:27017"
restart: always
en remplaçant toutes les chaînes de caractères « <CRYPTO_HOME> »
Note: le port d’écoute du service dashboard dépend des informations codées dans ce fichier docker-compose-images.yml mais aussi dans le fichier de configuration default.json. Le port indiqué dans docker-compose-images.yml est 8080:8080. Cela indique que vous pourrez vous connecter sur le serveur par le port 8080 (premier 8080 avant ‘:’) en http://localhost:8080. Le second 8080 (après le ‘:’) doit correspondre au port indiqué dans le fichier default.json. Vous ne pouvez changer que le numéro de port avant le caractère ‘:’.
Pour le lancement, passer la commande suivante et accéder au dashboard par http://localhost:8080 (si l’installation a eu lieu sur votre propre machine)
docker compose -f ./docker-compose-images.yml up -d
Alertes
Il est possible de définir des alertes sur les vues Evolution et Surveillance.
Les notifications sont envoyées sur tout équipement où l’application open-source ntfy est installée (Android, IOS, desktop).
Les paramètres nécessaires ont été abordés plus haut, dans le fichier de configuration default.json.
Vue evolution en dark mode
