Installation

🐳 Docker

Installation

  • Docker installé et démarré sur la machine cible.
  • C’est tout — pas de configuration manuelle de nginx ou systemd, pas de fichier de config à écrire à la main.

La version à installer est obligatoire, via IMAGE_TAG : latest pour la toute dernière, ou une release précise (ex. 0.1.0).

>_ Terminal
$ curl -fsSL https://raw.githubusercontent.com/joakim-ribier/axeos-dashboard/main/docker-install.sh | IMAGE_TAG=latest HTTP_PORT=81 bash

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1174  100  1174    0     0   2541      0 --:--:-- --:--:-- --:--:--  2546
>>> Image tag: latest
[+] pull 10/10
 ✔ Image ghcr.io/joakim-ribier/axeos-dashboard/axeos-services:latest  Pulled                                                                           12.7s
 ✔ Image ghcr.io/joakim-ribier/axeos-dashboard/axeos-dashboard:latest Pulled                                                                            9.6s
[+] up 3/3
 ✔ Network axeos-dashboard_default Created                                                                                                              0.0s
 ✔ Container axeos-services        Started                                                                                                              0.2s
 ✔ Container axeos-dashboard       Started                                                                                                              0.2s
>>> Done. Open http://<this-machine-ip>:<port>/ from any device on your LAN
    (see the PORTS column below for <port>, unless you passed HTTP_PORT):
NAME              IMAGE                                                          COMMAND                  SERVICE     CREATED                  STATUS                  PORTS
axeos-dashboard   ghcr.io/joakim-ribier/axeos-dashboard/axeos-dashboard:latest   "/docker-entrypoint.…"   dashboard   Less than a second ago   Up Less than a second   0.0.0.0:81->80/tcp, [::]:81->80/tcp
axeos-services    ghcr.io/joakim-ribier/axeos-dashboard/axeos-services:latest    "/entrypoint.sh"         services    Less than a second ago   Up Less than a second

Elle peut être relancée sans risque plus tard — elle n’écrase jamais un config/dashboard.yml existant, et le port choisi (HTTP_PORT) est mémorisé d’un lancement à l’autre.

💡 Astuce — installez une release précise plutôt que latest

>_ Terminal
$ curl -fsSL https://raw.githubusercontent.com/joakim-ribier/axeos-dashboard/main/docker-install.sh | IMAGE_TAG=0.1.0 bash

Structure

Arborescence créée dans le dossier où la commande a été lancée :

axeos-dashboard/
├── docker-compose.yml
├── .env
├── config/
│   ├── dashboard.yml
│   └── mail-templates/  # textes des mails, créés par le mailer
└── storage/            # rempli une fois les services lancés
    ├── logs/
    │   ├── dashboard-api.log
    │   ├── feeder.log
    │   └── mailer.log
    └── data/
        ├── bitaxes/
        │   └── <mac>/
        │       ├── latest.json
        │       └── AAAA-MM-JJ.jsonl
        ├── audit/
        ├── mail/
        └── firmware_cache.json

Lancement

Ouvrez http://localhost:81/ (le port de l’exemple ci-dessus), puis :

Détection automatique des mineurs

Mise à jour

Relancez exactement la même commande d’installation, ou depuis le dossier axeos-dashboard/ :

>_ Terminal
$ docker compose pull && docker compose up -d

💻 Native

Un script native-install.sh va être déployé pour faciliter l’installation des différents services.


⚙️ Paramétrage

dashboard.yml est un fichier statique, lu une seule fois au démarrage — toute modification nécessite de redémarrer les binaires pour être prise en compte.

>_ dashboard.yml
global:
  env: dev

server:
  port: "8080"

mailer:
  port: "8082"

storage:
  dataDir: resources

feeder:
  interval: 2m

healthCheck:
  interval: 15s

endpoints:
  timeout: 5s
  info:    api/system/info
  system:  api/system
  restart: api/system/restart

firmware:
  cacheTTL: 24h
  • global.env — dev affiche les logs uniquement sur la console ; toute autre valeur écrit aussi des fichiers de log.
  • server.port — port d’écoute de dashboard-api.
  • mailer.port — port du mailer, le service qui envoie les mails ; joint par dashboard-api sur la machine elle-même uniquement.
  • storage.dataDir — dossier racine des données (mineurs, historique, cache firmware).
  • feeder.interval — fréquence de sondage de chaque mineur.
  • healthCheck.interval — fréquence de la vérification de joignabilité.
  • endpoints — chemins des endpoints appelés sur chaque mineur (lecture, écriture pool, redémarrage).
  • firmware.cacheTTL — durée de mise en cache de la réponse GitHub “dernière version”.

La liste des mineurs, le tarif électrique, les notifications et les pools se gèrent directement depuis l’app (page Configuration) — pas besoin d’éditer de fichier à la main pour ça.

Aller à Configuration →