Page d'accueil de Dashy, définie dans conf.yml. Elle regroupe les services auto-hébergés du serveur principal et du Raspberry Pi, avec leur état, et des widgets de supervision (AdGuard Home, Nextcloud) et d'agrément. Configuration commune et déploiement : Dashy.
En-tête
title: <TITRE>
description: <SOUS_TITRE>
navLinks:
- title: <LIBELLE>
target: newtab
path: https://<SITE_PERSO>
Le lien de navLinks s'affiche dans l'en-tête, à côté des liens vers les pages secondaires générés depuis pages:.
Sections
| Section | Icône | Items | Widgets |
|---|---|---|---|
| Jours Fériés | emoji | — | public-holidays |
| Portainer | docker-compose.png | Portainer | clock |
| Réseau | emoji | AdGuard Home | adguard-stats, adguard-filter-status, adguard-top-domains |
| Medias | jellyfin.svg | Jellyfin | iframe, chucknorris |
| International Time | fad fa-clock | — | clock (x2) |
| Productivité | xwiki.svg | Nextcloud, Xwiki, Joplin | — |
| OSINT | emoji | Webcheck, SearchXNG | — |
| plopplop | github-light.svg | — | image (x4), public-ip |
| Stats nextcloud | nextcloud.svg | — | nextcloud-system, joke |
Toutes les sections sont en rows: 1, cols: 1, visibles des invités (hideForGuests: false), c'est-à-dire de tout utilisateur connecté à Authelia. Les sections qui contiennent des liens sont en sortBy: random.
Items
Un item est un lien vers un service. Forme utilisée pour les services auto-hébergés :
description: DNS ad-blocking (RPi)
icon: hl-adguard-home
url: https://<DOMAINE_ADGUARD>/
target: newtab
statusCheck: true
statusCheckAllowInsecure: true
- statusCheck: true : Dashy interroge l'URL depuis son serveur et affiche un point vert ou rouge. Activé sur Portainer, AdGuard Home, Jellyfin, Webcheck et SearchXNG. Nextcloud, Xwiki et Joplin n'ont pas de vérification d'état.
- statusCheckAllowInsecure: true : accepte un certificat non valide, nécessaire pour Portainer joint en https sur son IP locale (https://<IP_SERVEUR>:9443/).
- target: newtab : ouverture dans un nouvel onglet.
Widgets
public-holidays
Affiche les prochains jours fériés du pays choisi. Aucun identifiant.
useProxy: false
options:
country: FR
monthsToShow: 6
lang: fr
- country : code pays ISO à deux lettres.
- monthsToShow : période couverte, en mois.
clock
Affiche l'heure et la date d'un fuseau horaire. Utilisé trois fois : heure locale (section Portainer) et deux fuseaux étrangers (section International Time). Aucun identifiant.
options:
timeZone: Europe/Paris
format: fr-FR
- timeZone : nom de fuseau IANA (Europe/Lisbon, Asia/Hong_Kong...).
- format : locale d'affichage de la date et de l'heure.
- Les options hidedate et chartColor présentes dans le widget de la section Portainer ne sont pas reconnues par ce widget et sont ignorées. L'option qui masque la date s'écrit hideDate.
adguard-stats, adguard-filter-status, adguard-top-domains
Trois widgets pour le serveur AdGuard Home du Raspberry Pi :
- adguard-stats : nombre de requêtes DNS, requêtes bloquées et temps de traitement moyen ;
- adguard-filter-status : état de la protection et des listes de filtrage ;
- adguard-top-domains : domaines les plus demandés.
useProxy: true
options:
hostname: http://<IP_ADGUARD>:3000
username: <UTILISATEUR_ADGUARD>
password: <MOT_DE_PASSE_ADGUARD>
Les trois widgets prennent les mêmes options :
- hostname : adresse de l'interface web d'AdGuard Home, sans chemin ni barre oblique finale.
- username / password : identifiants de l'interface web d'AdGuard Home, définis à l'assistant d'installation (ou dans AdGuardHome.yaml, section users). Ils sont envoyés en authentification HTTP Basic.
- useProxy: true : AdGuard Home n'envoie pas d'en-têtes CORS. La requête passe par /cors-proxy ; derrière SWAG, <IP_ADGUARD> doit figurer dans allowed_internal.
iframe
Intègre une page ou un fichier distant dans un cadre. Utilisé ici pour afficher la bannière de soutien à l'April. Aucun identifiant.
options:
url: <URL_A_INTEGRER>
frameHeight: 100
- frameHeight : hauteur du cadre en pixels.
- Le site intégré doit autoriser l'affichage en iframe (pas d'en-tête X-Frame-Options: DENY).
chucknorris
Affiche une blague Chuck Norris au hasard, en anglais. Ni option ni identifiant.
image
Affiche une image à partir de son adresse. Utilisé quatre fois pour les cartes SVG de l'instance locale de github-readme-stats : statistiques du profil et trois dépôts épinglés.
options:
imagePath: http://<IP_SERVEUR>:9000/api?username=<UTILISATEUR_GITHUB>&title_color=98ace9&text_color=fff&icon_color=98ace9&bg_color=282a36&border_radius=5&locale=fr&count_private=true&show_icons=true&hide_border=true
- type: image
options:
imagePath: http://<IP_SERVEUR>:9000/api/pin?username=<UTILISATEUR_GITHUB>&repo=<DEPOT>&title_color=98ace9&text_color=fff&icon_color=98ace9&bg_color=282a36&border_radius=5&locale=fr&hide_border=true&show_owner=true
- Les couleurs (bg_color=282a36, title_color=98ace9) reprennent le thème Dracula.
- Pas d'identifiant dans Dashy : le jeton GitHub (PAT_1) reste dans la stack github-readme-stats, voir la section github-readme-stats de la page Dashy.
- L'image est chargée directement par le navigateur, sans proxy, depuis une adresse locale en http : les cartes ne s'affichent que depuis le LAN, et un navigateur peut les bloquer comme contenu mixte quand Dashy est consulté en https.
public-ip
Affiche l'adresse IP publique vue depuis le navigateur, avec le fournisseur et la localisation approximative. Aucun identifiant.
nextcloud-system
Affiche l'état du serveur Nextcloud : charge CPU, mémoire et versions, lus dans l'API serverinfo (/ocs/v2.php/apps/serverinfo/api/v1/info).
useProxy: true
options:
hostname: https://<DOMAINE_NEXTCLOUD>
username: <UTILISATEUR_NEXTCLOUD>
password: <MOT_DE_PASSE_APPLICATION>
- hostname : adresse racine de Nextcloud, sans barre oblique finale.
- password : un mot de passe d'application, pas le mot de passe du compte. Le créer dans Nextcloud, Paramètres personnels > Sécurité, rubrique Appareils et sessions, en donnant un nom (par exemple dashy) puis Créer un nouveau mot de passe d'application. Il n'est affiché qu'une fois. Le révoquer au même endroit supprime l'accès du widget sans toucher au compte.
- username : identifiant de connexion du compte qui a créé le mot de passe d'application, pas son nom d'affichage. Il est sensible à la casse : Admin et admin sont deux comptes différents pour l'API.
- Le compte doit être administrateur : l'API serverinfo refuse les statistiques système aux autres comptes. L'application Monitoring (serverinfo) doit être activée ; elle l'est par défaut.
- useProxy: true : l'API OCS de Nextcloud ne répond pas aux requêtes CORS d'une autre origine, le navigateur bloquerait l'appel. Le widget envoie Authorization et OCS-APIREQUEST via /cors-proxy, que le bloc Lua de SWAG transmet. hostname étant un domaine public, aucune entrée n'est nécessaire dans allowed_internal.
- Après une migration ou une restauration de Nextcloud, les mots de passe d'application ne sont plus valides : en créer un nouveau et le reporter ici.
joke
Affiche une blague au hasard, depuis JokeAPI. Aucun identifiant.
useProxy: true
options:
language: fr
- language : langue des blagues. JokeAPI en propose peu en français.