Tableau de bord d'accueil : liens vers tous les services auto-hébergés, avec leur état en direct et des widgets.
Fonctionnalités utilisées
- Sections et liens vers les services, avec icônes stockées en local.
- Indicateur d'état de chaque service (vérification de disponibilité).
- Widgets de contenu dynamique, dont les cartes de statistiques GitHub fournies par une instance locale de github-readme-stats.
- Configuration modifiable depuis l'interface, enregistrée dans le fichier YAML.
Stack
dashy:
image: lissy93/dashy:latest
container_name: dashy
environment:
- NODE_ENV=production
- UID=1000
- GID=1000
- NODE_TLS_REJECT_UNAUTHORIZED=0
- VUE_APP_BOB=<MOT_DE_PASSE>
ports:
- "4000:8080"
volumes:
- <APPDATA>/Dashy/user-data:/app/user-data
restart: unless-stopped
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 90s
timeout: 10s
retries: 3
start_period: 40s
networks:
- proxy
networks:
proxy:
external: true
- NODE_TLS_REJECT_UNAUTHORIZED=0 : le serveur de Dashy accepte les certificats non reconnus lors des vérifications d'état, nécessaire pour les services locaux en https avec un certificat auto-signé.
- VUE_APP_BOB : mot de passe d'un utilisateur de l'authentification intégrée, référencé par son nom dans conf.yml (password: VUE_APP_BOB). Il est lu à la construction de l'application : après modification, reconstruire (Config > Rebuild).
Accès
- Consultation : publique, sans authentification.
- Modification de la configuration : connexion en deux temps, d'abord Authelia, qui redirige ensuite vers la connexion de Dashy (utilisateur défini dans conf.yml, mot de passe dans VUE_APP_BOB).
Configuration
Dans <APPDATA>/Dashy/user-data :
| Élément | Rôle |
|---|---|
| conf.yml | Configuration principale : pages, sections, liens, widgets, thème |
| bookmark.yml | Page secondaire de favoris |
| item-icons/ | Icônes des services, stockées en local |
- appConfig.faviconApi: local : aucune icône n'est récupérée sur un service externe.
- Vérifier la syntaxe après une modification à la main :
Statistiques GitHub : github-readme-stats
Instance locale de github-readme-stats, qui génère les cartes SVG de statistiques GitHub affichées par un widget de Dashy : statistiques du profil, langages les plus utilisés, dépôts épinglés.
github-readme-stats:
image: github-readme-stats:local
container_name: github-readme-stats
restart: unless-stopped
ports:
- "9000:9000"
environment:
- PAT_1=${PAT_1}
- CACHE_SECONDS=14400
- PAT_1 : jeton d'accès personnel GitHub, défini dans les variables de la stack Portainer. Jeton classique avec les permissions repo pour compter les dépôts privés.
- CACHE_SECONDS : durée de mise en cache des cartes (4 heures), pour limiter les appels à l'API GitHub.
- Accessible uniquement en local, sur le port 9000.
Principales adresses :
| Carte | Adresse |
|---|---|
| Statistiques du profil | /api?username=<UTILISATEUR> |
| Langages les plus utilisés | /api/top-langs?username=<UTILISATEUR> |
| Dépôt épinglé | /api/pin?username=<UTILISATEUR>&repo=<DEPOT> |
Dans Dashy, les cartes s'affichent avec un widget de type image qui pointe vers l'instance locale.
Image locale
Portainer ne sait pas construire une image dans une stack : l'image github-readme-stats:local est construite sur l'hôte, depuis le dépôt cloné. Elle n'est donc pas mise à jour par Watchtower. Pour la mettre à jour, depuis le dossier du dépôt :
docker build -t github-readme-stats:local .
Puis redéployer la stack dans Portainer.
Sauvegarde
<APPDATA>/Dashy/user-data est sauvegardé par le script de Sauvegarde. Dashy enregistre aussi une copie de la configuration précédente dans ce dossier à chaque sauvegarde depuis l'interface.