Sélectionner une page

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>/dashboard/config créer un fichier nommé default.json avec le contenu suivant (contenu visible dans le fichier demo/default.json de GitHub https://github.com/mlabarre/crypto-dashboard.git):

{
    "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"
    }
  }
}
variableDescription
languageLangage utilisé: fr (Français) or en (Anglais) uniquement.
timezoneTime zone (ex Europe/Paris)
fiat_currencyC’est la monnaie Fiat (ici EUR) utilisée pour acheter vos cryptos. Cela peut ^tre EUR, USR, GBP, etc.
fiat_symbolSymbole de la monnaie ci-dessus (€, $, £, etc.)
decimal_separatorCaractère de séparation des décimales (, ou .)
coingecko_currencyMonnaie telle qu’elle sera reconnue par coingecko : eur, usd, gbp, etc.
coingecko_coins_uriAPI pour obtenir la liste de toutes les cryptos (appelée une fois par jour)
coingecko_quotation_uriAPI pour obtenir la cotation des cryptos utilisées (appelée au max toutes les 5 minutes)
geckoterminal_quotation_urlURL pour accéder au prix des cryptos à partir de geckoterminal. Ne rien changer.
mongodb_uriURI de connexion au serveur MongoDB. Ne rien changer.
mongodb_databaseNom que vous voulez donner à la base de données. Ici c’est crypto et vous pouvez laisser cette valeur.
server_portPort d’écoute du serveur dashboard. Ici 8080.
refresh_in_secondsLes vues portfolio et evolution sont mises à jour en direct toutes les 120 secondes par défaut.
coingecko_chart_apiAPI pour les graphiques Trading view. Ne rien changer.
geckoterminal_networks_urlURL pour obtenir les réseaux des blockchains à partir de geckoterminal. Ne rien changer.
notification_ntfy_urlURL pour les notifications. Ne rien changer.
notification_ntfy_topicClé/topic que vous avez déclaré dans l’application NTFY (voir le chapitre Alertes plus bas).
chain_explorersURLs 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> » par le répertoire choisi..

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