Je vais vous présenter aujourd'hui Dashy, qui est un dashboard pour vos applications. Le projet disponible sur GitHub compte actuellement 840 étoiles, au moment où j'écris cet article.

Le concept est le suivant : Dans un cadre professionnel ou personnel, si vous avez de multiples applications hébergées, et que vous n'avez pas l'URL en tête pour l'atteindre, Dashy le fait pour vous. Sympa, non ? ✌️

Vous avez également un petit monitoring intégré, paramétrable si vous le souhaitez, en vert si les services sont opérationnels, et en rouge s'ils sont indisponibles. Comme vous le voyez ci-dessous, tous nos outils sont up 🙂

L'interface vous propose une vingtaine de thèmes pré-construits possibles, voir ici.

Installation

L'installation se fera en mode conteneur, à travers un docker-compose.yml :

---
version: "3.8"
services:
  dashy:
    # To build from source, replace 'image: lissy93/dashy' with 'build: .'
    # build: .
    image: lissy93/dashy
    container_name: Dashy
    volumes:
      - ./config:/app/public
    ports:
      - 4000:80
    # Set any environmental variables
    environment:
      - NODE_ENV=production
    # Specify your user ID and group ID. You can find this by running <code>id -u</code> and <code>id -g</code>
    #  - UID=1000
    #  - GID=1000
    # Specify restart policy
    restart: unless-stopped
    # Configure healthchecks
    healthcheck:
      test: ['CMD', 'node', '/app/services/healthcheck']
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s

Lancons-le :

docker-compose up -d

L'écoute se fait sur le port 4000 par défaut, mais il est possible de mettre un Vhost (Apache ou Nginx par exemple) en front.

Configuration

Tout se passe dans le fichier de configuration, situé dans le répertoire ./public/conf.yml. On y distinguera trois catégories :

  • appConfig : Pour la configuration de l'apparence, de l'application en elle-même, etc... ;
  • pageInfo : Pour les détails à propos de l'instance Dashy (Title de page, favicon, etc...) ;
  • sections : Permet de déclarer une section (dans le but de regrouper vos applications comme vous le souhaitez).

Voici un exemple :

appConfig:
  theme: "material"
  layout: "auto"
  startingView: "minimal"
  iconSize: "large"
  statusCheck: true
  statusCheckInterval: 20
  hideComponents:
    hideSearch: true
    hideSettings: true
    hideFooter: true
#    hideNav: true
pageInfo:
  title: "Les applications AukFood"
  logo: "https://www.aukfood.fr/favicon.ico"
  description: ""
  footerText: ""
sections:
- name: Services AukFood
  items:
  - title: GitLab
    description: GitLab AukFood - Outil de versionning & DevOps
    icon: fab fa-gitlab
    url: https://URL_GitLab
  - title: Support
    description: Frontend utilisant l'API de GitLab - Pour contacter le support AukFood
    icon: far fa-question-circle
    url: https://URL_Support
- name: Vos applications
  items:
  - title: Nextcloud
    description: Stockage de fichiers en collaboration
    icon: fas fa-cloud-upload-alt
    url: https://URL_Nextcloud
  - title: Rocket.Chat
    description: Messagerie d'équipe
    icon: fab fa-rocketchat
    url: https://URL_Rocketchat
  - title: BigBlueButton
    description: Organiser des webinaires et conférences
    icon: fas fa-video
    url: https://URL_BigBlueButton
  - title: Jitsi Meet
    description: Visioconférences en petit nombre, sans inscription
    icon: fas fa-microphone
    url: https://URL_Jitsi
  - title: Dolibarr
    description: Gestion RH et ERP
    icon: fas fa-paperclip
    url: https://URL_Dolibarr
  - title: Moodle
    description: Formations techniques
    icon: fas fa-graduation-cap
    url: https://URL_Moodle
- name: Monitoring & Supervision
  items:
  - title: Centreon
    description: Solution de supervision
    icon: fas fa-heartbeat
    url: https://URL_Centreon
  - title: Grafana
    description: Affichage de métriques sous forme de dashboard
    icon: si-grafana
    url: https://URL_Grafana

Pour mettre à jour les changements :

yarn build

Ou si version conteneur :

docker exec -it Nom_De_Votre_Conteneur_Dashy yarn build

La mise à jour dure une trentaine de secondes.

De notre côté, nous avons mis en place une pipeline CI/CD depuis GitLab de manière à mettre à jour automatiquement les changements du fichier conf.yml sans avoir à lancer quoi que ce soit.

Vous pouvez constater qu'il y a des icônes. Dashy utilise plusieurs librairies d'icônes :

  • Font Awesome
  • Simple Icons
  • MaterialDesign

Vous pouvez également importer vos propres icônes, en local, ou même à partir d'une URL.

Bonus : Configuration SSO

Chez AukFood nous sommes toujours en train de réfléchir à une solution de Digital Workplace, et il s'avère que Dashy intègre un module de SSO, à travers Keycloak :

appConfig:
  ...
  auth:
    enableKeycloak: true
    keycloak:
      serverUrl: 'http://localhost:8081'
      realm: 'alicia-homelab'
      clientId: 'dashy'

Voici le lien vers la documentation, que je trouve pour ma part excellente et très détaillée.